added filters dmp listing (pending: reference filters)
This commit is contained in:
parent
6f34132dbc
commit
b7cc78ef4f
|
@ -53,6 +53,8 @@ public class DmpQuery extends QueryBase<DmpEntity> {
|
|||
|
||||
private DmpDescriptionTemplateQuery dmpDescriptionTemplateQuery;
|
||||
|
||||
private DmpBlueprintQuery dmpBlueprintQuery;
|
||||
|
||||
private DmpReferenceQuery dmpReferenceQuery;
|
||||
|
||||
private EntityDoiQuery entityDoiQuery;
|
||||
|
@ -223,6 +225,11 @@ public class DmpQuery extends QueryBase<DmpEntity> {
|
|||
return this;
|
||||
}
|
||||
|
||||
public DmpQuery dmpBlueprintSubQuery(DmpBlueprintQuery subQuery) {
|
||||
this.dmpBlueprintQuery = subQuery;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DmpQuery dmpUserSubQuery(DmpUserQuery subQuery) {
|
||||
this.dmpUserQuery = subQuery;
|
||||
return this;
|
||||
|
@ -374,6 +381,11 @@ public class DmpQuery extends QueryBase<DmpEntity> {
|
|||
predicates.add(queryContext.CriteriaBuilder.in(queryContext.Root.get(DmpEntity._id)).value(subQuery.Query));
|
||||
}
|
||||
|
||||
if (this.dmpBlueprintQuery != null) {
|
||||
QueryContext<DmpBlueprintEntity, UUID> subQuery = this.applySubQuery(this.dmpBlueprintQuery, queryContext, UUID.class, dmpBlueprintEntityRoot -> dmpBlueprintEntityRoot.get(DmpBlueprintEntity._id));
|
||||
predicates.add(queryContext.CriteriaBuilder.in(queryContext.Root.get(DmpEntity._blueprintId)).value(subQuery.Query));
|
||||
}
|
||||
|
||||
if (this.dmpReferenceQuery != null) {
|
||||
QueryContext<DmpReferenceEntity, UUID> subQuery = this.applySubQuery(this.dmpReferenceQuery, queryContext, UUID.class, dmpReferenceEntityRoot -> dmpReferenceEntityRoot.get(DmpReferenceEntity._dmpId));
|
||||
predicates.add(queryContext.CriteriaBuilder.in(queryContext.Root.get(DmpEntity._id)).value(subQuery.Query));
|
||||
|
|
|
@ -33,6 +33,7 @@ public class DmpLookup extends Lookup {
|
|||
|
||||
private DmpDescriptionTemplateLookup dmpDescriptionTemplateSubQuery;
|
||||
private DmpUserLookup dmpUserSubQuery;
|
||||
private DmpBlueprintLookup dmpBlueprintSubQuery;
|
||||
|
||||
public String getLike() {
|
||||
return this.like;
|
||||
|
@ -122,6 +123,10 @@ public class DmpLookup extends Lookup {
|
|||
this.dmpUserSubQuery = dmpUserSubQuery;
|
||||
}
|
||||
|
||||
public DmpBlueprintLookup getDmpBlueprintSubQuery() { return this.dmpBlueprintSubQuery; }
|
||||
|
||||
public void setDmpBlueprintLookup(DmpBlueprintLookup dmpBlueprintSubQuery) { this.dmpBlueprintSubQuery = dmpBlueprintSubQuery; }
|
||||
|
||||
public DmpQuery enrich(QueryFactory queryFactory) {
|
||||
DmpQuery query = queryFactory.query(DmpQuery.class);
|
||||
if (this.like != null) query.like(this.like);
|
||||
|
@ -135,6 +140,7 @@ public class DmpLookup extends Lookup {
|
|||
if (this.versionStatuses != null) query.versionStatuses(this.versionStatuses);
|
||||
if (this.dmpDescriptionTemplateSubQuery != null) query.dmpDescriptionTemplateSubQuery(this.dmpDescriptionTemplateSubQuery.enrich(queryFactory));
|
||||
if (this.dmpUserSubQuery != null) query.dmpUserSubQuery(this.dmpUserSubQuery.enrich(queryFactory));
|
||||
if (this.dmpBlueprintSubQuery != null) query.dmpBlueprintSubQuery(this.dmpBlueprintSubQuery.enrich(queryFactory));
|
||||
|
||||
this.enrichCommon(query);
|
||||
|
||||
|
@ -153,7 +159,7 @@ public class DmpLookup extends Lookup {
|
|||
if (this.versionStatuses != null) query.versionStatuses(this.versionStatuses);
|
||||
if (this.dmpDescriptionTemplateSubQuery != null) query.dmpDescriptionTemplateSubQuery(this.dmpDescriptionTemplateSubQuery.enrichElasticInner(queryFactory));
|
||||
if (this.dmpUserSubQuery != null) query.dmpSubQuery(this.dmpUserSubQuery.enrichElasticInner(queryFactory));
|
||||
|
||||
// TODO ??
|
||||
this.enrichCommon(query);
|
||||
|
||||
return query;
|
||||
|
@ -171,7 +177,7 @@ public class DmpLookup extends Lookup {
|
|||
if (this.versionStatuses != null) query.versionStatuses(this.versionStatuses);
|
||||
if (this.dmpDescriptionTemplateSubQuery != null) throw new UnsupportedOperationException("");
|
||||
if (this.dmpUserSubQuery != null) query.dmpSubQuery(this.dmpUserSubQuery.enrichElasticInner(queryFactory));
|
||||
|
||||
// TODO ??
|
||||
return query;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import { IsActive } from '../common/enum/is-active.enum';
|
|||
import { DmpDescriptionTemplateLookup } from './dmp-description-template.lookup';
|
||||
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
|
||||
import { DmpUserLookup } from './dmp-user.lookup';
|
||||
import { DmpBlueprintLookup } from './dmp-blueprint.lookup';
|
||||
|
||||
export class DmpLookup extends Lookup implements DmpFilter {
|
||||
ids: Guid[];
|
||||
|
@ -17,13 +18,11 @@ export class DmpLookup extends Lookup implements DmpFilter {
|
|||
statuses: DmpStatus[];
|
||||
accessTypes: DmpAccessType[];
|
||||
versions: Number[];
|
||||
dmpDescriptionTemplateSubQuery: DmpDescriptionTemplateLookup;
|
||||
groupIds: Guid[];
|
||||
|
||||
dmpUserSubQuery: DmpUserLookup;
|
||||
|
||||
dmpBlueprintIds: Guid[]; //TODO
|
||||
descriptionTemplateIds: Guid[]; //TODO
|
||||
|
||||
dmpUserSubQuery: DmpUserLookup;
|
||||
dmpBlueprintSubQuery: DmpBlueprintLookup;
|
||||
dmpDescriptionTemplateSubQuery: DmpDescriptionTemplateLookup;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
@ -32,16 +31,16 @@ export class DmpLookup extends Lookup implements DmpFilter {
|
|||
from(formGroup: UntypedFormGroup): void {
|
||||
this.statuses = formGroup.get('status')?.value ? [formGroup.get('status')?.value] : null;
|
||||
// this.roleInDmp = formGroup.get('role')?.value ? [formGroup.get('role')?.value] : null;
|
||||
this.dmpBlueprintIds = formGroup.get('dmpBlueprintIds')?.value ? formGroup.get('dmpBlueprintIds')?.value : null;
|
||||
this.descriptionTemplateIds = formGroup.get('descriptionTemplateIds')?.value ? formGroup.get('descriptionTemplateIds')?.value : null;
|
||||
// this.dmpBlueprintIds = formGroup.get('dmpBlueprintIds')?.value ? formGroup.get('dmpBlueprintIds')?.value : null;
|
||||
// this.descriptionTemplateIds = formGroup.get('descriptionTemplateIds')?.value ? formGroup.get('descriptionTemplateIds')?.value : null;
|
||||
}
|
||||
|
||||
buildForm(): UntypedFormGroup {
|
||||
return (new UntypedFormBuilder()).group({
|
||||
status: [this.statuses ? this.statuses[0] : null],
|
||||
// role: [this.roleInDmp ? this.roleInDmp[0] : null],
|
||||
dmpBlueprintIds: [this.dmpBlueprintIds],
|
||||
descriptionTemplateIds: [this.descriptionTemplateIds],
|
||||
// dmpBlueprintIds: [this.dmpBlueprintIds],
|
||||
// descriptionTemplateIds: [this.descriptionTemplateIds],
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -57,8 +56,7 @@ export interface DmpFilter {
|
|||
versions: Number[];
|
||||
groupIds: Guid[];
|
||||
|
||||
dmpUserSubQuery: DmpUserLookup;
|
||||
|
||||
dmpBlueprintIds: Guid[]; //TODO
|
||||
descriptionTemplateIds: Guid[]; //TODO
|
||||
dmpUserSubQuery: DmpUserLookup;
|
||||
dmpBlueprintSubQuery: DmpBlueprintLookup;
|
||||
dmpDescriptionTemplateSubQuery: DmpDescriptionTemplateLookup;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ export class AnalyticsService {
|
|||
public static DescriptionOverview: string = 'Description Overview';
|
||||
public static DmpEditor: string = 'DMP Editor';
|
||||
public static DmpListing: string = 'DMPs';
|
||||
public static DmpCriteriaDialog: string = 'DMP Criteria';
|
||||
public static DmpFilterDialog: string = 'DMP Criteria';
|
||||
public static DmpListingItem: string = 'DMP Listing Item';
|
||||
public static StartNewDmpDialog: string = 'Start New DMP Dialog';
|
||||
public static DmpUploadDialog: string = 'DMP Upload Dialog';
|
||||
|
|
|
@ -19,8 +19,7 @@ export class DescriptionFilterDialogComponent implements OnInit {
|
|||
private analyticsService: AnalyticsService,
|
||||
@Inject(MAT_DIALOG_DATA) public data: {
|
||||
isPublic: boolean,
|
||||
status: Number,
|
||||
filterForm: UntypedFormGroup,
|
||||
filterForm: UntypedFormGroup,
|
||||
}
|
||||
) {
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
{{ lookup | json }}
|
||||
|
||||
<div class="main-content listing-main-container h-100">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
|
@ -15,7 +17,8 @@
|
|||
<app-navigation-breadcrumb />
|
||||
</div>
|
||||
<!-- TODO: implement filters -->
|
||||
<div *ngIf="listingItems && listingItems.length > 0 || this.lookup.like" class="filter-btn" [style.right]="dialog.getDialogById('filters') ? '446px' : '0px'" [style.width]="listingItems.length > 2 ? '57px' : '37px'" (click)="openFiltersDialog()">
|
||||
<!-- <div *ngIf="listingItems && listingItems.length > 0 || this.lookup.like" class="filter-btn" [style.right]="dialog.getDialogById('filters') ? '446px' : '0px'" [style.width]="listingItems.length > 2 ? '57px' : '37px'" (click)="openFiltersDialog()"> -->
|
||||
<div class="filter-btn" [style.right]="dialog.getDialogById('filters') ? '446px' : '0px'" [style.width]="listingItems.length > 2 ? '57px' : '37px'" (click)="openFiltersDialog()">
|
||||
<button mat-raised-button class="p-0">
|
||||
<mat-icon class="mr-4 filter-icon">filter_alt</mat-icon>
|
||||
</button>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||
import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
|
||||
import { FormBuilder, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
|
||||
import { MatDialog } from '@angular/material/dialog';
|
||||
import { MatPaginator } from '@angular/material/paginator';
|
||||
import { MatSort } from '@angular/material/sort';
|
||||
|
@ -33,6 +33,11 @@ import { QueryResult } from '@common/model/query-result';
|
|||
import { Observable } from 'rxjs';
|
||||
import { UiNotificationService } from '@app/core/services/notification/ui-notification-service';
|
||||
import { QueryParamsService } from '@app/core/services/utilities/query-params.service';
|
||||
import { ReferencesWithType } from '@app/core/query/description.lookup';
|
||||
import { DescriptionTemplateLookup } from '@app/core/query/description-template.lookup';
|
||||
import { DmpDescriptionTemplateLookup } from '@app/core/query/dmp-description-template.lookup';
|
||||
import { DmpBlueprintLookup } from '@app/core/query/dmp-blueprint.lookup';
|
||||
import { DmpUserLookup } from '@app/core/query/dmp-user.lookup';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dmp-listing-component',
|
||||
|
@ -92,7 +97,7 @@ export class DmpListingComponent extends BaseListingComponent<BaseDmp, DmpLookup
|
|||
private authService: AuthService,
|
||||
private guidedTourService: GuidedTourService,
|
||||
private analyticsService: AnalyticsService,
|
||||
|
||||
private formBuilder: FormBuilder,
|
||||
) {
|
||||
super(router, route, uiNotificationService, httpErrorHandlingService, queryParamsService);
|
||||
}
|
||||
|
@ -283,7 +288,6 @@ export class DmpListingComponent extends BaseListingComponent<BaseDmp, DmpLookup
|
|||
}
|
||||
|
||||
openFiltersDialog(): void {
|
||||
//TODO: Add filters dialog
|
||||
let dialogRef = this.dialog.open(DmpFilterDialogComponent, {
|
||||
width: '456px',
|
||||
height: '100%',
|
||||
|
@ -293,15 +297,22 @@ export class DmpListingComponent extends BaseListingComponent<BaseDmp, DmpLookup
|
|||
panelClass: 'dialog-side-panel',
|
||||
data: {
|
||||
isPublic: this.isPublic ?? true,
|
||||
filterForm: this.lookup.buildForm(),
|
||||
updateDataFn: this.updateDataFn.bind(this)
|
||||
filterForm: this._buildFormFromLookup(this.lookup, null),
|
||||
// filterForm: this._buildFormFromLookup(this.lookup, this.referenceFilters),
|
||||
}
|
||||
});
|
||||
|
||||
dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => {
|
||||
if (result) {
|
||||
this.updateDataFn(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateDataFn(filterForm: UntypedFormGroup): void {
|
||||
let testLookup = this.lookup;
|
||||
testLookup.from(filterForm);
|
||||
// this.referenceFilters = this._patchReferenceFiltersFromForm(filterForm);
|
||||
this.lookup = this._patchLookupFromForm(this.lookup, filterForm);
|
||||
this.filterChanged(this.lookup)
|
||||
}
|
||||
|
||||
hasScrollbar(): boolean {
|
||||
|
@ -359,6 +370,77 @@ export class DmpListingComponent extends BaseListingComponent<BaseDmp, DmpLookup
|
|||
}
|
||||
}
|
||||
|
||||
private _patchLookupFromForm(lookup: DmpLookup, formGroup: UntypedFormGroup): DmpLookup {
|
||||
if (!formGroup) return;
|
||||
|
||||
lookup.statuses = formGroup.get("status")?.value !== null ? [formGroup.get("status")?.value] : null;
|
||||
|
||||
// Description Templates
|
||||
let descriptionTemplates = formGroup.get("descriptionTemplates")?.value ?? null;
|
||||
if (descriptionTemplates && descriptionTemplates?.length > 0) {
|
||||
lookup.dmpDescriptionTemplateSubQuery = this.initializeDmpDescriptionTemplateLookup();
|
||||
lookup.dmpDescriptionTemplateSubQuery.descriptionTemplateGroupIds = descriptionTemplates;
|
||||
} else lookup.dmpDescriptionTemplateSubQuery = null;
|
||||
|
||||
// Blueprints
|
||||
|
||||
// let dmpBlueprints: lookup.dmpBlueprintSubQuery?.ids ? [lookup.dmpBlueprintSubQuery?.ids]: [],
|
||||
let dmpBlueprints = formGroup.get("dmpBlueprints")?.value ?? null;
|
||||
if (dmpBlueprints && dmpBlueprints?.length > 0) {
|
||||
lookup.dmpBlueprintSubQuery = this.initializeDmpBlueprintLookup();
|
||||
lookup.dmpBlueprintSubQuery.ids = dmpBlueprints;
|
||||
} else lookup.dmpBlueprintSubQuery = null;
|
||||
|
||||
// Dmps
|
||||
let roles = formGroup.get("role")?.value !== null ? [formGroup.get("role")?.value] : null;
|
||||
if (roles && roles?.length > 0) {
|
||||
lookup.dmpUserSubQuery = this.initializeDmpUserLookup();
|
||||
lookup.dmpUserSubQuery.userRoles = roles;
|
||||
} else lookup.dmpUserSubQuery = null;
|
||||
|
||||
// // Tags
|
||||
// let tags = formGroup.get("tags")?.value ?? null;
|
||||
// if (tags && tags?.length > 0) {
|
||||
// lookup.descriptionTagSubQuery = this.initializeTagLookup();
|
||||
// lookup.descriptionTagSubQuery.tagIds = tags;
|
||||
// } else lookup.descriptionTagSubQuery = null;
|
||||
|
||||
// // References
|
||||
// let references: Guid[] = formGroup.get("references")?.value
|
||||
// ?.filter((reference: ReferencesWithType) => reference.referenceType != null && reference.references?.length > 0)
|
||||
// ?.flatMap((referencesWithType: ReferencesWithType) => referencesWithType.references) as Guid[];
|
||||
|
||||
// if (references && references?.length > 0) {
|
||||
// lookup.descriptionReferenceSubQuery = this.initializeReferenceLookup();
|
||||
// lookup.descriptionReferenceSubQuery.referenceIds = references;
|
||||
// } else lookup.descriptionReferenceSubQuery = null;
|
||||
|
||||
return lookup;
|
||||
}
|
||||
|
||||
private _buildFormFromLookup(lookup: DmpLookup, referenceFilters: ReferencesWithType[]): UntypedFormGroup {
|
||||
|
||||
const formArray = this.formBuilder.array([]) as UntypedFormArray;
|
||||
// referenceFilters?.forEach(reference => {
|
||||
// let referenceForm = this.formBuilder.group({
|
||||
// referenceType: reference.referenceType,
|
||||
// references: reference.references?.length > 0 ? [reference.references] : []
|
||||
// });
|
||||
// formArray.push(referenceForm);
|
||||
// });
|
||||
|
||||
return (new UntypedFormBuilder()).group({
|
||||
status: [lookup.statuses?.length > 0 ? lookup.statuses[0] : null],
|
||||
descriptionTemplates: lookup.dmpDescriptionTemplateSubQuery?.descriptionTemplateGroupIds ? [lookup.dmpDescriptionTemplateSubQuery?.descriptionTemplateGroupIds] : [],
|
||||
dmpBlueprints: lookup.dmpBlueprintSubQuery?.ids ? [lookup.dmpBlueprintSubQuery?.ids]: [],
|
||||
role: lookup.dmpUserSubQuery?.userRoles ? lookup.dmpUserSubQuery?.userRoles[0] : null,
|
||||
// showAllVersions: [lookup.showAllVersions ?? false],
|
||||
// descriptionTemplates: lookup.descriptionTemplateSubQuery?.ids ? [lookup.descriptionTemplateSubQuery?.ids] : [],
|
||||
// associatedDmpIds: lookup.dmpSubQuery?.ids ? [lookup.dmpSubQuery?.ids] : [],
|
||||
// tags: lookup.descriptionTagSubQuery?.tagIds ? [lookup.descriptionTagSubQuery?.tagIds] : [],
|
||||
references: formArray
|
||||
});
|
||||
}
|
||||
|
||||
private get _lookupFields(): string[] {
|
||||
return [
|
||||
|
@ -409,10 +491,51 @@ export class DmpListingComponent extends BaseListingComponent<BaseDmp, DmpLookup
|
|||
[nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.reference), nameof<Reference>(x => x.type), nameof<ReferenceType>(x => x.id)].join('.'),
|
||||
[nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.isActive)].join('.'),
|
||||
|
||||
[nameof<Dmp>(x => x.dmpDescriptionTemplates), nameof<DmpDescriptionTemplate>(x => x.descriptionTemplateGroupId)].join('.'),
|
||||
[nameof<Dmp>(x => x.dmpDescriptionTemplates), nameof<DmpDescriptionTemplate>(x => x.sectionId)].join('.'),
|
||||
[nameof<Dmp>(x => x.dmpDescriptionTemplates), nameof<DmpDescriptionTemplate>(x => x.descriptionTemplateGroupId)].join('.'),
|
||||
[nameof<Dmp>(x => x.dmpDescriptionTemplates), nameof<DmpDescriptionTemplate>(x => x.isActive)].join('.'),
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
protected initializeDmpDescriptionTemplateLookup(): DmpDescriptionTemplateLookup {
|
||||
const lookup = new DmpDescriptionTemplateLookup();
|
||||
lookup.metadata = { countAll: true };
|
||||
lookup.isActive = [IsActive.Active];
|
||||
lookup.project = {
|
||||
fields: [
|
||||
[nameof<Dmp>(x => x.dmpDescriptionTemplates), nameof<DmpDescriptionTemplate>(x => x.descriptionTemplateGroupId)].join('.'),
|
||||
[nameof<Dmp>(x => x.dmpDescriptionTemplates), nameof<DmpDescriptionTemplate>(x => x.dmp), nameof<Dmp>(x => x.id)].join('.'),
|
||||
]
|
||||
};
|
||||
|
||||
return lookup;
|
||||
}
|
||||
|
||||
protected initializeDmpBlueprintLookup(): DmpBlueprintLookup {
|
||||
const lookup = new DmpBlueprintLookup();
|
||||
lookup.metadata = { countAll: true };
|
||||
lookup.isActive = [IsActive.Active];
|
||||
lookup.project = {
|
||||
fields: [
|
||||
[nameof<Dmp>(x => x.blueprint), nameof<DmpBlueprint>(x => x.id)].join('.'),
|
||||
]
|
||||
};
|
||||
|
||||
return lookup;
|
||||
}
|
||||
|
||||
protected initializeDmpUserLookup(): DmpUserLookup {
|
||||
const lookup = new DmpUserLookup();
|
||||
lookup.metadata = { countAll: true };
|
||||
lookup.isActive = [IsActive.Active];
|
||||
lookup.project = {
|
||||
fields: [
|
||||
[nameof<Dmp>(x => x.dmpUsers), nameof<DmpUser>(x => x.role)].join('.'),
|
||||
]
|
||||
};
|
||||
|
||||
return lookup;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<a class="col-auto d-flex pointer" (click)="onClose()"><span class="ml-auto mt-3 material-icons clear-icon">clear</span></a>
|
||||
<app-dmp-filter-component
|
||||
[showGrant]="data.showGrant"
|
||||
[isPublic]="data.isPublic"
|
||||
[filterFormGroup]="data.filterForm"
|
||||
(filtersChanged)="onFilterChanged($event)"
|
||||
[isPublic]="data.isPublic"
|
||||
(filterChanged)="onFilterChanged($event)"
|
||||
></app-dmp-filter-component>
|
||||
|
|
|
@ -12,21 +12,18 @@ import { DmpFilterComponent } from '../dmp-filter.component';
|
|||
|
||||
export class DmpFilterDialogComponent implements OnInit {
|
||||
|
||||
@ViewChild(DmpFilterComponent, { static: true }) criteria: DmpFilterComponent;
|
||||
@ViewChild(DmpFilterComponent, { static: true }) filter: DmpFilterComponent;
|
||||
|
||||
constructor(
|
||||
public dialogRef: MatDialogRef<DmpFilterDialogComponent>,
|
||||
private analyticsService: AnalyticsService,
|
||||
|
||||
@Inject(MAT_DIALOG_DATA) public data: {
|
||||
showGrant: boolean,
|
||||
isPublic: boolean,
|
||||
filterForm: UntypedFormGroup,
|
||||
updateDataFn: Function,
|
||||
}) { }
|
||||
|
||||
ngOnInit() {
|
||||
this.analyticsService.trackPageView(AnalyticsService.DmpCriteriaDialog);
|
||||
this.analyticsService.trackPageView(AnalyticsService.DmpFilterDialog);
|
||||
}
|
||||
|
||||
onNoClick(): void {
|
||||
|
@ -38,7 +35,7 @@ export class DmpFilterDialogComponent implements OnInit {
|
|||
}
|
||||
|
||||
onFilterChanged(formGroup: UntypedFormGroup) {
|
||||
this.data.updateDataFn(formGroup);
|
||||
this.dialogRef.close(formGroup);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7,24 +7,13 @@
|
|||
</div>
|
||||
<!-- <h6 class="filters-title">{{'CRITERIA.FILTERS'| translate}}</h6> -->
|
||||
<div class="row" style="justify-content: center;" *ngIf="formGroup">
|
||||
<!-- Search Filter-->
|
||||
<!-- <mat-form-field class="col-11 search">
|
||||
<input matInput placeholder="{{'CRITERIA.DMP.LIKE'| translate}}" name="likeCriteria"
|
||||
[formControl]="formGroup.get('like')">
|
||||
<mat-error *ngIf="formGroup.get('like').hasError('backendError')">
|
||||
{{formGroup.get('like').getError('backendError').message}}</mat-error>
|
||||
<mat-icon matSuffix class="style-icon">search</mat-icon>
|
||||
</mat-form-field> -->
|
||||
<!-- End of Search Filter -->
|
||||
|
||||
<!-- Visibility Filter-->
|
||||
<div *ngIf="!isPublic" class="col-10">
|
||||
<h6 class="category-title">{{ 'DMP-LISTING.FILTERS.STATUS.NAME' | translate }}</h6>
|
||||
<mat-radio-group aria-label="Select an option" [formControl]="formGroup.get('status')" class="row">
|
||||
<mat-radio-button value="null" [checked]="!formGroup.get('status').value" class="col-12">{{ 'DMP-LISTING.FILTERS.STATUS.TYPE.ANY' | translate }}</mat-radio-button>
|
||||
<mat-radio-button value="2" class="col-12">{{ 'DMP-LISTING.FILTERS.STATUS.TYPE.PUBLIC' | translate }}</mat-radio-button>
|
||||
<mat-radio-button value="1" class="col-12">{{ 'DMP-LISTING.FILTERS.STATUS.TYPE.FINALIZED' | translate }}</mat-radio-button>
|
||||
<mat-radio-button value="0" class="col-12">{{ 'DMP-LISTING.FILTERS.STATUS.TYPE.DRAFT' | translate }}</mat-radio-button>
|
||||
<mat-radio-button [value]="null" [checked]="formGroup.get('status')?.value == null" class="col-12">{{ 'DMP-LISTING.FILTERS.STATUS.TYPE.ANY' | translate }}</mat-radio-button>
|
||||
<mat-radio-button [value]="status.Draft" class="col-12">{{ 'DMP-LISTING.FILTERS.STATUS.TYPE.DRAFT' | translate }}</mat-radio-button>
|
||||
<mat-radio-button [value]="status.Finalized" class="col-12">{{ 'DMP-LISTING.FILTERS.STATUS.TYPE.FINALIZED' | translate }}</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
<hr>
|
||||
</div>
|
||||
|
@ -44,13 +33,11 @@
|
|||
<!-- End of Grant Status -->
|
||||
|
||||
<!-- Related Dataset Templates Filter -->
|
||||
<!-- TODO -->
|
||||
<!-- <div *ngIf="showGrant" class="col-10"> -->
|
||||
<div class="col-10">
|
||||
<h6 class="category-title">{{ 'DMP-LISTING.FILTERS.RELATED-DESCRIPTION-TEMPLATES.NAME' | translate}}</h6>
|
||||
<mat-form-field class="w-100">
|
||||
<mat-label>{{ 'DMP-LISTING.FILTERS.RELATED-DESCRIPTION-TEMPLATES.PLACEHOLDER' | translate }}</mat-label>
|
||||
<app-multiple-auto-complete [formControl]="formGroup.get('descriptionTemplateIds')" [configuration]="descriptionTemplateAutoCompleteConfiguration"></app-multiple-auto-complete>
|
||||
<app-multiple-auto-complete [formControl]="formGroup.get('descriptionTemplates')" [configuration]="descriptionTemplateAutoCompleteConfiguration"></app-multiple-auto-complete>
|
||||
</mat-form-field>
|
||||
<hr>
|
||||
</div>
|
||||
|
@ -61,48 +48,21 @@
|
|||
<h6 class="category-title">{{ 'DMP-LISTING.FILTERS.ASSOCIATED-DMP-BLUEPRINTS.NAME' | translate}}</h6>
|
||||
<mat-form-field class="w-100">
|
||||
<mat-label>{{ 'DMP-LISTING.FILTERS.ASSOCIATED-DMP-BLUEPRINTS.PLACEHOLDER' | translate }}</mat-label>
|
||||
<app-multiple-auto-complete [formControl]="formGroup.get('dmpBlueprintIds')" [configuration]="dmpBlueprintAutoCompleteConfiguration"></app-multiple-auto-complete>
|
||||
<app-multiple-auto-complete [formControl]="formGroup.get('dmpBlueprints')" [configuration]="dmpBlueprintAutoCompleteConfiguration"></app-multiple-auto-complete>
|
||||
</mat-form-field>
|
||||
<hr>
|
||||
</div>
|
||||
<!-- End of Dmp Blueprint Filter -->
|
||||
|
||||
<!-- Related Grant Filters -->
|
||||
<!-- TODO -->
|
||||
<!-- <div *ngIf="showGrant" class="col-10">
|
||||
<h6 class="category-title">{{ 'DMP-RELATED-GRANT.RELATED-GRANT' | translate}}</h6>
|
||||
<mat-form-field>
|
||||
<mat-label>{{ 'CRITERIA.DMP.SELECT-GRANTS' | translate }}</mat-label>
|
||||
<app-multiple-auto-complete [formControl]="formGroup.get('grants')"
|
||||
[configuration]="grantAutoCompleteConfiguration">
|
||||
</app-multiple-auto-complete>
|
||||
</mat-form-field>
|
||||
<hr>
|
||||
</div> -->
|
||||
<!-- End of Related Grants Filters -->
|
||||
|
||||
<!-- Collaborators Filter -->
|
||||
<!-- TODO -->
|
||||
<!-- <div *ngIf="isAuthenticated()" class="col-10">
|
||||
<h6 class="category-title">{{ 'CRITERIA.DMP.RELATED-COLLABORATORS' | translate}}</h6>
|
||||
<mat-form-field>
|
||||
<mat-label>{{'CRITERIA.DMP.SELECT-COLLABORATORS' | translate}}</mat-label>
|
||||
<app-multiple-auto-complete [formControl]="formGroup.get('collaborators')"
|
||||
[configuration]="collaboratorsAutoCompleteConfiguration">
|
||||
</app-multiple-auto-complete>
|
||||
</mat-form-field>
|
||||
<hr>
|
||||
</div> -->
|
||||
<!-- End of Collaborators Filter -->
|
||||
|
||||
<!-- Role Filter -->
|
||||
<!-- TODO -->
|
||||
<div *ngIf="isAuthenticated()" class="col-10">
|
||||
<h6 class="category-title">{{ 'DMP-LISTING.FILTERS.ROLE.NAME' | translate }}</h6>
|
||||
<mat-radio-group aria-label="Select an option" [formControl]="formGroup.get('role')" class="row">
|
||||
<mat-radio-button value="null" [checked]="!formGroup.get('role').value" class="col-12">{{ 'DMP-LISTING.FILTERS.ROLE.TYPE.ANY' | translate }}</mat-radio-button>
|
||||
<mat-radio-button value="0" class="col-12">{{ 'DMP-LISTING.FILTERS.ROLE.TYPE.OWNER' | translate }}</mat-radio-button>
|
||||
<mat-radio-button value="1" class="col-12">{{ 'DMP-LISTING.FILTERS.ROLE.TYPE.MEMBER' | translate }}</mat-radio-button>
|
||||
<mat-radio-button [value]="null" [checked]="formGroup.get('role')?.value == null" class="col-12">{{ 'DMP-LISTING.FILTERS.ROLE.TYPE.ANY' | translate }}</mat-radio-button>
|
||||
<mat-radio-button [value]="role.Owner" class="col-12">{{ 'DMP-LISTING.FILTERS.ROLE.TYPE.OWNER' | translate }}</mat-radio-button>
|
||||
<mat-radio-button [value]="role.Viewer" class="col-12">{{ 'DMP-LISTING.FILTERS.ROLE.TYPE.MEMBER' | translate }}</mat-radio-button>
|
||||
<mat-radio-button [value]="role.DescriptionContributor" class="col-12">{{ 'DMP-LISTING.FILTERS.ROLE.TYPE.DescriptionContributor' | translate }}</mat-radio-button>
|
||||
<mat-radio-button [value]="role.Reviewer" class="col-12">{{ 'DMP-LISTING.FILTERS.ROLE.TYPE.Reviewer' | translate }}</mat-radio-button>
|
||||
</mat-radio-group>
|
||||
<hr>
|
||||
</div>
|
||||
|
@ -121,6 +81,12 @@
|
|||
</div> -->
|
||||
<!-- End of Related Organization Filter -->
|
||||
|
||||
<div class="col-auto ml-auto mb-4">
|
||||
<button class="normal-btn-sm" (click)="controlModified()">
|
||||
{{'DMP-LISTING.FILTERS.APPLY-FILTERS' | translate}}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4,11 +4,12 @@ import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
|
|||
import { BaseCriteriaComponent } from '@app/ui/misc/criteria/base-criteria.component';
|
||||
import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { takeUntil } from 'rxjs/operators';
|
||||
import { AuthService } from '@app/core/services/auth/auth.service';
|
||||
import { DescriptionTemplateTypeService } from '@app/core/services/description-template-type/description-template-type.service';
|
||||
import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration';
|
||||
import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service';
|
||||
import { DmpStatus } from '@app/core/common/enum/dmp-status';
|
||||
import { DescriptionTemplateService } from '@app/core/services/description-template/description-template.service';
|
||||
import { DmpUserRole } from '@app/core/common/enum/dmp-user-role';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dmp-filter-component',
|
||||
|
@ -20,26 +21,26 @@ export class DmpFilterComponent extends BaseCriteriaComponent implements OnInit,
|
|||
@Input() showGrant: boolean;
|
||||
@Input() isPublic: boolean;
|
||||
@Input() filterFormGroup: UntypedFormGroup;
|
||||
@Output() filtersChanged: EventEmitter<any> = new EventEmitter();
|
||||
@Output() filterChanged: EventEmitter<any> = new EventEmitter();
|
||||
|
||||
status = DmpStatus;
|
||||
role = DmpUserRole;
|
||||
filteringGrantsAsync = false;
|
||||
sizeError = false;
|
||||
maxFileSize: number = 1048576;
|
||||
filteringOrganisationsAsync = false;
|
||||
|
||||
get descriptionTemplateAutoCompleteConfiguration(): MultipleAutoCompleteConfiguration {
|
||||
return this.descriptionTemplateTypeService.getMultipleAutoCompleteSearchConfiguration();
|
||||
};
|
||||
|
||||
get dmpBlueprintAutoCompleteConfiguration(): MultipleAutoCompleteConfiguration {
|
||||
return this.dmpBlueprintService.multipleAutocompleteConfiguration;
|
||||
};
|
||||
descriptionTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration;
|
||||
dmpBlueprintAutoCompleteConfiguration: MultipleAutoCompleteConfiguration;
|
||||
// get dmpBlueprintAutoCompleteConfiguration(): MultipleAutoCompleteConfiguration {
|
||||
// return this.dmpBlueprintService.multipleAutocompleteConfiguration;
|
||||
// };
|
||||
|
||||
constructor(
|
||||
public language: TranslateService,
|
||||
public formBuilder: UntypedFormBuilder,
|
||||
private authentication: AuthService,
|
||||
private descriptionTemplateTypeService: DescriptionTemplateTypeService,
|
||||
private descriptionTemplateService: DescriptionTemplateService,
|
||||
private dmpBlueprintService: DmpBlueprintService,
|
||||
) {
|
||||
super(new ValidationErrorModel());
|
||||
|
@ -53,18 +54,22 @@ export class DmpFilterComponent extends BaseCriteriaComponent implements OnInit,
|
|||
if (changes['filterFormGroup']) {
|
||||
this.formGroup = this.filterFormGroup;
|
||||
|
||||
this.formGroup.get('role')?.valueChanges
|
||||
.pipe(takeUntil(this._destroyed))
|
||||
.subscribe(x => this.controlModified());
|
||||
this.formGroup.get('status')?.valueChanges
|
||||
.pipe(takeUntil(this._destroyed))
|
||||
.subscribe(x => this.controlModified());
|
||||
this.formGroup.get('descriptionTemplateIds')?.valueChanges
|
||||
.pipe(takeUntil(this._destroyed))
|
||||
.subscribe(x => this.controlModified());
|
||||
this.formGroup.get('dmpBlueprintIds')?.valueChanges
|
||||
.pipe(takeUntil(this._destroyed))
|
||||
.subscribe(x => this.controlModified());
|
||||
this.descriptionTemplateAutoCompleteConfiguration = this.descriptionTemplateService.descriptionTempalteGroupMultipleAutocompleteConfiguration;
|
||||
this.dmpBlueprintAutoCompleteConfiguration = this.dmpBlueprintService.multipleAutocompleteConfiguration;
|
||||
|
||||
|
||||
// this.formGroup.get('role')?.valueChanges
|
||||
// .pipe(takeUntil(this._destroyed))
|
||||
// .subscribe(x => this.controlModified());
|
||||
// this.formGroup.get('status')?.valueChanges
|
||||
// .pipe(takeUntil(this._destroyed))
|
||||
// .subscribe(x => this.controlModified());
|
||||
// this.formGroup.get('descriptionTemplateIds')?.valueChanges
|
||||
// .pipe(takeUntil(this._destroyed))
|
||||
// .subscribe(x => this.controlModified());
|
||||
// this.formGroup.get('dmpBlueprintIds')?.valueChanges
|
||||
// .pipe(takeUntil(this._destroyed))
|
||||
// .subscribe(x => this.controlModified());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,7 +79,7 @@ export class DmpFilterComponent extends BaseCriteriaComponent implements OnInit,
|
|||
|
||||
controlModified(): void {
|
||||
this.clearErrorModel();
|
||||
this.filtersChanged.emit(this.formGroup);
|
||||
this.filterChanged.emit(this.formGroup);
|
||||
if (this.refreshCallback != null &&
|
||||
(this.formGroup.get('like').value == null || this.formGroup.get('like').value.length === 0 || this.formGroup.get('like').value.length > 2)
|
||||
) {
|
||||
|
|
Loading…
Reference in New Issue