maybe good

This commit is contained in:
HotSwapp
2025-08-08 15:55:15 -05:00
parent ab6f163c15
commit b257a06787
80 changed files with 19739 additions and 0 deletions

232
templates/dashboard.html Normal file
View File

@@ -0,0 +1,232 @@
{% extends "base.html" %}
{% block title %}Dashboard - {{ super() }}{% endblock %}
{% block content %}
<div class="row">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center mb-4">
<h1><i class="bi bi-speedometer2"></i> Dashboard</h1>
<div>
<button class="btn btn-outline-secondary btn-sm" onclick="showShortcuts()">
<i class="bi bi-keyboard"></i> Shortcuts (F1)
</button>
</div>
</div>
</div>
</div>
<!-- Quick Stats Cards -->
<div class="row mb-4">
<div class="col-md-3">
<div class="card bg-primary text-white">
<div class="card-body">
<div class="d-flex align-items-center">
<div class="me-3">
<i class="bi bi-people fs-1"></i>
</div>
<div>
<h5 class="card-title">Customers</h5>
<h2 class="mb-0" id="customer-count">-</h2>
</div>
</div>
<a href="/customers" class="text-white-50 small">
View all <i class="bi bi-arrow-right"></i>
</a>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-success text-white">
<div class="card-body">
<div class="d-flex align-items-center">
<div class="me-3">
<i class="bi bi-folder fs-1"></i>
</div>
<div>
<h5 class="card-title">Active Files</h5>
<h2 class="mb-0" id="file-count">-</h2>
</div>
</div>
<a href="/files" class="text-white-50 small">
View all <i class="bi bi-arrow-right"></i>
</a>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-info text-white">
<div class="card-body">
<div class="d-flex align-items-center">
<div class="me-3">
<i class="bi bi-receipt fs-1"></i>
</div>
<div>
<h5 class="card-title">Transactions</h5>
<h2 class="mb-0" id="transaction-count">-</h2>
</div>
</div>
<a href="/financial" class="text-white-50 small">
View ledger <i class="bi bi-arrow-right"></i>
</a>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-warning text-dark">
<div class="card-body">
<div class="d-flex align-items-center">
<div class="me-3">
<i class="bi bi-file-text fs-1"></i>
</div>
<div>
<h5 class="card-title">Documents</h5>
<h2 class="mb-0" id="document-count">-</h2>
</div>
</div>
<a href="/documents" class="text-dark-50 small">
View all <i class="bi bi-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="row mb-4">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h5><i class="bi bi-lightning"></i> Quick Actions</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6 mb-3">
<div class="d-grid gap-2">
<button class="btn btn-outline-primary btn-lg" onclick="newCustomer()">
<i class="bi bi-person-plus"></i> New Customer
<small class="d-block text-muted">Ctrl+Shift+C</small>
</button>
<button class="btn btn-outline-success btn-lg" onclick="newFile()">
<i class="bi bi-folder-plus"></i> New File
<small class="d-block text-muted">Ctrl+Shift+F</small>
</button>
</div>
</div>
<div class="col-md-6 mb-3">
<div class="d-grid gap-2">
<button class="btn btn-outline-info btn-lg" onclick="newTransaction()">
<i class="bi bi-plus-circle"></i> New Transaction
<small class="d-block text-muted">Ctrl+Shift+T</small>
</button>
<button class="btn btn-outline-warning btn-lg" onclick="globalSearch()">
<i class="bi bi-search"></i> Global Search
<small class="d-block text-muted">Ctrl+F</small>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5><i class="bi bi-clock-history"></i> Recent Activity</h5>
</div>
<div class="card-body">
<div id="recent-activity">
<p class="text-muted text-center">
<i class="bi bi-hourglass-split"></i><br>
Loading recent activity...
</p>
</div>
</div>
</div>
</div>
</div>
<!-- System Status -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5><i class="bi bi-info-circle"></i> System Information</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<p><strong>System:</strong> Delphi Consulting Group Database System</p>
<p><strong>Version:</strong> 1.0.0</p>
<p><strong>Database:</strong> SQLite</p>
</div>
<div class="col-md-6">
<p><strong>Last Backup:</strong> <span id="last-backup">Not available</span></p>
<p><strong>Database Size:</strong> <span id="db-size">-</span></p>
<p><strong>Status:</strong> <span id="system-status" class="badge bg-success">Healthy</span></p>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block extra_scripts %}
<script>
// Load dashboard data
async function loadDashboardData() {
try {
// This would typically be authenticated API calls
const response = await fetch('/api/admin/stats', {
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('token')
}
});
if (response.ok) {
const data = await response.json();
document.getElementById('customer-count').textContent = data.total_customers || '0';
document.getElementById('file-count').textContent = data.total_files || '0';
document.getElementById('transaction-count').textContent = data.total_transactions || '0';
document.getElementById('document-count').textContent = data.total_qdros || '0';
document.getElementById('db-size').textContent = data.database_size || '-';
document.getElementById('last-backup').textContent = data.last_backup || 'Not available';
}
} catch (error) {
console.error('Error loading dashboard data:', error);
}
}
// Quick action functions
function newCustomer() {
window.location.href = '/customers/new';
}
function newFile() {
window.location.href = '/files/new';
}
function newTransaction() {
window.location.href = '/financial/new';
}
function globalSearch() {
window.location.href = '/search';
}
function showShortcuts() {
const modal = new bootstrap.Modal(document.getElementById('shortcutsModal'));
modal.show();
}
// Load data on page load
document.addEventListener('DOMContentLoaded', function() {
// loadDashboardData(); // Uncomment when authentication is implemented
});
</script>
{% endblock %}