{"version":3,"file":"__federation_expose_ODSNavigator.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/ODS/src/App.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/ODS/src/constants/breadcrumbLabels.ts","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/ODS/src/navigation/ODSNavigator.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/ODS/src/screens/ODSHomeScreen.tsx"],"sourcesContent":["/**\n * Sample React Native App\n * https://github.com/facebook/react-native\n *\n * @format\n */\n\nimport React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { StyleSheet, Text, View } from 'react-native';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport { DatePicker, MobileTable } from '@data-oil-front/ui-mobile';\nimport Toast from 'react-native-toast-message';\nimport {\n  fetchDaysWithReports,\n  fetchODSReports,\n  type ODSActivityReport,\n} from '@data-oil-front/core-ods';\nimport { useNavigation } from '@react-navigation/native';\nimport { configService, useConfig, useAuth } from '@data-oil-front/core-host';\nimport { ODS_SCREENS } from '@data-oil-front/core-utils';\nimport ODSReportScreen from './screens/ODSReport';\n\nexport type ODSStackParamList = {\n  ODSHome: undefined;\n  ODSReport: { id?: string | number } | undefined;\n};\n\ndayjs.extend(utc);\nconst Stack = createStackNavigator();\n\nfunction ODSListScreen() {\n  const [selectedDate, setSelectedDate] = useState<Date | null>(new Date());\n  const [odsReports, setOdsReports] = useState<ODSActivityReport[]>([]);\n  const [loading, setLoading] = useState<boolean>(true);\n  const [daysWithReports, setDaysWithReportsState] = useState<string[]>([]);\n  const [currentMonth, setCurrentMonth] = useState<string>(\n    dayjs().format('YYYY-MM'),\n  );\n  const pendingDateRef = useRef<Date | null>(new Date());\n\n  const navigation = useNavigation();\n  const { config: clientConfig } = useConfig();\n  const { user } = useAuth();\n  const defaultConfig = useMemo(() => configService.getDefaultConfig(), []);\n  const accentColor =\n    clientConfig.primaryColor ?? defaultConfig.primaryColor ?? '#1B418C';\n\n  const loadReports = useCallback(\n    async (dateOverride?: Date | null) => {\n      setLoading(true);\n      try {\n        const effectiveDate =\n          dateOverride !== undefined ? dateOverride : selectedDate;\n        const list = await fetchODSReports(effectiveDate ?? undefined);\n        setOdsReports(list);\n        if ((list?.length ?? 0) === 0 && effectiveDate) {\n          Toast.show({\n            type: 'info',\n            text1: 'Información',\n            text2: 'No se encontraron reportes ODS para la fecha seleccionada',\n          });\n        }\n      } catch (e) {\n        Toast.show({\n          type: 'error',\n          text1: 'Información',\n          text2: 'Error al cargar los reportes ODS',\n        });\n      } finally {\n        setLoading(false);\n      }\n    },\n    [selectedDate],\n  );\n\n  const loadDays = useCallback(async (monthKey: string) => {\n    try {\n      const days = await fetchDaysWithReports(monthKey);\n      setDaysWithReportsState(days);\n    } catch (e) {\n    }\n  }, []);\n\n  useEffect(() => {\n    loadReports();\n    loadDays(currentMonth);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const preparedData = useMemo(() => {\n    const formatBool = (v: boolean) => (v ? 'Sí' : 'No');\n    return odsReports.map(report => ({\n      id: report.id,\n      Campo: `Reporte #${report.id}`,\n      'Actividad ID': report.activity_id,\n      'Fecha reporte': dayjs.utc(report.report_date).format('DD/MM/YYYY'),\n      'Cantidad ejecutada': report.quantity_executed,\n      Comentarios: report.commentary || 'Sin comentarios',\n      Recursos: report.resources || 'N/A',\n      Usuario: report.user_id,\n      Edición: report.edition_number,\n      'Usa equipos': formatBool(report.use_machines),\n      'Usa mano de obra': formatBool(report.use_labour),\n      'Usa materiales': formatBool(report.use_materials),\n      'Usa servicios': formatBool(report.use_services),\n      'Usa consumibles': formatBool(report.use_consumables),\n      'Fecha creación': dayjs(report.date_created).format('DD/MM/YYYY HH:mm'),\n    }));\n  }, [odsReports]);\n\n  const handleApply = useCallback(() => {\n    loadReports(pendingDateRef.current ?? selectedDate);\n  }, [loadReports, selectedDate]);\n\n  const handleClearFilter = useCallback(() => {\n    setSelectedDate(null);\n    pendingDateRef.current = null;\n    loadReports(null);\n  }, [loadReports]);\n\n  const onMonthChange = useCallback(\n    (monthDate: Date) => {\n      const key = dayjs(monthDate).format('YYYY-MM');\n      setCurrentMonth(key);\n      loadDays(key);\n    },\n    [loadDays],\n  );\n\n  const headerComponent = (\n    <>\n      <View style={styles.headerRow}>\n        <Text style={styles.headerTitle}>Reportes ODS</Text>\n      </View>\n\n      <View style={styles.filtersCard}>\n        <Text style={styles.filtersTitle}>Filtros</Text>\n        {daysWithReports.length > 0 ? (\n          <View style={styles.daysCard}>\n            <Text style={styles.daysCardText}>\n              {`Este mes tiene ${daysWithReports.length} día${\n                daysWithReports.length > 1 ? 's' : ''\n              } con reportes:`}\n            </Text>\n            <View style={styles.daysChipRow}>\n              {daysWithReports\n                .slice()\n                .sort((a, b) => dayjs.utc(a).diff(dayjs.utc(b)))\n                .slice(0, 10)\n                .map(day => (\n                  <View key={day} style={styles.dayChip}>\n                    <Text style={styles.dayChipText}>\n                      {dayjs.utc(day).format('DD')}\n                    </Text>\n                  </View>\n                ))}\n              {daysWithReports.length > 10 ? (\n                <View style={styles.dayChip}>\n                  <Text style={styles.dayChipText}>\n                    +{daysWithReports.length - 10} más\n                  </Text>\n                </View>\n              ) : null}\n            </View>\n          </View>\n        ) : null}\n\n        <View style={styles.datePickerRow}>\n          <DatePicker\n            label=\"Fecha de reporte\"\n            value={selectedDate}\n            onChange={d => {\n              setSelectedDate(d);\n              pendingDateRef.current = d;\n            }}\n            onApply={handleApply}\n            onClear={handleClearFilter}\n            onMonthChange={onMonthChange}\n            applyText={loading ? 'Buscando...' : 'Aplicar'}\n            clearText={'Limpiar'}\n            disabled={loading}\n          />\n        </View>\n      </View>\n    </>\n  );\n\n  const emptyComponent = (\n    <View style={styles.emptyBox}>\n      <Text style={styles.emptyIcon}>📋</Text>\n      <Text style={styles.emptyText}>No hay reportes ODS disponibles</Text>\n    </View>\n  );\n\n  return (\n    <>\n      <View style={styles.screen}>\n        <MobileTable\n        style={{ flex: 1 }}\n        contentContainerStyle={styles.screenContent}\n        headerComponent={headerComponent}\n        ListEmptyComponent={\n          loading ? (\n            <View style={styles.loadingBox}>\n              <Text style={styles.loadingText}>Cargando…</Text>\n            </View>\n          ) : (\n            emptyComponent\n          )\n        }\n        data={preparedData}\n        onRowClick={() => {}}\n        getActions={item => {\n          const canEdit = item.Usuario != null && user?.id != null && String(item.Usuario).trim() === String(user.id).trim();\n          if (!canEdit) return [];\n          return [\n            {\n              key: `edit-${item.id}`,\n              label: 'Editar',\n              onPress: () => {\n                // @ts-ignore\n                navigation.navigate(ODS_SCREENS.REPORT, { id: item.id });\n              },\n              backgroundColor: '#F3F4F6',\n              textColor: accentColor,\n            },\n          ];\n        }}\n        accentColor={accentColor}\n      />\n    </View>\n  </>\n  );\n}\n\nexport default function App() {\n  return (\n    <Stack.Navigator\n      initialRouteName=\"ODSHome\"\n      screenOptions={{\n        headerShown: false,\n        gestureEnabled: true,\n        gestureDirection: 'horizontal',\n      }}\n    >\n      <Stack.Screen name={ODS_SCREENS.HOME} component={ODSListScreen} />\n      <Stack.Screen name={ODS_SCREENS.REPORT} component={ODSReportScreen} />\n    </Stack.Navigator>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: '#f9fafb',\n  },\n  screenContent: {\n    paddingHorizontal: 12,\n    paddingTop: 12,\n    paddingBottom: 24,\n  },\n  headerRow: {\n    paddingVertical: 12,\n    paddingHorizontal: 4,\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'space-between',\n  },\n  headerTitle: {\n    fontSize: 18,\n    fontWeight: '700',\n    color: '#1F2937',\n  },\n  filtersCard: {\n    marginTop: 8,\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n    borderRadius: 10,\n    backgroundColor: '#FFFFFF',\n    padding: 12,\n  },\n  filtersTitle: {\n    fontSize: 14,\n    fontWeight: '700',\n    color: '#111827',\n    marginBottom: 8,\n  },\n  daysCard: {\n    backgroundColor: '#EFF6FF',\n    borderColor: '#BFDBFE',\n    borderWidth: 1,\n    borderRadius: 8,\n    padding: 10,\n    marginBottom: 12,\n  },\n  daysCardText: {\n    fontSize: 13,\n    color: '#1E40AF',\n    marginBottom: 8,\n  },\n  daysChipRow: {\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n    gap: 6,\n  },\n  dayChip: {\n    backgroundColor: '#DBEAFE',\n    paddingHorizontal: 8,\n    paddingVertical: 4,\n    borderRadius: 6,\n  },\n  dayChipText: {\n    color: '#1E3A8A',\n    fontSize: 12,\n  },\n  datePickerRow: {\n    marginTop: 6,\n  },\n  loadingBox: {\n    paddingVertical: 40,\n    alignItems: 'center',\n  },\n  loadingText: {\n    color: '#6B7280',\n  },\n  emptyBox: {\n    alignItems: 'center',\n    paddingVertical: 40,\n  },\n  emptyIcon: {\n    fontSize: 48,\n    marginBottom: 10,\n  },\n  emptyText: {\n    color: '#6B7280',\n    fontSize: 16,\n  },\n  tableBox: {\n    marginTop: 12,\n  },\n  toastContainer: {\n    marginTop: 12,\n  },\n});\n\n","import type { BreadcrumbLabelRegistry } from '@data-oil-front/ui-mobile';\nimport { NAVIGATION, ODS_SCREENS } from '@data-oil-front/core-utils';\n\n/**\n * Registro de labels del dominio ODS. El label de ODSReport se deriva del route\n * param `id`: con id es edición, sin id es un reporte nuevo.\n */\nexport const ODS_BREADCRUMB_LABELS: BreadcrumbLabelRegistry = {\n  [NAVIGATION.HOME]: 'Home',\n  [ODS_SCREENS.HOME]: 'ODS',\n  [ODS_SCREENS.REPORT]: (params) => {\n    const id = params?.id;\n    return id ? `Editar reporte #${id}` : 'Nuevo reporte';\n  },\n};\n","import React, { lazy, Suspense } from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { useAuth, useConfig } from '@data-oil-front/core-host';\nimport { NAVIGATION, ODS_SCREENS } from '@data-oil-front/core-utils';\nimport { Breadcrumb } from '@data-oil-front/ui-mobile';\nimport { ODS_BREADCRUMB_LABELS } from '../constants/breadcrumbLabels';\n\nconst Header = lazy(() => import('NavigationWarmupShell/header').then((mod: any) => ({ default: mod.Header ?? mod }))) as React.ComponentType<any>;\n\nimport ODSHomeScreen from '../screens/ODSHomeScreen';\n\nconst Stack = createStackNavigator();\n\nconst DEFAULT_PRIMARY_COLOR = '#000000';\n\nconst CustomHeader = ({ navigation }: any) => {\n  const { user } = useAuth();\n  const { config: clientConfig } = useConfig();\n  let displayName = user?.displayName ? user.displayName.split(' ')[0] : 'Usuario';\n  displayName = displayName.includes('@') ? displayName.split('@')[0] : displayName;\n  const primaryColor = clientConfig.primaryColor ?? DEFAULT_PRIMARY_COLOR;\n\n  return (\n    <>\n      <Suspense fallback={null}>\n        <Header\n          onSyncData={() => {\n            navigation.navigate(NAVIGATION.SYNC_DATA);\n          }}\n          user={{ displayName }}\n        />\n      </Suspense>\n      <Breadcrumb routeLabels={ODS_BREADCRUMB_LABELS} color={primaryColor} />\n    </>\n  );\n};\n\nexport default function ODSNavigator() {\n  return (\n    <Stack.Navigator\n      screenOptions={{\n        headerShown: true,\n        gestureEnabled: true,\n        gestureDirection: 'horizontal',\n        header: CustomHeader,\n      }}\n      initialRouteName={ODS_SCREENS.HOME}\n    >\n      <Stack.Screen\n        name={ODS_SCREENS.HOME}\n        component={ODSHomeScreen}\n        options={{ title: 'ODS', headerBackTitle: 'Atrás' }}\n      />\n    </Stack.Navigator>\n  );\n}","import ODSHomeApp from '../App';\n\nexport default function ODSHomeScreen() {\n  return <ODSHomeApp />;\n}\n"],"names":["dayjs","extend","utc","Stack","createStackNavigator","ODSListScreen","clientConfig","Date","selectedDate","useState","setSelectedDate","odsReports","setOdsReports","loading","setLoading","daysWithReports","setDaysWithReportsState","format","currentMonth","setCurrentMonth","pendingDateRef","useRef","navigation","useNavigation","config","useAuth","user","defaultConfig","useMemo","configService","getDefaultConfig","accentColor","primaryColor","loadReports","useCallback","dateOverride","effectiveDate","undefined","list","fetchODSReports","length","Toast","show","type","text1","text2","e","loadDays","monthKey","days","fetchDaysWithReports","useEffect","preparedData","formatBool","v","map","report","id","Campo","activity_id","report_date","quantity_executed","Comentarios","commentary","Recursos","resources","Usuario","user_id","Edición","edition_number","use_machines","use_labour","use_materials","use_services","use_consumables","date_created","handleApply","current","handleClearFilter","onMonthChange","monthDate","key","headerComponent","View","style","styles","headerRow","Text","headerTitle","filtersCard","filtersTitle","daysCard","daysCardText","daysChipRow","slice","sort","a","b","diff","day","dayChip","dayChipText","datePickerRow","DatePicker","label","value","onChange","d","onApply","onClear","applyText","clearText","disabled","emptyComponent","emptyBox","emptyIcon","emptyText","screen","MobileTable","flex","contentContainerStyle","screenContent","ListEmptyComponent","loadingBox","loadingText","data","onRowClick","getActions","item","String","trim","onPress","navigate","ODS_SCREENS","REPORT","backgroundColor","textColor","App","Navigator","initialRouteName","screenOptions","headerShown","gestureEnabled","gestureDirection","Screen","name","HOME","component","ODSReportScreen","StyleSheet","create","paddingHorizontal","paddingTop","paddingBottom","paddingVertical","flexDirection","alignItems","justifyContent","fontSize","fontWeight","color","marginTop","borderWidth","borderColor","borderRadius","padding","marginBottom","flexWrap","gap","tableBox","toastContainer","NAVIGATION","params","ODSNavigator","Header","lazy","then","mod","default","CustomHeader","displayName","split","includes","Suspense","fallback","onSyncData","SYNC_DATA","Breadcrumb","routeLabels","ODS_BREADCRUMB_LABELS","header","ODSHomeScreen","options","title","headerBackTitle"],"mappings":"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"}