Improve the frontend and repository layer

This commit is contained in:
Urtzi Alfaro
2025-10-23 07:44:54 +02:00
parent 8d30172483
commit 07c33fa578
112 changed files with 14726 additions and 2733 deletions

View File

@@ -38,7 +38,7 @@ import {
const ProductionAnalyticsPage: React.FC = () => {
const { t } = useTranslation('production');
const { canAccessAnalytics } = useSubscription();
const { canAccessAnalytics, subscriptionInfo } = useSubscription();
const currentTenant = useCurrentTenant();
const tenantId = currentTenant?.id || '';
@@ -49,6 +49,24 @@ const ProductionAnalyticsPage: React.FC = () => {
// Check if user has access to advanced analytics (professional/enterprise)
const hasAdvancedAccess = canAccessAnalytics('advanced');
// Show loading state while subscription data is being fetched
if (subscriptionInfo.loading) {
return (
<div className="space-y-6">
<PageHeader
title={t('analytics.production_analytics')}
description={t('analytics.advanced_insights_professionals_enterprises')}
/>
<Card className="p-8 text-center">
<div className="flex flex-col items-center gap-4">
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-[var(--color-primary)]"></div>
<p className="text-[var(--text-secondary)]">{t('common.loading') || 'Cargando información de suscripción...'}</p>
</div>
</Card>
</div>
);
}
// If user doesn't have access to advanced analytics, show upgrade message
if (!hasAdvancedAccess) {
return (
@@ -177,87 +195,57 @@ const ProductionAnalyticsPage: React.FC = () => {
<div className="min-h-screen">
{/* Overview Tab - Mixed Dashboard */}
{activeTab === 'overview' && (
<div className="grid gap-6 lg:grid-cols-2 xl:grid-cols-3">
<div className="lg:col-span-2 xl:col-span-2">
<LiveBatchTrackerWidget />
</div>
<div>
<OnTimeCompletionWidget />
</div>
<div>
<QualityScoreTrendsWidget />
</div>
<div>
<WasteDefectTrackerWidget />
</div>
<div className="lg:col-span-2 xl:col-span-1">
<CapacityUtilizationWidget />
</div>
<div className="grid gap-6">
<LiveBatchTrackerWidget />
<OnTimeCompletionWidget />
<QualityScoreTrendsWidget />
<WasteDefectTrackerWidget />
<CapacityUtilizationWidget />
</div>
)}
{/* Bakery Operations Tab */}
{activeTab === 'operations' && (
<div className="grid gap-6">
<div className="grid gap-6 lg:grid-cols-2">
<TodaysScheduleSummaryWidget />
<OnTimeCompletionWidget />
</div>
<div>
<LiveBatchTrackerWidget />
</div>
<div>
<CapacityUtilizationWidget />
</div>
<TodaysScheduleSummaryWidget />
<OnTimeCompletionWidget />
<LiveBatchTrackerWidget />
<CapacityUtilizationWidget />
</div>
)}
{/* Cost & Efficiency Tab */}
{activeTab === 'cost-efficiency' && (
<div className="grid gap-6">
<div className="grid gap-6 lg:grid-cols-2">
<CostPerUnitWidget />
<WasteDefectTrackerWidget />
</div>
<div>
<YieldPerformanceWidget />
</div>
<CostPerUnitWidget />
<WasteDefectTrackerWidget />
<YieldPerformanceWidget />
</div>
)}
{/* Quality Assurance Tab */}
{activeTab === 'quality' && (
<div className="grid gap-6">
<div className="grid gap-6 lg:grid-cols-2">
<QualityScoreTrendsWidget />
<WasteDefectTrackerWidget />
</div>
<div>
<TopDefectTypesWidget />
</div>
<QualityScoreTrendsWidget />
<WasteDefectTrackerWidget />
<TopDefectTypesWidget />
</div>
)}
{/* Equipment & Maintenance Tab */}
{activeTab === 'equipment' && (
<div className="grid gap-6">
<div className="grid gap-6 lg:grid-cols-2">
<EquipmentStatusWidget />
<MaintenanceScheduleWidget />
</div>
<div>
<EquipmentEfficiencyWidget />
</div>
<EquipmentStatusWidget />
<MaintenanceScheduleWidget />
<EquipmentEfficiencyWidget />
</div>
)}
{/* AI Insights Tab */}
{activeTab === 'ai-insights' && (
<div className="grid gap-6">
<div className="grid gap-6 lg:grid-cols-2">
<AIInsightsWidget />
<PredictiveMaintenanceWidget />
</div>
<AIInsightsWidget />
<PredictiveMaintenanceWidget />
</div>
)}
</div>