{"version":3,"file":"__federation_expose_LabReportsHome.chunk.bundle","sources":["/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/labReports/src/App.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/labReports/src/components/LabReportCard.tsx","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/labReports/src/hooks/useInfiniteReports.ts","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/labReports/src/hooks/useLabReports.ts","/Users/claudiobaiardi/Documents/GitHub/aldyl/dataoil-app/apps/data-oil-app/labReports/src/services/labReports.catalog.api.ts"],"sourcesContent":["import React, { useCallback, useMemo, useState, useEffect } from 'react';\nimport {\n  View,\n  Text,\n  StyleSheet,\n  useColorScheme,\n  StatusBar,\n  FlatList,\n  Pressable,\n} from 'react-native';\nimport { ChevronDownIcon, ChevronUpIcon } from 'react-native-heroicons/solid';\nimport { useRoute, useNavigation } from '@react-navigation/native';\nimport {\n  DateRangePicker,\n  LoadingSpinner,\n  Select,\n  MenuItem,\n} from '@data-oil-front/ui-mobile';\nimport { useLabReports } from './hooks/useLabReports';\nimport LabReportCard from './components/LabReportCard';\nimport type { LabReportRowItem } from './types/labReports';\nimport { useTheme } from '@data-oil-front/core-host';\nimport { getConfiguredLabInstallationOptions } from './utils/labReports.installations';\n\ntype ListRow =\n  | { type: 'item'; item: LabReportRowItem }\n  | { type: 'state'; state: 'loading' | 'empty' };\n\nexport default function LabReportsHomeScreen() {\n  const route = useRoute<any>();\n  const navigation = useNavigation<any>();\n\n  const { primaryColor } = useTheme();\n  const [showFilters, setShowFilters] = useState(false);\n\n  const toggleFilters = useCallback(() => {\n    setShowFilters(prev => !prev);\n  }, []);\n\n  const {\n    pendingRange,\n    pendingInstallationType,\n    historyRange,\n    historyInstallationType,\n    activeRows,\n    historyRows,\n    daysWithReports,\n    applyDate,\n    applyInstallationType,\n    clearFilter,\n    openActive,\n    openHistory,\n    loadingActive,\n    loadingHistory,\n    totalHistoryCount,\n    totalHistoryFilteredCount,\n    ensureHistoryLoaded,\n    historyLoaded,\n    loadMoreHistory,\n    hasMoreHistory,\n    loadingMoreHistory,\n  } = useLabReports();\n\n  const isDarkMode = useColorScheme() === 'dark';\n  const installationOptions = getConfiguredLabInstallationOptions()\n\n  const [activeTab, setActiveTab] = useState<'pending' | 'history'>(() => {\n    if (route.params?.filter === 'history') return 'history';\n    return 'pending';\n  });\n\n  useEffect(() => {\n    const params = route.params;\n    const hasParams = params?.resetDate || params?.filter;\n\n    if (hasParams) {\n      if (params.resetDate) {\n        clearFilter('pending');\n        clearFilter('history');\n      }\n      if (params.filter === 'pending') {\n        setActiveTab('pending');\n      } else if (params.filter === 'history') {\n        setActiveTab('history');\n        ensureHistoryLoaded();\n      }\n\n      navigation.setParams({ resetDate: undefined, filter: undefined });\n    }\n  }, [route.params, clearFilter, ensureHistoryLoaded, navigation]);\n\n  const currentRange = useMemo(\n    () => (activeTab === 'pending' ? pendingRange : historyRange),\n    [activeTab, pendingRange, historyRange],\n  );\n\n  const currentInstallationType = useMemo(\n    () =>\n      activeTab === 'pending'\n        ? pendingInstallationType\n        : historyInstallationType,\n    [activeTab, pendingInstallationType, historyInstallationType],\n  );\n\n  const pendingCountLabel = useMemo(\n    () => (activeRows.length > 0 ? ` (${activeRows.length})` : ''),\n    [activeRows.length],\n  );\n\n  const isFiltered = useMemo(() => {\n    const filters = activeTab === 'pending' ? { range: pendingRange, type: pendingInstallationType } : { range: historyRange, type: historyInstallationType };\n    return !!(filters.range.startDate || filters.type);\n  }, [activeTab, pendingRange, pendingInstallationType, historyRange, historyInstallationType]);\n\n  const historyCountLabel = useMemo(() => {\n    const count = isFiltered ? totalHistoryFilteredCount : totalHistoryCount;\n    return count > 0 ? ` (${count})` : '';\n  }, [isFiltered, totalHistoryFilteredCount, totalHistoryCount]);\n\n  const currentData = useMemo(\n    () => (activeTab === 'pending' ? activeRows : historyRows),\n    [activeTab, activeRows, historyRows],\n  );\n\n  const currentOnPress = useMemo(\n    () => (activeTab === 'pending' ? openActive : openHistory),\n    [activeTab, openActive, openHistory],\n  );\n\n  const currentLoading = useMemo(\n    () => (activeTab === 'pending' ? loadingActive : loadingHistory),\n    [activeTab, loadingActive, loadingHistory],\n  );\n\n  const listRows: ListRow[] = useMemo(() => {\n    const rows: ListRow[] = [];\n\n    const isFetching = currentLoading || (activeTab === 'history' && loadingMoreHistory);\n\n    if (currentData.length === 0) {\n      rows.push({ type: 'state', state: isFetching ? 'loading' : 'empty' });\n      return rows;\n    }\n\n    rows.push(...currentData.map(item => ({ type: 'item' as const, item })));\n    return rows;\n  }, [currentData, currentLoading, loadingMoreHistory, activeTab]);\n\n  const handleTabChange = useCallback(\n    (tab: 'pending' | 'history') => {\n      setActiveTab(tab);\n      if (tab === 'history') {\n        ensureHistoryLoaded();\n      }\n    },\n    [ensureHistoryLoaded],\n  );\n\n  const handleEndReached = useCallback(() => {\n    if (activeTab !== 'history') return;\n    if (!historyLoaded) return;\n    if (loadingHistory || loadingMoreHistory) return;\n    if (!hasMoreHistory) return;\n    loadMoreHistory();\n  }, [\n    activeTab,\n    hasMoreHistory,\n    historyLoaded,\n    loadMoreHistory,\n    loadingHistory,\n    loadingMoreHistory,\n  ]);\n\n  const handleOnScrollBeginDrag = useCallback(() => {\n    if (showFilters) {\n      setShowFilters(false);\n    }\n  }, [showFilters]);\n\n  return (\n    <View style={styles.container}>\n      <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} />\n      <View style={styles.tabsHeader}>\n        <View style={styles.tabsWrap}>\n          <Pressable\n            accessibilityRole=\"button\"\n            onPress={() => handleTabChange('pending')}\n            style={({ pressed }) => [\n              styles.tabBtn,\n              activeTab === 'pending' ? styles.tabBtnActive : null,\n              pressed && { opacity: 0.7 },\n            ]}\n          >\n            <Text\n              style={[\n                styles.tabText,\n                activeTab === 'pending' ? styles.tabTextActive : null,\n              ]}\n            >\n              Pendientes{pendingCountLabel}\n            </Text>\n          </Pressable>\n          <Pressable\n            accessibilityRole=\"button\"\n            onPress={() => handleTabChange('history')}\n            style={({ pressed }) => [\n              styles.tabBtn,\n              activeTab === 'history' ? styles.tabBtnActive : null,\n              pressed && { opacity: 0.7 },\n            ]}\n          >\n            <Text\n              style={[\n                styles.tabText,\n                activeTab === 'history' ? styles.tabTextActive : null,\n              ]}\n            >\n              Historial{historyCountLabel}\n            </Text>\n          </Pressable>\n        </View>\n      </View>\n      <View style={styles.stickyHeader}>\n        <Pressable\n          style={({ pressed }) => [\n            styles.toggleHeader,\n            pressed && { opacity: 0.7 },\n          ]}\n          onPress={toggleFilters}\n          hitSlop={8}\n        >\n          <Text style={styles.sectionTitle}>Filtros</Text>\n          {showFilters ? (\n            <ChevronUpIcon size={24} color={primaryColor} />\n          ) : (\n            <ChevronDownIcon size={24} color={primaryColor} />\n          )}\n        </Pressable>\n\n        {showFilters && (\n          <View style={styles.filters}>\n            <View style={styles.filtersCol}>\n              <View style={styles.filterCol}>\n                <DateRangePicker\n                  label=\"Rango de fechas\"\n                  value={currentRange}\n                  onChange={val => applyDate(activeTab, val)}\n                  onDateRangeChange={val => applyDate(activeTab, val)}\n                  onClear={() => clearFilter(activeTab)}\n                  placeholder=\"Desde - Hasta\"\n                />\n              </View>\n              <View style={styles.filterCol}>\n                <Select\n                  label=\"Instalación\"\n                  value={currentInstallationType}\n                  onChange={(val: any) => applyInstallationType(activeTab, val)}\n                  placeholder=\"Todas\"\n                >\n                  <MenuItem value={null}>Todas</MenuItem>\n                  {installationOptions.map(option => (\n                    <MenuItem key={option.tableName} value={option.tableName}>\n                      {option.label}\n                    </MenuItem>\n                  ))}\n                </Select>\n              </View>\n            </View>\n            {activeTab === 'pending' && daysWithReports.length > 0 ? (\n              <View style={styles.banner}>\n                <Text style={styles.bannerText}>\n                  📅 Este mes tiene{' '}\n                  <Text style={styles.bannerStrong}>\n                    {daysWithReports.length}\n                  </Text>{' '}\n                  día{daysWithReports.length > 1 ? 's' : ''} con reportes\n                  pendientes\n                </Text>\n                <View style={styles.daysWrap}>\n                  {daysWithReports.slice(0, 10).map(day => (\n                    <View key={day} style={styles.dayPill}>\n                      <Text style={styles.dayPillText}>\n                        {day.split('-')[2]}\n                      </Text>\n                    </View>\n                  ))}\n                  {daysWithReports.length > 10 ? (\n                    <View style={styles.dayPill}>\n                      <Text style={styles.dayPillText}>\n                        +{daysWithReports.length - 10} más\n                      </Text>\n                    </View>\n                  ) : null}\n                </View>\n              </View>\n            ) : null}\n          </View>\n        )}\n      </View>\n      <FlatList\n        onScrollBeginDrag={handleOnScrollBeginDrag}\n        data={listRows}\n        keyboardShouldPersistTaps=\"handled\"\n        keyExtractor={(row: ListRow, index: number) => {\n          if (row.type === 'state') return `state:${row.state}`;\n          const normalizedItemId = String(row.item._itemId ?? '');\n          if (normalizedItemId && !normalizedItemId.includes('undefined')) {\n            return normalizedItemId;\n          }\n          return `fallback:${String(row.item._itemId ?? 'na')}:${String(row.item.Fecha ?? 'na')}:${index}`;\n        }}\n        renderItem={({ item: row }: { item: ListRow }) => {\n          if (row.type === 'state') {\n            if (row.state === 'loading') {\n              return (\n                <View style={styles.empty}>\n                  <LoadingSpinner size=\"large\" color=\"#6B7280\" />\n                </View>\n              );\n            }\n            return (\n              <View style={styles.empty}>\n                <Text style={styles.emptyIcon}>\n                  {activeTab === 'pending' ? '📋' : '📊'}\n                </Text>\n                <Text style={styles.emptyTitle}>\n                  {isFiltered\n                    ? 'No se encontraron resultados'\n                    : activeTab === 'pending'\n                    ? 'No hay reportes pendientes'\n                    : totalHistoryCount > 0\n                    ? 'Buscando reportes antiguos...'\n                    : 'No hay reportes en el historial'}\n                </Text>\n                <Text style={styles.emptyText}>\n                  {isFiltered\n                    ? 'Prueba ajustando los filtros aplicados'\n                    : activeTab === 'pending'\n                    ? 'Todos los reportes han sido procesados'\n                    : totalHistoryCount > 0\n                    ? 'Estamos cargando registros previos'\n                    : 'Los reportes procesados aparecerán aquí'}\n                </Text>\n              </View>\n            );\n          }\n\n          return (\n            <View style={styles.cardWrap}>\n              <LabReportCard\n                item={row.item}\n                status={activeTab === 'pending' ? 'pending' : 'done'}\n                onPress={currentOnPress}\n              />\n            </View>\n          );\n        }}\n        ItemSeparatorComponent={ItemSeparator}\n        onEndReached={handleEndReached}\n        onEndReachedThreshold={0.4}\n        initialNumToRender={12}\n        maxToRenderPerBatch={12}\n        windowSize={7}\n        ListFooterComponent={\n          activeTab === 'history' && historyLoaded && loadingMoreHistory && currentData.length > 0 ? (\n            <View style={styles.footerLoading}>\n              <LoadingSpinner size=\"large\" color=\"#6B7280\" />\n              <Text style={styles.footerLoadingText}>Cargando más reportes...</Text>\n            </View>\n          ) : null\n        }\n        contentContainerStyle={contentContainerStyle}\n        showsVerticalScrollIndicator={true}\n      />\n\n      {}\n      {}\n    </View>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    backgroundColor: '#FFFFFF',\n  },\n  tabsHeader: {\n    paddingHorizontal: 16,\n    paddingVertical: 8,\n    backgroundColor: '#FFFFFF',\n    zIndex: 10,\n    elevation: 12,\n  },\n  toggleHeader: {\n    alignItems: 'center',\n    justifyContent: 'center',\n    paddingVertical: 12,\n  },\n  filters: {\n    gap: 12,\n    paddingHorizontal: 16,\n    paddingTop: 8,\n    paddingBottom: 8,\n    backgroundColor: '#FFFFFF',\n  },\n  filtersCol: {\n    gap: 12,\n    paddingBottom: 4,\n  },\n  filterCol: {\n    width: '100%',\n  },\n  stickyHeader: {\n    backgroundColor: '#FFFFFF',\n    zIndex: 10,\n    elevation: 12,\n    marginBottom: 16,\n  },\n  sectionTitle: {\n    fontSize: 12,\n    fontWeight: '700',\n    color: '#111827',\n  },\n  banner: {\n    backgroundColor: '#EFF6FF',\n    padding: 12,\n    borderWidth: 1,\n    borderColor: '#BFDBFE',\n    borderRadius: 10,\n    gap: 6,\n  },\n  bannerText: {\n    color: '#1D4ED8',\n    fontSize: 14,\n  },\n  bannerStrong: {\n    fontWeight: '700',\n  },\n  daysWrap: {\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n    gap: 6,\n  },\n  dayPill: {\n    backgroundColor: '#DBEAFE',\n    borderRadius: 8,\n    paddingHorizontal: 8,\n    paddingVertical: 4,\n  },\n  dayPillText: {\n    color: '#1D4ED8',\n    fontSize: 14,\n  },\n  empty: {\n    alignItems: 'center',\n    paddingVertical: 24,\n    gap: 6,\n  },\n  emptyIcon: {\n    fontSize: 48,\n    color: '#9CA3AF',\n  },\n  emptyTitle: {\n    fontSize: 16,\n    color: '#6B7280',\n  },\n  emptyText: {\n    fontSize: 14,\n    color: '#9CA3AF',\n  },\n  sectionHeader: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'space-between',\n    marginTop: 8,\n    marginBottom: 8,\n  },\n  listTitle: {\n    fontSize: 14,\n    fontWeight: '700',\n    color: '#111827',\n  },\n  tabsWrap: {\n    flexDirection: 'row',\n    backgroundColor: '#F3F4F6',\n    borderRadius: 12,\n    padding: 4,\n    gap: 4,\n  },\n  tabBtn: {\n    flex: 1,\n    paddingVertical: 10,\n    borderRadius: 10,\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  tabBtnActive: {\n    backgroundColor: '#FFFFFF',\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n  },\n  tabText: {\n    fontSize: 13,\n    fontWeight: '700',\n    color: '#6B7280',\n  },\n  tabTextActive: {\n    color: '#111827',\n  },\n  cardWrap: {\n    paddingHorizontal: 16,\n  },\n  footerLoading: {\n    paddingVertical: 16,\n    alignItems: 'center',\n    gap: 8,\n  },\n  footerLoadingText: {\n    fontSize: 14,\n    color: '#6B7280',\n  },\n});\n\nfunction ItemSeparator() {\n  return <View style={separatorStyle} />;\n}\nconst separatorStyle = { height: 8 } as const;\nconst contentContainerStyle = { paddingBottom: 16 } as const;\n","import React from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity } from 'react-native';\nimport type { LabReportRowItem } from '../types/labReports';\nimport { Tag } from '@data-oil-front/ui-mobile';\n\nexport interface LabReportCardProps {\n  item: LabReportRowItem;\n  status: 'pending' | 'done';\n  onPress?: (item: LabReportRowItem) => void;\n}\n\nexport default function LabReportCard({ item, status, onPress }: LabReportCardProps) {\n  return (\n    <TouchableOpacity\n      style={styles.card}\n      activeOpacity={0.85}\n      onPress={() => onPress?.(item)}\n    >\n      <View style={[styles.header]}>\n        <View style={styles.titleWrap}>\n          <Text style={styles.installationTitle} numberOfLines={2} ellipsizeMode=\"tail\">Instalación: <Text style={styles.installationType}>{item.Instalación}</Text></Text>\n        </View>\n        <Tag\n          label={status === 'pending' ? 'Pendiente' : 'Completado'}\n          backgroundColor={status === 'pending' ? '#FEF3C7' : '#D1FAE5'}\n          textColor={status === 'pending' ? '#92400E' : '#065F46'}\n          size=\"small\"\n          style={styles.statusPill}\n        />\n      </View>\n\n      <View style={styles.row}> \n        <Text style={styles.label}>Nombre de Instalación:</Text>\n        <Text style={styles.value}>{item['Nombre de Instalación']}</Text>\n      </View>\n      {item['%AyS'] ? (\n        <View style={styles.row}> \n          <Text style={styles.label}>% Ay S:</Text>\n          <Text style={styles.value}>{item['%AyS']}</Text>\n        </View>\n      ) : null}\n      {item['°API'] ? (\n        <View style={styles.row}> \n          <Text style={styles.label}>° A P I:</Text>\n          <Text style={styles.value}>{item['°API']}</Text>\n        </View>\n      ) : null}\n      <View style={styles.row}> \n        <Text style={styles.label}>Fecha:</Text>\n        <Text style={styles.value}>{item.Fecha}</Text>\n      </View>\n    </TouchableOpacity>\n  );\n}\n\nconst styles = StyleSheet.create({\n  card: {\n    backgroundColor: '#FFFFFF',\n    borderWidth: 1,\n    borderColor: '#E5E7EB',\n    borderRadius: 14,\n    padding: 14,\n    gap: 8,\n    shadowColor: '#0F172A',\n    shadowOpacity: 0.06,\n    shadowRadius: 8,\n    shadowOffset: { width: 0, height: 4 },\n    elevation: 2,\n  },\n  cardDone: {\n    borderLeftWidth: 4,\n    borderLeftColor: '#10B981',\n  },\n  cardPending: {\n    borderLeftWidth: 4,\n    borderLeftColor: '#F59E0B',\n  },\n  header: {\n    flexDirection: 'row',\n    alignItems: 'flex-start',\n    justifyContent: 'space-between',\n    marginBottom: 4,\n    backgroundColor: '#F9FAFB',\n    paddingHorizontal: 10,\n    paddingVertical: 8,\n    borderRadius: 10,\n  },\n  titleWrap: {\n    flex: 1,\n    paddingRight: 12,\n  },\n  installationTitle: {\n    color: '#111827',\n    fontSize: 16,\n    fontWeight: '700',\n    flexShrink: 1,\n  },\n  installationType: {\n    fontWeight: '700',\n  },\n  row: {\n    flexDirection: 'row',\n    alignItems: 'flex-start',\n    justifyContent: 'space-between',\n    gap: 8,\n    paddingVertical: 6,\n    borderTopWidth: 1,\n    borderTopColor: '#F3F4F6',\n  },\n  label: {\n    color: '#6B7280',\n    fontSize: 14,\n    flex: 1,\n  },\n  value: {\n    color: '#0F172A',\n    fontSize: 15,\n    fontWeight: '700',\n    flex: 1,\n    textAlign: 'right',\n    flexShrink: 1,\n  },\n  statusPill: {\n    alignSelf: 'flex-start',\n    marginLeft: 8,\n  },\n});\n\n\n","import { useCallback, useMemo, useRef, useState } from 'react';\nimport dayjs from 'dayjs';\nimport type { LabReport } from '../types/labReports';\nimport { fetchReportsHistoryWindow, fetchReportsCount } from '../services/labReports.api';\nimport { resolveFacilityTypeFromTable } from '../utils/labReports.mappers';\n\nconst INITIAL_WINDOW_MONTHS = 2;\nconst LOAD_MORE_WINDOW_MONTHS = 1;\nconst MAX_EMPTY_WINDOWS_PER_LOAD = 12;\n\nexport interface InfiniteFilters {\n  installationType?: string | null;\n  dateRange?: { startDate: Date | null; endDate: Date | null } | null;\n}\n\nfunction uniqById(items: LabReport[]): LabReport[] {\n  const map = new Map<number, LabReport>();\n  for (const it of items) {\n    map.set(it.id, it);\n  }\n  return Array.from(map.values()).sort(\n    (a, b) =>\n      new Date(b.date_created).getTime() - new Date(a.date_created).getTime(),\n  );\n}\n\nexport function useInfiniteReports() {\n  const [items, setItems] = useState<LabReport[]>([]);\n  const [totalCount, setTotalCount] = useState<number>(0);\n  const [totalFilteredCount, setTotalFilteredCount] = useState<number>(0);\n  const [loadingInitial, setLoadingInitial] = useState(false);\n  const [loadingMore, setLoadingMore] = useState(false);\n  const [error, setError] = useState<Error | null>(null);\n  const [loadedOnce, setLoadedOnce] = useState(false);\n  const [exhausted, setExhausted] = useState(false);\n\n  const currentFiltersRef = useRef<InfiniteFilters>({});\n\n  const cursorToRef = useRef<Date>(new Date());\n\n  const lastRequestIdRef = useRef(0);\n\n  const hasMore = useMemo(\n    () => !exhausted && items.length < totalFilteredCount,\n    [exhausted, items.length, totalFilteredCount],\n  );\n\n  const loadWindow = useCallback(\n    async (fromISO: string, toISO: string, facilityType?: string | null) => {\n      const res = await fetchReportsHistoryWindow({\n        fromISO,\n        toISO,\n        facilityType,\n      });\n      setTotalCount(prev => Math.max(prev, res.totalTableCount ?? 0));\n      return res.result ?? [];\n    },\n    [],\n  );\n\n  const loadInitial = useCallback(\n    async (filters: InfiniteFilters = {}) => {\n      const requestId = ++lastRequestIdRef.current;\n      setLoadingInitial(true);\n      setError(null);\n      setExhausted(false);\n      currentFiltersRef.current = filters;\n      try {\n        const { dateRange, installationType } = filters;\n        const facilityType = resolveFacilityTypeFromTable(\n          installationType || undefined,\n        );\n\n        const totalFiltered = await fetchReportsCount({\n          facilityType,\n          fromISO: dateRange?.startDate ? dayjs(dateRange.startDate).startOf('day').toISOString() : undefined,\n          toISO: dateRange?.endDate ? dayjs(dateRange.endDate).endOf('day').toISOString() : undefined,\n        });\n\n        if (requestId !== lastRequestIdRef.current) return;\n        setTotalFilteredCount(totalFiltered);\n\n        let to: Date;\n        let from: Date;\n\n        if (dateRange?.startDate && dateRange?.endDate) {\n          to = dayjs(dateRange.endDate).endOf('day').toDate();\n          const rangeStart = dayjs(dateRange.startDate).startOf('day').toDate();\n          from = dayjs(to).subtract(INITIAL_WINDOW_MONTHS, 'month').toDate();\n          if (from < rangeStart) from = rangeStart;\n        } else if (dateRange?.startDate) {\n          to = new Date();\n          from = dayjs(dateRange.startDate).startOf('day').toDate();\n          const windowLimit = dayjs(to)\n            .subtract(INITIAL_WINDOW_MONTHS, 'month')\n            .toDate();\n          if (from < windowLimit) from = windowLimit;\n        } else {\n          to = new Date();\n          from = dayjs(to).subtract(INITIAL_WINDOW_MONTHS, 'month').toDate();\n        }\n\n        cursorToRef.current = to;\n\n        let windowItems = await loadWindow(\n          from.toISOString(),\n          to.toISOString(),\n          facilityType,\n        );\n\n        if (requestId !== lastRequestIdRef.current) return;\n\n        if (windowItems.length === 0 && !dateRange?.startDate) {\n          let attempts = 0;\n          let currentTo = from;\n          while (attempts < MAX_EMPTY_WINDOWS_PER_LOAD) {\n            const currentFrom = dayjs(currentTo)\n              .subtract(LOAD_MORE_WINDOW_MONTHS, 'month')\n              .toDate();\n            const moreItems = await loadWindow(\n              currentFrom.toISOString(),\n              currentTo.toISOString(),\n              facilityType,\n            );\n\n            if (requestId !== lastRequestIdRef.current) return;\n\n            if (moreItems.length > 0) {\n              windowItems = moreItems;\n              break;\n            }\n            currentTo = currentFrom;\n            attempts += 1;\n          }\n        }\n\n        setItems(uniqById(windowItems));\n        setLoadedOnce(true);\n      } catch (e) {\n        if (requestId === lastRequestIdRef.current) {\n          setError(e as Error);\n          setLoadedOnce(true);\n        }\n      } finally {\n        if (requestId === lastRequestIdRef.current) {\n          setLoadingInitial(false);\n        }\n      }\n    },\n    [loadWindow],\n  );\n\n  const loadMore = useCallback(async () => {\n    if (loadingInitial || loadingMore) return;\n    if (!hasMore) return;\n\n    const requestId = lastRequestIdRef.current;\n    setLoadingMore(true);\n    setError(null);\n    try {\n      const { dateRange, installationType } = currentFiltersRef.current;\n      const facilityType = resolveFacilityTypeFromTable(\n        installationType || undefined,\n      );\n      const rangeStart = dateRange?.startDate\n        ? dayjs(dateRange.startDate).startOf('day').toDate()\n        : null;\n\n      const last = items[items.length - 1];\n      const initialTo = last?.date_created\n        ? new Date(last.date_created)\n        : cursorToRef.current;\n\n      let to = initialTo;\n      let attempts = 0;\n\n      while (attempts < MAX_EMPTY_WINDOWS_PER_LOAD) {\n        let from = dayjs(to).subtract(LOAD_MORE_WINDOW_MONTHS, 'month').toDate();\n\n        if (rangeStart && from < rangeStart) {\n          from = rangeStart;\n        }\n\n        if (rangeStart && to <= rangeStart) {\n          setExhausted(true);\n          break;\n        }\n\n        const windowItems = await loadWindow(\n          from.toISOString(),\n          to.toISOString(),\n          facilityType,\n        );\n\n        if (requestId !== lastRequestIdRef.current) return;\n\n        if (windowItems.length > 0) {\n          setItems(prev => uniqById([...prev, ...windowItems]));\n          break;\n        }\n\n        if (items.length >= totalFilteredCount && totalFilteredCount > 0) {\n          setExhausted(true);\n          break;\n        }\n        if (rangeStart && from <= rangeStart) {\n          setExhausted(true);\n          break;\n        }\n\n        to = from;\n        attempts += 1;\n      }\n    } catch (e) {\n      if (requestId === lastRequestIdRef.current) {\n        setError(e as Error);\n      }\n    } finally {\n      if (requestId === lastRequestIdRef.current) {\n        setLoadingMore(false);\n      }\n    }\n  }, [hasMore, items, loadWindow, loadingInitial, loadingMore, totalFilteredCount]);\n\n  const reset = useCallback(() => {\n    lastRequestIdRef.current++;\n    setItems([]);\n    setTotalCount(0);\n    setTotalFilteredCount(0);\n    setLoadingInitial(false);\n    setLoadingMore(false);\n    setError(null);\n    setLoadedOnce(false);\n    setExhausted(false);\n    cursorToRef.current = new Date();\n    currentFiltersRef.current = {};\n  }, []);\n\n  return {\n    items,\n    totalCount,\n    totalFilteredCount,\n    hasMore,\n    loadingInitial,\n    loadingMore,\n    error,\n    loadedOnce,\n    loadInitial,\n    loadMore,\n    reset,\n  } as const;\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { useNavigation } from '@react-navigation/native';\nimport { DateRange } from '@data-oil-front/ui-mobile';\nimport { LAB_REPORTS_SCREENS } from '@data-oil-front/core-utils';\nimport type {\n  Catalogs,\n  LabReport,\n  LabReportRowItem,\n} from '../types/labReports';\nimport { fetchCatalogs } from '../services/labReports.catalog.api';\nimport {\n  fetchPendingReports,\n  fetchPendingReportsRange,\n  fetchDaysWithReports,\n} from '../services/labReports.api';\nimport { formatReportRow } from '../utils/labReports.mappers';\nimport { useInfiniteReports } from './useInfiniteReports';\n\ntype Nav = ReturnType<typeof useNavigation>;\n\nexport function useLabReports() {\n  const navigation = useNavigation() as Nav;\n\n  const [pendingRange, setPendingRange] = useState<DateRange>({\n    startDate: null,\n    endDate: null,\n  });\n  const [pendingInstallationType, setPendingInstallationType] = useState<\n    string | null\n  >(null);\n\n  const [historyRange, setHistoryRange] = useState<DateRange>({\n    startDate: null,\n    endDate: null,\n  });\n  const [historyInstallationType, setHistoryInstallationType] = useState<\n    string | null\n  >(null);\n\n  const [loadingCount, setLoadingCount] = useState(0);\n  const [loadingActive, setLoadingActive] = useState(false);\n  const [catalogs, setCatalogs] = useState<Catalogs>({\n    locations: [],\n    fields: [],\n    facilitiesList: [],\n  });\n  const [active, setActive] = useState<LabReport[]>([]);\n  const [activeRows, setActiveRows] = useState<LabReportRowItem[]>([]);\n  const [historyRows, setHistoryRows] = useState<LabReportRowItem[]>([]);\n  const [daysWith, setDaysWith] = useState<string[]>([]);\n\n  const historyInfinite = useInfiniteReports();\n  const history = historyInfinite.items;\n  const historyLoaded = historyInfinite.loadedOnce;\n  const loadingHistory = historyInfinite.loadingInitial;\n  const totalCount = historyInfinite.totalCount;\n\n  const loading = useMemo(() => loadingCount > 0, [loadingCount]);\n\n  const startLoading = useCallback(() => {\n    setLoadingCount(c => c + 1);\n  }, []);\n\n  const stopLoading = useCallback(() => {\n    setLoadingCount(c => Math.max(0, c - 1));\n  }, []);\n\n  const monthKey = useMemo(\n    () => dayjs(pendingRange.startDate || undefined).format('YYYY-MM'),\n    [pendingRange.startDate],\n  );\n\n  const loadCatalogs = useCallback(async () => {\n    startLoading();\n    try {\n      const cats = await fetchCatalogs();\n      setCatalogs(cats);\n    } catch (e) {\n    } finally {\n      stopLoading();\n    }\n  }, [startLoading, stopLoading]);\n\n  const loadActiveReports = useCallback(\n    async (rangeOverride?: DateRange | null, tableOverride?: string | null) => {\n      startLoading();\n      setLoadingActive(true);\n      try {\n        const rangeToUse =\n          rangeOverride !== undefined ? rangeOverride : pendingRange;\n        const tableToUse =\n          tableOverride !== undefined\n            ? tableOverride || undefined\n            : pendingInstallationType || undefined;\n\n        if (!rangeToUse?.startDate) {\n          const pending = await fetchPendingReports(undefined, tableToUse);\n          setActive(pending);\n          return;\n        }\n\n        const startDateISO = dayjs(rangeToUse.startDate).format('YYYY-MM-DD');\n        const endDateISO = dayjs(\n          rangeToUse.endDate || rangeToUse.startDate,\n        ).format('YYYY-MM-DD');\n\n        const pending = await fetchPendingReportsRange(\n          startDateISO,\n          endDateISO,\n          tableToUse,\n        );\n        setActive(pending);\n      } catch (e) {\n      } finally {\n        setLoadingActive(false);\n        stopLoading();\n      }\n    },\n    [pendingRange, pendingInstallationType, startLoading, stopLoading],\n  );\n\n  const loadHistoryReports = useCallback(async () => {\n    startLoading();\n    try {\n      await historyInfinite.loadInitial({\n        dateRange: historyRange,\n        installationType: historyInstallationType,\n      });\n    } finally {\n      stopLoading();\n    }\n  }, [\n    historyInfinite,\n    historyRange,\n    historyInstallationType,\n    startLoading,\n    stopLoading,\n  ]);\n\n  const loadDays = useCallback(async () => {\n    startLoading();\n    try {\n      const days = await fetchDaysWithReports(monthKey);\n      setDaysWith(days);\n    } catch (e) {\n    } finally {\n      stopLoading();\n    }\n  }, [monthKey, startLoading, stopLoading]);\n\n  useEffect(() => {\n    loadCatalogs();\n    loadActiveReports();\n    loadDays();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  useEffect(() => {\n    loadDays();\n  }, [loadDays]);\n\n  useEffect(() => {\n    (async () => {\n      const rows = await Promise.all(\n        active.map(it =>\n          Promise.resolve(formatReportRow(it, catalogs, 'active')),\n        ),\n      );\n      setActiveRows(rows);\n    })();\n  }, [active, catalogs]);\n\n  useEffect(() => {\n    (async () => {\n      const rows = await Promise.all(\n        history.map(item =>\n          Promise.resolve(formatReportRow(item, catalogs, 'history')),\n        ),\n      );\n      setHistoryRows(rows);\n    })();\n  }, [history, catalogs]);\n\n  const applyDate = useCallback(\n    (tab: 'pending' | 'history', range?: DateRange | null) => {\n      if (tab === 'pending') {\n        if (range !== undefined && range !== null) {\n          setPendingRange(range);\n        }\n        loadActiveReports(range);\n      } else {\n        if (range !== undefined && range !== null) {\n          setHistoryRange(range);\n        }\n        historyInfinite.reset();\n        historyInfinite.loadInitial({\n          dateRange: range,\n          installationType: historyInstallationType,\n        });\n      }\n    },\n    [loadActiveReports, historyInfinite, historyInstallationType],\n  );\n\n  const clearFilter = useCallback(\n    (tab: 'pending' | 'history') => {\n      const emptyRange = { startDate: null, endDate: null };\n      if (tab === 'pending') {\n        setPendingRange(emptyRange);\n        setPendingInstallationType(null);\n        loadActiveReports(emptyRange, null);\n      } else {\n        setHistoryRange(emptyRange);\n        setHistoryInstallationType(null);\n        historyInfinite.reset();\n        historyInfinite.loadInitial({\n          dateRange: emptyRange,\n          installationType: null,\n        });\n      }\n    },\n    [loadActiveReports, historyInfinite],\n  );\n\n  const applyInstallationType = useCallback(\n    (tab: 'pending' | 'history', type: string | null) => {\n      if (tab === 'pending') {\n        setPendingInstallationType(type);\n        loadActiveReports(undefined, type);\n      } else {\n        setHistoryInstallationType(type);\n        historyInfinite.reset();\n        historyInfinite.loadInitial({\n          dateRange: historyRange,\n          installationType: type,\n        });\n      }\n    },\n    [loadActiveReports, historyInfinite, historyRange],\n  );\n\n  const refresh = useCallback(() => {\n    loadActiveReports();\n    loadDays();\n    if (historyLoaded) {\n      historyInfinite.reset();\n      loadHistoryReports();\n    }\n  }, [\n    loadActiveReports,\n    loadDays,\n    historyLoaded,\n    loadHistoryReports,\n    historyInfinite,\n  ]);\n\n  const ensureHistoryLoaded = useCallback(() => {\n    if (historyLoaded) return;\n    loadHistoryReports();\n  }, [historyLoaded, loadHistoryReports]);\n\n  const loadMoreHistory = useCallback(() => {\n    if (!historyLoaded) return;\n    historyInfinite.loadMore();\n  }, [historyInfinite, historyLoaded]);\n\n  const openActive = useCallback(\n    (row: LabReportRowItem) => {\n      const itemIdStr = String(row._itemId);\n      const [table, id] = itemIdStr.includes(':')\n        ? itemIdStr.split(':')\n        : [null, itemIdStr];\n\n      const found = active.find(\n        x =>\n          String(x.id) === id &&\n          (!table || x._table === table || determineTableForNav(x) === table),\n      );\n      if (!found) return;\n\n      const tableToUse = found._table || determineTableForNav(found);\n      // @ts-ignore\n      navigation.navigate(LAB_REPORTS_SCREENS.ACTIVE_FORM, { id: found.id, table: tableToUse });\n    },\n    [active, navigation],\n  );\n\n  const openHistory = useCallback(\n    (row: LabReportRowItem) => {\n      const itemIdStr = String(row._itemId);\n      const id = itemIdStr.includes(':') ? itemIdStr.split(':')[1] : itemIdStr;\n\n      // @ts-ignore\n      navigation.navigate(LAB_REPORTS_SCREENS.VIEW_REPORT, { id: Number(id) });\n    },\n    [navigation],\n  );\n\n  return {\n    pendingRange,\n    pendingInstallationType,\n    historyRange,\n    historyInstallationType,\n    loading,\n    loadingActive,\n    loadingHistory,\n    active,\n    history,\n    activeRows,\n    historyRows,\n    daysWithReports: daysWith,\n    catalogs,\n    historyLoaded,\n    hasMoreHistory: historyInfinite.hasMore,\n    loadingMoreHistory: historyInfinite.loadingMore,\n    historyError: historyInfinite.error,\n    totalFilteredCount: historyInfinite.totalFilteredCount,\n    applyDate,\n    applyInstallationType,\n    clearFilter,\n    refresh,\n    ensureHistoryLoaded,\n    loadMoreHistory,\n    openActive,\n    openHistory,\n    totalHistoryCount: totalCount,\n    totalHistoryFilteredCount: historyInfinite.totalFilteredCount,\n  } as const;\n}\n\nfunction determineTableForNav(item: LabReport): string {\n  if ('heading_pressure' in item) {\n    return 'daily_report_well';\n  }\n  if ('total_depth' in item) {\n    return 'daily_report_pit';\n  }\n  if ('tank_level' in item && 'oil_volume' in item) {\n    return 'daily_report_storage_tank';\n  }\n  if ('tank_level' in item && 'water_volume' in item) {\n    return 'daily_report_upt_tank';\n  }\n  if ('tank_level' in item && 'flow_station_tank_id' in item) {\n    return 'daily_report_flow_station_tank';\n  }\n  if (\n    'treatment_plant_dynamic_storage_tank_id' in item &&\n    'temperature' in item\n  ) {\n    return 'daily_report_storage_tank';\n  }\n  if ('treatment_plant_dynamic_storage_tank_id' in item) {\n    return 'daily_report_dynamic_settlement_tank';\n  }\n  if ('upt_tank_id' in item) {\n    return 'daily_report_upt_tank';\n  }\n\n  return 'daily_report_measurement_point';\n}\n","import {\n  TABLE_NAMES,\n  API_VERBS,\n  ApiPostBody,\n} from '@data-oil-front/core-utils';\nimport type {\n  Catalogs,\n  FieldItem,\n  FacilityListItem,\n  LocationItem,\n} from '../types/labReports';\nimport { configService } from '@data-oil-front/core-host';\nimport { purePost } from '@data-oil-front/core-utils';\n\nasync function post<T>(\n  body: Partial<ApiPostBody>,\n  options?: RequestInit,\n): Promise<T> {\n  const config = await configService.getEffectiveConfig();\n  const url = config?.API_BASE_URL;\n\n  if (!url) {\n    throw new Error('[API Client] API_BASE_URL is missing in config.');\n  }\n\n  const response = await purePost<T>(url, body, options);\n\n  if (!response.success) {\n    const message = 'message' in response ? response.message : 'Unknown API error';\n    throw new Error(message);\n  }\n\n  if (!('data' in response)) {\n    throw new Error('Invalid API response shape.');\n  }\n\n  return response.data as T;\n}\n\nexport async function fetchCatalogs(): Promise<Catalogs> {\n  const [locationsRes, fieldsRes, facilitiesListRes] = await Promise.all([\n    post<LocationItem[]>({\n      verb: API_VERBS.SELECT,\n      table: TABLE_NAMES.LOCATION,\n      fields: [],\n      values: [],\n      filter: [],\n    }),\n    post<FieldItem[]>({\n      verb: API_VERBS.SELECT,\n      table: TABLE_NAMES.FIELD,\n      fields: [],\n      values: [],\n      filter: [],\n    }),\n    post<FacilityListItem[]>({\n      verb: API_VERBS.SELECT,\n      table: TABLE_NAMES.GET_FACILITIES_LIST,\n      fields: [],\n      values: [],\n      filter: [],\n    }),\n  ]);\n\n  return {\n    locations: locationsRes ?? [],\n    fields: fieldsRes ?? [],\n    facilitiesList: facilitiesListRes ?? [],\n  };\n}\n"],"names":["React","useCallback","useMemo","useState","useEffect","View","Text","StyleSheet","useColorScheme","StatusBar","FlatList","Pressable","ChevronDownIcon","ChevronUpIcon","useRoute","useNavigation","DateRangePicker","LoadingSpinner","Select","MenuItem","useLabReports","LabReportCard","useTheme","getConfiguredLabInstallationOptions","ListRow","type","item","LabReportRowItem","state","LabReportsHomeScreen","route","navigation","primaryColor","showFilters","setShowFilters","toggleFilters","prev","pendingRange","pendingInstallationType","historyRange","historyInstallationType","activeRows","historyRows","daysWithReports","applyDate","applyInstallationType","clearFilter","openActive","openHistory","loadingActive","loadingHistory","totalHistoryCount","totalHistoryFilteredCount","ensureHistoryLoaded","historyLoaded","loadMoreHistory","hasMoreHistory","loadingMoreHistory","isDarkMode","installationOptions","activeTab","setActiveTab","params","filter","hasParams","resetDate","setParams","undefined","currentRange","currentInstallationType","pendingCountLabel","length","isFiltered","filters","range","startDate","historyCountLabel","count","currentData","currentOnPress","currentLoading","listRows","rows","isFetching","push","map","const","handleTabChange","tab","handleEndReached","handleOnScrollBeginDrag","styles","container","tabsHeader","tabsWrap","pressed","tabBtn","tabBtnActive","opacity","tabText","tabTextActive","stickyHeader","toggleHeader","sectionTitle","filtersCol","filterCol","val","option","tableName","label","banner","bannerText","bannerStrong","daysWrap","slice","day","dayPill","dayPillText","split","row","index","normalizedItemId","String","_itemId","includes","Fecha","empty","emptyIcon","emptyTitle","emptyText","cardWrap","ItemSeparator","footerLoading","footerLoadingText","contentContainerStyle","create","flex","backgroundColor","paddingHorizontal","paddingVertical","zIndex","elevation","alignItems","justifyContent","gap","paddingTop","paddingBottom","width","marginBottom","fontSize","fontWeight","color","padding","borderWidth","borderColor","borderRadius","flexDirection","flexWrap","sectionHeader","marginTop","listTitle","separatorStyle","height","TouchableOpacity","Tag","status","onPress","LabReportCardProps","card","header","titleWrap","installationTitle","installationType","Instalación","statusPill","value","shadowColor","shadowOpacity","shadowRadius","shadowOffset","cardDone","borderLeftWidth","borderLeftColor","cardPending","paddingRight","flexShrink","borderTopWidth","borderTopColor","textAlign","alignSelf","marginLeft","useRef","dayjs","fetchReportsHistoryWindow","fetchReportsCount","resolveFacilityTypeFromTable","INITIAL_WINDOW_MONTHS","LOAD_MORE_WINDOW_MONTHS","MAX_EMPTY_WINDOWS_PER_LOAD","uniqById","items","LabReport","Map","it","set","id","Array","from","values","sort","a","b","Date","date_created","getTime","useInfiniteReports","setItems","totalCount","setTotalCount","totalFilteredCount","setTotalFilteredCount","loadingInitial","setLoadingInitial","loadingMore","setLoadingMore","error","setError","Error","loadedOnce","setLoadedOnce","exhausted","setExhausted","currentFiltersRef","InfiniteFilters","cursorToRef","lastRequestIdRef","hasMore","loadWindow","fromISO","toISO","facilityType","res","Math","max","totalTableCount","result","loadInitial","requestId","current","dateRange","totalFiltered","startOf","toISOString","endDate","endOf","to","toDate","rangeStart","subtract","windowLimit","windowItems","attempts","currentTo","currentFrom","moreItems","e","loadMore","last","initialTo","reset","DateRange","LAB_REPORTS_SCREENS","fetchCatalogs","fetchPendingReports","fetchPendingReportsRange","fetchDaysWithReports","formatReportRow","Nav","ReturnType","setPendingRange","setPendingInstallationType","setHistoryRange","setHistoryInstallationType","loadingCount","setLoadingCount","setLoadingActive","catalogs","setCatalogs","Catalogs","locations","fields","facilitiesList","active","setActive","setActiveRows","setHistoryRows","daysWith","setDaysWith","historyInfinite","history","loading","startLoading","c","stopLoading","monthKey","format","loadCatalogs","cats","loadActiveReports","rangeOverride","tableOverride","rangeToUse","tableToUse","pending","startDateISO","endDateISO","loadHistoryReports","loadDays","days","Promise","all","resolve","emptyRange","refresh","itemIdStr","table","found","find","x","_table","determineTableForNav","navigate","ACTIVE_FORM","VIEW_REPORT","Number","historyError","TABLE_NAMES","API_VERBS","ApiPostBody","configService","purePost","post","body","Partial","options","RequestInit","T","config","getEffectiveConfig","url","API_BASE_URL","response","success","message","data","locationsRes","fieldsRes","facilitiesListRes","LocationItem","verb","SELECT","LOCATION","FieldItem","FIELD","FacilityListItem","GET_FACILITIES_LIST"],"mappings":"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"}