{"version":3,"file":"__federation_expose_DailyReportHome.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/App.tsx","/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/hooks/useDailyReportForm.ts","/Users/claudiobaiardi/Documents/GitHub/aldyl/DataOil-front/apps/data-oil-app/dailyReport/src/store/dailyReportBase.store.ts"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport {\n  StatusBar,\n  StyleSheet,\n  useColorScheme,\n  View,\n  ScrollView,\n} from 'react-native';\nimport { useNavigation } from '@react-navigation/native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport {\n  RadioGroup,\n  ToastProvider,\n  SearchableSelect,\n} from '@data-oil-front/ui-mobile';\nimport {\n  DailyReportFormInputs,\n  useDailyReportForm,\n} from './hooks/useDailyReportForm';\nimport DRFooterActions from './components/DRFooterActions';\n\nimport { Controller, useForm, useWatch } from 'react-hook-form';\nimport {\n  getAllLocations,\n  getFieldsByLocationId,\n  type Location,\n  type Field,\n  useTheme,\n} from '@data-oil-front/core-shared';\nimport { useDailyReportBaseStore } from './store/dailyReportBase.store';\n\nfunction App() {\n  const isDarkMode = useColorScheme() === 'dark';\n  const navigation = useNavigation();\n  const insets = useSafeAreaInsets();\n  const { primaryColor: themeColor } = useTheme();\n  const accentColor = themeColor ?? '#1B418C';\n\n  const [locationDDL, setLocationDDL] = useState<Location[]>([]);\n  const [fieldsDDL, setFieldsDDL] = useState<Field[]>([]);\n  const [loadingLocations, setLoadingLocations] = useState(false);\n  const [loadingFields, setLoadingFields] = useState(false);\n\n  const { setSummary, setFieldId } = useDailyReportBaseStore(state => state);\n\n  const {\n    control,\n    formState: { isValid },\n    handleSubmit,\n    getValues,\n  } = useForm<DailyReportFormInputs>({\n    defaultValues: {\n      location: '1',\n      activity: null,\n      field: null,\n      facility: null,\n    },\n  });\n\n  const location = useWatch({\n    control,\n    name: 'location',\n  });\n\n  const activity = useWatch({\n    control,\n    name: 'activity',\n  });\n\n  useEffect(() => {\n    const init = async () => {\n      setLoadingLocations(true);\n      try {\n        const locations = await getAllLocations();\n        setLocationDDL(Array.isArray(locations) ? locations : []);\n      } finally {\n        setLoadingLocations(false);\n      }\n    };\n    init();\n  }, []);\n\n  useEffect(() => {\n    if (!location) {\n      setFieldsDDL([]);\n      setLoadingFields(false);\n      return;\n    }\n\n    const fetchFields = async () => {\n      setLoadingFields(true);\n      try {\n        const fields = await getFieldsByLocationId(Number(location));\n        setFieldsDDL(Array.isArray(fields) ? fields : []);\n      } finally {\n        setLoadingFields(false);\n      }\n    };\n    fetchFields();\n  }, [location]);\n\n  const { filteredFacilityDDL } = useDailyReportForm(activity ?? '');\n\n  const onSubmit = () => {\n    const submit = handleSubmit(data => {\n      setFieldId(data.field);\n      const summary = {\n        location:\n          locationDDL.find(loc => String(loc.id) === String(data.location))\n            ?.name ?? null,\n        activity: data.activity ?? null,\n        field:\n          fieldsDDL.find(field => String(field.id) === String(data.field))\n            ?.name ?? null,\n        facility: data.facility ?? null,\n      };\n      setSummary(summary);\n    });\n    submit();\n    const selectedFacility = getValues('facility');\n    switch (selectedFacility) {\n      case 'VACUUM':\n        // @ts-ignore navegación provista por host\n        navigation.navigate('DRPage2Vacuum');\n        break;\n      case 'Pozo':\n        // @ts-ignore navegación provista por host\n        navigation.navigate('DRPage2Well');\n        break;\n      case 'E.F':\n        // @ts-ignore navegación provista por host\n        navigation.navigate('DRPage2EF');\n        break;\n      case 'EPT-1':\n        // @ts-ignore navegación provista por host\n        navigation.navigate('DRPage2EPT1');\n        break;\n      case 'Fosa':\n        // @ts-ignore navegación provista por host\n        navigation.navigate('DRPage2Fosa');\n        break;\n      case 'UPT':\n        // @ts-ignore navegación provista por host\n        navigation.navigate('DRPage2UPT');\n        break;\n      case 'Punto de medición':\n        // @ts-ignore navegación provista por host\n        navigation.navigate('DRPage2PM');\n        break;\n    }\n  };\n\n  return (\n    <ToastProvider>\n      <View style={styles.screen}>\n        <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} />\n        <ScrollView\n          style={styles.container}\n          contentContainerStyle={{ paddingBottom: insets.bottom + 120 }}\n        >\n          <View style={styles.form}>\n            <View style={styles.fieldBlock}>\n              <Controller\n                control={control}\n                name=\"location\"\n                rules={{ required: 'La localización es requerida' }}\n                render={({ field: { value, onChange } }) => (\n                  <SearchableSelect\n                    selectedValue={value}\n                    onValueChange={onChange}\n                    label=\"Localización\"\n                    accentColor={accentColor}\n                    required\n                    loading={loadingLocations}\n                    loadingMessage=\"Cargando localizaciones...\"\n                    options={\n                      locationDDL?.map(opt => ({\n                        value: String(opt.id),\n                        label: opt.name,\n                      })) ?? []\n                    }\n                    placeholder=\"Seleccione una localización\"\n                    searchPlaceholder=\"Buscar localización...\"\n                  />\n                )}\n              />\n            </View>\n\n            <View style={styles.fieldBlock}>\n              <Controller\n                control={control}\n                name=\"activity\"\n                rules={{ required: 'La actividad es requerida' }}\n                render={({ field: { value, onChange } }) => (\n                  <RadioGroup\n                    title=\"Actividad\"\n                    options={[\n                      { value: 'Producción', label: 'Producción' },\n                      { value: 'Recuperación', label: 'Recuperación' },\n                    ]}\n                    selectedValue={value}\n                    onValueChange={onChange}\n                    row={false}\n                    accentColor={accentColor}\n                    required\n                  />\n                )}\n              />\n            </View>\n\n            <View style={styles.fieldBlock}>\n              <Controller\n                control={control}\n                name=\"field\"\n                rules={{ required: 'El campo es requerido' }}\n                render={({ field: { value, onChange } }) => (\n                  <SearchableSelect\n                    disabled={!location}\n                    selectedValue={value}\n                    onValueChange={onChange}\n                    label=\"Campo\"\n                    accentColor={accentColor}\n                    required\n                    loading={loadingFields}\n                    loadingMessage=\"Cargando campos...\"\n                    options={\n                      fieldsDDL?.map(opt => ({\n                        value: String(opt.id),\n                        label: opt.name,\n                      })) ?? []\n                    }\n                    placeholder=\"Seleccione un campo\"\n                    searchPlaceholder=\"Buscar campo...\"\n                  />\n                )}\n              />\n            </View>\n\n            <View style={styles.fieldBlock}>\n              <Controller\n                control={control}\n                name=\"facility\"\n                rules={{ required: 'La instalación es requerida' }}\n                render={({ field: { value, onChange } }) => (\n                  <SearchableSelect\n                    disabled={!activity}\n                    selectedValue={value}\n                    onValueChange={onChange}\n                    label=\"Instalación\"\n                    accentColor={accentColor}\n                    required\n                    options={\n                      filteredFacilityDDL?.map(opt => ({\n                        value: opt,\n                        label: opt,\n                      })) ?? []\n                    }\n                    placeholder=\"Seleccione una instalación\"\n                    searchPlaceholder=\"Buscar instalación...\"\n                  />\n                )}\n              />\n            </View>\n          </View>\n        </ScrollView>\n        <DRFooterActions\n          onContinue={onSubmit}\n          continueDisabled={!isValid}\n          accentColor={accentColor}\n        />\n      </View>\n    </ToastProvider>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, backgroundColor: '#f9fafb' },\n  container: { flex: 1 },\n  stickyHeader: {\n    backgroundColor: '#fff',\n    borderBottomWidth: 1,\n    borderBottomColor: '#eee',\n  },\n  form: {\n    marginTop: 8,\n    paddingHorizontal: 20,\n    paddingBottom: 24,\n  },\n  fieldBlock: {\n    marginBottom: 16,\n  },\n});\n\nexport default App;\n","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 { useMemo } from 'react';\nimport { configService, useConfig } from '@data-oil-front/core-shared';\n\nexport interface DailyReportFormState {\n  filteredFacilityDDL: string[];\n  hasWellCluster: boolean;\n}\n\nexport interface DailyReportFormInputs {\n  location: string | null;\n  activity: string | null;\n  field: string | null;\n  facility: string | null;\n}\n\nfunction getFilteredFacilities(\n  activity: string | null,\n  all: string[],\n): string[] {\n  if (activity === 'Producción') {\n    return all.filter(i => i !== 'Fosa');\n  }\n  if (activity === 'Recuperación') {\n    return all.filter(\n      i =>\n        i !== 'Pozo' &&\n        i !== 'EPT-1' &&\n        i !== 'UPT' &&\n        i !== 'Punto de medición',\n    );\n  }\n  return all;\n}\n\nexport function useDailyReportForm(activity = ''): DailyReportFormState {\n  const { config: clientConfig } = useConfig();\n  const defaultConfig = useMemo(() => configService.getDefaultConfig(), []);\n  const facilities =\n    clientConfig.CORE_CONFIG?.dailyReport?.facilities ??\n    defaultConfig.CORE_CONFIG.dailyReport.facilities;\n  const originDestFacilities =\n    clientConfig.CORE_CONFIG?.dailyReport?.originDestinationFacilities ??\n    defaultConfig.CORE_CONFIG.dailyReport.originDestinationFacilities;\n\n  const filteredFacilityDDL = useMemo(\n    () =>\n      getFilteredFacilities(activity, facilities),\n    [activity, facilities],\n  );\n\n  const hasWellCluster = useMemo(() => {\n    return originDestFacilities.includes('well_cluster');\n  }, [originDestFacilities]);\n\n  // TODO: Implement the logic to navigate to the next page\n  // const handleContinue = useCallback(\n  //   (navigate: (route: string) => void) => {\n  //     if (!location || !activity || !field || !facility) return;\n  //     // Sin contexto global: no persistimos nada, navegación inmediata\n  //     let route: string;\n\n  //     switch (facility) {\n  //       case 'Pozo':\n  //         route = 'DRPage2Well';\n  //         break;\n  //       case 'VACUUM':\n  //         route = 'DRPage2Vacuum';\n  //         break;\n  //       case 'Punto de medición':\n  //         route = 'DRPage2PM';\n  //         break;\n  //       case 'E.F':\n  //         route = 'DRPage2EF';\n  //         break;\n  //       case 'EPT-1':\n  //         route = 'DRPage2EPT1';\n  //         break;\n  //       case 'UPT':\n  //         route = 'DRPage2UPT';\n  //         break;\n  //       case 'Fosa':\n  //         route = 'DRPage2Fosa';\n  //         break;\n  //       default:\n  //         route = 'DRPage2Well';\n  //     }\n  //     navigate(route);\n  //   },\n  //   [location, activity, field, facility],\n  // );\n\n  return {\n    filteredFacilityDDL,\n    hasWellCluster,\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":["styles","StyleSheet","create","screen","flex","backgroundColor","container","stickyHeader","borderBottomWidth","borderBottomColor","form","marginTop","paddingHorizontal","paddingBottom","fieldBlock","marginBottom","isDarkMode","useColorScheme","navigation","useNavigation","insets","useSafeAreaInsets","themeColor","primaryColor","accentColor","locationDDL","setLocationDDL","useState","fieldsDDL","setFieldsDDL","loadingLocations","setLoadingLocations","loadingFields","setLoadingFields","useDailyReportBaseStore","state","setSummary","setFieldId","defaultValues","location","activity","field","facility","control","formState","isValid","handleSubmit","useForm","getValues","useWatch","name","useEffect","locations","getAllLocations","Array","isArray","fields","getFieldsByLocationId","Number","useDailyReportForm","filteredFacilityDDL","ToastProvider","View","style","StatusBar","barStyle","ScrollView","contentContainerStyle","bottom","Controller","rules","required","render","value","onChange","SearchableSelect","selectedValue","onValueChange","label","loading","loadingMessage","options","map","opt","String","id","placeholder","searchPlaceholder","RadioGroup","title","row","disabled","onContinue","onSubmit","data","summary","find","loc","submit","navigate","continueDisabled","DRFooterActions","onCancel","onBack","homeRouteName","continueLabel","route","useRoute","calcPaddingBottom","Platform","OS","Math","max","showBackButton","canGoBack","footerBar","StatusButton","onPress","handleCancel","leftIcon","XMarkIcon","size","color","textStyle","flexOne","goBack","ArrowLeftIcon","rightIcon","ArrowRightIcon","position","left","right","borderTopWidth","borderTopColor","paddingTop","gap","flexDirection","shadowColor","shadowOpacity","shadowRadius","shadowOffset","width","height","elevation","cancelButtonText","whiteText","clientConfig","config","defaultConfig","useMemo","configService","getDefaultConfig","facilities","CORE_CONFIG","dailyReport","originDestFacilities","originDestinationFacilities","all","filter","i","getFilteredFacilities","includes","INITIAL_EDITING_STATE","isEditing","reportId","table","revision","payload","INITIAL_STATE","fieldId","editing","DailyReportBaseStore","set","setEditing","resetEditing"],"mappings":"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"}