11import type { PlotData } from "@webviz/well-completions-plot" ;
22import { atom } from "jotai" ;
33
4- import { EnsembleSetAtom , ValidEnsembleRealizationsFunctionAtom } from "@framework/GlobalAtoms" ;
5- import type { RegularEnsembleIdent } from "@framework/RegularEnsembleIdent" ;
6- import { DataLoadingStatus , TimeAggregationSelection } from "@modules/WellCompletions/typesAndEnums" ;
4+ import { ValidEnsembleRealizationsFunctionAtom } from "@framework/GlobalAtoms" ;
5+ import { DataLoadingStatus , TimeAggregationMode } from "@modules/WellCompletions/typesAndEnums" ;
76import { WellCompletionsDataAccessor } from "@modules/WellCompletions/utils/wellCompletionsDataAccessor" ;
87
9-
108import {
119 selectedStratigraphyColorSetAtom ,
12- syncedEnsembleIdentsAtom ,
13- userExcludeWellTextAtom ,
14- userSearchWellTextAtom ,
15- userSelectedCompletionDateIndexAtom ,
16- userSelectedCompletionDateIndexRangeAtom ,
17- userSelectedEnsembleIdentAtom ,
18- userSelectedHideZeroCompletionsAtom ,
19- userSelectedRealizationNumberAtom ,
20- userSelectedSortWellsByAtom ,
21- userSelectedSortWellsDirectionAtom ,
22- userSelectedTimeAggregationAtom ,
10+ wellExclusionTextAtom ,
11+ wellSearchTextAtom ,
12+ isZeroCompletionsHiddenAtom ,
13+ sortWellsByAtom ,
14+ wellSortDirectionAtom ,
15+ timeAggregationModeAtom ,
2316} from "./baseAtoms" ;
17+ import {
18+ selectedCompletionDateIndexAtom ,
19+ selectedCompletionDateIndexRangeAtom ,
20+ selectedEnsembleIdentAtom ,
21+ } from "./persistableFixableAtoms" ;
2422import { wellCompletionsQueryAtom } from "./queryAtoms" ;
2523
26- export const selectedEnsembleIdentAtom = atom < RegularEnsembleIdent | null > ( ( get ) => {
27- const syncedEnsembleIdents = get ( syncedEnsembleIdentsAtom ) ;
28- const userSelectedEnsembleIdent = get ( userSelectedEnsembleIdentAtom ) ;
29- const ensembleSet = get ( EnsembleSetAtom ) ;
30-
31- if ( syncedEnsembleIdents && syncedEnsembleIdents . length > 0 ) {
32- return syncedEnsembleIdents [ 0 ] ;
33- }
34- if ( userSelectedEnsembleIdent === null || ! ensembleSet . hasEnsemble ( userSelectedEnsembleIdent ) ) {
35- return ensembleSet . getRegularEnsembleArray ( ) [ 0 ] ?. getIdent ( ) || null ;
36- }
37- return userSelectedEnsembleIdent ;
38- } ) ;
39-
40- export const validRealizationNumbersAtom = atom < number [ ] > ( ( get ) => {
41- const selectedEnsembleIdent = get ( selectedEnsembleIdentAtom ) ;
24+ export const availableRealizationsAtom = atom < number [ ] > ( ( get ) => {
25+ const selectedEnsembleIdent = get ( selectedEnsembleIdentAtom ) . value ;
4226 const validEnsembleRealizationsFunction = get ( ValidEnsembleRealizationsFunctionAtom ) ;
4327
4428 const validRealizationNumbers = selectedEnsembleIdent
@@ -47,21 +31,6 @@ export const validRealizationNumbersAtom = atom<number[]>((get) => {
4731 return validRealizationNumbers ;
4832} ) ;
4933
50- export const selectedRealizationNumberAtom = atom < number | null > ( ( get ) => {
51- const userSelectedRealizationNumber = get ( userSelectedRealizationNumberAtom ) ;
52- const validRealizationNumbers = get ( validRealizationNumbersAtom ) ;
53-
54- if ( validRealizationNumbers . length === 0 ) {
55- return null ;
56- }
57-
58- if ( userSelectedRealizationNumber === null || ! validRealizationNumbers . includes ( userSelectedRealizationNumber ) ) {
59- return validRealizationNumbers [ 0 ] ;
60- }
61-
62- return userSelectedRealizationNumber ;
63- } ) ;
64-
6534export const isQueryFetchingAtom = atom < boolean > ( ( get ) => {
6635 const wellCompletionsQuery = get ( wellCompletionsQueryAtom ) ;
6736
@@ -105,83 +74,36 @@ export const sortedCompletionDatesAtom = atom<string[] | null>((get) => {
10574 return wellCompletionsDataAccessor . getSortedCompletionDates ( ) ;
10675} ) ;
10776
108- export const selectedCompletionDateIndexAtom = atom < number | null > ( ( get ) => {
109- const userSelectedCompletionDateIndex = get ( userSelectedCompletionDateIndexAtom ) ;
110- const userSelectedCompletionDateIndexRange = get ( userSelectedCompletionDateIndexRangeAtom ) ;
111- const userSelectedTimeAggregation = get ( userSelectedTimeAggregationAtom ) ;
112- const sortedCompletionDates = get ( sortedCompletionDatesAtom ) ;
113-
114- if ( ! sortedCompletionDates ) {
115- return null ;
116- }
117-
118- if ( userSelectedTimeAggregation === TimeAggregationSelection . NONE ) {
119- if ( userSelectedCompletionDateIndex >= sortedCompletionDates . length ) {
120- return sortedCompletionDates . length - 1 ;
121- }
122- return userSelectedCompletionDateIndex ;
123- }
124-
125- // Update index to match first index in range
126- const firstRangeIndex = userSelectedCompletionDateIndexRange [ 0 ] ;
127- const newTimeStepIndex = firstRangeIndex < sortedCompletionDates . length ? firstRangeIndex : 0 ;
128- return newTimeStepIndex ;
129- } ) ;
130-
131- export const selectedCompletionDateIndexRangeAtom = atom < [ number , number ] | null > ( ( get ) => {
132- const userSelectedCompletionDateIndexRange = get ( userSelectedCompletionDateIndexRangeAtom ) ;
133- const userSelectedTimeAggregation = get ( userSelectedTimeAggregationAtom ) ;
134- const sortedCompletionDates = get ( sortedCompletionDatesAtom ) ;
135-
136- if ( ! sortedCompletionDates ) {
137- return null ;
138- }
139-
140- if ( userSelectedTimeAggregation === TimeAggregationSelection . NONE ) {
141- return [ 0 , sortedCompletionDates . length - 1 ] ;
142- }
143-
144- let startIndex = userSelectedCompletionDateIndexRange [ 0 ] ;
145- let endIndex = userSelectedCompletionDateIndexRange [ 1 ] ;
146- if ( startIndex >= sortedCompletionDates . length ) {
147- startIndex = sortedCompletionDates . length - 1 ;
148- }
149- if ( endIndex >= sortedCompletionDates . length ) {
150- endIndex = sortedCompletionDates . length - 1 ;
151- }
152- return [ startIndex , endIndex ] ;
153- } ) ;
154-
15577export const plotDataAtom = atom < PlotData | null > ( ( get ) => {
15678 const wellCompletionsDataAccessor = get ( wellCompletionsDataAccessorAtom ) ;
15779
158- const userExcludeWellText = get ( userExcludeWellTextAtom ) ;
159- const userSearchWellText = get ( userSearchWellTextAtom ) ;
160- const userSelectedHideZeroCompletions = get ( userSelectedHideZeroCompletionsAtom ) ;
161- const userSelectedTimeAggregation = get ( userSelectedTimeAggregationAtom ) ;
162- const userSelectedSortWellsBy = get ( userSelectedSortWellsByAtom ) ;
163- const userSelectedSortWellsDirection = get ( userSelectedSortWellsDirectionAtom ) ;
80+ const wellExclusionText = get ( wellExclusionTextAtom ) ;
81+ const wellSearchText = get ( wellSearchTextAtom ) ;
82+ const isZeroCompletionsHidden = get ( isZeroCompletionsHiddenAtom ) ;
83+ const timeAggregationMode = get ( timeAggregationModeAtom ) ;
84+ const sortWellsBy = get ( sortWellsByAtom ) ;
85+ const wellSortDirection = get ( wellSortDirectionAtom ) ;
16486
165- const selectedCompletionDateIndex = get ( selectedCompletionDateIndexAtom ) ;
166- const selectedCompletionDateIndexRange = get ( selectedCompletionDateIndexRangeAtom ) ;
87+ const selectedCompletionDateIndex = get ( selectedCompletionDateIndexAtom ) . value ;
88+ const selectedCompletionDateIndexRange = get ( selectedCompletionDateIndexRangeAtom ) . value ;
16789
16890 if ( ! wellCompletionsDataAccessor ) {
16991 return null ;
17092 }
17193
17294 const completionDateIndexSelection =
173- userSelectedTimeAggregation === TimeAggregationSelection . NONE
95+ timeAggregationMode === TimeAggregationMode . NONE
17496 ? selectedCompletionDateIndex
17597 : selectedCompletionDateIndexRange ;
17698 if ( completionDateIndexSelection === null ) {
17799 return null ;
178100 }
179101
180- wellCompletionsDataAccessor . setExcludeWellText ( userExcludeWellText ) ;
181- wellCompletionsDataAccessor . setSearchWellText ( userSearchWellText ) ;
182- wellCompletionsDataAccessor . setHideZeroCompletions ( userSelectedHideZeroCompletions ) ;
183- wellCompletionsDataAccessor . setSortWellsBy ( userSelectedSortWellsBy ) ;
184- wellCompletionsDataAccessor . setSortDirection ( userSelectedSortWellsDirection ) ;
102+ wellCompletionsDataAccessor . setWellExclusionText ( wellExclusionText ) ;
103+ wellCompletionsDataAccessor . setWellSearchText ( wellSearchText ) ;
104+ wellCompletionsDataAccessor . setHideZeroCompletions ( isZeroCompletionsHidden ) ;
105+ wellCompletionsDataAccessor . setSortWellsBy ( sortWellsBy ) ;
106+ wellCompletionsDataAccessor . setSortDirection ( wellSortDirection ) ;
185107
186- return wellCompletionsDataAccessor . createPlotData ( completionDateIndexSelection , userSelectedTimeAggregation ) ;
108+ return wellCompletionsDataAccessor . createPlotData ( completionDateIndexSelection , timeAggregationMode ) ;
187109} ) ;
0 commit comments