99} from './model/filterBy/quickPick'
1010import { pickSortsToRemove , pickSortToAdd } from './model/sortBy/quickPick'
1111import { MetricsAndParamsModel } from './metricsAndParams/model'
12+ import { CheckpointsModel } from './checkpoints/model'
1213import { ExperimentsData } from './data'
1314import { TableData } from './webview/contract'
1415import { ResourceLocator } from '../resourceLocator'
@@ -22,17 +23,20 @@ import {
2223 MessageFromWebviewType
2324} from '../webview/contract'
2425import { Logger } from '../common/logger'
26+ import { FileSystemData } from '../fileSystem/data'
2527
2628export class Experiments extends BaseRepository < TableData > {
2729 public readonly onDidChangeExperiments : Event < ExperimentsOutput | void >
2830 public readonly onDidChangeMetricsOrParams : Event < void >
2931
3032 public readonly viewKey = ViewKey . EXPERIMENTS
3133
32- private readonly data : ExperimentsData
34+ private readonly cliData : ExperimentsData
35+ private readonly fileSystemData : FileSystemData
3336
3437 private readonly experiments : ExperimentsModel
3538 private readonly metricsAndParams : MetricsAndParamsModel
39+ private readonly checkpoints : CheckpointsModel
3640
3741 private readonly experimentsChanged = this . dispose . track (
3842 new EventEmitter < ExperimentsOutput | void > ( )
@@ -48,7 +52,8 @@ export class Experiments extends BaseRepository<TableData> {
4852 updatesPaused : EventEmitter < boolean > ,
4953 resourceLocator : ResourceLocator ,
5054 workspaceState : Memento ,
51- data ?: ExperimentsData
55+ cliData ?: ExperimentsData ,
56+ fileSystemData ?: FileSystemData
5257 ) {
5358 super ( dvcRoot , resourceLocator . beaker )
5459
@@ -63,11 +68,22 @@ export class Experiments extends BaseRepository<TableData> {
6368 new MetricsAndParamsModel ( dvcRoot , workspaceState )
6469 )
6570
66- this . data = this . dispose . track (
67- data || new ExperimentsData ( dvcRoot , internalCommands , updatesPaused )
71+ this . checkpoints = this . dispose . track ( new CheckpointsModel ( ) )
72+
73+ this . cliData = this . dispose . track (
74+ cliData || new ExperimentsData ( dvcRoot , internalCommands , updatesPaused )
6875 )
6976
70- this . dispose . track ( this . data . onDidUpdate ( data => this . setState ( data ) ) )
77+ this . fileSystemData = this . dispose . track (
78+ fileSystemData || new FileSystemData ( dvcRoot )
79+ )
80+
81+ this . dispose . track ( this . cliData . onDidUpdate ( data => this . setState ( data ) ) )
82+ this . dispose . track (
83+ this . fileSystemData . onDidUpdate ( data =>
84+ this . checkpoints . transformAndSet ( data )
85+ )
86+ )
7187
7288 this . handleMessageFromWebview ( )
7389
@@ -81,11 +97,11 @@ export class Experiments extends BaseRepository<TableData> {
8197 }
8298
8399 public update ( ) {
84- return this . data . managedUpdate ( )
100+ return this . cliData . managedUpdate ( )
85101 }
86102
87103 public forceUpdate ( ) {
88- return this . data . forceUpdate ( )
104+ return this . cliData . forceUpdate ( )
89105 }
90106
91107 public async setState ( data : ExperimentsOutput ) {
@@ -97,6 +113,10 @@ export class Experiments extends BaseRepository<TableData> {
97113 return this . notifyChanged ( data )
98114 }
99115
116+ public hasCheckpoints ( ) {
117+ return this . checkpoints . hasCheckpoints ( )
118+ }
119+
100120 public getChildMetricsOrParams ( path ?: string ) {
101121 return this . metricsAndParams . getChildren ( path )
102122 }
0 commit comments