mirror of
https://github.com/clearml/clearml-web
synced 2025-06-26 18:27:02 +00:00
Clearml v1.1
This commit is contained in:
@@ -12,8 +12,8 @@ import {isReadOnly} from '../../../../webapp-common/shared/utils/shared-utils';
|
||||
import {selectRouterConfig, selectRouterParams, selectRouterQueryParams} from '../../../../webapp-common/core/reducers/router-reducer';
|
||||
import * as commonInfoActions from '../../../../webapp-common/experiments/actions/common-experiments-info.actions';
|
||||
import {ExperimentDetailsUpdated} from '../../../../webapp-common/experiments/actions/common-experiments-info.actions';
|
||||
import {AddMessage} from '../../../../webapp-common/core/actions/layout.actions';
|
||||
import {IExperimentInfo, ISelectedExperiment} from '../../shared/experiment-info.model';
|
||||
import {addMessage} from '../../../../webapp-common/core/actions/layout.actions';
|
||||
import {IExperimentInfo} from '../../shared/experiment-info.model';
|
||||
import {selectSelectedTableExperiment} from '../../../../webapp-common/experiments/reducers';
|
||||
import {ITableExperiment} from '../../../../webapp-common/experiments/shared/common-experiment-model.model';
|
||||
|
||||
@@ -99,7 +99,7 @@ export class ExperimentInfoComponent implements OnInit, OnDestroy {
|
||||
if (name.trim().length > 2) {
|
||||
this.store.dispatch(new ExperimentDetailsUpdated({id: this.selectedExperiment.id, changes: {name: name}}));
|
||||
} else {
|
||||
this.store.dispatch(new AddMessage(MESSAGES_SEVERITY.ERROR, 'Name must be more than three letters long'));
|
||||
this.store.dispatch(addMessage(MESSAGES_SEVERITY.ERROR, 'Name must be more than three letters long'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
>
|
||||
</sm-experiment-info-header>
|
||||
<nav [class.minimized]="minimized">
|
||||
<nav [class.minimized]="minimized" [smOverflows]="'nav'" (onOverflows)="overflow = $event">
|
||||
<ng-container *ngIf="!minimized">
|
||||
<span [routerLink]="['execution']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item header="execution" [active]="routerConfig.includes('execution')"></sm-navbar-item>
|
||||
@@ -28,18 +28,32 @@
|
||||
<sm-navbar-item header="info" [active]="routerConfig.includes('general')"></sm-navbar-item>
|
||||
</span>
|
||||
</ng-container>
|
||||
<span [routerLink]="['log']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item header="console" [active]="routerConfig.includes('log')"></sm-navbar-item>
|
||||
</span>
|
||||
<span [routerLink]="['metrics','scalar']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item header="Scalars" [active]="routerConfig.includes('metrics') && routerConfig.includes('scalar')"></sm-navbar-item>
|
||||
</span>
|
||||
<span [routerLink]="['metrics','plots']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item header="PLOTS" [active]="routerConfig.includes('metrics') && routerConfig.includes('plots')"></sm-navbar-item>
|
||||
</span>
|
||||
<span [routerLink]="['debugImages']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item header="DEBUG SAMPLES" [active]="routerConfig.includes('debugImages')"></sm-navbar-item>
|
||||
|
||||
<span [matMenuTriggerFor]="results" *ngIf="!minimized && overflow">
|
||||
<sm-navbar-item header="results" [multi]="true" [active]="console.active || scalar.active || plots.active || samples.active"></sm-navbar-item>
|
||||
</span>
|
||||
|
||||
<mat-menu #results="matMenu">
|
||||
<button mat-menu-item [routerLink]="['log']" [class.active]="routerConfig.includes('log')">CONSOLE</button>
|
||||
<button mat-menu-item [routerLink]="['metrics','scalar']" [class.active]="routerConfig.includes('metrics') && routerConfig.includes('scalar')">SCALARS</button>
|
||||
<button mat-menu-item [routerLink]="['metrics','plots']" [class.active]="routerConfig.includes('metrics') && routerConfig.includes('plots')">PLOTS</button>
|
||||
<button mat-menu-item [routerLink]="['debugImages']" [class.active]="routerConfig.includes('debugImages')">DEBUG SAMPLES</button>
|
||||
</mat-menu>
|
||||
|
||||
<div class="d-inline-block" [style.visibility]="overflow && !minimized ? 'hidden' : 'visible'">
|
||||
<span [routerLink]="['log']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item #console header="console" [active]="routerConfig.includes('log')"></sm-navbar-item>
|
||||
</span>
|
||||
<span [routerLink]="['metrics','scalar']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item #scalar header="Scalars" [active]="routerConfig.includes('metrics') && routerConfig.includes('scalar')"></sm-navbar-item>
|
||||
</span>
|
||||
<span [routerLink]="['metrics','plots']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item #plots header="PLOTS" [active]="routerConfig.includes('metrics') && routerConfig.includes('plots')"></sm-navbar-item>
|
||||
</span>
|
||||
<span [routerLink]="['debugImages']" queryParamsHandling="preserve">
|
||||
<sm-navbar-item #samples header="DEBUG SAMPLES" [active]="routerConfig.includes('debugImages')"></sm-navbar-item>
|
||||
</span>
|
||||
</div>
|
||||
<span class="refresh-position">
|
||||
<sm-experiment-settings
|
||||
[class.maximized]="!minimized"
|
||||
|
||||
@@ -7,4 +7,5 @@ import {BaseExperimentOutputComponent} from '../../../../webapp-common/experimen
|
||||
styleUrls: ['../../../../webapp-common/experiments/containers/experiment-ouptut/base-experiment-output.component.scss']
|
||||
})
|
||||
export class ExperimentOutputComponent extends BaseExperimentOutputComponent {
|
||||
public overflow: boolean;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
export {EXPERIMENT_INFO_ONLY_FIELDS} from '@common/experiments/experiment.consts';
|
||||
import {EXPERIMENT_INFO_ONLY_FIELDS_BASE} from '@common/experiments/experiment.consts';
|
||||
export {INITIAL_EXPERIMENT_TABLE_COLS} from '../../webapp-common/experiments/experiment.consts';
|
||||
|
||||
|
||||
export const GET_ALL_QUERY_ANY_FIELDS = ['id', 'name', 'comment', 'system_tags', 'models.output.model', 'models.input.model'];
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export const getExperimentInfoOnlyFields = (hasDataFeature: boolean) => EXPERIMENT_INFO_ONLY_FIELDS_BASE;
|
||||
|
||||
export const DEFAULT_EXPERIMENT_TAB = 'execution';
|
||||
|
||||
@@ -34,10 +34,10 @@ import {ExperimentOutputComponent} from './containers/experiment-ouptut/experime
|
||||
|
||||
|
||||
const syncedKeys = [
|
||||
'view.tableSortField',
|
||||
'view.tableSortOrder',
|
||||
'view.tableFilters',
|
||||
'view.hiddenTableCols',
|
||||
'view.projectColumnsSortOrder',
|
||||
'view.projectColumnFilter',
|
||||
'view.projectColumnsWidth',
|
||||
'view.hiddenProjectTableCols',
|
||||
'view.metricsCols',
|
||||
'view.colsOrder',
|
||||
'info.userKnowledge',
|
||||
|
||||
@@ -2,14 +2,13 @@ import {ActionReducerMap, createSelector} from '@ngrx/store';
|
||||
import {experimentsViewReducer, IExperimentsViewState} from './experiments-view.reducer';
|
||||
import {experimentInfoReducer, IExperimentInfoState} from './experiment-info.reducer';
|
||||
import {experimentOutputReducer} from './experiment-output.reducer';
|
||||
import {IExperimentInfo, ISelectedExperiment} from '../shared/experiment-info.model';
|
||||
import {IExperimentInfo} from '../shared/experiment-info.model';
|
||||
import {TaskStatusEnum} from '../../../business-logic/model/tasks/taskStatusEnum';
|
||||
import {MetricVariantResult} from '../../../business-logic/model/projects/metricVariantResult';
|
||||
import {isReadOnly, isSharedAndNotOwner} from '../../../webapp-common/shared/utils/shared-utils';
|
||||
import {EXPERIMENTS_STORE_KEY} from '../../../webapp-common/experiments/shared/common-experiments.const';
|
||||
import {CommonExperimentOutputState} from '../../../webapp-common/experiments/reducers/common-experiment-output.reducer';
|
||||
import {selectActiveWorkspace} from '../../../webapp-common/core/reducers/users-reducer';
|
||||
import {selectSelectedModel} from "../../../webapp-common/models/reducers";
|
||||
import {selectCurrentUser} from '@common/core/reducers/users-reducer';
|
||||
|
||||
export const experimentsReducers: ActionReducerMap<any, any> = {
|
||||
view: experimentsViewReducer,
|
||||
@@ -42,12 +41,12 @@ export const selectShowExtraDataSpinner = createSelector(experimentInfo, state =
|
||||
// output selectors
|
||||
export const experimentOutput = createSelector(experiments, (state): CommonExperimentOutputState => state ? state.output : {});
|
||||
|
||||
export const selectIsExperimentEditable = createSelector(selectSelectedExperiment, selectActiveWorkspace,
|
||||
(experiment, user): boolean => experiment && experiment.status === TaskStatusEnum.Created && !isReadOnly(experiment) && !isSharedAndNotOwner(experiment, user));
|
||||
export const selectIsSharedAndNotOwner = createSelector(selectSelectedExperiment, selectSelectedModel, selectActiveWorkspace,
|
||||
export const selectIsExperimentEditable = createSelector(selectSelectedExperiment, selectCurrentUser,
|
||||
(experiment, user): boolean => experiment && experiment.status === TaskStatusEnum.Created && !isReadOnly(experiment) && !isSharedAndNotOwner(experiment, user.company));
|
||||
export const selectIsSharedAndNotOwner = createSelector(selectSelectedExperiment, selectSelectedModel, selectCurrentUser,
|
||||
(experiment, model, user): boolean => {
|
||||
const item = experiment || model;
|
||||
return item && isSharedAndNotOwner(item, user);
|
||||
return item && isSharedAndNotOwner(item, user.company);
|
||||
}
|
||||
);
|
||||
export const selectExperimentInfoDataFreeze = createSelector(experimentInfo, (state): IExperimentInfo => state.infoDataFreeze);
|
||||
|
||||
Reference in New Issue
Block a user