import {RouterModule, Routes} from '@angular/router'; import {NgModule} from '@angular/core'; import {ExperimentsComponent} from './experiments.component'; import {SMSharedModule} from '../../webapp-common/shared/shared.module'; import {SelectableListComponent} from '../../webapp-common/shared/ui-components/data/selectable-list/selectable-list.component'; import {SelectableFilterListComponent} from '../../webapp-common/shared/ui-components/data/selectable-filter-list/selectable-filter-list.component'; import {ExperimentInfoExecutionComponent} from './containers/experiment-info-execution/experiment-info-execution.component'; import {ExperimentInfoGeneralComponent} from '../../webapp-common/experiments/containers/experiment-info-general/experiment-info-general.component'; import {ExperimentOutputComponent} from '../../webapp-common/experiments/containers/experiment-ouptut/experiment-output.component'; import {ExperimentOutputScalarsComponent} from '../../webapp-common/experiments/containers/experiment-output-scalars/experiment-output-scalars.component'; import {ExperimentOutputPlotsComponent} from '../../webapp-common/experiments/containers/experiment-output-plots/experiment-output-plots.component'; import {ExperimentOutputLogComponent} from '../../webapp-common/experiments/containers/experiment-output-log/experiment-output-log.component'; import {ExperimentInfoComponent} from './containers/experiment-info/experiment-info.component'; import {ExperimentInfoHyperParametersComponent} from '../../webapp-common/experiments/containers/experiment-info-hyper-parameters/experiment-info-hyper-parameters.component'; import {DebugImagesComponent} from '../../webapp-common/debug-images/debug-images.component'; import {ExperimentInfoArtifactsComponent} from '../../webapp-common/experiments/containers/experiment-info-aritfacts/experiment-info-artifacts.component'; import {ExperimentInfoInputModelComponent} from '../../webapp-common/experiments/containers/experiment-info-input-model/experiment-info-input-model.component'; import {ExperimentInfoOutputModelComponent} from '../../webapp-common/experiments/containers/experiment-info-output-model/experiment-info-output-model.component'; import {ExperimentInfoArtifactItemComponent} from '../../webapp-common/experiments/containers/experiment-info-artifact-item/experiment-info-artifact-item.component'; import {LeavingBeforeSaveAlertGuard} from '../../webapp-common/shared/guards/leaving-before-save-alert.guard'; import {ExperimentInfoTaskModelComponent} from '../../webapp-common/experiments/containers/experiment-info-task-model/experiment-info-task-model.component'; import {ExperimentInfoHyperParametersFormContainerComponent} from '../../webapp-common/experiments/containers/experiment-info-hyper-parameters-form-container/experiment-info-hyper-parameters-form-container.component'; export const routes: Routes = [ { path : '', component: ExperimentsComponent, children : [ { path : ':experimentId', component: ExperimentInfoComponent, children: [ {path: '', redirectTo: 'execution', pathMatch: 'full'}, {path: 'execution', component: ExperimentInfoExecutionComponent, canDeactivate: [LeavingBeforeSaveAlertGuard]}, { path : 'artifacts', component: ExperimentInfoArtifactsComponent, canDeactivate: [LeavingBeforeSaveAlertGuard], children: [ {path: '', redirectTo: 'input-model', pathMatch: 'full'}, {path: 'input-model', component: ExperimentInfoInputModelComponent}, {path: 'output-model', component: ExperimentInfoOutputModelComponent}, {path: 'artifact/:artifactId', children: [{path: ':mode', component: ExperimentInfoArtifactItemComponent}]}, {path: 'other/:artifactId', children: [{path: ':mode', component: ExperimentInfoArtifactItemComponent}]} ] }, { path : 'hyper-params', component: ExperimentInfoHyperParametersComponent, canDeactivate: [LeavingBeforeSaveAlertGuard], children: [ {path: 'configuration/:configObject', component: ExperimentInfoTaskModelComponent}, {path: 'hyper-param/:hyperParamId', component: ExperimentInfoHyperParametersFormContainerComponent} ] }, {path: 'general', component: ExperimentInfoGeneralComponent}, { path : 'info-output', component: ExperimentOutputComponent, data : {minimized: true}, children : [ {path: '', redirectTo: 'log'}, {path: 'metrics/scalar', component: ExperimentOutputScalarsComponent, data: {minimized: true}}, {path: 'metrics/plots', component: ExperimentOutputPlotsComponent, data: {minimized: true}}, {path: 'debugImages', component: DebugImagesComponent}, {path: 'log', component: ExperimentOutputLogComponent}, ] } ] }, ] }, { path : ':experimentId/output', component: ExperimentOutputComponent, children : [ {path: '', redirectTo: 'log'}, {path: 'metrics/scalar', component: ExperimentOutputScalarsComponent, data: {}}, {path: 'metrics/plots', component: ExperimentOutputPlotsComponent, data: {}}, {path: 'debugImages', component: DebugImagesComponent}, {path: 'log', component: ExperimentOutputLogComponent}, ] } ]; @NgModule({ imports: [ SMSharedModule, RouterModule.forChild(routes), ], exports: [RouterModule, SelectableListComponent, SelectableFilterListComponent] }) export class ExperimentRouterModule { }