@corva/ui 3.77.0-17 → 3.77.0-19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs-bundle/components/OffsetWellPickerV5/components/Filter/components/PeriodFilterSelect/PeriodFilterSelect.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.module.css.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/constants.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/constants.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/stores/filter-store/types.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/utils/getTimestampByPeriod.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/utils/getTimestampByPeriod.js.map +1 -1
- package/components/OffsetWellPickerV4/effects/__tests__/useCompanyMetricKey.test.d.ts +2 -0
- package/components/OffsetWellPickerV4/effects/__tests__/useCompanyMetricKey.test.d.ts.map +1 -0
- package/components/OffsetWellPickerV4/effects/useCompanyMetricKey.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/__tests__/constants.test.d.ts +2 -0
- package/components/OffsetWellPickerV5/__tests__/constants.test.d.ts.map +1 -0
- package/components/OffsetWellPickerV5/components/Filter/components/PeriodFilterSelect/PeriodFilterSelect.js.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.d.ts +2 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/MetricsCells/MetricsCells.js.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.d.ts +3 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.js.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/MetricCell.module.css.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/__tests__/MetricCell.test.d.ts +2 -0
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/MetricCell/__tests__/MetricCell.test.d.ts.map +1 -0
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableRow/OffsetWellsTableRow.js.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.d.ts +0 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js.map +1 -1
- package/components/OffsetWellPickerV5/constants.d.ts +26 -3
- package/components/OffsetWellPickerV5/constants.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/constants.js +1 -1
- package/components/OffsetWellPickerV5/constants.js.map +1 -1
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useAdvancedWells.test.d.ts +2 -0
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useAdvancedWells.test.d.ts.map +1 -0
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useCompanyMetricKey.test.d.ts +2 -0
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useCompanyMetricKey.test.d.ts.map +1 -0
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.js +1 -1
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.js.map +1 -1
- package/components/OffsetWellPickerV5/stores/filter-store/types.d.ts +2 -1
- package/components/OffsetWellPickerV5/stores/filter-store/types.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/stores/filter-store/types.js.map +1 -1
- package/components/OffsetWellPickerV5/utils/__tests__/getTimestampByPeriod.test.d.ts +2 -0
- package/components/OffsetWellPickerV5/utils/__tests__/getTimestampByPeriod.test.d.ts.map +1 -0
- package/components/OffsetWellPickerV5/utils/getTimestampByPeriod.d.ts +4 -0
- package/components/OffsetWellPickerV5/utils/getTimestampByPeriod.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/utils/getTimestampByPeriod.js +1 -1
- package/components/OffsetWellPickerV5/utils/getTimestampByPeriod.js.map +1 -1
- package/mcp-server/server.mjs +1 -1
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../src/components/OffsetWellPickerV5/constants.ts"],"sourcesContent":["import { sortBy } from 'lodash';\n\nimport { metricsUtils } from '~/utils';\n\nexport const DEFAULT_RADIUS_MILES = 25;\nexport const DEFAULT_RADIUS_KM = 40;\n\nexport const ALL_SECTION_KEY = 'all';\nexport const ALL_SECTION_LABEL = 'All';\nexport const EXPANDED_WELL_NAME_WIDTH = 450;\nexport const ROWS_PER_PAGE = 50;\n// Horizontal scroll (px) past which the sticky well-name column casts its shadow.\nexport const H_SCROLL_THRESHOLD = 5;\nexport const LEAVE_TOUCH_DELAY = 10000;\nexport const COMPANY_PROVIDERS_FOR_IDAS = ['xto'] as const;\nconst metrics = metricsUtils.default;\n\nexport const NonConvertableMetrics = [metrics.mud_type.key] as const;\n\nexport const FilterType = {\n status: 'status',\n company: 'companyId',\n rig: 'rigName',\n program: 'programName',\n basin: 'basin',\n county: 'county',\n area: 'area',\n formation: 'formation',\n stringDesign: 'stringDesign',\n interventionAsset: 'interventionAsset',\n padName: 'padName',\n radius: 'radius',\n period: 'period',\n sideTracks: 'sideTracks',\n drillingWells: 'drillingWells',\n activeInterventionWells: 'activeInterventionWells',\n timeRangeFrom: 'timeRangeFrom',\n timeRangeTo: 'timeRangeTo',\n} as const;\n\nexport const FilterOptions = [\n {\n value: FilterType.company,\n label: 'Company',\n },\n {\n value: FilterType.program,\n label: 'Program/BU',\n },\n {\n value: FilterType.rig,\n label: 'Rig',\n },\n {\n value: FilterType.basin,\n label: 'Basin',\n },\n {\n value: FilterType.county,\n label: 'County',\n },\n {\n value: FilterType.area,\n label: 'Area',\n },\n {\n value: FilterType.formation,\n label: 'Target Formation',\n },\n {\n value: FilterType.stringDesign,\n label: 'String Design',\n },\n {\n value: FilterType.interventionAsset,\n label: 'Intervention Asset',\n },\n {\n value: FilterType.padName,\n label: 'Pad',\n },\n {\n value: FilterType.status,\n label: 'Status',\n },\n] as const;\n\nexport const WellStatus = {\n unknown: 'unknown',\n idle: 'idle',\n active: 'active',\n paused: 'paused',\n complete: 'complete',\n} as const;\n\nexport const StatusOptions = [\n { value: WellStatus.unknown, color: '#FFFFFF' },\n { value: WellStatus.idle, color: '#ADADFF' },\n { value: WellStatus.active, color: '#A8FF3D' },\n { value: WellStatus.paused, color: '#FFF66C' },\n { value: WellStatus.complete, color: '#76C2FF' },\n] as const;\n\nexport const ColumnType = {\n name: 'name',\n status: 'status',\n company: 'companyName',\n rig: 'rigName',\n interventionAsset: 'interventionAsset',\n padName: 'padName',\n formation: 'formation',\n distance: 'distance',\n taScore: 'TA',\n lastDrillingAt: 'lastDrillingAt',\n lastInterventionAt: 'lastInterventionAt',\n metrics: 'metrics',\n wellSection: 'wellSection',\n} as const;\n\nexport const TableColumns = [\n {\n type: ColumnType.name,\n label: 'Well Name',\n key: ColumnType.name,\n minWidth: [280, 197, 197, 186] as const,\n flex: 3,\n },\n {\n type: ColumnType.status,\n label: '',\n key: ColumnType.status,\n minWidth: [40, 40, 40, 30] as const,\n flex: 0,\n },\n {\n type: ColumnType.company,\n label: 'Company',\n key: ColumnType.company,\n minWidth: [180, 140, 140, 93] as const,\n flex: 2,\n },\n {\n type: ColumnType.interventionAsset,\n label: 'Intervention Asset',\n key: ColumnType.interventionAsset,\n minWidth: [200, 150, 150, 100] as const,\n flex: 2,\n },\n {\n type: ColumnType.padName,\n label: 'Pad',\n key: ColumnType.padName,\n minWidth: [160, 130, 130, 90] as const,\n flex: 1.5,\n },\n {\n type: ColumnType.formation,\n label: 'Formation',\n key: ColumnType.formation,\n minWidth: [160, 130, 130, 90] as const,\n flex: 1.5,\n },\n {\n type: ColumnType.rig,\n label: 'Rig',\n key: ColumnType.rig,\n minWidth: [220, 140, 140, 93] as const,\n flex: 2,\n },\n {\n type: ColumnType.distance,\n label: 'Distance',\n key: ColumnType.distance,\n minWidth: [160, 160, 122, 93] as const,\n flex: 1,\n },\n {\n type: ColumnType.taScore,\n label: 'TA',\n key: ColumnType.taScore,\n minWidth: [90, 90, 75, 70] as const,\n flex: 1,\n },\n {\n type: ColumnType.lastDrillingAt,\n label: 'Date',\n key: ColumnType.lastDrillingAt,\n minWidth: [140, 140, 108, 98] as const,\n flex: 1.5,\n },\n {\n type: ColumnType.lastInterventionAt,\n label: 'Last Intervention At',\n key: ColumnType.lastInterventionAt,\n minWidth: [180, 160, 128, 108] as const,\n flex: 1.5,\n },\n {\n type: ColumnType.metrics,\n label: '',\n key: '',\n minWidth: [0, 212, 141, 141] as const,\n flex: 2,\n },\n {\n type: ColumnType.wellSection,\n label: 'Well Section',\n key: ColumnType.wellSection,\n minWidth: [180, 131, 131, 97] as const,\n flex: 1.5,\n },\n];\n\nexport const OBJECTIVE_PERIOD_LIST = [\n { value: 'all', label: 'All' },\n { value: 'last12h', label: 'Last 12 hrs' },\n { value: 'last24h', label: 'Last 24 hrs' },\n { value: 'last7d', label: 'Last 7 days' },\n { value: 'lastMonth', label: 'Last Month' },\n { value: 'custom', label: 'Custom' },\n] as const;\n\n/**\n * Max metrics a user can manually pick in the Settings checklist.\n * Excludes the segment's always-present default metric, so the total number of\n * metric columns is `MAX_MANUAL_METRICS_COUNT + 1` when a default exists.\n */\nexport const MAX_MANUAL_METRICS_COUNT = 2;\n\nexport const METRICS_LIST = sortBy(\n [\n metrics.hole_depth,\n metrics.hole_depth_change,\n metrics.hole_depth_change_lateral,\n metrics.drilled_feet_rotary,\n metrics.drilled_feet_slide,\n metrics.rop_gross,\n metrics.rop,\n metrics.rop_rotary,\n metrics.rop_slide,\n metrics.drilled_feet_rotary_percentage,\n metrics.drilled_feet_slide_percentage,\n metrics.on_bottom_percentage,\n metrics.cost_per_ft,\n metrics.cost_per_lat_ft,\n metrics.feet_per_day,\n metrics.target_formation,\n metrics.mud_type,\n metrics.total_time,\n ...(process.env.REACT_APP_ENVIRONMENT !== 'production'\n ? [\n metrics.npt,\n metrics.circulating_time,\n metrics.spud_to_rig_release_time,\n metrics.spud_to_total_depth_time,\n ]\n : []),\n ],\n 'label'\n);\n\nexport const WellSectionColors = [\n '#6EACFF',\n '#69B919',\n '#E95DAF',\n '#A77DFF',\n '#77FFC1',\n '#018EFE',\n '#FF5D7E',\n '#B9E310',\n '#FFD111',\n '#24BB8E',\n '#C426F3',\n] as const;\n\n// --- Resizable map ---\n// Layout for the draggable map/content split (px). Width bounds are configurable; tune\n// min/max on large monitors. `mapWidth` is persisted per user (see view-store /\n// user-settings-store).\n//\n// `minContentWidth` and `columnsGap` mirror values authored in\n// `OffsetWellPickerV5.module.css` (`.rightColumn { min-width: 400px }` and\n// `.columnsContainer { gap: 16px }`); they exist here only for the effective-max clamp\n// math and must stay in sync with the CSS. `hintsStashBreakpoint` is the map width at/below\n// which the top-right hints collapse into an icon + dropdown stash — but only while the top-left\n// radius input is also visible (they compete for the same horizontal band). With the radius input\n// hidden the hints stay expanded down to the map's min width.\nexport const MapLayout = {\n width: {\n default: 600,\n min: 314,\n max: 900, // ~1.5× default — largest the map should grow on a big modal\n },\n minContentWidth: 400,\n columnsGap: 16,\n hintsStashBreakpoint: 480,\n} as const;\n\nexport const DEFAULT_METRICS_KEY = 'hole_depth_change';\n\nexport type SortDirectionType = 'ASC' | 'DESC';\n\nexport type SortDirectionStatic = {\n ASC: 'ASC';\n DESC: 'DESC';\n};\n\nexport const SortDirection: SortDirectionStatic = { ASC: 'ASC', DESC: 'DESC' };\n"],"names":["DEFAULT_RADIUS_MILES","DEFAULT_RADIUS_KM","ALL_SECTION_KEY","ALL_SECTION_LABEL","EXPANDED_WELL_NAME_WIDTH","ROWS_PER_PAGE","H_SCROLL_THRESHOLD","LEAVE_TOUCH_DELAY","COMPANY_PROVIDERS_FOR_IDAS","metrics","metricsUtils","NonConvertableMetrics","mud_type","key","FilterType","status","company","rig","program","basin","county","area","formation","stringDesign","interventionAsset","padName","radius","period","sideTracks","drillingWells","activeInterventionWells","timeRangeFrom","timeRangeTo","FilterOptions","value","label","WellStatus","unknown","idle","active","paused","complete","StatusOptions","color","ColumnType","name","distance","taScore","lastDrillingAt","lastInterventionAt","wellSection","TableColumns","type","minWidth","flex","OBJECTIVE_PERIOD_LIST","MAX_MANUAL_METRICS_COUNT","METRICS_LIST","sortBy","hole_depth","hole_depth_change","hole_depth_change_lateral","drilled_feet_rotary","drilled_feet_slide","rop_gross","rop","rop_rotary","rop_slide","drilled_feet_rotary_percentage","drilled_feet_slide_percentage","on_bottom_percentage","cost_per_ft","cost_per_lat_ft","feet_per_day","target_formation","total_time","process","env","REACT_APP_ENVIRONMENT","npt","circulating_time","spud_to_rig_release_time","spud_to_total_depth_time","WellSectionColors","MapLayout","width","default","min","max","minContentWidth","columnsGap","hintsStashBreakpoint","SortDirection","ASC","DESC"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../src/components/OffsetWellPickerV5/constants.ts"],"sourcesContent":["import { sortBy } from 'lodash';\n\nimport { metricsUtils } from '~/utils';\n\nexport const DEFAULT_RADIUS_MILES = 25;\nexport const DEFAULT_RADIUS_KM = 40;\n\nexport const ALL_SECTION_KEY = 'all';\nexport const ALL_SECTION_LABEL = 'All';\nexport const EXPANDED_WELL_NAME_WIDTH = 450;\nexport const ROWS_PER_PAGE = 50;\n// Horizontal scroll (px) past which the sticky well-name column casts its shadow.\nexport const H_SCROLL_THRESHOLD = 5;\nexport const LEAVE_TOUCH_DELAY = 10000;\nexport const COMPANY_PROVIDERS_FOR_IDAS = ['xto'] as const;\nconst metrics = metricsUtils.default;\n\nexport const NonConvertableMetrics = [metrics.mud_type.key] as const;\n\nexport const FilterType = {\n status: 'status',\n company: 'companyId',\n rig: 'rigName',\n program: 'programName',\n basin: 'basin',\n county: 'county',\n area: 'area',\n formation: 'formation',\n stringDesign: 'stringDesign',\n interventionAsset: 'interventionAsset',\n padName: 'padName',\n radius: 'radius',\n period: 'period',\n sideTracks: 'sideTracks',\n drillingWells: 'drillingWells',\n activeInterventionWells: 'activeInterventionWells',\n timeRangeFrom: 'timeRangeFrom',\n timeRangeTo: 'timeRangeTo',\n} as const;\n\nexport const FilterOptions = [\n {\n value: FilterType.company,\n label: 'Company',\n },\n {\n value: FilterType.program,\n label: 'Program/BU',\n },\n {\n value: FilterType.rig,\n label: 'Rig',\n },\n {\n value: FilterType.basin,\n label: 'Basin',\n },\n {\n value: FilterType.county,\n label: 'County',\n },\n {\n value: FilterType.area,\n label: 'Area',\n },\n {\n value: FilterType.formation,\n label: 'Target Formation',\n },\n {\n value: FilterType.stringDesign,\n label: 'String Design',\n },\n {\n value: FilterType.interventionAsset,\n label: 'Intervention Asset',\n },\n {\n value: FilterType.padName,\n label: 'Pad',\n },\n {\n value: FilterType.status,\n label: 'Status',\n },\n] as const;\n\nexport const WellStatus = {\n unknown: 'unknown',\n idle: 'idle',\n active: 'active',\n paused: 'paused',\n complete: 'complete',\n} as const;\n\nexport const StatusOptions = [\n { value: WellStatus.unknown, color: '#FFFFFF' },\n { value: WellStatus.idle, color: '#ADADFF' },\n { value: WellStatus.active, color: '#A8FF3D' },\n { value: WellStatus.paused, color: '#FFF66C' },\n { value: WellStatus.complete, color: '#76C2FF' },\n] as const;\n\nexport const ColumnType = {\n name: 'name',\n status: 'status',\n company: 'companyName',\n rig: 'rigName',\n interventionAsset: 'interventionAsset',\n padName: 'padName',\n formation: 'formation',\n distance: 'distance',\n taScore: 'TA',\n lastDrillingAt: 'lastDrillingAt',\n lastInterventionAt: 'lastInterventionAt',\n metrics: 'metrics',\n wellSection: 'wellSection',\n} as const;\n\nexport const TableColumns = [\n {\n type: ColumnType.name,\n label: 'Well Name',\n key: ColumnType.name,\n minWidth: [280, 197, 197, 186] as const,\n flex: 3,\n },\n {\n type: ColumnType.status,\n label: '',\n key: ColumnType.status,\n minWidth: [40, 40, 40, 30] as const,\n flex: 0,\n },\n {\n type: ColumnType.company,\n label: 'Company',\n key: ColumnType.company,\n minWidth: [180, 140, 140, 93] as const,\n flex: 2,\n },\n {\n type: ColumnType.interventionAsset,\n label: 'Intervention Asset',\n key: ColumnType.interventionAsset,\n minWidth: [200, 150, 150, 100] as const,\n flex: 2,\n },\n {\n type: ColumnType.padName,\n label: 'Pad',\n key: ColumnType.padName,\n minWidth: [160, 130, 130, 90] as const,\n flex: 1.5,\n },\n {\n type: ColumnType.formation,\n label: 'Formation',\n key: ColumnType.formation,\n minWidth: [160, 130, 130, 90] as const,\n flex: 1.5,\n },\n {\n type: ColumnType.rig,\n label: 'Rig',\n key: ColumnType.rig,\n minWidth: [220, 140, 140, 93] as const,\n flex: 2,\n },\n {\n type: ColumnType.distance,\n label: 'Distance',\n key: ColumnType.distance,\n minWidth: [160, 160, 122, 93] as const,\n flex: 1,\n },\n {\n type: ColumnType.taScore,\n label: 'TA',\n key: ColumnType.taScore,\n minWidth: [90, 90, 75, 70] as const,\n flex: 1,\n },\n {\n type: ColumnType.lastDrillingAt,\n label: 'Date',\n key: ColumnType.lastDrillingAt,\n minWidth: [140, 140, 108, 98] as const,\n flex: 1.5,\n },\n {\n type: ColumnType.lastInterventionAt,\n label: 'Last Intervention At',\n key: ColumnType.lastInterventionAt,\n minWidth: [180, 160, 128, 108] as const,\n flex: 1.5,\n },\n {\n type: ColumnType.metrics,\n label: '',\n key: '',\n minWidth: [0, 212, 141, 141] as const,\n flex: 2,\n },\n {\n type: ColumnType.wellSection,\n label: 'Well Section',\n key: ColumnType.wellSection,\n minWidth: [180, 131, 131, 97] as const,\n flex: 1.5,\n },\n];\n\nexport const OBJECTIVE_PERIOD_LIST = [\n { value: 'all', label: 'All' },\n { value: 'last12h', label: 'Last 12 hrs' },\n { value: 'last24h', label: 'Last 24 hrs' },\n { value: 'last7d', label: 'Last 7 days' },\n { value: 'lastMonth', label: 'Last Month' },\n { value: 'last6Months', label: 'Last 6 months' },\n { value: 'yearToDate', label: 'Year to Date' },\n { value: 'last1Year', label: 'Last 1 Year' },\n { value: 'custom', label: 'Custom' },\n] as const;\n\n/**\n * Max metrics a user can manually pick in the Settings checklist.\n * Excludes the segment's always-present default metric, so the total number of\n * metric columns is `MAX_MANUAL_METRICS_COUNT + 1` when a default exists.\n */\nexport const MAX_MANUAL_METRICS_COUNT = 5;\n\n/**\n * Pseudo-metric: selectable, capped and rendered like a metric, but its value is the well's\n * `stringDesign` attribute, not a `corva/metrics` record. Kept local so the shared metrics\n * config stays a list of real metrics.\n */\nexport const STRING_DESIGN_METRIC = { key: 'stringDesign', label: 'String Design' } as const;\n\n/** Metric keys read from well attributes — never requested from the metrics API. */\nexport const WELL_ATTRIBUTE_METRICS: readonly string[] = [STRING_DESIGN_METRIC.key];\n\nexport const METRICS_LIST = sortBy(\n [\n STRING_DESIGN_METRIC,\n metrics.hole_depth,\n metrics.hole_depth_change,\n metrics.hole_depth_change_lateral,\n metrics.drilled_feet_rotary,\n metrics.drilled_feet_slide,\n metrics.rop_gross,\n metrics.rop,\n metrics.rop_rotary,\n metrics.rop_slide,\n metrics.drilled_feet_rotary_percentage,\n metrics.drilled_feet_slide_percentage,\n metrics.on_bottom_percentage,\n metrics.cost_per_ft,\n metrics.cost_per_lat_ft,\n metrics.feet_per_day,\n metrics.target_formation,\n metrics.mud_type,\n metrics.total_time,\n ...(process.env.REACT_APP_ENVIRONMENT !== 'production'\n ? [\n metrics.npt,\n metrics.circulating_time,\n metrics.spud_to_rig_release_time,\n metrics.spud_to_total_depth_time,\n ]\n : []),\n ],\n 'label'\n);\n\nexport const WellSectionColors = [\n '#6EACFF',\n '#69B919',\n '#E95DAF',\n '#A77DFF',\n '#77FFC1',\n '#018EFE',\n '#FF5D7E',\n '#B9E310',\n '#FFD111',\n '#24BB8E',\n '#C426F3',\n] as const;\n\n// --- Resizable map ---\n// Layout for the draggable map/content split (px). Width bounds are configurable; tune\n// min/max on large monitors. `mapWidth` is persisted per user (see view-store /\n// user-settings-store).\n//\n// `minContentWidth` and `columnsGap` mirror values authored in\n// `OffsetWellPickerV5.module.css` (`.rightColumn { min-width: 400px }` and\n// `.columnsContainer { gap: 16px }`); they exist here only for the effective-max clamp\n// math and must stay in sync with the CSS. `hintsStashBreakpoint` is the map width at/below\n// which the top-right hints collapse into an icon + dropdown stash — but only while the top-left\n// radius input is also visible (they compete for the same horizontal band). With the radius input\n// hidden the hints stay expanded down to the map's min width.\nexport const MapLayout = {\n width: {\n default: 600,\n min: 314,\n max: 900, // ~1.5× default — largest the map should grow on a big modal\n },\n minContentWidth: 400,\n columnsGap: 16,\n hintsStashBreakpoint: 480,\n} as const;\n\nexport const DEFAULT_METRICS_KEY = 'hole_depth_change';\n\nexport type SortDirectionType = 'ASC' | 'DESC';\n\nexport type SortDirectionStatic = {\n ASC: 'ASC';\n DESC: 'DESC';\n};\n\nexport const SortDirection: SortDirectionStatic = { ASC: 'ASC', DESC: 'DESC' };\n"],"names":["DEFAULT_RADIUS_MILES","DEFAULT_RADIUS_KM","ALL_SECTION_KEY","ALL_SECTION_LABEL","EXPANDED_WELL_NAME_WIDTH","ROWS_PER_PAGE","H_SCROLL_THRESHOLD","LEAVE_TOUCH_DELAY","COMPANY_PROVIDERS_FOR_IDAS","metrics","metricsUtils","NonConvertableMetrics","mud_type","key","FilterType","status","company","rig","program","basin","county","area","formation","stringDesign","interventionAsset","padName","radius","period","sideTracks","drillingWells","activeInterventionWells","timeRangeFrom","timeRangeTo","FilterOptions","value","label","WellStatus","unknown","idle","active","paused","complete","StatusOptions","color","ColumnType","name","distance","taScore","lastDrillingAt","lastInterventionAt","wellSection","TableColumns","type","minWidth","flex","OBJECTIVE_PERIOD_LIST","MAX_MANUAL_METRICS_COUNT","STRING_DESIGN_METRIC","WELL_ATTRIBUTE_METRICS","METRICS_LIST","sortBy","hole_depth","hole_depth_change","hole_depth_change_lateral","drilled_feet_rotary","drilled_feet_slide","rop_gross","rop","rop_rotary","rop_slide","drilled_feet_rotary_percentage","drilled_feet_slide_percentage","on_bottom_percentage","cost_per_ft","cost_per_lat_ft","feet_per_day","target_formation","total_time","process","env","REACT_APP_ENVIRONMENT","npt","circulating_time","spud_to_rig_release_time","spud_to_total_depth_time","WellSectionColors","MapLayout","width","default","min","max","minContentWidth","columnsGap","hintsStashBreakpoint","SortDirection","ASC","DESC"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAdvancedWells.test.d.ts","sourceRoot":"","sources":["../../../../../../src/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useAdvancedWells.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCompanyMetricKey.test.d.ts","sourceRoot":"","sources":["../../../../../../src/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/__tests__/useCompanyMetricKey.test.ts"],"names":[],"mappings":""}
|
package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAdvancedWells.d.ts","sourceRoot":"","sources":["../../../../../src/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAI/E,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAOF,eAAO,MAAM,gBAAgB,aACjB,iBAAiB,EAAE,GAAG,IAAI,gBACtB,WAAW,EAAE,GAAG,IAAI,wBACZ,oBAAoB,GAAG,IAAI,iBAClC,MAAM,GAAG,IAAI,eACf,MAAM,EAAE,QACf,OAAO,GAAG,SAAS,KACxB,CAAC,eAAe,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"useAdvancedWells.d.ts","sourceRoot":"","sources":["../../../../../src/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAI/E,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAOF,eAAO,MAAM,gBAAgB,aACjB,iBAAiB,EAAE,GAAG,IAAI,gBACtB,WAAW,EAAE,GAAG,IAAI,wBACZ,oBAAoB,GAAG,IAAI,iBAClC,MAAM,GAAG,IAAI,eACf,MAAM,EAAE,QACf,OAAO,GAAG,SAAS,KACxB,CAAC,eAAe,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAqK3E,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import r from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/regenerator";import{useState as
|
|
1
|
+
import r from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/regenerator";import{useState as i,useRef as o,useMemo as c,useEffect as u}from"react";import{isEqual as s,groupBy as a,get as p}from"lodash";import"@babel/runtime/helpers/toConsumableArray";import"uuid";import"lodash/set";import"lodash/get";import"lodash/unset";import"moment";import"../../../../clients/jsonApi/index.js";import"../../../../clients/subscriptions/constants.js";import"../../../../clients/subscriptions.v1.js";import"../../../../clients/subscriptions/subscriptions-client.factory.js";import"../../../../clients/api/apiCore.js";import"../../../../clients/constants.js";import"../../../../clients/sso/auth0.js";import"../../../../clients/sso/oauth2.js";import"../../../../clients/api/rateLimiter.js";import{WELL_ATTRIBUTE_METRICS as l,NonConvertableMetrics as m}from"../../constants.js";import"../../api/shared/dataFormatter.js";import{fetchMetricsData as f}from"../../api/metrics/fetchMetricsData.js";import{usePickerPropsStore as b}from"../../stores/picker-props-store/usePickerPropsStore.js";import{getSegmentConfig as d}from"../../segment-config/index.js";import{transformWells as j}from"./wellTransformations.js";function h(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function v(r){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?h(Object(n),!0).forEach((function(e){t(r,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(n,t))}))}return r}var y=function(r){return Number.isFinite(r)?parseFloat(r.toFixed(2)):null},g=function(h,g,w,O,P,x){var k=b((function(r){return r.segment})),S=d(k).metricsCollection,A=i(null),D=e(A,2),C=D[0],E=D[1],F=i(!1),T=e(F,2),I=T[0],M=T[1],N=i(new Set),G=e(N,2),L=G[0],_=G[1],q=o({}),z=P.filter((function(r){return!l.includes(r)})).join(),B=c((function(){return z?z.split(","):[]}),[z]),H=o(B),J=o(S),K=o(null),Q=c((function(){return x&&h?j(h,O,g,w):null}),[h,O,g,w,x]);return u((function(){if(!Q||!x)return M(!1),void _(new Set);var i=Q.map((function(r){return v(v({},r),q.current[r.id]||{})}));E(i),M(!0),K.current&&K.current.abort();var o=new AbortController;K.current=o;var c=function(){var i=r(n.mark((function i(){var c,u,l,b,d,j,h,g,w,O,P;return n.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(i.prev=0,c=[],u=!s(H.current,B),l=J.current!==S,u||l?(c=Q.map((function(r){return r.id})),q.current={},H.current=B,J.current=S):c=Q.filter((function(r){return!q.current[r.id]})).map((function(r){return r.id})),c.length>0&&_(new Set(c)),!(c.length>0&&B.length>0)){i.next=20;break}return b=new Map(Q.filter((function(r){return c.includes(r.id)})).map((function(r){return[r.id,r]}))),d=a(Array.from(b.values()).filter((function(r){return r.companyId})),"companyId"),j=Object.entries(d).map(function(){var t=r(n.mark((function r(t){var i,c,u,s;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i=e(t,2),c=i[0],u=i[1],s=u.map((function(r){return r.id})),r.abrupt("return",f(Number(c),s,B,o.signal,S));case 3:case"end":return r.stop()}}),r)})));return function(r){return t.apply(this,arguments)}}()),i.next=12,Promise.all(j);case 12:if(h=i.sent,!o.signal.aborted){i.next=15;break}return i.abrupt("return");case 15:g=h.flat(),w={},O=a(g,"asset_id"),c.forEach((function(r){var e,n=null===(e=O[r])||void 0===e?void 0:e.reduce((function(r,e){var n=p(e,"data.value"),i=p(e,"data.key");return v(v({},r),{},t({},i,m.includes(i)?n:y(n)))}),{});w[r]=n||{}})),q.current=v(v({},q.current),w);case 20:P=Q.map((function(r){return v(v({},r),q.current[r.id]||{})})),E((function(r){return s(P,r)?r:P})),M(!1),_(new Set),i.next=29;break;case 26:i.prev=26,i.t0=i.catch(0),o.signal.aborted||(console.error("Error fetching metrics data:",i.t0),E(Q),M(!1),_(new Set));case 29:case"end":return i.stop()}}),i,null,[[0,26]])})));return function(){return i.apply(this,arguments)}}();return c(),function(){K.current&&(K.current.abort(),K.current=null)}}),[Q,B,x,S]),[C,I,Q,L]};export{g as useAdvancedWells};
|
|
2
2
|
//# sourceMappingURL=useAdvancedWells.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAdvancedWells.js","sources":["../../../../../src/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.ts"],"sourcesContent":["import { useState, useEffect, useRef, useMemo } from 'react';\nimport { get, groupBy, isEqual } from 'lodash';\n\nimport { fetchMetricsData } from '../../api';\nimport type { FetchedOffsetWell } from '../../api/shared/types';\nimport { NonConvertableMetrics } from '../../constants';\nimport { usePickerPropsStore } from '../../stores/picker-props-store/usePickerPropsStore';\nimport { getSegmentConfig } from '../../segment-config';\nimport type { WellSection, OffsetWellsBySection } from '../useExternalOffsets';\n\nimport { transformWells } from './wellTransformations';\n\nexport type TransformedWell = FetchedOffsetWell & {\n distance?: number;\n wellSection?: string[];\n};\n\ntype MetricsCache = Record<number, Record<string, unknown>>;\n\nconst parseMetricValue = (value: number): number | null =>\n Number.isFinite(value) ? parseFloat(value.toFixed(2)) : null;\n\nexport const useAdvancedWells = (\n rawWells: FetchedOffsetWell[] | null,\n wellSections: WellSection[] | null,\n offsetWellsBySection: OffsetWellsBySection | null,\n subjectWellId: number | null,\n metricsKeys: string[],\n open: boolean | undefined\n): [TransformedWell[] | null, boolean, TransformedWell[] | null, Set<number>] => {\n const segment = usePickerPropsStore(state => state.segment);\n const { metricsCollection } = getSegmentConfig(segment);\n\n const [wells, setWells] = useState<TransformedWell[] | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [loadingWellIds, setLoadingWellIds] = useState<Set<number>>(new Set());\n const fetchedDataCache = useRef<MetricsCache>({});\n const previousMetricsKeys = useRef(metricsKeys);\n const previousCollection = useRef(metricsCollection);\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const transformedWells = useMemo((): TransformedWell[] | null => {\n if (!open || !rawWells) return null;\n\n return transformWells(rawWells, subjectWellId, wellSections, offsetWellsBySection);\n }, [rawWells, subjectWellId, wellSections, offsetWellsBySection, open]);\n\n useEffect(() => {\n if (!transformedWells || !open) {\n setIsLoading(false);\n setLoadingWellIds(new Set());\n return undefined;\n }\n\n // Immediately set wells with transformed data AND cached metrics\n // This preserves existing metric values while new wells load\n const wellsWithCachedMetrics = transformedWells.map(well => ({\n ...well,\n ...(fetchedDataCache.current[well.id] || {}),\n }));\n setWells(wellsWithCachedMetrics);\n setIsLoading(true);\n\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n const abortController = new AbortController();\n\n abortControllerRef.current = abortController;\n\n const fetchAndUpdateMetrics = async () => {\n try {\n let wellIdsToFetch: number[] = [];\n const metricsKeysChanged = !isEqual(previousMetricsKeys.current, metricsKeys);\n const collectionChanged = previousCollection.current !== metricsCollection;\n\n if (metricsKeysChanged || collectionChanged) {\n wellIdsToFetch = transformedWells.map(well => well.id);\n fetchedDataCache.current = {};\n previousMetricsKeys.current = metricsKeys;\n previousCollection.current = metricsCollection;\n } else {\n // Only fetch metrics for wells not in cache\n wellIdsToFetch = transformedWells\n .filter(well => !fetchedDataCache.current[well.id])\n .map(well => well.id);\n }\n\n // Track which wells are loading\n if (wellIdsToFetch.length > 0) {\n setLoadingWellIds(new Set(wellIdsToFetch));\n }\n\n if (wellIdsToFetch.length > 0 && metricsKeys.length > 0) {\n // Group wells to fetch by their company ID\n const wellsToFetchById = new Map(\n transformedWells\n .filter(well => wellIdsToFetch.includes(well.id))\n .map(well => [well.id, well] as const)\n );\n const wellsByCompany = groupBy(\n Array.from(wellsToFetchById.values()).filter(well => well.companyId),\n 'companyId'\n );\n\n // Fetch metrics for each company in parallel\n const metricsPromises = Object.entries(wellsByCompany).map(\n async ([compId, companyWells]) => {\n const companyWellIds = companyWells.map(w => w.id);\n\n return fetchMetricsData(\n Number(compId),\n companyWellIds,\n metricsKeys,\n abortController.signal,\n metricsCollection\n );\n }\n );\n\n const allRecords = await Promise.all(metricsPromises);\n\n if (abortController.signal.aborted) {\n return;\n }\n\n const records = allRecords.flat();\n const wellsMetrics: MetricsCache = {};\n const recordsPerAsset = groupBy(records, 'asset_id');\n\n wellIdsToFetch.forEach(wellId => {\n const wellMetrics = recordsPerAsset[wellId]?.reduce<Record<string, unknown>>(\n (acc, record) => {\n const value = get(record, 'data.value') as number;\n const key = get(record, 'data.key') as string;\n\n return {\n ...acc,\n [key]: NonConvertableMetrics.includes(key) ? value : parseMetricValue(value),\n };\n },\n {}\n );\n\n wellsMetrics[wellId] = wellMetrics || {};\n });\n\n fetchedDataCache.current = {\n ...fetchedDataCache.current,\n ...wellsMetrics,\n };\n }\n\n const result = transformedWells.map(well => ({\n ...well,\n ...(fetchedDataCache.current[well.id] || {}),\n }));\n\n setWells(prevWells => (isEqual(result, prevWells) ? prevWells : result));\n setIsLoading(false);\n setLoadingWellIds(new Set());\n } catch (error) {\n if (!abortController.signal.aborted) {\n console.error('Error fetching metrics data:', error);\n setWells(transformedWells);\n setIsLoading(false);\n setLoadingWellIds(new Set());\n }\n }\n };\n\n fetchAndUpdateMetrics();\n\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n };\n }, [transformedWells, metricsKeys, open, metricsCollection]);\n\n return [wells, isLoading, transformedWells, loadingWellIds];\n};\n"],"names":["parseMetricValue","value","Number","isFinite","parseFloat","toFixed","useAdvancedWells","rawWells","wellSections","offsetWellsBySection","subjectWellId","metricsKeys","open","segment","usePickerPropsStore","state","metricsCollection","getSegmentConfig","useState","_useState2","_slicedToArray","_useState","wells","setWells","_useState4","_useState3","isLoading","setIsLoading","_useState5","Set","_useState6","loadingWellIds","setLoadingWellIds","fetchedDataCache","useRef","previousMetricsKeys","previousCollection","abortControllerRef","transformedWells","useMemo","transformWells","useEffect","wellsWithCachedMetrics","map","well","_objectSpread","current","id","abort","abortController","AbortController","fetchAndUpdateMetrics","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","wellIdsToFetch","metricsKeysChanged","collectionChanged","wellsToFetchById","wellsByCompany","metricsPromises","allRecords","records","wellsMetrics","recordsPerAsset","result","wrap","_context2","prev","next","isEqual","filter","length","Map","includes","groupBy","Array","from","values","companyId","Object","entries","_ref3","_callee","_ref2","_ref4","compId","companyWells","companyWellIds","_context","w","abrupt","fetchMetricsData","signal","stop","_x","apply","this","arguments","Promise","all","sent","aborted","flat","forEach","wellId","_recordsPerAsset$well","wellMetrics","reduce","acc","record","get","key","NonConvertableMetrics","prevWells","t0","console","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAdvancedWells.js","sources":["../../../../../src/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useAdvancedWells.ts"],"sourcesContent":["import { useState, useEffect, useRef, useMemo } from 'react';\nimport { get, groupBy, isEqual } from 'lodash';\n\nimport { fetchMetricsData } from '../../api';\nimport type { FetchedOffsetWell } from '../../api/shared/types';\nimport { NonConvertableMetrics, WELL_ATTRIBUTE_METRICS } from '../../constants';\nimport { usePickerPropsStore } from '../../stores/picker-props-store/usePickerPropsStore';\nimport { getSegmentConfig } from '../../segment-config';\nimport type { WellSection, OffsetWellsBySection } from '../useExternalOffsets';\n\nimport { transformWells } from './wellTransformations';\n\nexport type TransformedWell = FetchedOffsetWell & {\n distance?: number;\n wellSection?: string[];\n};\n\ntype MetricsCache = Record<number, Record<string, unknown>>;\n\nconst parseMetricValue = (value: number): number | null =>\n Number.isFinite(value) ? parseFloat(value.toFixed(2)) : null;\n\nexport const useAdvancedWells = (\n rawWells: FetchedOffsetWell[] | null,\n wellSections: WellSection[] | null,\n offsetWellsBySection: OffsetWellsBySection | null,\n subjectWellId: number | null,\n metricsKeys: string[],\n open: boolean | undefined\n): [TransformedWell[] | null, boolean, TransformedWell[] | null, Set<number>] => {\n const segment = usePickerPropsStore(state => state.segment);\n const { metricsCollection } = getSegmentConfig(segment);\n\n const [wells, setWells] = useState<TransformedWell[] | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [loadingWellIds, setLoadingWellIds] = useState<Set<number>>(new Set());\n const fetchedDataCache = useRef<MetricsCache>({});\n\n // Only these keys exist in the metrics collection. Keyed by content, so toggling a\n // well-attribute metric neither refetches nor drops the cached metrics.\n const apiMetricsKeysSignature = metricsKeys\n .filter(key => !WELL_ATTRIBUTE_METRICS.includes(key))\n .join();\n const apiMetricsKeys = useMemo(\n () => (apiMetricsKeysSignature ? apiMetricsKeysSignature.split(',') : []),\n [apiMetricsKeysSignature]\n );\n\n const previousMetricsKeys = useRef(apiMetricsKeys);\n const previousCollection = useRef(metricsCollection);\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const transformedWells = useMemo((): TransformedWell[] | null => {\n if (!open || !rawWells) return null;\n\n return transformWells(rawWells, subjectWellId, wellSections, offsetWellsBySection);\n }, [rawWells, subjectWellId, wellSections, offsetWellsBySection, open]);\n\n useEffect(() => {\n if (!transformedWells || !open) {\n setIsLoading(false);\n setLoadingWellIds(new Set());\n return undefined;\n }\n\n // Immediately set wells with transformed data AND cached metrics\n // This preserves existing metric values while new wells load\n const wellsWithCachedMetrics = transformedWells.map(well => ({\n ...well,\n ...(fetchedDataCache.current[well.id] || {}),\n }));\n setWells(wellsWithCachedMetrics);\n setIsLoading(true);\n\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n const abortController = new AbortController();\n\n abortControllerRef.current = abortController;\n\n const fetchAndUpdateMetrics = async () => {\n try {\n let wellIdsToFetch: number[] = [];\n const metricsKeysChanged = !isEqual(previousMetricsKeys.current, apiMetricsKeys);\n const collectionChanged = previousCollection.current !== metricsCollection;\n\n if (metricsKeysChanged || collectionChanged) {\n wellIdsToFetch = transformedWells.map(well => well.id);\n fetchedDataCache.current = {};\n previousMetricsKeys.current = apiMetricsKeys;\n previousCollection.current = metricsCollection;\n } else {\n // Only fetch metrics for wells not in cache\n wellIdsToFetch = transformedWells\n .filter(well => !fetchedDataCache.current[well.id])\n .map(well => well.id);\n }\n\n // Track which wells are loading\n if (wellIdsToFetch.length > 0) {\n setLoadingWellIds(new Set(wellIdsToFetch));\n }\n\n if (wellIdsToFetch.length > 0 && apiMetricsKeys.length > 0) {\n // Group wells to fetch by their company ID\n const wellsToFetchById = new Map(\n transformedWells\n .filter(well => wellIdsToFetch.includes(well.id))\n .map(well => [well.id, well] as const)\n );\n const wellsByCompany = groupBy(\n Array.from(wellsToFetchById.values()).filter(well => well.companyId),\n 'companyId'\n );\n\n // Fetch metrics for each company in parallel\n const metricsPromises = Object.entries(wellsByCompany).map(\n async ([compId, companyWells]) => {\n const companyWellIds = companyWells.map(w => w.id);\n\n return fetchMetricsData(\n Number(compId),\n companyWellIds,\n apiMetricsKeys,\n abortController.signal,\n metricsCollection\n );\n }\n );\n\n const allRecords = await Promise.all(metricsPromises);\n\n if (abortController.signal.aborted) {\n return;\n }\n\n const records = allRecords.flat();\n const wellsMetrics: MetricsCache = {};\n const recordsPerAsset = groupBy(records, 'asset_id');\n\n wellIdsToFetch.forEach(wellId => {\n const wellMetrics = recordsPerAsset[wellId]?.reduce<Record<string, unknown>>(\n (acc, record) => {\n const value = get(record, 'data.value') as number;\n const key = get(record, 'data.key') as string;\n\n return {\n ...acc,\n [key]: NonConvertableMetrics.includes(key) ? value : parseMetricValue(value),\n };\n },\n {}\n );\n\n wellsMetrics[wellId] = wellMetrics || {};\n });\n\n fetchedDataCache.current = {\n ...fetchedDataCache.current,\n ...wellsMetrics,\n };\n }\n\n const result = transformedWells.map(well => ({\n ...well,\n ...(fetchedDataCache.current[well.id] || {}),\n }));\n\n setWells(prevWells => (isEqual(result, prevWells) ? prevWells : result));\n setIsLoading(false);\n setLoadingWellIds(new Set());\n } catch (error) {\n if (!abortController.signal.aborted) {\n console.error('Error fetching metrics data:', error);\n setWells(transformedWells);\n setIsLoading(false);\n setLoadingWellIds(new Set());\n }\n }\n };\n\n fetchAndUpdateMetrics();\n\n return () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n };\n }, [transformedWells, apiMetricsKeys, open, metricsCollection]);\n\n return [wells, isLoading, transformedWells, loadingWellIds];\n};\n"],"names":["parseMetricValue","value","Number","isFinite","parseFloat","toFixed","useAdvancedWells","rawWells","wellSections","offsetWellsBySection","subjectWellId","metricsKeys","open","segment","usePickerPropsStore","state","metricsCollection","getSegmentConfig","useState","_useState2","_slicedToArray","_useState","wells","setWells","_useState4","_useState3","isLoading","setIsLoading","_useState5","Set","_useState6","loadingWellIds","setLoadingWellIds","fetchedDataCache","useRef","apiMetricsKeysSignature","filter","key","WELL_ATTRIBUTE_METRICS","includes","join","apiMetricsKeys","useMemo","split","previousMetricsKeys","previousCollection","abortControllerRef","transformedWells","transformWells","useEffect","wellsWithCachedMetrics","map","well","_objectSpread","current","id","abort","abortController","AbortController","fetchAndUpdateMetrics","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","wellIdsToFetch","metricsKeysChanged","collectionChanged","wellsToFetchById","wellsByCompany","metricsPromises","allRecords","records","wellsMetrics","recordsPerAsset","result","wrap","_context2","prev","next","isEqual","length","Map","groupBy","Array","from","values","companyId","Object","entries","_ref3","_callee","_ref2","_ref4","compId","companyWells","companyWellIds","_context","w","abrupt","fetchMetricsData","signal","stop","_x","apply","this","arguments","Promise","all","sent","aborted","flat","forEach","wellId","_recordsPerAsset$well","wellMetrics","reduce","acc","record","get","NonConvertableMetrics","prevWells","t0","console","error"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { FetchedOffsetWell } from '../../api/shared/types';
|
|
2
|
+
import type { OBJECTIVE_PERIOD_LIST } from '../../constants';
|
|
2
3
|
import type { Company } from '../company-safeguard/CompanySafeguardContext';
|
|
3
|
-
export type PeriodType =
|
|
4
|
+
export type PeriodType = typeof OBJECTIVE_PERIOD_LIST[number]['value'];
|
|
4
5
|
export type SelectionMode = 'radius' | 'lasso';
|
|
5
6
|
export type FilterMutationSource = 'manual_ui' | 'system' | 'external_sync';
|
|
6
7
|
/** Mirrors `PickerSegment` in OffsetWellPickerV5.types (kept here to avoid circular imports). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/OffsetWellPickerV5/stores/filter-store/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8CAA8C,CAAC;AAE5E,MAAM,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/OffsetWellPickerV5/stores/filter-store/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../src/components/OffsetWellPickerV5/stores/filter-store/types.ts"],"sourcesContent":["import type { FetchedOffsetWell } from '../../api/shared/types';\nimport type { Company } from '../company-safeguard/CompanySafeguardContext';\n\nexport type PeriodType =
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../src/components/OffsetWellPickerV5/stores/filter-store/types.ts"],"sourcesContent":["import type { FetchedOffsetWell } from '../../api/shared/types';\nimport type { OBJECTIVE_PERIOD_LIST } from '../../constants';\nimport type { Company } from '../company-safeguard/CompanySafeguardContext';\n\nexport type PeriodType = typeof OBJECTIVE_PERIOD_LIST[number]['value'];\n\nexport type SelectionMode = 'radius' | 'lasso';\nexport type FilterMutationSource = 'manual_ui' | 'system' | 'external_sync';\n\n/** Mirrors `PickerSegment` in OffsetWellPickerV5.types (kept here to avoid circular imports). */\nexport type PickerSegmentId = 'drilling' | 'intervention';\n\nexport type PolygonCoord = {\n latitude: number;\n longitude: number;\n};\n\nexport type FilterState = {\n status?: string[];\n companyId?: number[];\n rigName?: string[];\n programName?: string[];\n basin?: string[];\n county?: string[];\n area?: string[];\n formation?: string[];\n stringDesign?: string[];\n interventionAsset?: string[];\n padName?: string[];\n period?: PeriodType;\n sideTracks?: boolean;\n drillingWells?: boolean;\n interventionWells?: boolean;\n activeInterventionWells?: boolean;\n timeRangeFrom?: number;\n timeRangeTo?: number;\n selectionMode?: SelectionMode;\n polygonCoords?: PolygonCoord[];\n radius?: number;\n hasUserConfirmedAllCompaniesLoadAll?: boolean;\n showHiddenWells?: boolean;\n};\n\nexport const BASE_DEFAULT_FILTERS: FilterState = {\n showHiddenWells: false,\n};\n\n/**\n * Keys representing map selection state (not filter criteria).\n * These are preserved during filter resets and excluded from default-state comparisons.\n */\nexport const SELECTION_FILTER_KEYS = ['selectionMode', 'radius', 'polygonCoords'] as const;\n\nexport type FilterStoreDataSources = {\n wells: FetchedOffsetWell[] | null;\n companies: Company[];\n canViewCompanies: boolean;\n isAllWellsLoaded: boolean;\n isLoadAllWells: boolean;\n segment: PickerSegmentId;\n};\n\nexport type FilterStore = FilterStoreDataSources & {\n filters: FilterState;\n defaultFilters: FilterState;\n tempFilters: Partial<FilterState>;\n lastFilterMutationSource: FilterMutationSource;\n filterMutationSeq: number;\n setFilter: (\n key: keyof FilterState,\n value: FilterState[keyof FilterState],\n source?: FilterMutationSource\n ) => void;\n setFilters: (filters: FilterState, source?: FilterMutationSource) => void;\n clearFilters: (source?: FilterMutationSource) => void;\n resetFilters: (source?: FilterMutationSource) => void;\n resetFilterCriteria: (source?: FilterMutationSource) => void;\n hasActiveFilters: () => boolean;\n setTempFilter: (key: keyof FilterState, value: FilterState[keyof FilterState]) => void;\n clearTempFilter: (key: keyof FilterState) => void;\n clearAllTempFilters: () => void;\n commitTempFilter: (key: keyof FilterState) => void;\n setSelectionMode: (mode: SelectionMode) => void;\n setPolygonCoords: (coords: PolygonCoord[] | undefined) => void;\n setRadius: (radius: number) => void;\n pruneAllCascades: () => void;\n};\n\nexport type FilterStoreProps = {\n filters?: FilterState;\n defaultFilters?: FilterState;\n canViewCompanies?: boolean;\n};\n\nexport type SetWithMutation = (\n updates: Partial<Pick<FilterStore, 'filters' | 'tempFilters'>>,\n source: FilterMutationSource\n) => void;\n"],"names":["BASE_DEFAULT_FILTERS","showHiddenWells","SELECTION_FILTER_KEYS"],"mappings":"AA2CO,IAAMA,EAAoC,CAC/CC,iBAAiB,GAONC,EAAwB,CAAC,gBAAiB,SAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTimestampByPeriod.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/OffsetWellPickerV5/utils/__tests__/getTimestampByPeriod.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a period option to a `[start, end]` pair of unix seconds.
|
|
3
|
+
* Returns `[null, null]` for `'all'`, `undefined`, or any unknown value.
|
|
4
|
+
*/
|
|
1
5
|
export declare const getTimestampByPeriod: (period: string | undefined, customFrom: number | undefined, customTo: number | undefined) => [number | null, number | null];
|
|
2
6
|
//# sourceMappingURL=getTimestampByPeriod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTimestampByPeriod.d.ts","sourceRoot":"","sources":["../../../../src/components/OffsetWellPickerV5/utils/getTimestampByPeriod.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getTimestampByPeriod.d.ts","sourceRoot":"","sources":["../../../../src/components/OffsetWellPickerV5/utils/getTimestampByPeriod.ts"],"names":[],"mappings":"AA2BA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,WACvB,MAAM,GAAG,SAAS,cACd,MAAM,GAAG,SAAS,YACpB,MAAM,GAAG,SAAS,KAC3B,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAY/B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import t from"moment";var n={last12h:function(t){return t.clone().subtract(12,"hours")},last24h:function(t){return t.clone().subtract(24,"hours")},last7d:function(t){return t.clone().subtract(7,"days")},lastMonth:function(t){return t.clone().subtract(1,"month")},last6Months:function(t){return t.clone().subtract(6,"months")},yearToDate:function(t){return t.clone().startOf("year")},last1Year:function(t){return t.clone().subtract(1,"year")}},r=function(r,u,o){if("custom"===r)return[null!=u?u:null,null!=o?o:null];if(void 0!==r&&function(t){return Object.prototype.hasOwnProperty.call(n,t)}(r)){var e=t();return[n[r](e).unix(),e.unix()]}return[null,null]};export{r as getTimestampByPeriod};
|
|
2
2
|
//# sourceMappingURL=getTimestampByPeriod.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTimestampByPeriod.js","sources":["../../../../src/components/OffsetWellPickerV5/utils/getTimestampByPeriod.ts"],"sourcesContent":["import moment from 'moment';\n\nimport {
|
|
1
|
+
{"version":3,"file":"getTimestampByPeriod.js","sources":["../../../../src/components/OffsetWellPickerV5/utils/getTimestampByPeriod.ts"],"sourcesContent":["import moment from 'moment';\nimport type { Moment } from 'moment';\n\nimport type { PeriodType } from '../stores/filter-store/types';\n\ntype RelativePeriod = Exclude<PeriodType, 'all' | 'custom'>;\n\n/**\n * Start-of-range resolvers for the rolling/relative period options.\n * All are computed from `now` in the effective moment timezone (the app may call\n * `moment.tz.setDefault`), so \"Year to Date\" means Jan 1 00:00 of that zone, not UTC.\n * Month/year subtraction uses moment's documented end-of-month clamping\n * (Aug 31 − 6 months → Feb 29 / Feb 28).\n */\nconst RELATIVE_PERIOD_START: Record<RelativePeriod, (now: Moment) => Moment> = {\n last12h: now => now.clone().subtract(12, 'hours'),\n last24h: now => now.clone().subtract(24, 'hours'),\n last7d: now => now.clone().subtract(7, 'days'),\n lastMonth: now => now.clone().subtract(1, 'month'),\n last6Months: now => now.clone().subtract(6, 'months'),\n yearToDate: now => now.clone().startOf('year'),\n last1Year: now => now.clone().subtract(1, 'year'),\n};\n\nconst isRelativePeriod = (period: string): period is RelativePeriod =>\n Object.prototype.hasOwnProperty.call(RELATIVE_PERIOD_START, period);\n\n/**\n * Resolves a period option to a `[start, end]` pair of unix seconds.\n * Returns `[null, null]` for `'all'`, `undefined`, or any unknown value.\n */\nexport const getTimestampByPeriod = (\n period: string | undefined,\n customFrom: number | undefined,\n customTo: number | undefined\n): [number | null, number | null] => {\n if (period === 'custom') {\n return [customFrom ?? null, customTo ?? null];\n }\n\n if (period !== undefined && isRelativePeriod(period)) {\n const now = moment();\n\n return [RELATIVE_PERIOD_START[period](now).unix(), now.unix()];\n }\n\n return [null, null];\n};\n"],"names":["RELATIVE_PERIOD_START","last12h","now","clone","subtract","last24h","last7d","lastMonth","last6Months","yearToDate","startOf","last1Year","getTimestampByPeriod","period","customFrom","customTo","undefined","Object","prototype","hasOwnProperty","call","isRelativePeriod","moment","unix"],"mappings":"sBAcA,IAAMA,EAAyE,CAC7EC,QAAS,SAAAC,GAAG,OAAIA,EAAIC,QAAQC,SAAS,GAAI,QAAQ,EACjDC,QAAS,SAAAH,GAAG,OAAIA,EAAIC,QAAQC,SAAS,GAAI,QAAQ,EACjDE,OAAQ,SAAAJ,GAAG,OAAIA,EAAIC,QAAQC,SAAS,EAAG,OAAO,EAC9CG,UAAW,SAAAL,GAAG,OAAIA,EAAIC,QAAQC,SAAS,EAAG,QAAQ,EAClDI,YAAa,SAAAN,GAAG,OAAIA,EAAIC,QAAQC,SAAS,EAAG,SAAS,EACrDK,WAAY,SAAAP,GAAG,OAAIA,EAAIC,QAAQO,QAAQ,OAAO,EAC9CC,UAAW,SAAAT,GAAG,OAAIA,EAAIC,QAAQC,SAAS,EAAG,OAAO,GAUtCQ,EAAuB,SAClCC,EACAC,EACAC,GAEA,GAAe,WAAXF,EACF,MAAO,CAACC,QAAAA,EAAc,KAAMC,QAAAA,EAAY,MAG1C,QAAeC,IAAXH,GAhBmB,SAACA,GAAc,OACtCI,OAAOC,UAAUC,eAAeC,KAAKpB,EAAuBa,EAAO,CAevCQ,CAAiBR,GAAS,CACpD,IAAMX,EAAMoB,IAEZ,MAAO,CAACtB,EAAsBa,GAAQX,GAAKqB,OAAQrB,EAAIqB,OACzD,CAEA,MAAO,CAAC,KAAM,KAChB"}
|
package/mcp-server/server.mjs
CHANGED