Shyamnath's picture
feat(core): implement unified database with multi-hotel support and session management
90537f3
{% extends "base.html" %}
{% block title %}Chef Dashboard - Tabble-v3{% endblock %}
{% block content %}
<div class="container mt-4">
<div class="row">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>
<i class="fas fa-hat-chef me-2 text-success"></i>
Chef Dashboard
</h2>
<div class="badge bg-success fs-6">
<i class="fas fa-circle me-1"></i>Kitchen Online
</div>
</div>
</div>
</div>
<div class="row g-4">
<!-- Quick Stats -->
<div class="col-md-3">
<div class="card bg-warning text-dark">
<div class="card-body text-center">
<i class="fas fa-clock fa-2x mb-2"></i>
<h5 id="pending-orders">0</h5>
<small>Pending Orders</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-info text-white">
<div class="card-body text-center">
<i class="fas fa-fire fa-2x mb-2"></i>
<h5 id="cooking-orders">0</h5>
<small>Cooking</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-success text-white">
<div class="card-body text-center">
<i class="fas fa-check fa-2x mb-2"></i>
<h5 id="completed-orders">0</h5>
<small>Completed Today</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-primary text-white">
<div class="card-body text-center">
<i class="fas fa-utensils fa-2x mb-2"></i>
<h5 id="total-dishes">0</h5>
<small>Total Dishes</small>
</div>
</div>
</div>
</div>
<div class="row mt-4">
<div class="col-12">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0">
<i class="fas fa-list me-2"></i>
Live Orders
</h5>
<button class="btn btn-sm btn-outline-primary" onclick="refreshOrders()">
<i class="fas fa-sync-alt me-1"></i>Refresh
</button>
</div>
<div class="card-body">
<div id="orders-container">
<div class="text-center text-muted py-4">
<i class="fas fa-utensils fa-3x mb-3"></i>
<p>No orders at the moment</p>
<small>Orders will appear here automatically</small>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="row mt-4">
<div class="col-12">
<div class="card">
<div class="card-header">
<h5 class="mb-0">
<i class="fas fa-bolt me-2"></i>
Quick Actions
</h5>
</div>
<div class="card-body">
<div class="row g-3">
<div class="col-md-3">
<a href="/chef/orders" class="btn btn-outline-primary w-100">
<i class="fas fa-list me-2"></i>View All Orders
</a>
</div>
<div class="col-md-3">
<button class="btn btn-outline-success w-100" onclick="markAllReady()">
<i class="fas fa-check-double me-2"></i>Mark All Ready
</button>
</div>
<div class="col-md-3">
<a href="/admin" class="btn btn-outline-warning w-100">
<i class="fas fa-cog me-2"></i>Admin Panel
</a>
</div>
<div class="col-md-3">
<a href="/docs" target="_blank" class="btn btn-outline-info w-100">
<i class="fas fa-book me-2"></i>API Docs
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block extra_js %}
<script>
// Chef dashboard functionality
let ordersData = [];
function loadChefStats() {
// This would normally fetch from the API
// For demo purposes, using placeholder data
document.getElementById('pending-orders').textContent = '3';
document.getElementById('cooking-orders').textContent = '2';
document.getElementById('completed-orders').textContent = '15';
document.getElementById('total-dishes').textContent = '45';
}
function refreshOrders() {
const btn = event.target;
const originalText = btn.innerHTML;
btn.innerHTML = '<i class="fas fa-spinner fa-spin me-1"></i>Loading...';
btn.disabled = true;
// Simulate API call
setTimeout(() => {
btn.innerHTML = originalText;
btn.disabled = false;
loadOrders();
}, 1000);
}
function loadOrders() {
const container = document.getElementById('orders-container');
// This would normally fetch real orders from the API
container.innerHTML = `
<div class="alert alert-info">
<i class="fas fa-info-circle me-2"></i>
Connect to the database to see live orders. Use the API endpoints at <a href="/docs" target="_blank">/docs</a>
</div>
`;
}
function markAllReady() {
if (confirm('Mark all cooking orders as ready?')) {
alert('Feature will be available when connected to database');
}
}
// Load data on page load
document.addEventListener('DOMContentLoaded', function() {
loadChefStats();
loadOrders();
// Auto-refresh every 30 seconds
setInterval(loadOrders, 30000);
});
</script>
{% endblock %}