@@ -17,6 +17,7 @@ export interface ICellState {
17
17
18
18
export interface ICellsState {
19
19
cells : Map < string , ICellState > ;
20
+ areAllCellsReady : boolean ;
20
21
}
21
22
22
23
export type CellState = ICellsState & {
@@ -28,15 +29,28 @@ export type CellState = ICellsState & {
28
29
getAdapter : ( id : string ) => CellAdapter | undefined ;
29
30
getSource : ( id : string ) => string | undefined ;
30
31
getOutputsCount : ( id : string ) => number | undefined ;
31
- getIsKernelAvaiable : ( id : string ) => boolean | undefined ;
32
+ getIsKernelAvailable : ( id : string ) => boolean | undefined ;
32
33
execute : ( id ?: string ) => void ;
33
34
} ;
34
35
36
+ /**
37
+ * Iterate over all cells map and check if all cells/sessions are ready
38
+ */
39
+ const areAllSessionsAvailable = ( cells : Map < string , ICellState > ) : boolean => {
40
+ for ( const cell of cells . values ( ) ) {
41
+ if ( ! cell . kernelAvailable ) {
42
+ return false ;
43
+ }
44
+ }
45
+ return true ;
46
+ } ;
47
+
35
48
export const cellStore = createStore < CellState > ( ( set , get ) => ( {
36
49
cells : new Map < string , ICellState > ( ) ,
37
50
source : '' ,
38
51
outputsCount : 0 ,
39
52
kernelAvailable : false ,
53
+ areAllCellsReady : false ,
40
54
adapter : undefined ,
41
55
setCells : ( cells : Map < string , ICellState > ) => set ( ( cell : CellState ) => ( { cells } ) ) ,
42
56
@@ -68,7 +82,8 @@ export const cellStore = createStore<CellState>((set, get) => ({
68
82
} else {
69
83
cells . set ( id , { kernelAvailable} ) ;
70
84
}
71
- set ( ( cell : CellState ) => ( { cells } ) )
85
+ const areAllCellsReady = areAllSessionsAvailable ( cells ) ;
86
+ set ( ( cell : CellState ) => ( { cells, areAllCellsReady } ) ) ;
72
87
} ,
73
88
setAdapter : ( id : string , adapter ?: CellAdapter ) => {
74
89
const cells = get ( ) . cells ;
@@ -89,7 +104,7 @@ export const cellStore = createStore<CellState>((set, get) => ({
89
104
getOutputsCount : ( id : string ) : number | undefined => {
90
105
return get ( ) . cells . get ( id ) ?. outputsCount ;
91
106
} ,
92
- getIsKernelAvaiable : ( id : string ) : boolean | undefined => {
107
+ getIsKernelAvailable : ( id : string ) : boolean | undefined => {
93
108
return get ( ) . cells . get ( id ) ?. kernelAvailable ;
94
109
} ,
95
110
execute : ( id : string ) => {
0 commit comments