- Extracted 10 sections from admin.html (3315 lines) into separate files: - dashboard.html (298 lines) - properties.html (242 lines) - leads.html (280 lines) - testimonials.html (78 lines) - faq.html (91 lines) - services.html (61 lines) - settings.html (93 lines) - users.html (73 lines) - analytics.html (64 lines) - traffic.html (69 lines) - admin.html reduced from 3315 to 1582 lines - Added dynamic section loader via fetch() - Sections load on-demand when clicking sidebar links - Previously loaded sections cached in memory - Updated server routes to serve all section files - DataTables initialized per-section on load
299 lines
13 KiB
HTML
299 lines
13 KiB
HTML
<!-- ============ DASHBOARD SECTION ============ -->
|
|
<section class="page-section active" id="section-dashboard">
|
|
<div class="page-header">
|
|
<div>
|
|
<h1 class="page-title" data-i18n="dashboard.title">Dashboard</h1>
|
|
<p class="page-subtitle" data-i18n="dashboard.subtitle">Resumen del rendimiento de tu negocio</p>
|
|
</div>
|
|
<div class="d-flex gap-3">
|
|
<input type="text" id="dateRange" class="form-control" style="width: 250px;" placeholder="Seleccionar rango de fechas">
|
|
<button class="btn btn-primary">
|
|
<i class="bi bi-download me-2"></i>Exportar
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Stats Grid -->
|
|
<div class="stats-grid">
|
|
<div class="stat-card animate-fade-in">
|
|
<div class="stat-card-header">
|
|
<div class="stat-card-icon green">
|
|
<i class="bi bi-eye"></i>
|
|
</div>
|
|
<div class="stat-card-trend up">
|
|
<i class="bi bi-arrow-up"></i>
|
|
12.5%
|
|
</div>
|
|
</div>
|
|
<div class="stat-card-value" id="statViews">24,892</div>
|
|
<div class="stat-card-label" data-i18n="dashboard.views">Vistas de propiedades</div>
|
|
</div>
|
|
|
|
<div class="stat-card animate-fade-in">
|
|
<div class="stat-card-header">
|
|
<div class="stat-card-icon blue">
|
|
<i class="bi bi-cursor-click"></i>
|
|
</div>
|
|
<div class="stat-card-trend up">
|
|
<i class="bi bi-arrow-up"></i>
|
|
8.3%
|
|
</div>
|
|
</div>
|
|
<div class="stat-card-value" id="statClicks">3,421</div>
|
|
<div class="stat-card-label" data-i18n="dashboard.clicks">Clics en WhatsApp</div>
|
|
</div>
|
|
|
|
<div class="stat-card animate-fade-in">
|
|
<div class="stat-card-header">
|
|
<div class="stat-card-icon orange">
|
|
<i class="bi bi-envelope"></i>
|
|
</div>
|
|
<div class="stat-card-trend up">
|
|
<i class="bi bi-arrow-up"></i>
|
|
15.7%
|
|
</div>
|
|
</div>
|
|
<div class="stat-card-value" id="statLeads">156</div>
|
|
<div class="stat-card-label" data-i18n="dashboard.leads">Nuevos leads</div>
|
|
</div>
|
|
|
|
<div class="stat-card animate-fade-in">
|
|
<div class="stat-card-header">
|
|
<div class="stat-card-icon red">
|
|
<i class="bi bi-percent"></i>
|
|
</div>
|
|
<div class="stat-card-trend up">
|
|
<i class="bi bi-arrow-up"></i>
|
|
2.1%
|
|
</div>
|
|
</div>
|
|
<div class="stat-card-value" id="statConversion">13.7%</div>
|
|
<div class="stat-card-label" data-i18n="dashboard.conversion">Tasa de conversión</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Charts -->
|
|
<div class="charts-grid">
|
|
<div class="chart-card">
|
|
<div class="chart-card-header">
|
|
<h4 class="chart-card-title" data-i18n="dashboard.analytics">Rendimiento mensual</h4>
|
|
<div class="chart-card-actions">
|
|
<button class="chart-period-btn" data-period="week">Semana</button>
|
|
<button class="chart-period-btn active" data-period="month">Mes</button>
|
|
<button class="chart-period-btn" data-period="year">Año</button>
|
|
</div>
|
|
</div>
|
|
<div class="chart-container">
|
|
<canvas id="performanceChart"></canvas>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="chart-card">
|
|
<div class="chart-card-header">
|
|
<h4 class="chart-card-title" data-i18n="dashboard.sources">Fuentes de tráfico</h4>
|
|
</div>
|
|
<div class="chart-container">
|
|
<canvas id="trafficChart"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Additional Charts Row -->
|
|
<div class="rows-grid">
|
|
<div class="chart-card">
|
|
<div class="chart-card-header">
|
|
<h4 class="chart-card-title" data-i18n="dashboard.propertyTypes">Propiedades por tipo</h4>
|
|
</div>
|
|
<div class="chart-container" style="height: 220px;">
|
|
<canvas id="typesChart"></canvas>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="chart-card">
|
|
<div class="chart-card-header">
|
|
<h4 class="chart-card-title" data-i18n="dashboard.leadsStatus">Estado de leads</h4>
|
|
</div>
|
|
<div class="chart-container" style="height: 220px;">
|
|
<canvas id="leadsChart"></canvas>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="chart-card">
|
|
<div class="chart-card-header">
|
|
<h4 class="chart-card-title" data-i18n="dashboard.topProperties">Top 5 propiedades</h4>
|
|
</div>
|
|
<div class="chart-container" style="height: 220px;">
|
|
<canvas id="topPropertiesChart"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Recent Leads Table -->
|
|
<div class="table-card mt-4">
|
|
<div class="table-card-header">
|
|
<h4 class="table-card-title" data-i18n="dashboard.recentLeads">Leads recientes</h4>
|
|
<a href="#" class="table-card-action" data-section="leads">
|
|
<i class="bi bi-eye"></i>
|
|
Ver todos
|
|
</a>
|
|
</div>
|
|
<div class="table-wrapper">
|
|
<table class="table table-hover mb-0" id="leadsTable">
|
|
<thead>
|
|
<tr>
|
|
<th data-i18n="table.client">Cliente</th>
|
|
<th data-i18n="table.property">Propiedad</th>
|
|
<th data-i18n="table.source">Fuente</th>
|
|
<th data-i18n="table.date">Fecha</th>
|
|
<th data-i18n="table.status">Estado</th>
|
|
<th data-i18n="table.actions">Acciones</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<div class="table-user">
|
|
<img src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=100&h=100&fit=crop" class="table-user-avatar">
|
|
<div class="table-user-info">
|
|
Michael Schmidt
|
|
<small>+34 600 123 456</small>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="table-property">
|
|
<img src="https://images.unsplash.com/photo-1564013799919-ab600027ffc6?w=100&q=80" class="table-property-img">
|
|
<div class="table-property-info">
|
|
<h6>Terreno Urbano Adeje</h6>
|
|
<span>385.000 €</span>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td><span class="badge bg-info">WhatsApp</span></td>
|
|
<td>15/01/2024 14:32</td>
|
|
<td><span class="table-badge pending">Pendiente</span></td>
|
|
<td>
|
|
<div class="table-actions">
|
|
<button class="table-action-btn view" title="Ver"><i class="bi bi-eye"></i></button>
|
|
<button class="table-action-btn edit" title="Editar"><i class="bi bi-pencil"></i></button>
|
|
<button class="table-action-btn delete" title="Eliminar"><i class="bi bi-trash"></i></button>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div class="table-user">
|
|
<img src="https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=100&h=100&fit=crop" class="table-user-avatar">
|
|
<div class="table-user-info">
|
|
Anna Petrova
|
|
<small>anna@mail.com</small>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="table-property">
|
|
<img src="https://images.unsplash.com/photo-1500382017468-9049fed747ef?w=100&q=80" class="table-property-img">
|
|
<div class="table-property-info">
|
|
<h6>Terreno Agrícola Güímar</h6>
|
|
<span>125.000 €</span>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td><span class="badge bg-secondary">Formulario</span></td>
|
|
<td>15/01/2024 12:18</td>
|
|
<td><span class="table-badge new">Nuevo</span></td>
|
|
<td>
|
|
<div class="table-actions">
|
|
<button class="table-action-btn view" title="Ver"><i class="bi bi-eye"></i></button>
|
|
<button class="table-action-btn edit" title="Editar"><i class="bi bi-pencil"></i></button>
|
|
<button class="table-action-btn delete" title="Eliminar"><i class="bi bi-trash"></i></button>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div class="table-user">
|
|
<img src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=100&h=100&fit=crop" class="table-user-avatar">
|
|
<div class="table-user-info">
|
|
Pierre Dubois
|
|
<small>+33 600 789 012</small>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="table-property">
|
|
<img src="https://images.unsplash.com/photo-1613490493576-7fde63acd811?w=100&q=80" class="table-property-img">
|
|
<div class="table-property-info">
|
|
<h6>Villa Los Cristianos</h6>
|
|
<span>595.000 €</span>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td><span class="badge bg-primary">Directo</span></td>
|
|
<td>14/01/2024 18:45</td>
|
|
<td><span class="table-badge completed">Contactado</span></td>
|
|
<td>
|
|
<div class="table-actions">
|
|
<button class="table-action-btn view" title="Ver"><i class="bi bi-eye"></i></button>
|
|
<button class="table-action-btn edit" title="Editar"><i class="bi bi-pencil"></i></button>
|
|
<button class="table-action-btn delete" title="Eliminar"><i class="bi bi-trash"></i></button>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<div class="table-user">
|
|
<img src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=100&h=100&fit=crop" class="table-user-avatar">
|
|
<div class="table-user-info">
|
|
Carlos García
|
|
<small>carlos.g@mail.com</small>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<div class="table-property">
|
|
<img src="https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?w=100&q=80" class="table-property-img">
|
|
<div class="table-property-info">
|
|
<h6>Apartamento Puerto Cruz</h6>
|
|
<span>245.000 €</span>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
<td><span class="badge bg-success">Referido</span></td>
|
|
<td>14/01/2024 10:22</td>
|
|
<td><span class="table-badge completed">En proceso</span></td>
|
|
<td>
|
|
<div class="table-actions">
|
|
<button class="table-action-btn view" title="Ver"><i class="bi bi-eye"></i></button>
|
|
<button class="table-action-btn edit" title="Editar"><i class="bi bi-pencil"></i></button>
|
|
<button class="table-action-btn delete" title="Eliminar"><i class="bi bi-trash"></i></button>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Quick Actions -->
|
|
<div class="quick-actions">
|
|
<a href="#" class="quick-action" data-section="properties">
|
|
<div class="quick-action-icon"><i class="bi bi-plus-lg"></i></div>
|
|
<span data-i18n="dashboard.addProperty">Añadir propiedad</span>
|
|
</a>
|
|
<a href="#" class="quick-action" data-section="leads">
|
|
<div class="quick-action-icon"><i class="bi bi-envelope-plus"></i></div>
|
|
<span data-i18n="dashboard.viewLeads">Ver leads</span>
|
|
</a>
|
|
<a href="#" class="quick-action" data-section="analytics">
|
|
<div class="quick-action-icon"><i class="bi bi-bar-chart"></i></div>
|
|
<span data-i18n="dashboard.fullReport">Informe completo</span>
|
|
</a>
|
|
<a href="#" class="quick-action" data-section="settings">
|
|
<div class="quick-action-icon"><i class="bi bi-gear"></i></div>
|
|
<span data-i18n="dashboard.settings">Configuración</span>
|
|
</a>
|
|
</div>
|
|
</section>
|
|
|