mirror of
https://github.com/clearml/clearml-web
synced 2025-06-26 18:27:02 +00:00
@@ -1,32 +1,34 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
import {InjectionToken, NgModule} from '@angular/core';
|
||||
import {CommonModule} from '@angular/common';
|
||||
import {ExperimentSharedModule} from './shared/experiment-shared.module';
|
||||
import {SMSharedModule} from '../../webapp-common/shared/shared.module';
|
||||
import {SMSharedModule} from '@common/shared/shared.module';
|
||||
import {ExperimentRouterModule} from './experiments-routing.module';
|
||||
import {ExperimentsComponent} from './experiments.component';
|
||||
import {EffectsModule} from '@ngrx/effects';
|
||||
import {StoreModule} from '@ngrx/store';
|
||||
import {experimentsReducers} from './reducers';
|
||||
import {StoreConfig, StoreModule} from '@ngrx/store';
|
||||
import {experimentsReducers, ExperimentState} from './reducers';
|
||||
import {AdminService} from '~/shared/services/admin.service';
|
||||
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
|
||||
import {SelectModelModule} from '../../webapp-common/select-model/select-model.module';
|
||||
import {SmSyncStateSelectorService} from '../../webapp-common/core/services/sync-state-selector.service';
|
||||
import {SelectModelModule} from '@common/select-model/select-model.module';
|
||||
import {SmSyncStateSelectorService} from '@common/core/services/sync-state-selector.service';
|
||||
import {ExperimentOutputEffects} from './effects/experiment-output.effects';
|
||||
import {ExperimentsMenuEffects} from './effects/experiments-menu.effects';
|
||||
import {LayoutModule} from '../../layout/layout.module';
|
||||
import {ExperimentGraphsModule} from '../../webapp-common/shared/experiment-graphs/experiment-graphs.module';
|
||||
import {ExperimentCompareSharedModule} from '../../webapp-common/experiments-compare/shared/experiment-compare-shared.module';
|
||||
import {LayoutModule} from '~/layout/layout.module';
|
||||
import {ExperimentGraphsModule} from '@common/shared/experiment-graphs/experiment-graphs.module';
|
||||
import {ExperimentCompareSharedModule} from '@common/experiments-compare/shared/experiment-compare-shared.module';
|
||||
import {AngularSplitModule} from 'angular-split';
|
||||
import {SMMaterialModule} from '../../webapp-common/shared/material/material.module';
|
||||
import {ExperimentsCommonModule} from '../../webapp-common/experiments/common-experiments.module';
|
||||
import {CommonLayoutModule} from '../../webapp-common/layout/layout.module';
|
||||
import {EXPERIMENTS_STORE_KEY} from '../../webapp-common/experiments/shared/common-experiments.const';
|
||||
import {SMMaterialModule} from '@common/shared/material/material.module';
|
||||
import {ExperimentsCommonModule} from '@common/experiments/common-experiments.module';
|
||||
import {CommonLayoutModule} from '@common/layout/layout.module';
|
||||
import {EXPERIMENTS_STORE_KEY} from '@common/experiments/shared/common-experiments.const';
|
||||
import {ExperimentInfoComponent} from './containers/experiment-info/experiment-info.component';
|
||||
import {DebugImagesModule} from '../../webapp-common/debug-images/debug-images.module';
|
||||
import {ExperimentInfoExecutionComponent} from '../../webapp-common/experiments/containers/experiment-info-execution/experiment-info-execution.component';
|
||||
import {DebugImagesModule} from '@common/debug-images/debug-images.module';
|
||||
import {ExperimentInfoExecutionComponent} from '@common/experiments/containers/experiment-info-execution/experiment-info-execution.component';
|
||||
import {MatSidenavModule} from '@angular/material/sidenav';
|
||||
import {MatListModule} from '@angular/material/list';
|
||||
import {ExperimentOutputComponent} from './containers/experiment-ouptut/experiment-output.component';
|
||||
import {merge, pick} from 'lodash/fp';
|
||||
import {EXPERIMENTS_PREFIX} from '@common/experiments/actions/common-experiments-view.actions';
|
||||
|
||||
|
||||
export const experimentSyncedKeys = [
|
||||
@@ -40,6 +42,30 @@ export const experimentSyncedKeys = [
|
||||
'output.settingsList',
|
||||
];
|
||||
|
||||
export const EXPERIMENT_CONFIG_TOKEN =
|
||||
new InjectionToken<StoreConfig<ExperimentState, any>>('ExperimentConfigToken');
|
||||
|
||||
const localStorageKey = '_saved_experiment_state_';
|
||||
|
||||
const getExperimentsConfig = () => ({
|
||||
metaReducers: [reducer => {
|
||||
let onInit = true;
|
||||
return (state, action) => {
|
||||
const nextState = reducer(state, action);
|
||||
if (onInit) {
|
||||
onInit = false;
|
||||
const savedState = JSON.parse(localStorage.getItem(localStorageKey));
|
||||
return merge(nextState, savedState);
|
||||
}
|
||||
if (action.type.startsWith(EXPERIMENTS_PREFIX)) {
|
||||
localStorage.setItem(localStorageKey, JSON.stringify(pick(['view.tableMode'], nextState)));
|
||||
}
|
||||
return nextState;
|
||||
};
|
||||
}]
|
||||
});
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
SMMaterialModule,
|
||||
@@ -59,7 +85,7 @@ export const experimentSyncedKeys = [
|
||||
MatSidenavModule,
|
||||
MatListModule,
|
||||
AngularSplitModule,
|
||||
StoreModule.forFeature(EXPERIMENTS_STORE_KEY, experimentsReducers),
|
||||
StoreModule.forFeature(EXPERIMENTS_STORE_KEY, experimentsReducers, EXPERIMENT_CONFIG_TOKEN),
|
||||
EffectsModule.forFeature([ExperimentOutputEffects, ExperimentsMenuEffects]),
|
||||
],
|
||||
declarations: [
|
||||
@@ -70,7 +96,8 @@ export const experimentSyncedKeys = [
|
||||
],
|
||||
providers: [
|
||||
AdminService,
|
||||
SmSyncStateSelectorService
|
||||
SmSyncStateSelectorService,
|
||||
{provide: EXPERIMENT_CONFIG_TOKEN, useFactory: getExperimentsConfig},
|
||||
]
|
||||
})
|
||||
export class ExperimentsModule {
|
||||
|
||||
Reference in New Issue
Block a user