@corva/ui 3.75.0-7 → 3.75.0-9
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/Filter.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/Filter/Filter.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/DateCell/DateCell.js +2 -0
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/DateCell/DateCell.js.map +1 -0
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableHead/OffsetWellsTableHead.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableHead/OffsetWellsTableHead.js.map +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/components/SkeletonTableRow/SkeletonTableRow.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/components/SkeletonTableRow/SkeletonTableRow.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/hooks/useTableColumns.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/hooks/useTableColumns.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/useWellDataPipeline.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useWellDataPipeline.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/hooks/useSortedWells.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/hooks/useSortedWells.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/utils/doesWellPassFilters.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/utils/doesWellPassFilters.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/utils/sortWellsBy.js +2 -0
- package/cjs-bundle/components/OffsetWellPickerV5/utils/sortWellsBy.js.map +1 -0
- package/cjs-bundle/permissions/useProvidePermissions.js +1 -1
- package/cjs-bundle/permissions/useProvidePermissions.js.map +1 -1
- package/components/OffsetWellPickerV5/components/Filter/Filter.js +1 -1
- package/components/OffsetWellPickerV5/components/Filter/Filter.js.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/DateCell/DateCell.d.ts +12 -0
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/DateCell/DateCell.d.ts.map +1 -0
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/DateCell/DateCell.js +2 -0
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/DateCell/DateCell.js.map +1 -0
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/DateCell/index.d.ts +2 -0
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/{LastActiveCell → DateCell}/index.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/index.d.ts +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/index.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableHead/OffsetWellsTableHead.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableHead/OffsetWellsTableHead.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/OffsetWellsTableHead/OffsetWellsTableHead.js.map +1 -1
- 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/components/SkeletonTableRow/SkeletonTableRow.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/SkeletonTableRow/SkeletonTableRow.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/components/SkeletonTableRow/SkeletonTableRow.js.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/hooks/useTableColumns.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/hooks/useTableColumns.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/hooks/useTableColumns.js.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.d.ts +2 -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 +10 -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/useWellDataPipeline.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useWellDataPipeline.js +1 -1
- package/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useWellDataPipeline.js.map +1 -1
- package/components/OffsetWellPickerV5/hooks/useSortedWells.d.ts +1 -4
- package/components/OffsetWellPickerV5/hooks/useSortedWells.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/hooks/useSortedWells.js +1 -1
- package/components/OffsetWellPickerV5/hooks/useSortedWells.js.map +1 -1
- package/components/OffsetWellPickerV5/utils/__tests__/sortWellsBy.test.d.ts +2 -0
- package/components/OffsetWellPickerV5/utils/__tests__/sortWellsBy.test.d.ts.map +1 -0
- package/components/OffsetWellPickerV5/utils/doesWellPassFilters.d.ts +0 -1
- package/components/OffsetWellPickerV5/utils/doesWellPassFilters.d.ts.map +1 -1
- package/components/OffsetWellPickerV5/utils/doesWellPassFilters.js +1 -1
- package/components/OffsetWellPickerV5/utils/doesWellPassFilters.js.map +1 -1
- package/components/OffsetWellPickerV5/utils/sortWellsBy.d.ts +22 -0
- package/components/OffsetWellPickerV5/utils/sortWellsBy.d.ts.map +1 -0
- package/components/OffsetWellPickerV5/utils/sortWellsBy.js +2 -0
- package/components/OffsetWellPickerV5/utils/sortWellsBy.js.map +1 -0
- package/mcp-server/server.mjs +1 -1
- package/package.json +1 -1
- package/permissions/useProvidePermissions.d.ts.map +1 -1
- package/permissions/useProvidePermissions.js +1 -1
- package/permissions/useProvidePermissions.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/LastActiveCell/LastActiveCell.js +0 -2
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/LastActiveCell/LastActiveCell.js.map +0 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/LastActiveCell/LastActiveCell.d.ts +0 -10
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/LastActiveCell/LastActiveCell.d.ts.map +0 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/LastActiveCell/LastActiveCell.js +0 -2
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/LastActiveCell/LastActiveCell.js.map +0 -1
- package/components/OffsetWellPickerV5/components/OffsetWellsTable/cells/LastActiveCell/index.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableColumns.js","sources":["../../../../../../../src/components/OffsetWellPickerV5/components/OffsetWellsTable/hooks/useTableColumns.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { ColumnType, TableColumns } from '../../../constants';\nimport { usePickerPropsStore } from '../../../stores/picker-props-store/usePickerPropsStore';\n\ntype ResolvedColumn = {\n type: string;\n label: string;\n key: string;\n minWidth: number;\n flex: number;\n};\n\nconst DRILLING_ONLY_COLUMNS: Set<string> = new Set([\n ColumnType.rig,\n ColumnType.distance,\n ColumnType.taScore,\n]);\n\nconst INTERVENTION_ONLY_COLUMNS: Set<string> = new Set([\n ColumnType.interventionAsset,\n ColumnType.padName,\n ColumnType.formation,\n]);\n\nexport const useTableColumns = (\n metricsKeys: string[] | undefined,\n canViewCompanies = true,\n isWellSectionColumnVisible = true,\n isDistanceColumnVisible = true\n): ResolvedColumn[] | null => {\n const segment = usePickerPropsStore(state => state.segment);\n\n return useMemo(() => {\n if (!metricsKeys) return null;\n\n const wIndex = Math.min(metricsKeys.length, 3);\n const isIntervention = segment === 'intervention';\n\n let availableColumns = canViewCompanies\n ? TableColumns\n : TableColumns.filter(column => column.type !== ColumnType.company);\n\n if (!isWellSectionColumnVisible) {\n availableColumns = availableColumns.filter(column => column.type !== ColumnType.wellSection);\n }\n\n if (!isDistanceColumnVisible) {\n availableColumns = availableColumns.filter(column => column.type !== ColumnType.distance);\n }\n\n if (isIntervention) {\n availableColumns = availableColumns.filter(column => !DRILLING_ONLY_COLUMNS.has(column.type));\n } else {\n availableColumns = availableColumns.filter(\n column => !INTERVENTION_ONLY_COLUMNS.has(column.type)\n );\n }\n\n return availableColumns.reduce<ResolvedColumn[]>((acc, column) => {\n if (column.type === ColumnType.metrics) {\n return [\n ...acc,\n ...metricsKeys.map(key => ({\n ...column,\n key,\n minWidth: column.minWidth[wIndex],\n flex: column.flex,\n })),\n ];\n }\n return [...acc, { ...column, minWidth: column.minWidth[wIndex], flex: column.flex }];\n }, []);\n }, [metricsKeys, canViewCompanies, isWellSectionColumnVisible, isDistanceColumnVisible, segment]);\n};\n"],"names":["DRILLING_ONLY_COLUMNS","Set","ColumnType","rig","distance","taScore","INTERVENTION_ONLY_COLUMNS","interventionAsset","padName","formation","metricsKeys","canViewCompanies","isWellSectionColumnVisible","isDistanceColumnVisible","segment","usePickerPropsStore","state","useMemo","wIndex","Math","min","length","isIntervention","availableColumns","TableColumns","filter","column","type","company","wellSection","has","reduce","acc","metrics","concat","_toConsumableArray","map","key","_objectSpread","minWidth","flex"],"mappings":"+8BAaA,IAAMA,EAAqC,IAAIC,IAAI,CACjDC,aAAWC,IACXD,EAAUA,WAACE,SACXF,EAAAA,WAAWG,UAGPC,EAAyC,IAAIL,IAAI,CACrDC,
|
|
1
|
+
{"version":3,"file":"useTableColumns.js","sources":["../../../../../../../src/components/OffsetWellPickerV5/components/OffsetWellsTable/hooks/useTableColumns.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { ColumnType, TableColumns } from '../../../constants';\nimport { usePickerPropsStore } from '../../../stores/picker-props-store/usePickerPropsStore';\n\ntype ResolvedColumn = {\n type: string;\n label: string;\n key: string;\n minWidth: number;\n flex: number;\n};\n\nconst DRILLING_ONLY_COLUMNS: Set<string> = new Set([\n ColumnType.rig,\n ColumnType.distance,\n ColumnType.taScore,\n]);\n\nconst INTERVENTION_ONLY_COLUMNS: Set<string> = new Set([\n ColumnType.interventionAsset,\n ColumnType.padName,\n ColumnType.formation,\n ColumnType.lastInterventionAt,\n]);\n\nexport const useTableColumns = (\n metricsKeys: string[] | undefined,\n canViewCompanies = true,\n isWellSectionColumnVisible = true,\n isDistanceColumnVisible = true\n): ResolvedColumn[] | null => {\n const segment = usePickerPropsStore(state => state.segment);\n\n return useMemo(() => {\n if (!metricsKeys) return null;\n\n const wIndex = Math.min(metricsKeys.length, 3);\n const isIntervention = segment === 'intervention';\n\n let availableColumns = canViewCompanies\n ? TableColumns\n : TableColumns.filter(column => column.type !== ColumnType.company);\n\n if (!isWellSectionColumnVisible) {\n availableColumns = availableColumns.filter(column => column.type !== ColumnType.wellSection);\n }\n\n if (!isDistanceColumnVisible) {\n availableColumns = availableColumns.filter(column => column.type !== ColumnType.distance);\n }\n\n if (isIntervention) {\n availableColumns = availableColumns.filter(column => !DRILLING_ONLY_COLUMNS.has(column.type));\n } else {\n availableColumns = availableColumns.filter(\n column => !INTERVENTION_ONLY_COLUMNS.has(column.type)\n );\n }\n\n return availableColumns.reduce<ResolvedColumn[]>((acc, column) => {\n if (column.type === ColumnType.metrics) {\n return [\n ...acc,\n ...metricsKeys.map(key => ({\n ...column,\n key,\n minWidth: column.minWidth[wIndex],\n flex: column.flex,\n })),\n ];\n }\n return [...acc, { ...column, minWidth: column.minWidth[wIndex], flex: column.flex }];\n }, []);\n }, [metricsKeys, canViewCompanies, isWellSectionColumnVisible, isDistanceColumnVisible, segment]);\n};\n"],"names":["DRILLING_ONLY_COLUMNS","Set","ColumnType","rig","distance","taScore","INTERVENTION_ONLY_COLUMNS","interventionAsset","padName","formation","lastInterventionAt","metricsKeys","canViewCompanies","isWellSectionColumnVisible","isDistanceColumnVisible","segment","usePickerPropsStore","state","useMemo","wIndex","Math","min","length","isIntervention","availableColumns","TableColumns","filter","column","type","company","wellSection","has","reduce","acc","metrics","concat","_toConsumableArray","map","key","_objectSpread","minWidth","flex"],"mappings":"+8BAaA,IAAMA,EAAqC,IAAIC,IAAI,CACjDC,aAAWC,IACXD,EAAUA,WAACE,SACXF,EAAAA,WAAWG,UAGPC,EAAyC,IAAIL,IAAI,CACrDC,EAAAA,WAAWK,kBACXL,EAAAA,WAAWM,QACXN,EAAUA,WAACO,UACXP,aAAWQ,6CAGkB,SAC7BC,GAI4B,IAH5BC,6DACAC,6DACAC,6DAEMC,EAAUC,uBAAoB,SAAAC,GAAK,OAAIA,EAAMF,WAEnD,OAAOG,EAAOA,SAAC,WACb,IAAKP,EAAa,OAAO,KAEzB,IAAMQ,EAASC,KAAKC,IAAIV,EAAYW,OAAQ,GACtCC,EAA6B,iBAAZR,EAEnBS,EAAmBZ,EACnBa,EAAAA,aACAA,EAAAA,aAAaC,QAAO,SAAAC,GAAM,OAAIA,EAAOC,OAAS1B,EAAUA,WAAC2B,WAkB7D,OAhBKhB,IACHW,EAAmBA,EAAiBE,QAAO,SAAAC,GAAM,OAAIA,EAAOC,OAAS1B,EAAUA,WAAC4B,gBAG7EhB,IACHU,EAAmBA,EAAiBE,QAAO,SAAAC,GAAM,OAAIA,EAAOC,OAAS1B,EAAUA,WAACE,cAIhFoB,EADED,EACiBC,EAAiBE,QAAO,SAAAC,GAAM,OAAK3B,EAAsB+B,IAAIJ,EAAOC,SAEpEJ,EAAiBE,QAClC,SAAAC,GAAM,OAAKrB,EAA0ByB,IAAIJ,EAAOC,UAI5BI,QAAyB,SAACC,EAAKN,GACrD,OAAIA,EAAOC,OAAS1B,EAAUA,WAACgC,QAC7B,GAAAC,OAAAC,EAAAA,QACKH,GACAtB,EAAAA,QAAAA,EAAY0B,KAAI,SAAAC,GAAG,OAAAC,EAAAA,EAAA,CAAA,EACjBZ,GAAM,CAAA,EAAA,CACTW,IAAAA,EACAE,SAAUb,EAAOa,SAASrB,GAC1BsB,KAAMd,EAAOc,MACb,MAGKR,GAAAA,OAAAA,EAAAA,QAAAA,WAAUN,GAAM,CAAA,EAAA,CAAEa,SAAUb,EAAOa,SAASrB,GAASsB,KAAMd,EAAOc,QAC9E,GAAE,GACL,GAAG,CAAC9B,EAAaC,EAAkBC,EAA4BC,EAAyBC,GAC1F"}
|
package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/slicedToArray"),t=require("react"),n=require("../../stores/picker-props-store/usePickerPropsStore.js"),r=require("../../stores/view-store/useViewStore.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=i(e);exports.useRowInteractions=function(e){var i=e.data,o=e.isLimitedOffsetWells,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/slicedToArray"),t=require("react"),n=require("../../stores/picker-props-store/usePickerPropsStore.js"),r=require("../../stores/view-store/useViewStore.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=i(e);exports.useRowInteractions=function(e){var i=e.data,o=e.isLimitedOffsetWells,l=e.maxOffsetWellNumber,c=e.metricsKeys,u=e.isWellSectionColumnVisible,a=e.hasLastInterventionAtColumn,f=e.handleChangeOffsetWell,d=e.setActiveWellId,h=e.onRowClick,p=e.registerRow,k=n.usePickerPropsStore((function(e){return e.isWDUser})),m=n.usePickerPropsStore((function(e){return e.isViewOnly})),w=r.useViewStore((function(e){return e.isMapHidden})),C=t.useState(i.checked),b=s.default(C,2),v=b[0],S=b[1],W=t.useCallback((function(e){p(i.id,e)}),[p,i.id]);t.useEffect((function(){S(i.checked)}),[i.checked]);var M=t.useMemo((function(){return m?"View only mode. To edit offsets, use ".concat(k?"Offset Well Selection app":"WellHub","."):o&&!i.checked?"App can't process more than (".concat(l-1,") Offset Wells."):""}),[m,o,i.checked,k,l]),O=t.useMemo((function(){return u?"wellSection":c.length>0?"lastMetric":a?"lastInterventionAt":"lastDrillingAt"}),[u,c.length,a]);return{isViewOnly:m,isMapHidden:w,isChecked:v,rowRef:W,handleChangeCheckbox:function(e){f(i,e),S(e)},checkboxTooltipText:M,lastCellColumn:O,handleMouseEnter:function(){d(i.id)},handleMouseLeave:function(){d(null)},handleRowClick:function(){w||null==h||h(i.id)}}};
|
|
2
2
|
//# sourceMappingURL=useRowInteractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRowInteractions.js","sources":["../../../../../../src/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.ts"],"sourcesContent":["import { useCallback, useEffect, useState, useMemo } from 'react';\n\nimport { usePickerPropsStore } from '../../stores/picker-props-store/usePickerPropsStore';\nimport { useViewStore } from '../../stores/view-store/useViewStore';\n\ntype WellData = {\n id: number;\n checked?: boolean;\n name?: string;\n status?: string;\n [key: string]: unknown;\n};\n\ntype UseRowInteractionsParams = {\n data: WellData;\n isLimitedOffsetWells: boolean;\n maxOffsetWellNumber: number;\n metricsKeys: string[];\n isWellSectionColumnVisible: boolean;\n handleChangeOffsetWell: (well: WellData, checked: boolean) => void;\n setActiveWellId: (id: number | null) => void;\n onRowClick: (id: number) => void;\n registerRow: (wellId: number, node: HTMLElement | null) => void;\n};\n\nexport const useRowInteractions = ({\n data,\n isLimitedOffsetWells,\n maxOffsetWellNumber,\n metricsKeys,\n isWellSectionColumnVisible,\n handleChangeOffsetWell,\n setActiveWellId,\n onRowClick,\n registerRow,\n}: UseRowInteractionsParams) => {\n const isWDUser = usePickerPropsStore(state => state.isWDUser);\n const isViewOnly = usePickerPropsStore(state => state.isViewOnly);\n const isMapHidden = useViewStore(state => state.isMapHidden);\n const [isChecked, setIsChecked] = useState(data.checked);\n\n const rowRef = useCallback(\n (node: HTMLElement | null) => {\n registerRow(data.id, node);\n },\n [registerRow, data.id]\n );\n\n const handleChangeCheckbox = (checked: boolean) => {\n handleChangeOffsetWell(data, checked);\n setIsChecked(checked);\n };\n\n useEffect(() => {\n setIsChecked(data.checked);\n }, [data.checked]);\n\n const checkboxTooltipText = useMemo(() => {\n if (isViewOnly) {\n return `View only mode. To edit offsets, use ${\n isWDUser ? 'Offset Well Selection app' : 'WellHub'\n }.`;\n } else if (isLimitedOffsetWells && !data.checked) {\n return `App can't process more than (${maxOffsetWellNumber - 1}) Offset Wells.`;\n } else {\n return '';\n }\n }, [isViewOnly, isLimitedOffsetWells, data.checked, isWDUser, maxOffsetWellNumber]);\n\n const lastCellColumn = useMemo(() => {\n if (isWellSectionColumnVisible) {\n return 'wellSection';\n }\n\n if (metricsKeys.length > 0) {\n return 'lastMetric';\n }\n\n return '
|
|
1
|
+
{"version":3,"file":"useRowInteractions.js","sources":["../../../../../../src/components/OffsetWellPickerV5/components/OffsetWellsTable/useRowInteractions.ts"],"sourcesContent":["import { useCallback, useEffect, useState, useMemo } from 'react';\n\nimport { usePickerPropsStore } from '../../stores/picker-props-store/usePickerPropsStore';\nimport { useViewStore } from '../../stores/view-store/useViewStore';\n\ntype WellData = {\n id: number;\n checked?: boolean;\n name?: string;\n status?: string;\n [key: string]: unknown;\n};\n\ntype UseRowInteractionsParams = {\n data: WellData;\n isLimitedOffsetWells: boolean;\n maxOffsetWellNumber: number;\n metricsKeys: string[];\n isWellSectionColumnVisible: boolean;\n hasLastInterventionAtColumn: boolean;\n handleChangeOffsetWell: (well: WellData, checked: boolean) => void;\n setActiveWellId: (id: number | null) => void;\n onRowClick: (id: number) => void;\n registerRow: (wellId: number, node: HTMLElement | null) => void;\n};\n\nexport const useRowInteractions = ({\n data,\n isLimitedOffsetWells,\n maxOffsetWellNumber,\n metricsKeys,\n isWellSectionColumnVisible,\n hasLastInterventionAtColumn,\n handleChangeOffsetWell,\n setActiveWellId,\n onRowClick,\n registerRow,\n}: UseRowInteractionsParams) => {\n const isWDUser = usePickerPropsStore(state => state.isWDUser);\n const isViewOnly = usePickerPropsStore(state => state.isViewOnly);\n const isMapHidden = useViewStore(state => state.isMapHidden);\n const [isChecked, setIsChecked] = useState(data.checked);\n\n const rowRef = useCallback(\n (node: HTMLElement | null) => {\n registerRow(data.id, node);\n },\n [registerRow, data.id]\n );\n\n const handleChangeCheckbox = (checked: boolean) => {\n handleChangeOffsetWell(data, checked);\n setIsChecked(checked);\n };\n\n useEffect(() => {\n setIsChecked(data.checked);\n }, [data.checked]);\n\n const checkboxTooltipText = useMemo(() => {\n if (isViewOnly) {\n return `View only mode. To edit offsets, use ${\n isWDUser ? 'Offset Well Selection app' : 'WellHub'\n }.`;\n } else if (isLimitedOffsetWells && !data.checked) {\n return `App can't process more than (${maxOffsetWellNumber - 1}) Offset Wells.`;\n } else {\n return '';\n }\n }, [isViewOnly, isLimitedOffsetWells, data.checked, isWDUser, maxOffsetWellNumber]);\n\n const lastCellColumn = useMemo(() => {\n if (isWellSectionColumnVisible) {\n return 'wellSection';\n }\n\n if (metricsKeys.length > 0) {\n return 'lastMetric';\n }\n\n return hasLastInterventionAtColumn ? 'lastInterventionAt' : 'lastDrillingAt';\n }, [isWellSectionColumnVisible, metricsKeys.length, hasLastInterventionAtColumn]);\n\n const handleMouseEnter = () => {\n setActiveWellId(data.id);\n };\n\n const handleMouseLeave = () => {\n setActiveWellId(null);\n };\n\n const handleRowClick = () => {\n if (!isMapHidden) {\n onRowClick?.(data.id);\n }\n };\n\n return {\n isViewOnly,\n isMapHidden,\n isChecked,\n rowRef,\n handleChangeCheckbox,\n checkboxTooltipText,\n lastCellColumn,\n handleMouseEnter,\n handleMouseLeave,\n handleRowClick,\n };\n};\n"],"names":["_ref","data","isLimitedOffsetWells","maxOffsetWellNumber","metricsKeys","isWellSectionColumnVisible","hasLastInterventionAtColumn","handleChangeOffsetWell","setActiveWellId","onRowClick","registerRow","isWDUser","usePickerPropsStore","state","isViewOnly","isMapHidden","useViewStore","_useState","useState","checked","_useState2","_slicedToArray","isChecked","setIsChecked","rowRef","useCallback","node","id","useEffect","checkboxTooltipText","useMemo","concat","lastCellColumn","length","handleChangeCheckbox","handleMouseEnter","handleMouseLeave","handleRowClick"],"mappings":"oXA0BkC,SAWFA,GAAA,IAV9BC,IAAAA,KACAC,IAAAA,qBACAC,IAAAA,oBACAC,IAAAA,YACAC,IAAAA,2BACAC,IAAAA,4BACAC,IAAAA,uBACAC,IAAAA,gBACAC,IAAAA,WACAC,IAAAA,YAEMC,EAAWC,uBAAoB,SAAAC,GAAK,OAAIA,EAAMF,YAC9CG,EAAaF,uBAAoB,SAAAC,GAAK,OAAIA,EAAMC,cAChDC,EAAcC,gBAAa,SAAAH,GAAK,OAAIA,EAAME,eAChDE,EAAkCC,EAAAA,SAASjB,EAAKkB,SAAQC,EAAAC,EAAAA,QAAAJ,EAAA,GAAjDK,EAASF,EAAA,GAAEG,EAAYH,EAAA,GAExBI,EAASC,eACb,SAACC,GACChB,EAAYT,EAAK0B,GAAID,EACtB,GACD,CAAChB,EAAaT,EAAK0B,KAQrBC,EAAAA,WAAU,WACRL,EAAatB,EAAKkB,QACpB,GAAG,CAAClB,EAAKkB,UAET,IAAMU,EAAsBC,EAAAA,SAAQ,WAClC,OAAIhB,EACF,wCAAAiB,OACEpB,EAAW,4BAA8B,UAAS,KAE3CT,IAAyBD,EAAKkB,QACAhB,gCAAAA,OAAAA,EAAsB,EAAC,mBAEvD,EAEX,GAAG,CAACW,EAAYZ,EAAsBD,EAAKkB,QAASR,EAAUR,IAExD6B,EAAiBF,EAAAA,SAAQ,WAC7B,OAAIzB,EACK,cAGLD,EAAY6B,OAAS,EAChB,aAGF3B,EAA8B,qBAAuB,gBAC7D,GAAE,CAACD,EAA4BD,EAAY6B,OAAQ3B,IAgBpD,MAAO,CACLQ,WAAAA,EACAC,YAAAA,EACAO,UAAAA,EACAE,OAAAA,EACAU,qBApD2B,SAACf,GAC5BZ,EAAuBN,EAAMkB,GAC7BI,EAAaJ,IAmDbU,oBAAAA,EACAG,eAAAA,EACAG,iBAtBuB,WACvB3B,EAAgBP,EAAK0B,KAsBrBS,iBAnBuB,WACvB5B,EAAgB,OAmBhB6B,eAhBqB,WAChBtB,GACHN,SAAAA,EAAaR,EAAK0B,KAgBxB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/toConsumableArray"),t=require("lodash");require("../../utils/index.js");var a=require("../../utils/metrics/metricsConfig.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=l(e),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/toConsumableArray"),t=require("lodash");require("../../utils/index.js");var a=require("../../utils/metrics/metricsConfig.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=l(e),n=a,o=[n.mud_type.key],r={status:"status",company:"companyId",rig:"rigName",program:"programName",basin:"basin",county:"county",area:"area",formation:"formation",stringDesign:"stringDesign",interventionAsset:"interventionAsset",padName:"padName",radius:"radius",period:"period",sideTracks:"sideTracks",drillingWells:"drillingWells",activeInterventionWells:"activeInterventionWells",timeRangeFrom:"timeRangeFrom",timeRangeTo:"timeRangeTo"},s=[{value:r.company,label:"Company"},{value:r.program,label:"Program/BU"},{value:r.rig,label:"Rig"},{value:r.basin,label:"Basin"},{value:r.county,label:"County"},{value:r.area,label:"Area"},{value:r.formation,label:"Target Formation"},{value:r.stringDesign,label:"String Design"},{value:r.interventionAsset,label:"Intervention Asset"},{value:r.padName,label:"Pad"},{value:r.status,label:"Status"}],p={unknown:"unknown",idle:"idle",active:"active",paused:"paused",complete:"complete"},m=[{value:p.unknown,color:"#FFFFFF"},{value:p.idle,color:"#ADADFF"},{value:p.active,color:"#A8FF3D"},{value:p.paused,color:"#FFF66C"},{value:p.complete,color:"#76C2FF"}],d={name:"name",status:"status",company:"companyName",rig:"rigName",interventionAsset:"interventionAsset",padName:"padName",formation:"formation",distance:"distance",taScore:"TA",lastDrillingAt:"lastDrillingAt",lastInterventionAt:"lastInterventionAt",metrics:"metrics",wellSection:"wellSection"},u=[{type:d.name,label:"Well Name",key:d.name,minWidth:[280,197,197,186],flex:3},{type:d.status,label:"",key:d.status,minWidth:[40,40,40,30],flex:0},{type:d.company,label:"Company",key:d.company,minWidth:[180,140,140,93],flex:2},{type:d.interventionAsset,label:"Intervention Asset",key:d.interventionAsset,minWidth:[200,150,150,100],flex:2},{type:d.padName,label:"Pad",key:d.padName,minWidth:[160,130,130,90],flex:1.5},{type:d.formation,label:"Formation",key:d.formation,minWidth:[160,130,130,90],flex:1.5},{type:d.rig,label:"Rig",key:d.rig,minWidth:[220,140,140,93],flex:2},{type:d.distance,label:"Distance",key:d.distance,minWidth:[160,160,122,93],flex:1},{type:d.taScore,label:"TA",key:d.taScore,minWidth:[90,90,75,70],flex:1},{type:d.lastDrillingAt,label:"Date",key:d.lastDrillingAt,minWidth:[140,140,108,98],flex:1.5},{type:d.lastInterventionAt,label:"Last Intervention At",key:d.lastInterventionAt,minWidth:[180,160,128,108],flex:1.5},{type:d.metrics,label:"",key:"",minWidth:[0,212,141,141],flex:2},{type:d.wellSection,label:"Well Section",key:d.wellSection,minWidth:[180,131,131,97],flex:1.5}],_=t.sortBy([n.hole_depth,n.hole_depth_change,n.hole_depth_change_lateral,n.drilled_feet_rotary,n.drilled_feet_slide,n.rop_gross,n.rop,n.rop_rotary,n.rop_slide,n.drilled_feet_rotary_percentage,n.drilled_feet_slide_percentage,n.on_bottom_percentage,n.cost_per_ft,n.cost_per_lat_ft,n.feet_per_day,n.target_formation,n.mud_type,n.total_time].concat(i.default("production"!==process.env.REACT_APP_ENVIRONMENT?[n.npt,n.circulating_time,n.spud_to_rig_release_time,n.spud_to_total_depth_time]:[])),"label");exports.ALL_SECTION_KEY="all",exports.ALL_SECTION_LABEL="All",exports.COMPANY_PROVIDERS_FOR_IDAS=["xto"],exports.ColumnType=d,exports.DEFAULT_RADIUS_KM=40,exports.DEFAULT_RADIUS_MILES=25,exports.EXPANDED_WELL_NAME_WIDTH=450,exports.FilterOptions=s,exports.FilterType=r,exports.H_SCROLL_THRESHOLD=5,exports.LEAVE_TOUCH_DELAY=1e4,exports.MAX_MANUAL_METRICS_COUNT=2,exports.METRICS_LIST=_,exports.MapLayout={width:{default:600,min:314,max:900},minContentWidth:400,columnsGap:16,hintsStashBreakpoint:480},exports.NonConvertableMetrics=o,exports.OBJECTIVE_PERIOD_LIST=[{value:"all",label:"All"},{value:"last12h",label:"Last 12 hrs"},{value:"last24h",label:"Last 24 hrs"},{value:"last7d",label:"Last 7 days"},{value:"lastMonth",label:"Last Month"},{value:"custom",label:"Custom"}],exports.ROWS_PER_PAGE=50,exports.SortDirection={ASC:"ASC",DESC:"DESC"},exports.StatusOptions=m,exports.TableColumns=u,exports.WellSectionColors=["#6EACFF","#69B919","#E95DAF","#A77DFF","#77FFC1","#018EFE","#FF5D7E","#B9E310","#FFD111","#24BB8E","#C426F3"],exports.WellStatus=p;
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
|
@@ -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 lastActive: 'lastActive',\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.lastActive,\n label: 'Last Active',\n key: ColumnType.lastActive,\n minWidth: [140, 140, 108, 98] 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":["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","lastActive","wellSection","TableColumns","type","minWidth","flex","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","width","default","min","max","minContentWidth","columnsGap","hintsStashBreakpoint","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: '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":["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","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","width","default","min","max","minContentWidth","columnsGap","hintsStashBreakpoint","ASC","DESC"],"mappings":"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"}
|
package/cjs-bundle/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useWellDataPipeline.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/helpers/slicedToArray"),s=require("react");require("../../stores/viewport-store/ViewportStoreContext.js"),require("../../stores/viewport-store/ViewportStoreProvider.js"),require("zustand"),require("lodash/isEqual");var t=require("../../stores/viewport-store/useViewportStore.js"),n=require("../../stores/viewport-store/utils/areWellMapsEqual.js");require("../../stores/company-safeguard/CompanySafeguardContext.js");var i=require("../../stores/company-safeguard/useCompanySafeguard.js"),o=require("../../stores/filter-store/useFilterStore.js");require("lodash"),require("../../stores/picker-props-store/PickerPropsStoreContext.js"),require("@babel/runtime/helpers/objectWithoutProperties"),require("../../viewport/ViewportProvider.js"),require("../../viewport/ViewportContext.js"),require("react/jsx-runtime");var l=require("../../stores/picker-props-store/usePickerPropsStore.js"),u=require("../../constants.js"),a=require("../../utils/isDrillingOnlyWell.js"),c=require("../../utils/isInterventionOnlyWell.js"),d=require("../useViewportWells/useViewportWells.js"),f=require("../useTileLoading.js"),p=require("../usePinnedWells.js"),q=require("../useExternalOffsets.js");require("../../stores/idas-resync-store/IdasResyncStoreContext.js"),require("../../stores/idas-resync-store/IdasResyncStoreProvider.js");var m=require("../../stores/idas-resync-store/useIdasResyncSync.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/helpers/slicedToArray"),s=require("react");require("../../stores/viewport-store/ViewportStoreContext.js"),require("../../stores/viewport-store/ViewportStoreProvider.js"),require("zustand"),require("lodash/isEqual");var t=require("../../stores/viewport-store/useViewportStore.js"),n=require("../../stores/viewport-store/utils/areWellMapsEqual.js");require("../../stores/company-safeguard/CompanySafeguardContext.js");var i=require("../../stores/company-safeguard/useCompanySafeguard.js"),o=require("../../stores/filter-store/useFilterStore.js");require("lodash"),require("../../stores/picker-props-store/PickerPropsStoreContext.js"),require("@babel/runtime/helpers/objectWithoutProperties"),require("../../viewport/ViewportProvider.js"),require("../../viewport/ViewportContext.js"),require("react/jsx-runtime");var l=require("../../stores/picker-props-store/usePickerPropsStore.js"),u=require("../../constants.js"),a=require("../../utils/isDrillingOnlyWell.js"),c=require("../../utils/isInterventionOnlyWell.js"),d=require("../useViewportWells/useViewportWells.js"),f=require("../useTileLoading.js"),p=require("../usePinnedWells.js"),q=require("../useExternalOffsets.js");require("../../stores/idas-resync-store/IdasResyncStoreContext.js"),require("../../stores/idas-resync-store/IdasResyncStoreProvider.js");var m=require("../../stores/idas-resync-store/useIdasResyncSync.js"),j=require("../../segment-config/index.js"),v=require("./useSearchedWells.js"),y=require("./useCompanyProvider.js"),W=require("./useFetchSubjectWell.js"),g=require("./useCompanyMetricKey.js"),S=require("./useAdvancedWells.js"),h=require("./utils/computeIsAllWellsLoaded.js"),b=require("./useInterventionEnrichment.js"),w=require("./usePadEnrichment.js");require("../../../../clients/subscriptions/constants.js"),require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/regenerator"),require("querystring"),require("uuid/v1"),require("../../../../clients/subscriptions.v1.js"),require("../../../../clients/jsonApi/index.js"),require("../../../../clients/subscriptions/subscriptions-client.factory.js"),require("immutable"),require("query-string"),require("../../../../constants/goals.js"),require("../../../../constants/segment.js"),require("../../../../constants/alerts.js"),require("../../../../constants/apps.js"),require("../../../../constants/drillstring.js"),require("../../../../constants/completion.js"),require("../../../../constants/appPackages.js"),require("../../../../constants/notifications.js"),require("../../../../constants/feed.js"),require("../../../../constants/bha.js"),require("../../../../constants/corvaCompanyId.js"),require("../../../GradientManager/configuration/constants.js"),require("../../../../utils/index.js"),require("uuid"),require("jsona"),require("../../../../utils/env.js"),require("../../../StatusBadge/constants.js"),require("@babel/runtime/helpers/toConsumableArray"),require("lodash/set"),require("lodash/get"),require("lodash/unset"),require("moment"),require("../../../../clients/api/apiCore.js"),require("../../../../clients/constants.js"),require("../../../../clients/sso/auth0.js"),require("../../../../clients/sso/oauth2.js"),require("../../../../clients/api/rateLimiter.js"),require("lodash/isEmpty"),require("lodash/sortBy"),require("../../../../constants/streamSourceType.js"),require("../../../DevCenter/DevCenterAppContainer/components/CommentsSwitch/CommentsSwitchContext.js"),require("../../../../componentsV2/AppCommonsProvider/AppCommonsProvider.js"),require("../../../../componentsV2/AppCommonsProvider/AppCommonsContext.js"),require("../../../../componentsV2/AppSettings/AppSettingsPinningContext.js");var P=require("../../../../effects/useGlobalOffsetWellsSync.js");function C(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var I=C(e),O=C(r);function A(e,r){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),s.push.apply(s,t)}return s}function E(e){for(var r=1;r<arguments.length;r++){var s=null!=arguments[r]?arguments[r]:{};r%2?A(Object(s),!0).forEach((function(r){I.default(e,r,s[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):A(Object(s)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(s,r))}))}return e}exports.useWellDataPipeline=function(e){var r,C,I=e.subjectWellId,A=e.assetCompanyId,x=e.offsetSettings,L=e.maxOffsetWellNumber,V=e.isLoadAllWells,M=e.open,D=e.onSave,k=l.usePickerPropsStore((function(e){return e.segment})),T="intervention"===k,K=t.useViewportStore((function(e){return e.wells}),n.areWellMapsEqual),N=t.useViewportStore((function(e){return e.bounds})),R=o.useFilterStore((function(e){var r;return null===(r=e.filters.drillingWells)||void 0===r||r})),F=o.useFilterStore((function(e){var r;return null===(r=e.filters.interventionWells)||void 0===r||r})),B=W.useFetchSubjectWell(I),G=O.default(B,1)[0],_=s.useMemo((function(){var e,r=null==G||null===(e=G.topHole)||void 0===e?void 0:e.coordinates;if(!r)return null;var s=O.default(r,2);return{latitude:s[0],longitude:s[1]}}),[G]);P.useGlobalOffsetWellsSync(x,D,L);var z=i.useCompanySafeguard(),H=z.companies,Y=z.canViewCompanies,J=z.resetSafeguard;d.useViewportWells(!V);var Q=f.useTileLoading(),U=s.useMemo((function(){return Array.from(K.values())}),[K]),X=Q||0===U.length&&null===N,Z=p.usePinnedWells(null==x?void 0:x.selectedWellIds),$=O.default(Z,2),ee=$[0],re=$[1],se=v.useSearchedWells(),te=O.default(se,3),ne=te[0],ie=te[1],oe=te[2],le=s.useMemo((function(){if(!U)return null;var e=function(e,r){if(null==r||!r.length)return e;var s=new Set(e.map((function(e){return e.id}))),t=r.filter((function(e){return!s.has(e.id)}));return t.length>0?e.concat(t):e},r=U;return r=e(r,ee),r=e(r,ne),"drilling"===k&&R&&(r=r.filter((function(e){return a.isDrillingOnlyWell(e)}))),"intervention"===k&&F&&(r=r.filter((function(e){return c.isInterventionOnlyWell(e)}))),G&&!r.some((function(e){return e.id===G.id}))&&(r=[G].concat(r)),r}),[U,G,ee,ne,R,F,k]),ue=y.useCompanyProvider(A),ae=O.default(ue,1)[0],ce=q.useExternalOffsets(I,le),de=ce.offsets,fe=ce.setOffsets,pe=ce.loadExternalOffsets;m.useIdasResyncSync({assetId:I,loadExternalOffsets:pe});var qe=de.wellSections,me=de.offsetWellsBySection,je=de.taScores,ve=de.idasWellIds,ye=de.owsWellIds,We=de.wellhubWellIds,ge=de.loadedAssetId,Se=s.useMemo((function(){return!!qe&&qe.some((function(e){return e.value!==u.ALL_SECTION_KEY}))}),[qe]);s.useEffect((function(){fe((function(e){return E(E({},e),{},{wellSections:null,offsetWellsBySection:null})}))}),[fe,I]),s.useEffect((function(){var e;if(me){var r=new Set(null!==(e=null==le?void 0:le.map((function(e){return e.id})))&&void 0!==e?e:[]),s=new Set;Object.values(me).forEach((function(e){(null!=e?e:[]).forEach((function(e){null==e||e===I||r.has(e)||s.add(e)}))})),s.size>0&&oe(Array.from(s))}}),[me,le,I,oe]);var he=j.getSegmentConfig(k).defaultMetricKey,be=g.useCompanyMetricKey(A,null==x?void 0:x.metricsKeys,he),we=O.default(be,2),Pe=we[0],Ce=we[1],Ie=S.useAdvancedWells(le,qe,me,I,Pe,M),Oe=O.default(Ie,4),Ae=Oe[0],Ee=Oe[1],xe=Oe[2],Le=Oe[3],Ve=b.useInterventionEnrichment(T),Me=Ve.wellIdToInterventionNames,De=Ve.activeInterventionWellIds,ke=Ve.isLoading,Te=w.usePadEnrichment(T),Ke=Te.assetIdToPadName,Ne=Te.isLoading,Re=Ae||xe,Fe=s.useMemo((function(){if(!Re||null==H||!H.length)return Re;var e={};H.forEach((function(r){e[r.id]=r.name}));var r=Re.map((function(r){return E(E({},r),{},{companyName:e[Number(r.companyId)]||"Null"})}));return T&&(r=b.enrichWellsWithInterventionData(r,Me),r=w.enrichWellsWithPadData(r,Ke)),r}),[Re,H,T,Me,Ke]),Be=s.useMemo((function(){return G?Fe&&Fe.find((function(e){return e.id===G.id}))||G:null}),[G,Fe]),Ge=l.usePickerPropsStore((function(e){return e.allWellsLoadProgress})),_e=h.computeIsAllWellsLoaded({isLoadAllWells:V,allWellsLoadProgress:Ge,wellsLength:null!==(r=null==Fe?void 0:Fe.length)&&void 0!==r?r:0,rawWellsCount:null!==(C=null==le?void 0:le.length)&&void 0!==C?C:0,areRawWellsLoading:X,areAdvancedWellsLoading:Ee||ke||Ne,arePinnedWellsLoading:re,areSearchedWellsLoading:ie});return{wells:Fe,subjectWell:Be,subjectWellCoords:_,rawWellsWithSubject:le,wellSections:qe,externalOffsets:me,taScores:je,idasWellIds:ve,owsWellIds:ye,wellhubWellIds:We,loadedAssetId:ge,isWellSectionColumnVisible:Se,metricsKeys:Pe,setMetricsKeys:Ce,loadingWellIds:Le,isAllWellsLoaded:_e,areRawWellsLoading:X,companies:H,canViewCompanies:Y,companyProvider:ae,pinnedWells:ee,fetchSearchedWells:oe,resetSafeguard:J,activeInterventionWellIds:De}};
|
|
2
2
|
//# sourceMappingURL=useWellDataPipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWellDataPipeline.js","sources":["../../../../../../src/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useWellDataPipeline.ts"],"sourcesContent":["import { useEffect, useMemo, type Dispatch, type SetStateAction } from 'react';\n\nimport { useViewportStore } from '../../stores/viewport-store';\nimport { areWellMapsEqual } from '../../stores/viewport-store/utils/areWellMapsEqual';\nimport { useCompanySafeguard } from '../../stores/company-safeguard';\nimport type { Company } from '../../stores/company-safeguard/CompanySafeguardContext';\nimport { useFilterStore } from '../../stores/filter-store/useFilterStore';\nimport { usePickerPropsStore } from '../../stores/picker-props-store';\nimport { ALL_SECTION_KEY } from '../../constants';\nimport { isDrillingOnlyWell } from '../../utils/isDrillingOnlyWell';\nimport { isInterventionOnlyWell } from '../../utils/isInterventionOnlyWell';\nimport type { FilterableWell } from '../../utils/doesWellPassFilters';\nimport type {\n OffsetWell,\n OffsetSettingsInput,\n OffsetSettingsOutput,\n} from '../../OffsetWellPickerV5.types';\nimport type { FetchedOffsetWell } from '../../api/shared/types';\nimport { useViewportWells } from '../useViewportWells';\nimport { useTileLoading } from '../useTileLoading';\nimport { usePinnedWells } from '../usePinnedWells';\nimport {\n useExternalOffsets,\n type WellSection,\n type OffsetWellsBySection,\n type TaScore,\n} from '../useExternalOffsets';\nimport { useIdasResyncSync } from '../../stores/idas-resync-store';\nimport { getSegmentConfig } from '../../segment-config';\n\nimport { useSearchedWells } from './useSearchedWells';\nimport { useCompanyProvider } from './useCompanyProvider';\nimport { useFetchSubjectWell } from './useFetchSubjectWell';\nimport { useCompanyMetricKey } from './useCompanyMetricKey';\nimport { useAdvancedWells, type TransformedWell } from './useAdvancedWells';\nimport { computeIsAllWellsLoaded } from './utils/computeIsAllWellsLoaded';\nimport {\n useInterventionEnrichment,\n enrichWellsWithInterventionData,\n} from './useInterventionEnrichment';\nimport { usePadEnrichment, enrichWellsWithPadData } from './usePadEnrichment';\n\nimport { useGlobalOffsetWellsSync } from '~/effects';\n\ntype UseWellDataPipelineParams = {\n subjectWellId: number | null;\n assetCompanyId: number | undefined;\n offsetSettings: OffsetSettingsInput | undefined;\n maxOffsetWellNumber: number;\n isLoadAllWells: boolean;\n open: boolean | undefined;\n onSave:\n | ((offsetSettings: OffsetSettingsOutput, selectedWells?: OffsetWell[]) => void)\n | undefined;\n};\n\ntype UseWellDataPipelineReturn = {\n wells: TransformedWell[] | null;\n subjectWell: TransformedWell | FetchedOffsetWell | null;\n subjectWellCoords: { latitude: number; longitude: number } | null;\n rawWellsWithSubject: FetchedOffsetWell[] | null;\n wellSections: WellSection[] | null;\n externalOffsets: OffsetWellsBySection | null;\n taScores: TaScore[];\n idasWellIds: number[];\n owsWellIds: number[];\n wellhubWellIds: number[];\n loadedAssetId: number | null;\n isWellSectionColumnVisible: boolean;\n metricsKeys: string[];\n setMetricsKeys: Dispatch<SetStateAction<string[]>>;\n loadingWellIds: Set<number>;\n isAllWellsLoaded: boolean;\n areRawWellsLoading: boolean;\n companies: Company[];\n canViewCompanies: boolean;\n companyProvider: string | null;\n pinnedWells: OffsetWell[] | null;\n fetchSearchedWells: (wellIds: number[]) => Promise<OffsetWell[]>;\n resetSafeguard: () => void;\n activeInterventionWellIds: Set<number>;\n};\n\nexport const useWellDataPipeline = ({\n subjectWellId,\n assetCompanyId,\n offsetSettings,\n maxOffsetWellNumber,\n isLoadAllWells,\n open,\n onSave,\n}: UseWellDataPipelineParams): UseWellDataPipelineReturn => {\n const segment = usePickerPropsStore(state => state.segment);\n const isIntervention = segment === 'intervention';\n const viewportWells = useViewportStore(state => state.wells, areWellMapsEqual);\n const viewportBounds = useViewportStore(state => state.bounds);\n const drillingWells = useFilterStore(state => state.filters.drillingWells ?? true);\n const interventionWells = useFilterStore(state => state.filters.interventionWells ?? true);\n\n const [fetchedSubjectWell] = useFetchSubjectWell(subjectWellId);\n\n const subjectWellCoords = useMemo(() => {\n const coords = fetchedSubjectWell?.topHole?.coordinates;\n if (!coords) return null;\n const [latitude, longitude] = coords;\n return { latitude, longitude };\n }, [fetchedSubjectWell]);\n\n useGlobalOffsetWellsSync(offsetSettings, onSave, maxOffsetWellNumber);\n\n const { companies, canViewCompanies, resetSafeguard } = useCompanySafeguard();\n\n useViewportWells(!isLoadAllWells);\n const isTileLoading = useTileLoading();\n\n const rawWells = useMemo(\n () => Array.from(viewportWells.values()) as FetchedOffsetWell[],\n [viewportWells]\n );\n const areRawWellsLoading = isTileLoading || (rawWells.length === 0 && viewportBounds === null);\n\n const [pinnedWells, arePinnedWellsLoading] = usePinnedWells(offsetSettings?.selectedWellIds);\n const [searchedWells, areSearchedWellsLoading, fetchSearchedWells] = useSearchedWells();\n\n const rawWellsWithSubject = useMemo((): FetchedOffsetWell[] | null => {\n if (!rawWells) return null;\n\n const mergeUniqueById = (\n target: FetchedOffsetWell[],\n extras: OffsetWell[] | null\n ): FetchedOffsetWell[] => {\n if (!extras?.length) {\n return target;\n }\n\n const existingIds = new Set(target.map(w => w.id));\n const missing = (extras as unknown as FetchedOffsetWell[]).filter(\n w => !existingIds.has(w.id)\n );\n\n return missing.length > 0 ? target.concat(missing) : target;\n };\n\n let result: FetchedOffsetWell[] = rawWells;\n result = mergeUniqueById(result, pinnedWells);\n result = mergeUniqueById(result, searchedWells);\n\n if (segment === 'drilling' && drillingWells) {\n result = result.filter(w => isDrillingOnlyWell(w as unknown as FilterableWell));\n }\n\n if (segment === 'intervention' && interventionWells) {\n result = result.filter(w => isInterventionOnlyWell(w as unknown as FilterableWell));\n }\n\n // Subject well is prepended AFTER filtering so its full data (BIC, advanced\n // metrics, distance) always loads even when it is not a drilling well.\n if (fetchedSubjectWell && !result.some(w => w.id === fetchedSubjectWell.id)) {\n result = [fetchedSubjectWell].concat(result);\n }\n\n return result;\n }, [\n rawWells,\n fetchedSubjectWell,\n pinnedWells,\n searchedWells,\n drillingWells,\n interventionWells,\n segment,\n ]);\n\n const [companyProvider] = useCompanyProvider(assetCompanyId);\n\n const { offsets, setOffsets, loadExternalOffsets } = useExternalOffsets(\n subjectWellId,\n rawWellsWithSubject\n );\n useIdasResyncSync({ assetId: subjectWellId, loadExternalOffsets });\n const {\n wellSections,\n offsetWellsBySection: externalOffsets,\n taScores,\n idasWellIds,\n owsWellIds,\n wellhubWellIds,\n loadedAssetId,\n } = offsets;\n\n const isWellSectionColumnVisible = useMemo(() => {\n if (!wellSections) return false;\n return wellSections.some(section => section.value !== ALL_SECTION_KEY);\n }, [wellSections]);\n\n useEffect(() => {\n setOffsets(prev => ({ ...prev, wellSections: null, offsetWellsBySection: null }));\n }, [setOffsets, subjectWellId]);\n\n // Pre-fetch synced offset wells that aren't in the local pool yet, so the Reset\n // button visibility (`useSaveResetDerivedState`) can synchronously distinguish\n // \"real well outside map radius\" from \"stale/unresolvable IDAS ID\". Results land\n // in `searchedWells` via `useSearchedWells.wellsCacheRef` and flow into\n // `rawWellsWithSubject` through `mergeUniqueById` above.\n useEffect(() => {\n if (!externalOffsets) return;\n const loaded = new Set(rawWellsWithSubject?.map(w => w.id) ?? []);\n const missing = new Set<number>();\n Object.values(externalOffsets).forEach(sectionIds => {\n (sectionIds ?? []).forEach(id => {\n if (id != null && id !== subjectWellId && !loaded.has(id)) missing.add(id);\n });\n });\n if (missing.size > 0) {\n fetchSearchedWells(Array.from(missing));\n }\n }, [externalOffsets, rawWellsWithSubject, subjectWellId, fetchSearchedWells]);\n\n const { defaultMetricKey } = getSegmentConfig(segment);\n\n const [metricsKeys, setMetricsKeys] = useCompanyMetricKey(\n assetCompanyId as number,\n offsetSettings?.metricsKeys,\n defaultMetricKey\n ) as [string[], Dispatch<SetStateAction<string[]>>];\n\n const [wellsWithMetrics, areAdvancedWellsLoading, transformedWells, loadingWellIds] =\n useAdvancedWells(\n rawWellsWithSubject,\n wellSections,\n externalOffsets,\n subjectWellId,\n metricsKeys,\n open\n );\n\n const {\n wellIdToInterventionNames,\n activeInterventionWellIds,\n isLoading: isInterventionLoading,\n } = useInterventionEnrichment(isIntervention);\n\n const { assetIdToPadName, isLoading: isPadLoading } = usePadEnrichment(isIntervention);\n\n const wellsWithoutCompanyName = wellsWithMetrics || transformedWells;\n\n const wells = useMemo(() => {\n if (!wellsWithoutCompanyName || !companies?.length) return wellsWithoutCompanyName;\n\n const companyMap: Record<number, string> = {};\n companies.forEach(company => {\n companyMap[company.id] = company.name;\n });\n\n let result = wellsWithoutCompanyName.map(well => ({\n ...well,\n companyName: companyMap[Number(well.companyId)] || 'Null',\n }));\n\n if (isIntervention) {\n result = enrichWellsWithInterventionData(result, wellIdToInterventionNames);\n result = enrichWellsWithPadData(result, assetIdToPadName);\n result = result.map(well => ({\n ...well,\n lastActive: well.lastInterventionAt ?? well.lastActive,\n }));\n }\n\n return result;\n }, [\n wellsWithoutCompanyName,\n companies,\n isIntervention,\n wellIdToInterventionNames,\n assetIdToPadName,\n ]);\n\n const subjectWell = useMemo(() => {\n if (!fetchedSubjectWell) return null;\n if (!wells) return fetchedSubjectWell;\n return wells.find(w => w.id === fetchedSubjectWell.id) || fetchedSubjectWell;\n }, [fetchedSubjectWell, wells]);\n\n const allWellsLoadProgress = usePickerPropsStore(state => state.allWellsLoadProgress);\n\n const isAllWellsLoaded = computeIsAllWellsLoaded({\n isLoadAllWells,\n allWellsLoadProgress,\n wellsLength: wells?.length ?? 0,\n rawWellsCount: rawWellsWithSubject?.length ?? 0,\n areRawWellsLoading,\n areAdvancedWellsLoading: areAdvancedWellsLoading || isInterventionLoading || isPadLoading,\n arePinnedWellsLoading,\n areSearchedWellsLoading,\n });\n\n return {\n wells,\n subjectWell,\n subjectWellCoords,\n rawWellsWithSubject,\n wellSections,\n externalOffsets,\n taScores,\n idasWellIds,\n owsWellIds,\n wellhubWellIds,\n loadedAssetId,\n isWellSectionColumnVisible,\n metricsKeys,\n setMetricsKeys,\n loadingWellIds,\n isAllWellsLoaded,\n areRawWellsLoading,\n companies,\n canViewCompanies,\n companyProvider,\n pinnedWells,\n fetchSearchedWells,\n resetSafeguard,\n activeInterventionWellIds,\n };\n};\n"],"names":["_ref","_wells$length","_rawWellsWithSubject$2","subjectWellId","assetCompanyId","offsetSettings","maxOffsetWellNumber","isLoadAllWells","open","onSave","segment","usePickerPropsStore","state","isIntervention","viewportWells","useViewportStore","wells","areWellMapsEqual","viewportBounds","bounds","drillingWells","useFilterStore","_state$filters$drilli","filters","interventionWells","_state$filters$interv","useFetchSubjectWell","fetchedSubjectWell","_slicedToArray","_useFetchSubjectWell","subjectWellCoords","useMemo","_fetchedSubjectWell$t","coords","topHole","coordinates","_coords","latitude","longitude","useGlobalOffsetWellsSync","_useCompanySafeguard","useCompanySafeguard","companies","canViewCompanies","resetSafeguard","useViewportWells","isTileLoading","useTileLoading","rawWells","Array","from","values","areRawWellsLoading","length","usePinnedWells","selectedWellIds","_usePinnedWells2","_usePinnedWells","pinnedWells","arePinnedWellsLoading","_useSearchedWells","useSearchedWells","_useSearchedWells2","searchedWells","areSearchedWellsLoading","fetchSearchedWells","rawWellsWithSubject","mergeUniqueById","target","extras","existingIds","Set","map","w","id","missing","filter","has","concat","result","isDrillingOnlyWell","isInterventionOnlyWell","some","useCompanyProvider","companyProvider","_useCompanyProvider","_useExternalOffsets","useExternalOffsets","offsets","setOffsets","loadExternalOffsets","useIdasResyncSync","assetId","wellSections","externalOffsets","offsetWellsBySection","taScores","idasWellIds","owsWellIds","wellhubWellIds","loadedAssetId","isWellSectionColumnVisible","section","value","ALL_SECTION_KEY","useEffect","prev","_objectSpread","_rawWellsWithSubject$","loaded","Object","forEach","sectionIds","add","size","defaultMetricKey","getSegmentConfig","_ref2","useCompanyMetricKey","metricsKeys","_ref3","setMetricsKeys","_useAdvancedWells","useAdvancedWells","_useAdvancedWells2","wellsWithMetrics","areAdvancedWellsLoading","transformedWells","loadingWellIds","useInterventionEnrichment","wellIdToInterventionNames","activeInterventionWellIds","isInterventionLoading","isLoading","usePadEnrichment","assetIdToPadName","isPadLoading","wellsWithoutCompanyName","companyMap","company","name","well","companyName","Number","companyId","enrichWellsWithInterventionData","enrichWellsWithPadData","_well$lastInterventio","lastActive","lastInterventionAt","subjectWell","find","allWellsLoadProgress","isAllWellsLoaded","computeIsAllWellsLoaded","wellsLength","rawWellsCount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useWellDataPipeline.js","sources":["../../../../../../src/components/OffsetWellPickerV5/hooks/use-well-data-pipeline/useWellDataPipeline.ts"],"sourcesContent":["import { useEffect, useMemo, type Dispatch, type SetStateAction } from 'react';\n\nimport { useViewportStore } from '../../stores/viewport-store';\nimport { areWellMapsEqual } from '../../stores/viewport-store/utils/areWellMapsEqual';\nimport { useCompanySafeguard } from '../../stores/company-safeguard';\nimport type { Company } from '../../stores/company-safeguard/CompanySafeguardContext';\nimport { useFilterStore } from '../../stores/filter-store/useFilterStore';\nimport { usePickerPropsStore } from '../../stores/picker-props-store';\nimport { ALL_SECTION_KEY } from '../../constants';\nimport { isDrillingOnlyWell } from '../../utils/isDrillingOnlyWell';\nimport { isInterventionOnlyWell } from '../../utils/isInterventionOnlyWell';\nimport type { FilterableWell } from '../../utils/doesWellPassFilters';\nimport type {\n OffsetWell,\n OffsetSettingsInput,\n OffsetSettingsOutput,\n} from '../../OffsetWellPickerV5.types';\nimport type { FetchedOffsetWell } from '../../api/shared/types';\nimport { useViewportWells } from '../useViewportWells';\nimport { useTileLoading } from '../useTileLoading';\nimport { usePinnedWells } from '../usePinnedWells';\nimport {\n useExternalOffsets,\n type WellSection,\n type OffsetWellsBySection,\n type TaScore,\n} from '../useExternalOffsets';\nimport { useIdasResyncSync } from '../../stores/idas-resync-store';\nimport { getSegmentConfig } from '../../segment-config';\n\nimport { useSearchedWells } from './useSearchedWells';\nimport { useCompanyProvider } from './useCompanyProvider';\nimport { useFetchSubjectWell } from './useFetchSubjectWell';\nimport { useCompanyMetricKey } from './useCompanyMetricKey';\nimport { useAdvancedWells, type TransformedWell } from './useAdvancedWells';\nimport { computeIsAllWellsLoaded } from './utils/computeIsAllWellsLoaded';\nimport {\n useInterventionEnrichment,\n enrichWellsWithInterventionData,\n} from './useInterventionEnrichment';\nimport { usePadEnrichment, enrichWellsWithPadData } from './usePadEnrichment';\n\nimport { useGlobalOffsetWellsSync } from '~/effects';\n\ntype UseWellDataPipelineParams = {\n subjectWellId: number | null;\n assetCompanyId: number | undefined;\n offsetSettings: OffsetSettingsInput | undefined;\n maxOffsetWellNumber: number;\n isLoadAllWells: boolean;\n open: boolean | undefined;\n onSave:\n | ((offsetSettings: OffsetSettingsOutput, selectedWells?: OffsetWell[]) => void)\n | undefined;\n};\n\ntype UseWellDataPipelineReturn = {\n wells: TransformedWell[] | null;\n subjectWell: TransformedWell | FetchedOffsetWell | null;\n subjectWellCoords: { latitude: number; longitude: number } | null;\n rawWellsWithSubject: FetchedOffsetWell[] | null;\n wellSections: WellSection[] | null;\n externalOffsets: OffsetWellsBySection | null;\n taScores: TaScore[];\n idasWellIds: number[];\n owsWellIds: number[];\n wellhubWellIds: number[];\n loadedAssetId: number | null;\n isWellSectionColumnVisible: boolean;\n metricsKeys: string[];\n setMetricsKeys: Dispatch<SetStateAction<string[]>>;\n loadingWellIds: Set<number>;\n isAllWellsLoaded: boolean;\n areRawWellsLoading: boolean;\n companies: Company[];\n canViewCompanies: boolean;\n companyProvider: string | null;\n pinnedWells: OffsetWell[] | null;\n fetchSearchedWells: (wellIds: number[]) => Promise<OffsetWell[]>;\n resetSafeguard: () => void;\n activeInterventionWellIds: Set<number>;\n};\n\nexport const useWellDataPipeline = ({\n subjectWellId,\n assetCompanyId,\n offsetSettings,\n maxOffsetWellNumber,\n isLoadAllWells,\n open,\n onSave,\n}: UseWellDataPipelineParams): UseWellDataPipelineReturn => {\n const segment = usePickerPropsStore(state => state.segment);\n const isIntervention = segment === 'intervention';\n const viewportWells = useViewportStore(state => state.wells, areWellMapsEqual);\n const viewportBounds = useViewportStore(state => state.bounds);\n const drillingWells = useFilterStore(state => state.filters.drillingWells ?? true);\n const interventionWells = useFilterStore(state => state.filters.interventionWells ?? true);\n\n const [fetchedSubjectWell] = useFetchSubjectWell(subjectWellId);\n\n const subjectWellCoords = useMemo(() => {\n const coords = fetchedSubjectWell?.topHole?.coordinates;\n if (!coords) return null;\n const [latitude, longitude] = coords;\n return { latitude, longitude };\n }, [fetchedSubjectWell]);\n\n useGlobalOffsetWellsSync(offsetSettings, onSave, maxOffsetWellNumber);\n\n const { companies, canViewCompanies, resetSafeguard } = useCompanySafeguard();\n\n useViewportWells(!isLoadAllWells);\n const isTileLoading = useTileLoading();\n\n const rawWells = useMemo(\n () => Array.from(viewportWells.values()) as FetchedOffsetWell[],\n [viewportWells]\n );\n const areRawWellsLoading = isTileLoading || (rawWells.length === 0 && viewportBounds === null);\n\n const [pinnedWells, arePinnedWellsLoading] = usePinnedWells(offsetSettings?.selectedWellIds);\n const [searchedWells, areSearchedWellsLoading, fetchSearchedWells] = useSearchedWells();\n\n const rawWellsWithSubject = useMemo((): FetchedOffsetWell[] | null => {\n if (!rawWells) return null;\n\n const mergeUniqueById = (\n target: FetchedOffsetWell[],\n extras: OffsetWell[] | null\n ): FetchedOffsetWell[] => {\n if (!extras?.length) {\n return target;\n }\n\n const existingIds = new Set(target.map(w => w.id));\n const missing = (extras as unknown as FetchedOffsetWell[]).filter(\n w => !existingIds.has(w.id)\n );\n\n return missing.length > 0 ? target.concat(missing) : target;\n };\n\n let result: FetchedOffsetWell[] = rawWells;\n result = mergeUniqueById(result, pinnedWells);\n result = mergeUniqueById(result, searchedWells);\n\n if (segment === 'drilling' && drillingWells) {\n result = result.filter(w => isDrillingOnlyWell(w as unknown as FilterableWell));\n }\n\n if (segment === 'intervention' && interventionWells) {\n result = result.filter(w => isInterventionOnlyWell(w as unknown as FilterableWell));\n }\n\n // Subject well is prepended AFTER filtering so its full data (BIC, advanced\n // metrics, distance) always loads even when it is not a drilling well.\n if (fetchedSubjectWell && !result.some(w => w.id === fetchedSubjectWell.id)) {\n result = [fetchedSubjectWell].concat(result);\n }\n\n return result;\n }, [\n rawWells,\n fetchedSubjectWell,\n pinnedWells,\n searchedWells,\n drillingWells,\n interventionWells,\n segment,\n ]);\n\n const [companyProvider] = useCompanyProvider(assetCompanyId);\n\n const { offsets, setOffsets, loadExternalOffsets } = useExternalOffsets(\n subjectWellId,\n rawWellsWithSubject\n );\n useIdasResyncSync({ assetId: subjectWellId, loadExternalOffsets });\n const {\n wellSections,\n offsetWellsBySection: externalOffsets,\n taScores,\n idasWellIds,\n owsWellIds,\n wellhubWellIds,\n loadedAssetId,\n } = offsets;\n\n const isWellSectionColumnVisible = useMemo(() => {\n if (!wellSections) return false;\n return wellSections.some(section => section.value !== ALL_SECTION_KEY);\n }, [wellSections]);\n\n useEffect(() => {\n setOffsets(prev => ({ ...prev, wellSections: null, offsetWellsBySection: null }));\n }, [setOffsets, subjectWellId]);\n\n // Pre-fetch synced offset wells that aren't in the local pool yet, so the Reset\n // button visibility (`useSaveResetDerivedState`) can synchronously distinguish\n // \"real well outside map radius\" from \"stale/unresolvable IDAS ID\". Results land\n // in `searchedWells` via `useSearchedWells.wellsCacheRef` and flow into\n // `rawWellsWithSubject` through `mergeUniqueById` above.\n useEffect(() => {\n if (!externalOffsets) return;\n const loaded = new Set(rawWellsWithSubject?.map(w => w.id) ?? []);\n const missing = new Set<number>();\n Object.values(externalOffsets).forEach(sectionIds => {\n (sectionIds ?? []).forEach(id => {\n if (id != null && id !== subjectWellId && !loaded.has(id)) missing.add(id);\n });\n });\n if (missing.size > 0) {\n fetchSearchedWells(Array.from(missing));\n }\n }, [externalOffsets, rawWellsWithSubject, subjectWellId, fetchSearchedWells]);\n\n const { defaultMetricKey } = getSegmentConfig(segment);\n\n const [metricsKeys, setMetricsKeys] = useCompanyMetricKey(\n assetCompanyId as number,\n offsetSettings?.metricsKeys,\n defaultMetricKey\n ) as [string[], Dispatch<SetStateAction<string[]>>];\n\n const [wellsWithMetrics, areAdvancedWellsLoading, transformedWells, loadingWellIds] =\n useAdvancedWells(\n rawWellsWithSubject,\n wellSections,\n externalOffsets,\n subjectWellId,\n metricsKeys,\n open\n );\n\n const {\n wellIdToInterventionNames,\n activeInterventionWellIds,\n isLoading: isInterventionLoading,\n } = useInterventionEnrichment(isIntervention);\n\n const { assetIdToPadName, isLoading: isPadLoading } = usePadEnrichment(isIntervention);\n\n const wellsWithoutCompanyName = wellsWithMetrics || transformedWells;\n\n const wells = useMemo(() => {\n if (!wellsWithoutCompanyName || !companies?.length) return wellsWithoutCompanyName;\n\n const companyMap: Record<number, string> = {};\n companies.forEach(company => {\n companyMap[company.id] = company.name;\n });\n\n let result = wellsWithoutCompanyName.map(well => ({\n ...well,\n companyName: companyMap[Number(well.companyId)] || 'Null',\n }));\n\n if (isIntervention) {\n result = enrichWellsWithInterventionData(result, wellIdToInterventionNames);\n result = enrichWellsWithPadData(result, assetIdToPadName);\n }\n\n return result;\n }, [\n wellsWithoutCompanyName,\n companies,\n isIntervention,\n wellIdToInterventionNames,\n assetIdToPadName,\n ]);\n\n const subjectWell = useMemo(() => {\n if (!fetchedSubjectWell) return null;\n if (!wells) return fetchedSubjectWell;\n return wells.find(w => w.id === fetchedSubjectWell.id) || fetchedSubjectWell;\n }, [fetchedSubjectWell, wells]);\n\n const allWellsLoadProgress = usePickerPropsStore(state => state.allWellsLoadProgress);\n\n const isAllWellsLoaded = computeIsAllWellsLoaded({\n isLoadAllWells,\n allWellsLoadProgress,\n wellsLength: wells?.length ?? 0,\n rawWellsCount: rawWellsWithSubject?.length ?? 0,\n areRawWellsLoading,\n areAdvancedWellsLoading: areAdvancedWellsLoading || isInterventionLoading || isPadLoading,\n arePinnedWellsLoading,\n areSearchedWellsLoading,\n });\n\n return {\n wells,\n subjectWell,\n subjectWellCoords,\n rawWellsWithSubject,\n wellSections,\n externalOffsets,\n taScores,\n idasWellIds,\n owsWellIds,\n wellhubWellIds,\n loadedAssetId,\n isWellSectionColumnVisible,\n metricsKeys,\n setMetricsKeys,\n loadingWellIds,\n isAllWellsLoaded,\n areRawWellsLoading,\n companies,\n canViewCompanies,\n companyProvider,\n pinnedWells,\n fetchSearchedWells,\n resetSafeguard,\n activeInterventionWellIds,\n };\n};\n"],"names":["_ref","_wells$length","_rawWellsWithSubject$2","subjectWellId","assetCompanyId","offsetSettings","maxOffsetWellNumber","isLoadAllWells","open","onSave","segment","usePickerPropsStore","state","isIntervention","viewportWells","useViewportStore","wells","areWellMapsEqual","viewportBounds","bounds","drillingWells","useFilterStore","_state$filters$drilli","filters","interventionWells","_state$filters$interv","useFetchSubjectWell","fetchedSubjectWell","_slicedToArray","_useFetchSubjectWell","subjectWellCoords","useMemo","_fetchedSubjectWell$t","coords","topHole","coordinates","_coords","latitude","longitude","useGlobalOffsetWellsSync","_useCompanySafeguard","useCompanySafeguard","companies","canViewCompanies","resetSafeguard","useViewportWells","isTileLoading","useTileLoading","rawWells","Array","from","values","areRawWellsLoading","length","usePinnedWells","selectedWellIds","_usePinnedWells2","_usePinnedWells","pinnedWells","arePinnedWellsLoading","_useSearchedWells","useSearchedWells","_useSearchedWells2","searchedWells","areSearchedWellsLoading","fetchSearchedWells","rawWellsWithSubject","mergeUniqueById","target","extras","existingIds","Set","map","w","id","missing","filter","has","concat","result","isDrillingOnlyWell","isInterventionOnlyWell","some","useCompanyProvider","companyProvider","_useCompanyProvider","_useExternalOffsets","useExternalOffsets","offsets","setOffsets","loadExternalOffsets","useIdasResyncSync","assetId","wellSections","externalOffsets","offsetWellsBySection","taScores","idasWellIds","owsWellIds","wellhubWellIds","loadedAssetId","isWellSectionColumnVisible","section","value","ALL_SECTION_KEY","useEffect","prev","_objectSpread","_rawWellsWithSubject$","loaded","Object","forEach","sectionIds","add","size","defaultMetricKey","getSegmentConfig","_ref2","useCompanyMetricKey","metricsKeys","_ref3","setMetricsKeys","_useAdvancedWells","useAdvancedWells","_useAdvancedWells2","wellsWithMetrics","areAdvancedWellsLoading","transformedWells","loadingWellIds","useInterventionEnrichment","wellIdToInterventionNames","activeInterventionWellIds","isInterventionLoading","isLoading","usePadEnrichment","assetIdToPadName","isPadLoading","wellsWithoutCompanyName","companyMap","company","name","well","companyName","Number","companyId","enrichWellsWithInterventionData","enrichWellsWithPadData","subjectWell","find","allWellsLoadProgress","isAllWellsLoaded","computeIsAllWellsLoaded","wellsLength","rawWellsCount"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/slicedToArray"),r=require("react"),n=require("lodash"),u=require("../constants.js"),i=require("../utils/sortWellsBy.js");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=o(e),s=o(t);function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){c.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}exports.useSortedWells=function(e,t,o,c,l){var f=r.useState(u.ColumnType.distance),p=s.default(f,2),d=p[0],b=p[1],y=r.useState(u.SortDirection.ASC),O=s.default(y,2),j=O[0],h=O[1],m=r.useMemo((function(){if(!t)return null;var r=new Set(o.map((function(e){return e.id}))),u=r.size>0?r:new Set(l||[]),c=t.filter((function(t){return t.id!==(null==e?void 0:e.id)&&u.has(t.id)})),s=i.sortWellsBy(c,d,j),f=t.filter((function(e){return!u.has(e.id)})),p=i.sortWellsBy(f,d,j);return(e&&!n.isEmpty(e)?[e]:[]).concat(s).concat(p).map((function(e){return a(a({},e),{},{checked:u.has(e.id)})}))}),[t,d,j,e,o,l]);return r.useEffect((function(){null!==m&&c(!1)}),[m,c]),[d,b,j,h,m]};
|
|
2
2
|
//# sourceMappingURL=useSortedWells.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSortedWells.js","sources":["../../../../../src/components/OffsetWellPickerV5/hooks/useSortedWells.ts"],"sourcesContent":["import { type Dispatch, type SetStateAction, useEffect, useMemo, useState } from 'react';\nimport { isEmpty } from 'lodash';\n\nimport { ColumnType, SortDirection, SortDirectionType } from '../constants';\
|
|
1
|
+
{"version":3,"file":"useSortedWells.js","sources":["../../../../../src/components/OffsetWellPickerV5/hooks/useSortedWells.ts"],"sourcesContent":["import { type Dispatch, type SetStateAction, useEffect, useMemo, useState } from 'react';\nimport { isEmpty } from 'lodash';\n\nimport { ColumnType, SortDirection, SortDirectionType } from '../constants';\nimport { sortWellsBy, type SortableWell } from '../utils/sortWellsBy';\n\nexport type SortedWell = SortableWell & { checked: boolean };\n\nexport const useSortedWells = (\n subjectWell: SortableWell | null,\n expandedWells: SortableWell[] | null,\n selectedWells: Array<{ id: number }>,\n setIsTableLoading: (value: boolean) => void,\n selectedWellIds: number[] | undefined\n): [\n string,\n Dispatch<SetStateAction<string>>,\n SortDirectionType,\n Dispatch<SetStateAction<SortDirectionType>>,\n SortedWell[] | null\n] => {\n const [sortBy, setSortBy] = useState<string>(ColumnType.distance);\n const [sortDirection, setSortDirection] = useState<SortDirectionType>(SortDirection.ASC);\n\n const sortedWells = useMemo((): SortedWell[] | null => {\n if (!expandedWells) {\n return null;\n }\n\n const selectedWellIdsSet = new Set(selectedWells.map(({ id }) => id));\n\n // Use selectedWellIds from settings as fallback during initial loading\n // when selectedWells state hasn't been populated yet\n const checkedIdsSet =\n selectedWellIdsSet.size > 0 ? selectedWellIdsSet : new Set(selectedWellIds || []);\n\n // Get enriched versions of selected wells from expandedWells\n // Uses checkedIdsSet (with fallback to settings) to ensure selected wells are sorted to top during initial loading\n const enrichedSelectedWells = expandedWells.filter(\n well => well.id !== subjectWell?.id && checkedIdsSet.has(well.id)\n );\n\n const sortedSelectedWells = sortWellsBy(enrichedSelectedWells, sortBy, sortDirection);\n\n const restWells = expandedWells.filter(well => !checkedIdsSet.has(well.id));\n const sortedRestWells = sortWellsBy(restWells, sortBy, sortDirection);\n\n const combinedWells: SortableWell[] = (\n subjectWell && !isEmpty(subjectWell) ? [subjectWell] : []\n )\n .concat(sortedSelectedWells)\n .concat(sortedRestWells);\n\n return combinedWells.map(well => ({\n ...well,\n checked: checkedIdsSet.has(well.id),\n }));\n }, [expandedWells, sortBy, sortDirection, subjectWell, selectedWells, selectedWellIds]);\n\n useEffect(() => {\n if (sortedWells !== null) {\n setIsTableLoading(false);\n }\n }, [sortedWells, setIsTableLoading]);\n\n return [sortBy, setSortBy, sortDirection, setSortDirection, sortedWells];\n};\n"],"names":["subjectWell","expandedWells","selectedWells","setIsTableLoading","selectedWellIds","_useState","useState","ColumnType","distance","_useState2","_slicedToArray","sortBy","setSortBy","_useState3","SortDirection","ASC","_useState4","sortDirection","setSortDirection","sortedWells","useMemo","selectedWellIdsSet","Set","map","_ref","id","checkedIdsSet","size","enrichedSelectedWells","filter","well","has","sortedSelectedWells","sortWellsBy","restWells","sortedRestWells","isEmpty","concat","_objectSpread","checked","useEffect"],"mappings":"88BAQ8B,SAC5BA,EACAC,EACAC,EACAC,EACAC,GAQA,IAAAC,EAA4BC,EAAAA,SAAiBC,EAAUA,WAACC,UAASC,EAAAC,EAAAA,QAAAL,EAAA,GAA1DM,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxBI,EAA0CP,EAAAA,SAA4BQ,EAAaA,cAACC,KAAIC,EAAAN,EAAAA,QAAAG,EAAA,GAAjFI,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEhCG,EAAcC,EAAAA,SAAQ,WAC1B,IAAKnB,EACH,OAAO,KAGT,IAAMoB,EAAqB,IAAIC,IAAIpB,EAAcqB,KAAI,SAAAC,GAAK,SAAFC,EAAW,KAI7DC,EACJL,EAAmBM,KAAO,EAAIN,EAAqB,IAAIC,IAAIlB,GAAmB,IAI1EwB,EAAwB3B,EAAc4B,QAC1C,SAAAC,GAAI,OAAIA,EAAKL,MAAOzB,aAAAA,EAAAA,EAAayB,KAAMC,EAAcK,IAAID,EAAKL,OAG1DO,EAAsBC,EAAWA,YAACL,EAAuBjB,EAAQM,GAEjEiB,EAAYjC,EAAc4B,QAAO,SAAAC,GAAI,OAAKJ,EAAcK,IAAID,EAAKL,OACjEU,EAAkBF,EAAWA,YAACC,EAAWvB,EAAQM,GAQvD,OALEjB,IAAgBoC,EAAOA,QAACpC,GAAe,CAACA,GAAe,IAEtDqC,OAAOL,GACPK,OAAOF,GAEWZ,KAAI,SAAAO,GAAI,OAAAQ,EAAAA,EAAA,CAAA,EACxBR,GAAI,CAAA,EAAA,CACPS,QAASb,EAAcK,IAAID,EAAKL,KAAG,GAEvC,GAAG,CAACxB,EAAeU,EAAQM,EAAejB,EAAaE,EAAeE,IAQtE,OANAoC,EAAAA,WAAU,WACY,OAAhBrB,GACFhB,GAAkB,EAEtB,GAAG,CAACgB,EAAahB,IAEV,CAACQ,EAAQC,EAAWK,EAAeC,EAAkBC,EAC9D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/slicedToArray"),r=require("./getTimestampByPeriod.js"),i=require("./isAssetVisibleToUser.js"),t=require("./isDrillingOnlyWell.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=n(e),l=/\sST0/,u=["status","companyId","rigName","programName","basin","county","area","formation","stringDesign","interventionAsset","padName"],a=function(e,i,n){var a,o;if(!i)return!0;var d=null==n?void 0:n.excludeKeys;if(!u.every((function(r){if(null!=d&&d.includes(r))return!0;var t=i[r];if(Array.isArray(t)&&t.length>0){var n=e[r],s=t.map(String);return null==n||"Null"===n?s.includes("Null"):Array.isArray(n)?n.some((function(e){return s.includes(String(e))})):s.includes(String(n))}return!0})))return!1;if("intervention"===(null==n?void 0:n.segment)){var v=i.status;if(Array.isArray(v)&&v.map(String).includes("active")&&"active"===e.status&&"intervention"!==e.wellState)return!1}if(i.sideTracks&&l.test(null!==(a=e.name)&&void 0!==a?a:""))return!1;if("intervention"!==(null==n?void 0:n.segment)&&i.drillingWells&&!t.isDrillingOnlyWell(e))return!1;if(i.activeInterventionWells&&(null===(o=e.interventionAsset)||void 0===o||!o.length))return!1;var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/slicedToArray"),r=require("./getTimestampByPeriod.js"),i=require("./isAssetVisibleToUser.js"),t=require("./isDrillingOnlyWell.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=n(e),l=/\sST0/,u=["status","companyId","rigName","programName","basin","county","area","formation","stringDesign","interventionAsset","padName"],a=function(e,i,n){var a,o;if(!i)return!0;var d=null==n?void 0:n.excludeKeys;if(!u.every((function(r){if(null!=d&&d.includes(r))return!0;var t=i[r];if(Array.isArray(t)&&t.length>0){var n=e[r],s=t.map(String);return null==n||"Null"===n?s.includes("Null"):Array.isArray(n)?n.some((function(e){return s.includes(String(e))})):s.includes(String(n))}return!0})))return!1;if("intervention"===(null==n?void 0:n.segment)){var v=i.status;if(Array.isArray(v)&&v.map(String).includes("active")&&"active"===e.status&&"intervention"!==e.wellState)return!1}if(i.sideTracks&&l.test(null!==(a=e.name)&&void 0!==a?a:""))return!1;if("intervention"!==(null==n?void 0:n.segment)&&i.drillingWells&&!t.isDrillingOnlyWell(e))return!1;if(i.activeInterventionWells&&(null===(o=e.interventionAsset)||void 0===o||!o.length))return!1;var m=i.period,c=i.timeRangeFrom,f=i.timeRangeTo,g=r.getTimestampByPeriod(m,c,f),y=s.default(g,2),p=y[0],A=y[1];if(null!==p&&null!==A&&Number.isFinite(p)&&Number.isFinite(A)){var T=e.lastDrillingAt;if(void 0===T||!(T>=p&&T<=A))return!1}return!0};exports.EXCLUDE_RIG_NAME_FILTER={excludeKeys:["rigName"]},exports.WELL_PROPERTY_FILTER_KEYS=u,exports.doesWellPassFilters=a,exports.doesWellPassVisibilityAndFilters=function(e,r,t,n){return i.isAssetVisibleToUser(e,t)&&a(e,r,n)};
|
|
2
2
|
//# sourceMappingURL=doesWellPassFilters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doesWellPassFilters.js","sources":["../../../../../src/components/OffsetWellPickerV5/utils/doesWellPassFilters.ts"],"sourcesContent":["import type { FilterState, PickerSegmentId } from '../stores/filter-store/types';\n\nimport { getTimestampByPeriod } from './getTimestampByPeriod';\nimport { isAssetVisibleToUser } from './isAssetVisibleToUser';\nimport { isDrillingOnlyWell } from './isDrillingOnlyWell';\n\nconst SIDE_TRACK_REGEX = /\\sST0/;\n\nexport const WELL_PROPERTY_FILTER_KEYS: (keyof FilterState)[] = [\n 'status',\n 'companyId',\n 'rigName',\n 'programName',\n 'basin',\n 'county',\n 'area',\n 'formation',\n 'stringDesign',\n 'interventionAsset',\n 'padName',\n];\n\nexport type FilterableWell = {\n name?: string;\n
|
|
1
|
+
{"version":3,"file":"doesWellPassFilters.js","sources":["../../../../../src/components/OffsetWellPickerV5/utils/doesWellPassFilters.ts"],"sourcesContent":["import type { FilterState, PickerSegmentId } from '../stores/filter-store/types';\n\nimport { getTimestampByPeriod } from './getTimestampByPeriod';\nimport { isAssetVisibleToUser } from './isAssetVisibleToUser';\nimport { isDrillingOnlyWell } from './isDrillingOnlyWell';\n\nconst SIDE_TRACK_REGEX = /\\sST0/;\n\nexport const WELL_PROPERTY_FILTER_KEYS: (keyof FilterState)[] = [\n 'status',\n 'companyId',\n 'rigName',\n 'programName',\n 'basin',\n 'county',\n 'area',\n 'formation',\n 'stringDesign',\n 'interventionAsset',\n 'padName',\n];\n\nexport type FilterableWell = {\n name?: string;\n lastDrillingAt?: number;\n status?: string;\n companyId?: number | string;\n rigName?: string;\n programName?: string;\n basin?: string;\n county?: string;\n area?: string;\n formation?: string;\n stringDesign?: unknown;\n interventionAsset?: string[];\n padName?: string;\n wellState?: string;\n lastInterventionAt?: number;\n};\n\nexport type FilterableVisibleWell = FilterableWell & { visibility?: string };\n\nexport type DoesWellPassFiltersOptions = {\n excludeKeys?: (keyof FilterState)[];\n segment?: PickerSegmentId;\n};\n\nexport const EXCLUDE_RIG_NAME_FILTER: DoesWellPassFiltersOptions = {\n excludeKeys: ['rigName'],\n};\n\nexport const doesWellPassFilters = (\n well: FilterableWell,\n filters: FilterState | null,\n options?: DoesWellPassFiltersOptions\n): boolean => {\n if (!filters) return true;\n\n const excludeKeys = options?.excludeKeys;\n\n // Check array property filters\n const passesPropertyFilters = WELL_PROPERTY_FILTER_KEYS.every(filterKey => {\n if (excludeKeys?.includes(filterKey)) return true;\n\n const filterValue = filters[filterKey];\n if (Array.isArray(filterValue) && filterValue.length > 0) {\n const wellValue = well[filterKey as keyof FilterableWell];\n const normalized = (filterValue as (string | number)[]).map(String);\n\n if (wellValue == null || wellValue === 'Null') {\n return normalized.includes('Null');\n }\n\n if (Array.isArray(wellValue)) {\n return (wellValue as string[]).some(v => normalized.includes(String(v)));\n }\n\n return normalized.includes(String(wellValue));\n }\n return true;\n });\n\n if (!passesPropertyFilters) {\n return false;\n }\n\n // Intervention segment: \"active\" status additionally requires wellState === 'intervention'\n if (options?.segment === 'intervention') {\n const statusFilter = filters.status;\n if (\n Array.isArray(statusFilter) &&\n statusFilter.map(String).includes('active') &&\n well.status === 'active' &&\n well.wellState !== 'intervention'\n ) {\n return false;\n }\n }\n\n // Check sideTracks filter\n if (filters.sideTracks && SIDE_TRACK_REGEX.test(well.name ?? '')) {\n return false;\n }\n\n if (options?.segment !== 'intervention' && filters.drillingWells && !isDrillingOnlyWell(well)) {\n return false;\n }\n\n // Check activeInterventionWells toggle: only show wells active on an intervention unit\n if (filters.activeInterventionWells && !well.interventionAsset?.length) {\n return false;\n }\n\n // Check time range filter\n const { period, timeRangeFrom, timeRangeTo } = filters;\n const [startTimestamp, endTimestamp] = getTimestampByPeriod(period, timeRangeFrom, timeRangeTo);\n\n if (\n startTimestamp !== null &&\n endTimestamp !== null &&\n Number.isFinite(startTimestamp) &&\n Number.isFinite(endTimestamp)\n ) {\n const { lastDrillingAt } = well;\n if (\n lastDrillingAt === undefined ||\n !(lastDrillingAt >= startTimestamp && lastDrillingAt <= endTimestamp)\n ) {\n return false;\n }\n }\n\n return true;\n};\n\nexport const doesWellPassVisibilityAndFilters = (\n well: FilterableVisibleWell,\n filters: FilterState | null,\n includeHidden: boolean,\n options?: DoesWellPassFiltersOptions\n): boolean =>\n isAssetVisibleToUser(well, includeHidden) && doesWellPassFilters(well, filters, options);\n"],"names":["SIDE_TRACK_REGEX","WELL_PROPERTY_FILTER_KEYS","doesWellPassFilters","well","filters","options","_well$name","_well$interventionAss","excludeKeys","every","filterKey","includes","filterValue","Array","isArray","length","wellValue","normalized","map","String","some","v","segment","statusFilter","status","wellState","sideTracks","test","name","drillingWells","isDrillingOnlyWell","activeInterventionWells","interventionAsset","period","timeRangeFrom","timeRangeTo","_getTimestampByPeriod","getTimestampByPeriod","_getTimestampByPeriod2","_slicedToArray","startTimestamp","endTimestamp","Number","isFinite","lastDrillingAt","undefined","includeHidden","isAssetVisibleToUser"],"mappings":"gUAMMA,EAAmB,QAEZC,EAAmD,CAC9D,SACA,YACA,UACA,cACA,QACA,SACA,OACA,YACA,eACA,oBACA,WAgCWC,EAAsB,SACjCC,EACAC,EACAC,GACY,IAAAC,EAAAC,EACZ,IAAKH,EAAS,OAAO,EAErB,IAAMI,EAAcH,aAAAA,EAAAA,EAASG,YAwB7B,IArB8BP,EAA0BQ,OAAM,SAAAC,GAC5D,GAAIF,SAAAA,EAAaG,SAASD,GAAY,OAAO,EAE7C,IAAME,EAAcR,EAAQM,GAC5B,GAAIG,MAAMC,QAAQF,IAAgBA,EAAYG,OAAS,EAAG,CACxD,IAAMC,EAAYb,EAAKO,GACjBO,EAAcL,EAAoCM,IAAIC,QAE5D,OAAiB,MAAbH,GAAmC,SAAdA,EAChBC,EAAWN,SAAS,QAGzBE,MAAMC,QAAQE,GACRA,EAAuBI,MAAK,SAAAC,GAAC,OAAIJ,EAAWN,SAASQ,OAAOE,OAG/DJ,EAAWN,SAASQ,OAAOH,GACpC,CACA,OAAO,CACT,IAGE,OAAO,EAIT,GAAyB,kBAArBX,aAAO,EAAPA,EAASiB,SAA4B,CACvC,IAAMC,EAAenB,EAAQoB,OAC7B,GACEX,MAAMC,QAAQS,IACdA,EAAaL,IAAIC,QAAQR,SAAS,WAClB,WAAhBR,EAAKqB,QACc,iBAAnBrB,EAAKsB,UAEL,OAAO,CAEX,CAGA,GAAIrB,EAAQsB,YAAc1B,EAAiB2B,KAAkB,QAAbxB,EAAAA,EAAKyB,YAAQ,IAAAtB,EAAAA,EAAA,IAC3D,OAAO,EAGT,GAAyB,kBAArBD,eAAAA,EAASiB,UAA8BlB,EAAQyB,gBAAkBC,EAAAA,mBAAmB3B,GACtF,OAAO,EAIT,GAAIC,EAAQ2B,0BAAkD,QAAvBxB,EAACJ,EAAK6B,yBAAiB,IAAAzB,IAAtBA,EAAwBQ,QAC9D,OAAO,EAIT,IAAQkB,EAAuC7B,EAAvC6B,OAAQC,EAA+B9B,EAA/B8B,cAAeC,EAAgB/B,EAAhB+B,YAC/BC,EAAuCC,EAAoBA,qBAACJ,EAAQC,EAAeC,GAAYG,EAAAC,EAAAA,QAAAH,EAAA,GAAxFI,EAAcF,EAAA,GAAEG,EAAYH,EAAA,GAEnC,GACqB,OAAnBE,GACiB,OAAjBC,GACAC,OAAOC,SAASH,IAChBE,OAAOC,SAASF,GAChB,CACA,IAAQG,EAAmBzC,EAAnByC,eACR,QACqBC,IAAnBD,KACEA,GAAkBJ,GAAkBI,GAAkBH,GAExD,OAAO,CAEX,CAEA,OAAO,CACT,kCAtFmE,CACjEjC,YAAa,CAAC,uHAuFgC,SAC9CL,EACAC,EACA0C,EACAzC,GAAoC,OAEpC0C,EAAoBA,qBAAC5C,EAAM2C,IAAkB5C,EAAoBC,EAAMC,EAASC,EAAQ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("@babel/runtime/helpers/toConsumableArray"),e=require("../constants.js");function t(r){return r&&"object"==typeof r&&"default"in r?r:{default:r}}var n=t(r),o=new Set([e.ColumnType.lastDrillingAt,e.ColumnType.lastInterventionAt]),u=function(r){return Array.isArray(r)?r.join(", "):String(r)},i=function(r,e){return"string"==typeof r?!r||"null"===r.toLowerCase():0===r?e:!r};exports.sortWellsBy=function(r,t,a){var l=o.has(t),f=a===e.SortDirection.ASC;return n.default(r).sort((function(r,e){var n=r[t],o=e[t],a=i(n,l),s=i(o,l);if(a&&s)return 0;if(a)return 1;if(s)return-1;if("string"==typeof n&&"string"==typeof o)return f?n.localeCompare(o):o.localeCompare(n);var p=function(r,e){if("number"==typeof r&&"number"==typeof e)return r===e?0:r>e?1:-1;var t=u(r),n=u(e);return t===n?0:t>n?1:-1}(n,o);return f?p:-p}))};
|
|
2
|
+
//# sourceMappingURL=sortWellsBy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sortWellsBy.js","sources":["../../../../../src/components/OffsetWellPickerV5/utils/sortWellsBy.ts"],"sourcesContent":["import { ColumnType, SortDirection, SortDirectionType } from '../constants';\n\nexport type SortableWell = Record<string, unknown> & { id: number };\n\n/**\n * Columns holding a unix timestamp, where `0` means \"no date\" rather than a real\n * value — the cell renders it as an em dash, so sorting treats it as missing too.\n */\nconst DATE_COLUMNS: Set<string> = new Set([\n ColumnType.lastDrillingAt,\n ColumnType.lastInterventionAt,\n]);\n\n/** Renders a value the way the table does, so ordering follows what the user reads. */\nconst toText = (value: unknown): string =>\n Array.isArray(value) ? value.join(', ') : String(value);\n\n/** Three-way comparison: 0 means \"tie\", which the caller turns into a stable order. */\nconst compareValues = (a: unknown, b: unknown): number => {\n if (typeof a === 'number' && typeof b === 'number') {\n if (a === b) return 0;\n return a > b ? 1 : -1;\n }\n\n const aText = toText(a);\n const bText = toText(b);\n\n if (aText === bText) return 0;\n return aText > bText ? 1 : -1;\n};\n\nconst isMissing = (value: unknown, treatZeroAsMissing: boolean): boolean => {\n if (typeof value === 'string') {\n return !value || value.toLowerCase() === 'null';\n }\n\n if (value === 0) {\n return treatZeroAsMissing;\n }\n\n return !value;\n};\n\n/**\n * Sorts wells by a column, leaving the input array untouched.\n *\n * Two rules, both of which the table relies on:\n * - wells with no value sink to the bottom in *both* directions, so sorting never\n * surfaces gaps ahead of data;\n * - anything that is not strictly greater or smaller — equal values, arrays with the\n * same contents, coercively equal values of mismatched types (`5` and `\"5\"`) — is a\n * tie and returns 0, so the stable sort keeps the incoming order instead of\n * shuffling those rows on every re-sort.\n *\n * Values within a column are assumed to share one type (numbers, strings, or string\n * arrays). Mixing numbers with strings in the same column is not supported: the\n * numeric and textual branches of `compareValues` use different orderings, so a mixed\n * column has no consistent order to sort by.\n */\nexport const sortWellsBy = (\n wells: SortableWell[],\n sortByKey: string,\n sortDir: SortDirectionType\n): SortableWell[] => {\n const treatZeroAsMissing = DATE_COLUMNS.has(sortByKey);\n const isAscending = sortDir === SortDirection.ASC;\n\n return [...wells].sort((a, b) => {\n const aVal = a[sortByKey];\n const bVal = b[sortByKey];\n\n const aMissing = isMissing(aVal, treatZeroAsMissing);\n const bMissing = isMissing(bVal, treatZeroAsMissing);\n\n if (aMissing && bMissing) return 0;\n if (aMissing) return 1;\n if (bMissing) return -1;\n\n if (typeof aVal === 'string' && typeof bVal === 'string') {\n return isAscending ? aVal.localeCompare(bVal) : bVal.localeCompare(aVal);\n }\n\n const order = compareValues(aVal, bVal);\n\n return isAscending ? order : -order;\n });\n};\n"],"names":["DATE_COLUMNS","Set","ColumnType","lastDrillingAt","lastInterventionAt","toText","value","Array","isArray","join","String","isMissing","treatZeroAsMissing","toLowerCase","wells","sortByKey","sortDir","has","isAscending","SortDirection","ASC","_toConsumableArray","sort","a","b","aVal","bVal","aMissing","bMissing","localeCompare","order","aText","bText","compareValues"],"mappings":"8OAQMA,EAA4B,IAAIC,IAAI,CACxCC,EAAAA,WAAWC,eACXD,EAAUA,WAACE,qBAIPC,EAAS,SAACC,GAAc,OAC5BC,MAAMC,QAAQF,GAASA,EAAMG,KAAK,MAAQC,OAAOJ,EAAM,EAgBnDK,EAAY,SAACL,EAAgBM,GACjC,MAAqB,iBAAVN,GACDA,GAAiC,SAAxBA,EAAMO,cAGX,IAAVP,EACKM,GAGDN,CACV,sBAkB2B,SACzBQ,EACAC,EACAC,GAEA,IAAMJ,EAAqBZ,EAAaiB,IAAIF,GACtCG,EAAcF,IAAYG,EAAaA,cAACC,IAE9C,OAAOC,EAAAA,QAAIP,GAAOQ,MAAK,SAACC,EAAGC,GACzB,IAAMC,EAAOF,EAAER,GACTW,EAAOF,EAAET,GAETY,EAAWhB,EAAUc,EAAMb,GAC3BgB,EAAWjB,EAAUe,EAAMd,GAEjC,GAAIe,GAAYC,EAAU,OAAO,EACjC,GAAID,EAAU,OAAO,EACrB,GAAIC,EAAU,OAAQ,EAEtB,GAAoB,iBAATH,GAAqC,iBAATC,EACrC,OAAOR,EAAcO,EAAKI,cAAcH,GAAQA,EAAKG,cAAcJ,GAGrE,IAAMK,EAhEY,SAACP,EAAYC,GACjC,GAAiB,iBAAND,GAA+B,iBAANC,EAClC,OAAID,IAAMC,EAAU,EACbD,EAAIC,EAAI,GAAK,EAGtB,IAAMO,EAAQ1B,EAAOkB,GACfS,EAAQ3B,EAAOmB,GAErB,OAAIO,IAAUC,EAAc,EACrBD,EAAQC,EAAQ,GAAK,CAC9B,CAqDkBC,CAAcR,EAAMC,GAElC,OAAOR,EAAcY,GAASA,CAChC,GACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/helpers/slicedToArray"),t=require("@babel/runtime/helpers/asyncToGenerator"),n=require("@babel/runtime/regenerator"),u=require("react"),i=require("./utils.js"),c=require("../clients/jsonApi/index.js");function
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/helpers/slicedToArray"),t=require("@babel/runtime/helpers/asyncToGenerator"),n=require("@babel/runtime/regenerator"),u=require("react"),i=require("./utils.js"),c=require("../clients/jsonApi/index.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=s(e),o=s(r),f=s(t),p=s(n);function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function b(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?l(Object(t),!0).forEach((function(r){a.default(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function d(e){return h.apply(this,arguments)}function h(){return(h=f.default(p.default.mark((function e(r){return p.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c.getPermissionCheck(r);case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e.catch(0),console.error(e.t0),e.abrupt("return",{active:!1});case 10:case"end":return e.stop()}}),e,null,[[0,6]])})))).apply(this,arguments)}module.exports=function(){var e=u.useState({}),r=o.default(e,2),t=r[0],n=r[1],c=u.useRef({}),s=u.useRef(new Set);function a(){return(a=f.default(p.default.mark((function e(r){var t,u,a;return p.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((t=r.filter((function(e){return!(e in c.current)&&!s.current.has(e)}))).length){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,Promise.all(t.map((function(e){return s.current.add(e),d(i.parsePermission(e))})));case 5:u=e.sent,a=b({},c.current),t.forEach((function(e,r){s.current.delete(e),a[e]=b({loading:!1},u[r])})),c.current=a,n(a);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}return window[Symbol.for("resetPermissionsCache")]=function(){c.current={},n({})},{permissions:t,fetchPermissions:function(e){return a.apply(this,arguments)}}};
|
|
2
2
|
//# sourceMappingURL=useProvidePermissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProvidePermissions.js","sources":["../../../src/permissions/useProvidePermissions.js"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { parsePermission } from './utils';\n\nimport { getPermissionCheck } from '~/clients/jsonApi';\n\nasync function fetchPermissionCheck(requestOptions) {\n try {\n return await getPermissionCheck(requestOptions);\n } catch (e) {\n console.error(e);\n // NOTE: Return false by default\n return { active: false };\n }\n}\n\nfunction useProvidePermissions() {\n const [permissions, setPermissions] = useState({});\n // NOTE: Store pending requests to prevent duplicate requests\n const pendingRequests = useRef(new Set());\n\n // NOTE: Called in finishLogIn redux action\n window[Symbol.for('resetPermissionsCache')] = () => setPermissions({});\n\n async function fetchPermissions(permissionKeys) {\n const permissionsToFetch = permissionKeys.filter(\n // NOTE: Send check request ONLY for new permission\n pKey => !(pKey in
|
|
1
|
+
{"version":3,"file":"useProvidePermissions.js","sources":["../../../src/permissions/useProvidePermissions.js"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { parsePermission } from './utils';\n\nimport { getPermissionCheck } from '~/clients/jsonApi';\n\nasync function fetchPermissionCheck(requestOptions) {\n try {\n return await getPermissionCheck(requestOptions);\n } catch (e) {\n console.error(e);\n // NOTE: Return false by default\n return { active: false };\n }\n}\n\nfunction useProvidePermissions() {\n const [permissions, setPermissions] = useState({});\n // NOTE: Latest permissions. fetchPermissions reads from this ref instead of the `permissions`\n // state, because a consumer may call a fetchPermissions closure created by an earlier render.\n const permissionsRef = useRef({});\n // NOTE: Store pending requests to prevent duplicate requests\n const pendingRequests = useRef(new Set());\n\n // NOTE: Called in finishLogIn redux action\n window[Symbol.for('resetPermissionsCache')] = () => {\n permissionsRef.current = {};\n setPermissions({});\n };\n\n async function fetchPermissions(permissionKeys) {\n const permissionsToFetch = permissionKeys.filter(\n // NOTE: Send check request ONLY for new permission\n pKey => !(pKey in permissionsRef.current) && !pendingRequests.current.has(pKey)\n );\n if (!permissionsToFetch.length) return;\n\n const response = await Promise.all(\n permissionsToFetch.map(pKey => {\n // NOTE: Add permission to pending requests and send check request\n pendingRequests.current.add(pKey);\n\n return fetchPermissionCheck(parsePermission(pKey));\n })\n );\n\n // NOTE: Update the cache and the pending set together, so a permission is never\n // \"not cached and not pending\" in between (that gap caused duplicate requests)\n const nextPermissions = { ...permissionsRef.current };\n permissionsToFetch.forEach((pKey, pIndex) => {\n pendingRequests.current.delete(pKey);\n nextPermissions[pKey] = { loading: false, ...response[pIndex] };\n });\n permissionsRef.current = nextPermissions;\n setPermissions(nextPermissions);\n }\n\n return { permissions, fetchPermissions };\n}\n\nexport default useProvidePermissions;\n"],"names":["fetchPermissionCheck","_x","_fetchPermissionCheck","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","requestOptions","wrap","_context2","prev","next","getPermissionCheck","abrupt","sent","t0","console","error","active","stop","_callee2","_useState","useState","_useState2","_slicedToArray","permissions","setPermissions","permissionsRef","useRef","pendingRequests","Set","_fetchPermissions","permissionKeys","permissionsToFetch","response","nextPermissions","_context","filter","pKey","current","has","length","Promise","all","map","add","parsePermission","_objectSpread","forEach","pIndex","delete","loading","_callee","window","Symbol","for","fetchPermissions","_x2"],"mappings":"s9BAIuD,SAExCA,EAAoBC,GAAA,OAAAC,EAAAC,MAAAC,KAAAC,UAAA,CAAA,SAAAH,IAQlC,OARkCA,EAAAI,EAAA,QAAAC,EAAA,QAAAC,MAAnC,WAAoCC,GAAc,OAAAF,UAAAG,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEjCC,EAAAA,mBAAmBL,GAAe,KAAA,EAAA,OAAAE,EAAAI,OAAA,SAAAJ,EAAAK,MAAA,KAAA,EAG/C,OAH+CL,EAAAC,KAAA,EAAAD,EAAAM,GAAAN,EAAA,MAAA,GAE/CO,QAAQC,MAAQR,EAAAM,IAETN,EAAAI,OAAA,SAAA,CAAEK,QAAQ,IAAO,KAAA,GAAA,IAAA,MAAA,OAAAT,EAAAU,OAAA,GAAAC,EAAA,KAAA,CAAA,CAAA,EAAA,IAE3B,MAAAnB,MAAAC,KAAAC,UAAA,gBAED,WACE,IAAAkB,EAAsCC,EAAQA,SAAC,IAAGC,EAAAC,EAAAA,QAAAH,EAAA,GAA3CI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAG5BI,EAAiBC,SAAO,CAAA,GAExBC,EAAkBD,EAAAA,OAAO,IAAIE,KAQJ,SAAAC,IAyB9B,OAzB8BA,EAAA3B,EAAA,QAAAC,EAAA,QAAAC,MAA/B,WAAgC0B,GAAc,IAAAC,EAAAC,EAAAC,EAAA,OAAA9B,UAAAG,MAAA,SAAA4B,GAAA,OAAA,OAAAA,EAAA1B,KAAA0B,EAAAzB,MAAA,KAAA,EAI3C,IAHKsB,EAAqBD,EAAeK,QAExC,SAAAC,GAAI,QAAMA,KAAQX,EAAeY,WAAaV,EAAgBU,QAAQC,IAAIF,OAEpDG,OAAM,CAAAL,EAAAzB,KAAA,EAAA,KAAA,CAAA,OAAAyB,EAAAvB,OAAA,UAAA,KAAA,EAAA,OAAAuB,EAAAzB,KAAA,EAEP+B,QAAQC,IAC7BV,EAAmBW,KAAI,SAAAN,GAIrB,OAFAT,EAAgBU,QAAQM,IAAIP,GAErBxC,EAAqBgD,EAAAA,gBAAgBR,GAC7C,KACF,KAAA,EAPKJ,EAAQE,EAAAtB,KAWRqB,EAAeY,EAAA,CAAA,EAAQpB,EAAeY,SAC5CN,EAAmBe,SAAQ,SAACV,EAAMW,GAChCpB,EAAgBU,QAAQW,OAAOZ,GAC/BH,EAAgBG,GAAKS,EAAA,CAAKI,SAAS,GAAUjB,EAASe,GACxD,IACAtB,EAAeY,QAAUJ,EACzBT,EAAeS,GAAiB,KAAA,GAAA,IAAA,MAAA,OAAAC,EAAAjB,OAAA,GAAAiC,EACjC,MAAAnD,MAAAC,KAAAC,UAAA,CAED,OAhCAkD,OAAOC,OAAOC,IAAI,0BAA4B,WAC5C5B,EAAeY,QAAU,GACzBb,EAAe,CAAE,IA8BZ,CAAED,YAAAA,EAAa+B,iBA7BpB,SAE6BC,GAAA,OAAA1B,EAAA9B,MAAAC,KAAAC,UAAA,EA4BjC"}
|