{"version":3,"file":"__federation_expose_DRPage2Vacuum.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/components/DRFooterActions.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/screens/DRPage2Vacuum.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/store/dailyReportBase.store.ts"],"sourcesContent":["import React from 'react';\nimport { View, StyleSheet, Platform } from 'react-native';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { StatusButton } from '@data-oil-front/ui-mobile';\n// import { useTheme } from '@data-oil-front/core-shared';\nimport {\n  ArrowRightIcon,\n  XMarkIcon,\n  ArrowLeftIcon,\n} from 'react-native-heroicons/outline';\n\ntype DRFooterActionsProps = {\n  onContinue: () => void;\n  continueDisabled?: boolean;\n  onCancel?: () => void;\n  onBack?: () => void;\n  homeRouteName?: string;\n  accentColor?: string;\n  continueLabel?: string;\n};\n\nexport default function DRFooterActions({\n  onContinue,\n  continueDisabled,\n  onCancel,\n  onBack,\n  homeRouteName = 'DailyReport',\n  // TODO: Create a const for default black color\n  accentColor = '#000000',\n  continueLabel = 'Continuar',\n}: DRFooterActionsProps) {\n  const navigation = useNavigation();\n  const route = useRoute();\n  const insets = useSafeAreaInsets();\n  const calcPaddingBottom =\n    Platform.OS === 'ios' ? Math.max(insets.bottom, 12) : 12;\n\n  const canGoBack =\n    // @ts-ignore navegación provista por host\n    typeof navigation?.canGoBack === 'function' && navigation.canGoBack();\n  const showBackButton = canGoBack && route?.name !== homeRouteName;\n\n  const handleCancel = () => {\n    if (onCancel) return onCancel();\n    // @ts-ignore navegación provista por host\n    navigation?.navigate?.('Home');\n  };\n\n  return (\n    <View style={[styles.footerBar, { paddingBottom: calcPaddingBottom }]}>\n      <StatusButton\n        title=\"Cancelar\"\n        onPress={handleCancel}\n        leftIcon={<XMarkIcon size={20} color={accentColor} />}\n        // Texto visible con color de marca para contraste\n        textStyle={{ color: accentColor }}\n        style={styles.flexOne}\n      />\n      {showBackButton ? (\n        <StatusButton\n          title=\"Atrás\"\n          onPress={() => {\n            if (onBack) return onBack();\n            // @ts-ignore navegación provista por host\n            navigation?.goBack?.();\n          }}\n          leftIcon={<ArrowLeftIcon size={20} color={accentColor} />}\n          backgroundColor=\"transparent\"\n          textStyle={{ color: accentColor }}\n          style={styles.flexOne}\n        />\n      ) : (\n        <View style={styles.flexOne} />\n      )}\n      <StatusButton\n        title={continueLabel}\n        onPress={onContinue}\n        backgroundColor={accentColor}\n        rightIcon={<ArrowRightIcon size={20} color=\"white\" />}\n        style={styles.flexOne}\n        disabled={continueDisabled}\n      />\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  footerBar: {\n    position: 'absolute',\n    left: 0,\n    right: 0,\n    bottom: 0,\n    backgroundColor: '#fff',\n    borderTopWidth: 1,\n    borderTopColor: '#E5E7EB',\n    paddingHorizontal: 20,\n    // Reducido de 12 a 10 para un diseño más compacto\n    paddingTop: 10,\n    // Espaciado entre botones\n    gap: 12,\n    flexDirection: 'row',\n    shadowColor: '#000',\n    shadowOpacity: 0.08,\n    shadowRadius: 8,\n    shadowOffset: { width: 6, height: -3 },\n    elevation: 6,\n  },\n  cancelButtonText: {\n    // Color principal para el texto de cancelar (mejor visibilidad)\n    color: '#374151',\n  },\n  whiteText: {\n    // Color blanco para botones con fondo de color acento\n    color: 'white',\n  },\n  flexOne: { flex: 1 },\n});\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { View, StyleSheet, ScrollView, Text } from 'react-native';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { SummaryTable, ConfirmationModal, RadioGroup, ProgressBar } from '@data-oil-front/ui-mobile';\nimport DRFooterActions from '../components/DRFooterActions';\nimport { useDailyReportBaseStore } from '../store/dailyReportBase.store';\nimport { getAllVacuumLoads, useTheme } from '@data-oil-front/core-shared';\nimport { TABLE_NAMES } from \"@data-oil-front/core-shared\";\n\ntype Process = 'carga' | 'descarga' | null;\n\ntype RouteParams = {\n  mode?: string;\n  reportId?: string | number;\n  id?: string | number;\n  editionNumber?: string | number;\n  snapshot?: Record<string, any> | null;\n};\n\nconst parseNumberParam = (value: unknown): number | null => {\n  if (value === null || value === undefined) return null;\n  const parsed = Number(value);\n  return Number.isFinite(parsed) ? parsed : null;\n};\n\nexport default function DRPage2Vacuum() {\n  const navigation = useNavigation();\n  const route = useRoute<any>();\n  const params: RouteParams = route?.params ?? {};\n  const reportIdParam = parseNumberParam(params.reportId ?? params.id);\n  const editionNumberParam = parseNumberParam(params.editionNumber);\n  const snapshotParam = params.snapshot ?? null;\n  const isEditing = params.mode === 'edit' && reportIdParam != null;\n  const insets = useSafeAreaInsets();\n  const { primaryColor: themeColor } = useTheme();\n  const accentColor = themeColor ?? '#1B418C';\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [loading, setLoading] = useState(false);\n  const [process, setProcess] = useState<Process>(null);\n  const [stats, setStats] = useState({ total: 0, unloaded: 0, pending: 0, percentage: 0, critical: 0 });\n\n  const { summary, setEditing, editing } = useDailyReportBaseStore(state => state);\n  const safeSummary = useMemo(\n    () => ({\n      location: (summary as any)?.location ?? '-',\n      activity: (summary as any)?.activity ?? '-',\n      field: (summary as any)?.field ?? '-',\n      facility: (summary as any)?.facility ?? '-',\n    }),\n    [summary],\n  );\n\n  useEffect(() => {\n    if (isEditing && reportIdParam != null) {\n      const needsUpdate =\n        !editing.isEditing ||\n        editing.table !== TABLE_NAMES.DAILY_REPORT_VACUUM_LOAD ||\n        editing.reportId !== reportIdParam ||\n        (editing.revision ?? null) !== (editionNumberParam ?? null);\n\n      if (needsUpdate) {\n        setEditing({\n          isEditing: true,\n          reportId: reportIdParam,\n          table: TABLE_NAMES.DAILY_REPORT_VACUUM_LOAD,\n          revision: editionNumberParam ?? null,\n          payload: snapshotParam ? { report: snapshotParam } : editing.payload ?? null,\n        });\n      }\n    } else if (\n      !isEditing &&\n      editing.isEditing &&\n      editing.table === TABLE_NAMES.DAILY_REPORT_VACUUM_LOAD\n    ) {\n      setEditing({\n        isEditing: false,\n        reportId: null,\n        table: null,\n        revision: null,\n        payload: null,\n      });\n    }\n  }, [\n    editionNumberParam,\n    editing.isEditing,\n    editing.payload,\n    editing.reportId,\n    editing.revision,\n    editing.table,\n    isEditing,\n    reportIdParam,\n    setEditing,\n    snapshotParam,\n  ]);\n\n  useEffect(() => {\n    if (isEditing) {\n      setProcess('carga');\n    }\n  }, [isEditing]);\n\n  useEffect(() => {\n    const fetchStats = async () => {\n      setLoading(true);\n      try {\n        const rows = await getAllVacuumLoads();\n        const total = rows.length;\n        const unloaded = rows.filter(r => r.unloaded === true).length;\n        const pending = total - unloaded;\n        const percentage = total > 0 ? Math.round((unloaded / total) * 100) : 0;\n        const now = new Date();\n        const critical = rows.filter(r => {\n          if (!r.date_created) return false;\n          const created = new Date(r.date_created);\n          const diffDays = (now.getTime() - created.getTime()) / (1000 * 60 * 60 * 24);\n          return r.unloaded !== true && diffDays > 1;\n        }).length;\n        setStats({ total, unloaded, pending, percentage, critical });\n      } catch (e) {\n        setStats({ total: 0, unloaded: 0, pending: 0, percentage: 0, critical: 0 });\n      } finally {\n        setLoading(false);\n      }\n    };\n    fetchStats();\n  }, []);\n\n  const canContinue = useMemo(() => {\n    if (isEditing) return true;\n    return !!process;\n  }, [isEditing, process]);\n\n  return (\n    <View style={styles.screen}>\n      <ScrollView style={styles.container} contentContainerStyle={{ paddingBottom: insets.bottom + 120 }}>\n        <View style={styles.form}>\n          <SummaryTable\n            items={[\n              { name: 'Localización', value: safeSummary.location },\n              { name: 'Actividad', value: safeSummary.activity },\n              { name: 'Campo', value: safeSummary.field },\n              { name: 'Instalación', value: safeSummary.facility },\n            ]}\n          />\n\n          <View style={styles.block} />\n\n          {!loading ? (\n            <View style={styles.card}>\n              <Text style={styles.cardTitle}>Estado de Vacuum Loads</Text>\n              <View style={styles.progressRow}>\n                <Text style={styles.progressLabel}>Progreso de descarga</Text>\n                <Text style={styles.progressValue}>{stats.percentage}%</Text>\n              </View>\n              <ProgressBar value={stats.percentage} progressColor={accentColor} />\n              <View style={styles.fieldBlock} />\n              <View style={styles.statsRow}>\n                <View style={styles.statItemSimple}>\n                  <Text style={[styles.statValue, { color: accentColor }]}>#{` ${stats.total}`.trim().slice(1)}</Text>\n                  <Text style={styles.statLabel}>Total</Text>\n                </View>\n                <View style={styles.statItemSimple}>\n                  <Text style={[styles.statValue, styles.valueGreen]}>{stats.unloaded}</Text>\n                  <Text style={styles.statLabel}>Descargados</Text>\n                </View>\n                <View style={styles.statItemSimple}>\n                  <Text style={[styles.statValue, styles.valueOrange]}>{stats.pending}</Text>\n                  <Text style={styles.statLabel}>Pendientes</Text>\n                </View>\n              </View>\n              {stats.critical > 0 ? (\n                <View style={styles.criticalBox}>\n                  <Text style={styles.criticalText}>⚠️ Crítico: Hay {stats.critical} carga{stats.critical > 1 ? 's' : ''} con fecha crítica (más de 1 día)</Text>\n                </View>\n              ) : null}\n            </View>\n          ) : (\n            <View style={styles.card}><Text style={styles.loadingText}>Cargando estadísticas...</Text></View>\n          )}\n\n          <View style={styles.block} />\n\n          <RadioGroup\n            title=\"¿Qué proceso desea realizar?\"\n            options={[\n              { value: 'carga', label: 'Carga' },\n              { value: 'descarga', label: 'Descarga' },\n            ]}\n            selectedValue={process}\n            onValueChange={(v) => {\n              if (isEditing && v === 'descarga') {\n                return;\n              }\n              setProcess(v as Process);\n            }}\n            accentColor={accentColor}\n            row\n            optionStyle={{ width: '48%', marginRight: 0, minHeight: 72 }}\n          />\n        </View>\n      </ScrollView>\n      <DRFooterActions\n        onBack={() => { /* @ts-ignore */ navigation?.goBack?.(); }}\n        onCancel={() => setIsModalOpen(true)}\n        onContinue={() => {\n          const targetProcess: Process = isEditing ? 'carga' : process;\n          if (!targetProcess) return;\n          if (targetProcess === 'carga') {\n            const paramsToSend = isEditing\n              ? {\n                  mode: 'edit',\n                  reportId: reportIdParam,\n                  editionNumber: editionNumberParam ?? null,\n                  snapshot: snapshotParam ?? null,\n                }\n              : undefined;\n            // @ts-ignore navegación provista por host\n            navigation?.navigate?.('DRPage3VacuumLoading', paramsToSend as never);\n            return;\n          }\n          if (!isEditing && targetProcess === 'descarga') {\n            // @ts-ignore\n            navigation?.navigate?.('DRPage3VacuumUnloading');\n          }\n        }}\n        continueDisabled={!canContinue}\n        accentColor={accentColor}\n      />\n      <ConfirmationModal\n        open={isModalOpen}\n        onClose={() => setIsModalOpen(false)}\n        onConfirm={() => {\n          // @ts-ignore navegación provista por host\n          navigation?.navigate?.('Home');\n        }}\n        title=\"¿Estás seguro de que deseas cancelar?\"\n        message=\"Se perderán todos los datos cargados en el reporte actual.\"\n      />\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, backgroundColor: '#f9fafb' },\n  container: { flex: 1, paddingTop: 16 },\n  form: { paddingHorizontal: 20, paddingBottom: 24, gap: 0 },\n  block: { height: 16 },\n  fieldBlock: { height: 12 },\n  card: { backgroundColor: '#fff', borderWidth: 1, borderColor: '#E5E7EB', borderRadius: 12, padding: 16 },\n  cardTitle: { fontSize: 14, fontWeight: '600', color: '#1F2937', marginBottom: 8 },\n  progressRow: { flexDirection: 'row', justifyContent: 'space-between', marginBottom: 6 },\n  progressLabel: { fontSize: 12, color: '#4B5563' },\n  progressValue: { fontSize: 12, color: '#4B5563' },\n  statsRow: { flexDirection: 'row', gap: 12, marginTop: 4 },\n  statItem: { flex: 1 },\n  statItemSimple: { flex: 1, backgroundColor: '#FFFFFF', borderRadius: 12, paddingVertical: 16, paddingHorizontal: 12, alignItems: 'center', justifyContent: 'center', borderWidth: 1, borderColor: '#E5E7EB' },\n  statValue: { fontSize: 32, fontWeight: '800' },\n  valueGreen: { color: '#10B981' },\n  valueOrange: { color: '#F59E0B' },\n  iconBox: { width: 32, height: 32, borderRadius: 8 },\n  criticalBox: { marginTop: 10, backgroundColor: '#FEF2F2', borderWidth: 1, borderColor: '#FECACA', borderRadius: 8, padding: 8 },\n  criticalText: { color: '#B91C1C', fontSize: 12 },\n  loadingText: { color: '#6B7280', fontSize: 14 },\n  statLabel: { fontSize: 13, color: '#6B7280', marginTop: 4, textAlign: 'center' },\n});\n\n\n","import { create } from 'zustand';\nimport type { ReportHistoryTable } from '@data-oil-front/core-shared';\n\ninterface DailyReportBaseStore {\n  fieldId: string | null;\n  summary: {\n    location: string | null;\n    activity: string | null;\n    field: string | null;\n    facility: string | null;\n  };\n  editing: DailyReportEditingState;\n}\n\ninterface DailyReportBaseStoreActions {\n  setFieldId: (fieldId: string | null) => void;\n  setSummary: (summary: DailyReportBaseStore['summary']) => void;\n  setEditing: (editing: Partial<DailyReportEditingState>) => void;\n  resetEditing: () => void;\n}\n\nexport interface DailyReportEditingState {\n  isEditing: boolean;\n  reportId: string | number | null;\n  table: ReportHistoryTable | null;\n  revision?: number | null;\n  payload?: Record<string, any> | null;\n}\n\nconst INITIAL_EDITING_STATE: DailyReportEditingState = {\n  isEditing: false,\n  reportId: null,\n  table: null,\n  revision: null,\n  payload: null,\n};\n\nconst INITIAL_STATE: DailyReportBaseStore = {\n  fieldId: null,\n  summary: {\n    location: null,\n    activity: null,\n    field: null,\n    facility: null,\n  },\n  editing: INITIAL_EDITING_STATE,\n};\n\nexport const useDailyReportBaseStore = create<\n  DailyReportBaseStore & DailyReportBaseStoreActions\n>(set => ({\n  ...INITIAL_STATE,\n  // ACTIONS\n  setFieldId: (fieldId: string | null) => set(state => ({ ...state, fieldId })),\n  setSummary: (summary: DailyReportBaseStore['summary']) =>\n    set(state => ({ ...state, summary })),\n  setEditing: editing =>\n    set(state => ({\n      ...state,\n      editing: {\n        ...state.editing,\n        ...editing,\n      },\n    })),\n  resetEditing: () =>\n    set(state => ({\n      ...state,\n      editing: INITIAL_EDITING_STATE,\n    })),\n}));\n"],"names":["DRFooterActions","onContinue","continueDisabled","onCancel","onBack","homeRouteName","accentColor","continueLabel","navigation","useNavigation","route","useRoute","insets","useSafeAreaInsets","calcPaddingBottom","Platform","OS","Math","max","bottom","showBackButton","canGoBack","name","View","style","styles","footerBar","paddingBottom","StatusButton","title","onPress","handleCancel","navigate","leftIcon","XMarkIcon","size","color","textStyle","flexOne","goBack","ArrowLeftIcon","backgroundColor","rightIcon","ArrowRightIcon","disabled","StyleSheet","create","position","left","right","borderTopWidth","borderTopColor","paddingHorizontal","paddingTop","gap","flexDirection","shadowColor","shadowOpacity","shadowRadius","shadowOffset","width","height","elevation","cancelButtonText","whiteText","flex","DRPage2Vacuum","parseNumberParam","value","parsed","Number","isFinite","params","RouteParams","reportIdParam","reportId","id","editionNumberParam","editionNumber","snapshotParam","snapshot","isEditing","mode","themeColor","primaryColor","isModalOpen","setIsModalOpen","useState","loading","setLoading","process","setProcess","total","unloaded","pending","percentage","critical","stats","setStats","useDailyReportBaseStore","state","summary","setEditing","editing","safeSummary","useMemo","location","activity","field","facility","useEffect","table","TABLE_NAMES","DAILY_REPORT_VACUUM_LOAD","revision","payload","report","rows","getAllVacuumLoads","length","filter","r","round","now","Date","date_created","created","diffDays","getTime","e","canContinue","screen","ScrollView","container","contentContainerStyle","form","SummaryTable","items","block","card","Text","loadingText","cardTitle","progressRow","progressLabel","progressValue","ProgressBar","progressColor","fieldBlock","statsRow","statItemSimple","statValue","trim","slice","statLabel","valueGreen","valueOrange","criticalBox","criticalText","RadioGroup","options","label","selectedValue","onValueChange","v","row","optionStyle","marginRight","minHeight","targetProcess","paramsToSend","undefined","ConfirmationModal","open","onClose","onConfirm","message","borderWidth","borderColor","borderRadius","padding","fontSize","fontWeight","marginBottom","justifyContent","marginTop","statItem","paddingVertical","alignItems","iconBox","textAlign","INITIAL_EDITING_STATE","INITIAL_STATE","fieldId","DailyReportBaseStore","set","setFieldId","setSummary","resetEditing"],"mappings":"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"}