mirror of
https://github.com/clearml/clearml-web
synced 2025-06-26 18:27:02 +00:00
@@ -5,6 +5,7 @@
|
||||
[searchActive]="true"
|
||||
[searchValue]="searchValue$ | async"
|
||||
[viewMode]="viewMode$ | async"
|
||||
[isShowArchived]="showArchive$ | async"
|
||||
[hideArchiveToggle]="data.hideShowArchived"
|
||||
[hideCreateNewButton]="true"
|
||||
[tableFilters]="tableFilters$ | async"
|
||||
|
||||
@@ -3,13 +3,13 @@ import {Store} from '@ngrx/store';
|
||||
import * as actions from './select-model.actions';
|
||||
import {clearTableFilter, setSelectedModels, showArchive} from './select-model.actions';
|
||||
import {
|
||||
selectGlobalFilter, selectModels, selectNoMoreModels, selectSelectedModels, selectSelectedModelsList, selectSelectModelTableFilters, selectTableSortFields, selectViewMode
|
||||
selectGlobalFilter, selectModels, selectNoMoreModels, selectSelectedModels, selectSelectedModelsList, selectSelectModelTableFilters, selectShowArchive, selectTableSortFields, selectViewMode
|
||||
} from './select-model.reducer';
|
||||
import {combineLatest, Observable, Subscription} from 'rxjs';
|
||||
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
|
||||
import {ConfirmDialogComponent} from '../shared/ui-components/overlay/confirm-dialog/confirm-dialog.component';
|
||||
import {ColHeaderTypeEnum, ISmCol, TableSortOrderEnum} from '../shared/ui-components/data/table/table.consts';
|
||||
import {SelectedModel} from '../models/shared/models.model';
|
||||
import {SelectedModel, TableModel} from '../models/shared/models.model';
|
||||
import {MODELS_TABLE_COLS, ModelsViewModesEnum} from '../models/models.consts';
|
||||
import {FilterMetadata} from 'primeng/api/filtermetadata';
|
||||
import {selectAllProjectsUsers, selectProjectSystemTags, selectSelectedProject, selectTablesFilterProjectsOptions} from '../core/reducers/projects.reducer';
|
||||
@@ -20,7 +20,7 @@ import {SortMeta} from 'primeng/api';
|
||||
import {ModelsTableComponent} from '@common/models/shared/models-table/models-table.component';
|
||||
import {debounceTime, distinctUntilChanged, map, tap} from 'rxjs/operators';
|
||||
import {Project} from '~/business-logic/model/projects/models';
|
||||
import {getTablesFilterProjectsOptions, resetTablesFilterProjectsOptions, setTablesFilterProjectsOptions} from '@common/core/actions/projects.actions';
|
||||
import {getTablesFilterProjectsOptions, resetTablesFilterProjectsOptions} from '@common/core/actions/projects.actions';
|
||||
import {isEqual, unionBy} from 'lodash-es';
|
||||
import {compareLimitations} from '@common/shared/entity-page/footer-items/compare-footer-item';
|
||||
import {addMessage} from '@common/core/actions/layout.actions';
|
||||
@@ -40,7 +40,7 @@ export class SelectModelComponent implements OnInit, OnDestroy {
|
||||
public noMoreModels$: Observable<boolean>;
|
||||
public tableFilters$: Observable<{ [s: string]: FilterMetadata }>;
|
||||
public searchValue$: Observable<string>;
|
||||
public selectedModels$: Observable<Array<any>>;
|
||||
public selectedModels$: Observable<Array<TableModel>>;
|
||||
public viewMode$: Observable<ModelsViewModesEnum>;
|
||||
public users$: Observable<Array<User>>;
|
||||
public tags$: Observable<string[]>;
|
||||
@@ -51,13 +51,13 @@ export class SelectModelComponent implements OnInit, OnDestroy {
|
||||
public frameworks$: Observable<string[]>;
|
||||
private subs = new Subscription();
|
||||
|
||||
private isAllProjects: any;
|
||||
public selectedProject: Project;
|
||||
private selectedModels: Array<SelectedModel>;
|
||||
private columns$: Observable<ISmCol[]>;
|
||||
private metadataTableCols$: Observable<ISmCol[]>;
|
||||
public tableCols$: Observable<ISmCol[]>;
|
||||
public metadataColsOptions$: Observable<Record<string, string[]>>;
|
||||
public showArchive$: Observable<boolean>;
|
||||
|
||||
constructor(private store: Store,
|
||||
public dialogRef: MatDialogRef<ConfirmDialogComponent>,
|
||||
@@ -71,13 +71,17 @@ export class SelectModelComponent implements OnInit, OnDestroy {
|
||||
this.models$ = combineLatest([
|
||||
this.store.select(selectModels),
|
||||
this.store.select(selectSelectedModelsList),
|
||||
]).pipe(map(([models, selectedModels]) => unionBy(selectedModels, models, 'id')));
|
||||
]).pipe(
|
||||
map(([models, selectedModels]) => unionBy(selectedModels, models, 'id')),
|
||||
map(models => models?.map(model => ({...model, system_tags: model.system_tags?.map((t => t.replace('archive', ' archive')))})))
|
||||
);
|
||||
this.tableSortFields$ = this.store.select(selectTableSortFields);
|
||||
this.tableFilters$ = this.store.select(selectSelectModelTableFilters);
|
||||
this.selectedModels$ = this.store.select(selectSelectedModels).pipe(tap(models => this.selectedModels = models));
|
||||
this.viewMode$ = this.store.select(selectViewMode);
|
||||
this.searchValue$ = this.store.select(selectGlobalFilter);
|
||||
this.noMoreModels$ = this.store.select(selectNoMoreModels);
|
||||
this.showArchive$ = this.store.select(selectShowArchive);
|
||||
this.users$ = this.store.select(selectAllProjectsUsers);
|
||||
this.tags$ = this.store.select(selectModelsTags);
|
||||
this.systemTags$ = this.store.select(selectProjectSystemTags);
|
||||
@@ -153,7 +157,7 @@ export class SelectModelComponent implements OnInit, OnDestroy {
|
||||
this.store.dispatch(actions.tableSortChanged({colId: sort.colId, isShift: sort.isShift}));
|
||||
}
|
||||
|
||||
filterChanged(filter: { col: ISmCol; value: any }) {
|
||||
filterChanged(filter: { col: ISmCol; value: string }) {
|
||||
this.store.dispatch(actions.tableFilterChanged({col: filter.col, value: filter.value}));
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,11 @@ import {Injectable} from '@angular/core';
|
||||
import {Store} from '@ngrx/store';
|
||||
import {Actions, concatLatestFrom, createEffect, ofType} from '@ngrx/effects';
|
||||
import * as actions from './select-model.actions';
|
||||
import {getNextModels, getSelectedModels, setSelectedModels, setSelectedModelsList} from './select-model.actions';
|
||||
import * as exSelectors from './select-model.reducer';
|
||||
import {selectTableSortFields} from './select-model.reducer';
|
||||
import {MODELS_PAGE_SIZE} from '../models/models.consts';
|
||||
import {catchError, mergeMap, map, switchMap, debounceTime} from 'rxjs/operators';
|
||||
import {catchError, debounceTime, map, mergeMap, switchMap} from 'rxjs/operators';
|
||||
import {get} from 'lodash-es';
|
||||
import {MODEL_TAGS, MODELS_TABLE_COL_FIELDS} from '../models/shared/models.const';
|
||||
import {ApiModelsService} from '~/business-logic/api-services/models.service';
|
||||
@@ -15,10 +17,8 @@ import {of} from 'rxjs';
|
||||
import {FilterMetadata} from 'primeng/api/filtermetadata';
|
||||
import {ModelsGetAllExRequest} from '~/business-logic/model/models/modelsGetAllExRequest';
|
||||
import {SortMeta} from 'primeng/api';
|
||||
import {addExcludeFilters, createFiltersFromStore, encodeOrder} from '../shared/utils/tableParamEncode';
|
||||
import {selectTableSortFields} from './select-model.reducer';
|
||||
import {createFiltersFromStore, encodeOrder, excludedKey, getTagsFilters} from '../shared/utils/tableParamEncode';
|
||||
import {escapeRegex} from '@common/shared/utils/escape-regex';
|
||||
import {getNextModels, getSelectedModels, setSelectedModels, setSelectedModelsList} from './select-model.actions';
|
||||
import {selectMetadataColsForProject} from '@common/models/reducers';
|
||||
import {ISmCol} from '@common/shared/ui-components/data/table/table.consts';
|
||||
import {selectRouterProjectId} from '@common/core/reducers/projects.reducer';
|
||||
@@ -100,8 +100,9 @@ export class SelectModelEffects {
|
||||
const projectFilter = get(tableFilters, [MODELS_TABLE_COL_FIELDS.PROJECT, 'value']);
|
||||
const systemTags = tableFilters?.system_tags?.value;
|
||||
const systemTagsFilter = (showArchived ? [] :
|
||||
['__$and', '__$not', MODEL_TAGS.HIDDEN]).concat(systemTags ? systemTags : []);
|
||||
['__$and', excludedKey, MODEL_TAGS.HIDDEN]).concat(systemTags ? systemTags : []);
|
||||
const filters = createFiltersFromStore(tableFilters, true);
|
||||
delete filters['tags'];
|
||||
return {
|
||||
...filters,
|
||||
_any_: searchQuery ? {
|
||||
@@ -113,7 +114,11 @@ export class SelectModelEffects {
|
||||
scroll_id: scrollId || null, // null to create new scroll (undefined doesn't generate scroll)
|
||||
size: MODELS_PAGE_SIZE,
|
||||
order_by: encodeOrder(orderFields),
|
||||
...(tagsFilter?.length > 0 && {tags: addExcludeFilters(tagsFilterAnd ? ['__$and', ...tagsFilter] : tagsFilter)}),
|
||||
...(tagsFilter?.length > 0 && {
|
||||
filters: {
|
||||
tags: getTagsFilters(tagsFilterAnd, tagsFilter),
|
||||
}
|
||||
}),
|
||||
system_tags: (systemTagsFilter && systemTagsFilter.length > 0) ? systemTagsFilter : [],
|
||||
only_fields: [...this.selectModelsOnlyFields, ...metadataCols.map(col => col.id)],
|
||||
...(tableFilters?.[MODELS_TABLE_COL_FIELDS.READY]?.value.length == 1 && !!tableFilters) ?
|
||||
|
||||
Reference in New Issue
Block a user