From 2ab58f292626d2026c0e377ee9b0657e57ce3666 Mon Sep 17 00:00:00 2001 From: apapachristou Date: Tue, 7 Jul 2020 13:12:57 +0300 Subject: [PATCH 1/4] Add filters on the side on dmp listing --- dmp-frontend/src/app/app.component.html | 2 +- ...et-external-references-editor.component.ts | 2 - .../dmp-criteria-dialog.component.html | 2 +- .../criteria/dmp-criteria-dialog.component.ts | 22 ++- .../criteria/dmp-criteria.component.html | 4 +- .../ui/dmp/listing/dmp-listing.component.html | 10 +- .../ui/dmp/listing/dmp-listing.component.scss | 3 +- .../ui/dmp/listing/dmp-listing.component.ts | 138 +++++++++--------- .../ui/dmp/overview/dmp-overview.component.ts | 10 +- .../oauth2-dialog/oauth2-dialog.component.ts | 1 - 10 files changed, 98 insertions(+), 96 deletions(-) diff --git a/dmp-frontend/src/app/app.component.html b/dmp-frontend/src/app/app.component.html index 68f4c4a75..6243a45e8 100644 --- a/dmp-frontend/src/app/app.component.html +++ b/dmp-frontend/src/app/app.component.html @@ -5,7 +5,7 @@ -
+
diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts index d4319f40b..bbb59b775 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts @@ -247,12 +247,10 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl } removeTag(tag: any) { - console.log((this.formGroup.get('tags')).value); (this.formGroup.get('tags')).removeAt(((this.formGroup.get('tags')).value as any[]).indexOf(tag)); } addTag(ev: MatChipInputEvent) { - console.log((this.formGroup.get('tags')).value); if (ev.value !== '' && isNullOrUndefined(((this.formGroup.get('tags')).value as ExternalTagEditorModel[]).find(tag => tag.name === ev.value))) { (this.formGroup.get('tags')).push(new ExternalTagEditorModel('', ev.value).buildForm()); } diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.html b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.html index a558369b6..d137b3900 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.html @@ -1,2 +1,2 @@ clear - + diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts index 945d900cf..31355d3e4 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts @@ -1,17 +1,27 @@ -import { Inject, Component } from '@angular/core'; +import { Inject, Component, ViewChild, OnInit, Output, EventEmitter } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material'; +import { DmpCriteriaComponent } from './dmp-criteria.component'; +import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; @Component({ selector: 'dmp-criteria-dialog-component', templateUrl: './dmp-criteria-dialog.component.html', }) -export class DmpCriteriaDialogComponent { +export class DmpCriteriaDialogComponent implements OnInit { + + @ViewChild(DmpCriteriaComponent, { static: true }) criteria: DmpCriteriaComponent; constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: { showGrant: boolean, isPublic: boolean } - ) { } + @Inject(MAT_DIALOG_DATA) public data: { showGrant: boolean, isPublic: boolean, criteria: DmpCriteria, updateDataFn: Function } + ) { + } + + ngOnInit() { + this.criteria.setCriteria(this.data.criteria); + // this.data.updateDataFn(this.criteria); + } onNoClick(): void { this.dialogRef.close(); @@ -21,4 +31,8 @@ export class DmpCriteriaDialogComponent { this.dialogRef.close(); } + onFiltersChanged(event) { + this.data.updateDataFn(this.criteria); + } + } diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.html b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.html index 737b12ee5..4181250b5 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.html @@ -16,7 +16,7 @@
{{ 'TYPES.DMP-VISIBILITY.VISIBILITY' | translate }}
- {{ 'TYPES.DMP-VISIBILITY.ANY' | translate }} + {{ 'TYPES.DMP-VISIBILITY.ANY' | translate }} {{ 'TYPES.DMP-VISIBILITY.PUBLIC' | translate }} {{ 'TYPES.DMP-VISIBILITY.FINALIZED' | translate }} {{ 'TYPES.DMP-VISIBILITY.DRAFT' | translate }} @@ -81,7 +81,7 @@
{{ 'DATASET-PROFILE-LISTING.COLUMNS.ROLE' | translate }}
- {{ 'TYPES.DATASET-ROLE.ANY' | translate }} + {{ 'TYPES.DATASET-ROLE.ANY' | translate }} {{ 'TYPES.DATASET-ROLE.OWNER' | translate }} {{ 'TYPES.DATASET-ROLE.MEMBER' | translate }} diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html index ac5cf9a16..b860a01eb 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html @@ -8,18 +8,18 @@

{{'DMP-LISTING.TEXT-INFO-QUESTION' | translate}} {{'DMP-LISTING.LINK-ZENODO' | translate}} {{'DMP-LISTING.GET-IDEA' | translate}}

-
+
-
+ +
-
+
diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss index 3fe73fa18..6248d3a2d 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss @@ -189,12 +189,13 @@ position: fixed; right: 0px; z-index: 100; + width: 37px; } .filter-btn button { color: white; background-color: #23BCBA; - width: 52px; + width: 37px; height: 45px; } diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts index 1f74408d3..8cd507e04 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts @@ -35,7 +35,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; @ViewChild(MatSort, { static: false }) sort: MatSort; - @ViewChild(DmpCriteriaComponent, { static: true }) criteria: DmpCriteriaComponent; + // @ViewChild(DmpCriteriaComponent, { static: true }) criteria: DmpCriteriaComponent; breadCrumbs: Observable = observableOf([{ parentComponentName: null, label: 'DMPs', url: "/plans" }]); itemId: string; @@ -52,11 +52,13 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread startIndex: number = 0; pageSize: number = 5; + criteria: DmpCriteria; + constructor( private dmpService: DmpService, private router: Router, private route: ActivatedRoute, - private dialog: MatDialog, + public dialog: MatDialog, public enumUtils: EnumUtils, private language: TranslateService, private grantService: GrantService, @@ -83,12 +85,14 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread // const grant: GrantListingModel = { // id: this.grantId // } - this.criteria.setCriteria({ like: null, grants: [grant], groupIds: null, allVersions: false }); + // this.breadCrumbs = Observable.of([{ parentComponentName: 'GrantEditorComponent', label: grantLabel, url: '/grants/edit/' + this.grantId }]); + grantLabel = this.route.snapshot.queryParams.grantLabel; + + this.criteria = { like: null, grants: [grant], groupIds: null, allVersions: false } + // this.criteria.setCriteria({ like: null, grants: [grant], groupIds: null, allVersions: false }); this.refresh(); - grantLabel = this.route.snapshot.queryParams.grantLabel; - // this.breadCrumbs = Observable.of([{ parentComponentName: 'GrantEditorComponent', label: grantLabel, url: '/grants/edit/' + this.grantId }]); - this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); + // this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); }) } else if (params['groupId']) { @@ -106,10 +110,12 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread }] ); }) - this.criteria.setCriteria(this.getDefaultCriteria()); this.groupLabel = this.route.snapshot.queryParams.groupLabel; + + // this.criteria.setCriteria(this.getDefaultCriteria()); + this.criteria = this.getDefaultCriteria(); this.refresh(); - this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); + // this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); } else { this.itemId = params['groupId']; this.showGrant = true; @@ -134,9 +140,10 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread }] ); }) - this.criteria.setCriteria(this.getDefaultCriteria()); + // this.criteria.setCriteria(this.getDefaultCriteria()); + this.criteria = this.getDefaultCriteria(); this.refresh(); - this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); + // this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); } if (this.grantId != null) { @@ -148,7 +155,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread }); } - refresh(resetPages = false) { + public refresh(resetPages = false) { // if (this._paginator.pageSize === undefined) this._paginator.pageSize = 10; // if (resetPages) this._paginator.pageIndex = 0; // const startIndex = this._paginator.pageIndex * this._paginator.pageSize; @@ -158,36 +165,10 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread fields.push('-modified'); const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); - let value = this.criteria.formGroup.value; - request.criteria = { - like: value.like, - grants: value.grants, - role: value.role - } - if (value.status == 2) { - request.criteria.isPublic = true; - } else { - request.criteria.status = value.status; - request.criteria.isPublic = false; - } - request.criteria.onlyPublic = this.isPublic; - if (this.isPublic) { - request.criteria.isPublic = true; - } - if (value.datasetTemplates) - request.criteria.datasetTemplates = value.datasetTemplates.map(x => x.id); - if (value.collaborators) - request.criteria.collaborators = value.collaborators.map(x => x.id); - if (value.organisations) - request.criteria.organisations = value.organisations.map(x => x.id); - if (this.itemId) { - request.criteria.groupIds = [this.itemId]; - request.criteria.allVersions = true; - } - request.criteria.grantStatus = value.grantStatus; + request.criteria = this.criteria; + this.dmpService.getPaged(request, "listing").pipe(takeUntil(this._destroyed)).subscribe(result => { if (!result) { return []; } - // if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } result.data.map(item => { item['datasets'].map(dmp => { dmp.url = 'datasets/edit/' + dmp.url; @@ -197,6 +178,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread return item; }); this.listingItems = result.data; + this.totalCount = result.totalCount; }); } @@ -204,37 +186,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread this.startIndex = this.startIndex + this.pageSize; const fields: Array = ["-modified"]; const request = new DataTableRequest(this.startIndex, this.pageSize, { fields: fields }); - - // request.criteria = new DmpCriteria(); - // request.criteria.like = ""; - - let value = this.criteria.formGroup.value; - request.criteria = { - like: value.like, - grants: value.grants, - role: value.role - } - if (value.status == 2) { - request.criteria.isPublic = true; - } else { - request.criteria.status = value.status; - request.criteria.isPublic = false; - } - request.criteria.onlyPublic = this.isPublic; - if (this.isPublic) { - request.criteria.isPublic = true; - } - if (value.datasetTemplates) - request.criteria.datasetTemplates = value.datasetTemplates.map(x => x.id); - if (value.collaborators) - request.criteria.collaborators = value.collaborators.map(x => x.id); - if (value.organisations) - request.criteria.organisations = value.organisations.map(x => x.id); - if (this.itemId) { - request.criteria.groupIds = [this.itemId]; - request.criteria.allVersions = true; - } - request.criteria.grantStatus = value.grantStatus; + request.criteria = this.criteria; this.dmpService.getPaged(request, "listing").pipe(takeUntil(this._destroyed)).subscribe(result => { if (!result) { return []; } @@ -281,8 +233,6 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread openShareDialog(rowId: any, rowName: any) { const dialogRef = this.dialog.open(DmpInvitationDialogComponent, { - // height: '250px', - // width: '700px', data: { dmpId: rowId, dmpName: rowName @@ -324,7 +274,10 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread restoreFocus: false, data: { showGrant: this.showGrant, - isPublic: this.isPublic + isPublic: this.isPublic, + criteria: this.criteria, + // criteria: this.grantId ? this.criteria : this.getDefaultCriteria(), + updateDataFn: this.updateDataFn.bind(this) }, position: { right: '0px;' } }); @@ -332,6 +285,45 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread dialogRef.afterClosed().subscribe(result => { }); } + + updateDataFn(criteria: DmpCriteriaComponent): void { + this.toDmpCriteria(criteria); + this.refresh(); + } + + toDmpCriteria(criteria: DmpCriteriaComponent): void { + let formGroup = criteria.formGroup; + this.criteria = { + like: formGroup.get('like').value, + grants: formGroup.get('grants').value, + role: formGroup.get('role').value + } + this.criteria.status = formGroup.get('status').value; + if (formGroup.get('status').value == 2) { + this.criteria.isPublic = true; + } else { + this.criteria.isPublic = false; + } + this.criteria.onlyPublic = this.isPublic; + if (this.isPublic) { + this.criteria.isPublic = true; + } + if (formGroup.get('datasetTemplates').value) + this.criteria.datasetTemplates = formGroup.get('datasetTemplates').value.map(x => x.id); + if (formGroup.get('collaborators').value) + this.criteria.collaborators = formGroup.get('collaborators').value.map(x => x.id); + if (formGroup.get('organisations').value) + this.criteria.organisations = formGroup.get('organisations').value.map(x => x.id); + if (this.itemId) { + this.criteria.groupIds = [this.itemId]; + this.criteria.allVersions = true; + } + this.criteria.grantStatus = formGroup.get('grantStatus').value; + } + + hasScrollbar(): boolean { + return document.getElementById("main-page").scrollHeight > document.documentElement.clientHeight; + } } // export class DmpDataSource extends DataSource { diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts index 1d233f5fc..a68fe6841 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts @@ -187,7 +187,6 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { this.router.navigate(['/datasets/publicEdit/' + datasetId]); } else { this.router.navigate(['/datasets/edit/' + datasetId]); - console.log('inhere') } } @@ -585,16 +584,15 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { } }); } - + copyDoi(doi) { - console.log(doi.nativeElement.innerHTML); let domElement = doi.nativeElement as HTMLInputElement; domElement.select(); document.execCommand('copy'); domElement.setSelectionRange(0, 0); alert('Doi Copied to Clipboard'); } - + public getOrcidPath(): string { return this.configurationService.orcidPath; } @@ -610,7 +608,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { return this.dmp.users.find(x => x.id === principal.id); } } - + createOrUpdate(id: string): void { if (!this.lockStatus) { this.lock = new LockModel(id, this.getUserFromDMP()); @@ -629,7 +627,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { // this.lockService.createOrUpdate(this.lock).pipe(takeUntil(this._destroyed)).subscribe(async result => this.lock.id = Guid.parse(result)); // } - + // advancedClicked() { // const dialogRef = this.dialog.open(ExportMethodDialogComponent, { // maxWidth: '500px', diff --git a/dmp-frontend/src/app/ui/misc/oauth2-dialog/oauth2-dialog.component.ts b/dmp-frontend/src/app/ui/misc/oauth2-dialog/oauth2-dialog.component.ts index 7d9c2f6aa..c73a6c673 100644 --- a/dmp-frontend/src/app/ui/misc/oauth2-dialog/oauth2-dialog.component.ts +++ b/dmp-frontend/src/app/ui/misc/oauth2-dialog/oauth2-dialog.component.ts @@ -29,7 +29,6 @@ export class Oauth2DialogComponent extends BaseComponent implements OnInit{ } private loadUrl(url: string ) { - console.log(url); window.location.href = url; } From b94363ba5be0fce2a1de1e9045ce652cdd5e114e Mon Sep 17 00:00:00 2001 From: apapachristou Date: Tue, 7 Jul 2020 13:33:04 +0300 Subject: [PATCH 2/4] Adds links to datasets on listings --- .../src/app/ui/dashboard/drafts/drafts.component.html | 3 +-- .../recent-edited-activity.component.html | 3 +-- .../recent-edited-dataset-activity.component.html | 3 +-- .../app/ui/dmp/listing/criteria/dmp-criteria.component.ts | 5 ++++- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html index aca54fa5f..d62bb2fc2 100644 --- a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html +++ b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html @@ -1,7 +1,6 @@
-
- +
{{'DATASET-LISTING.DATASET-DESCRIPTION' | translate}}
{{'DATASET-LISTING.STATES.EDITED' | translate}}: {{activity.modified | date:"longDate"}}
diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html index 5202bd3ec..c2902536d 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html @@ -70,8 +70,7 @@
-
- +
{{'DATASET-LISTING.DATASET-DESCRIPTION' | translate}}
{{'DATASET-LISTING.STATES.EDITED' | translate}}: {{activity.modified | date:"longDate"}}
diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-dataset-activity/recent-edited-dataset-activity.component.html b/dmp-frontend/src/app/ui/dashboard/recent-edited-dataset-activity/recent-edited-dataset-activity.component.html index 7a3b48a1f..89ab52de0 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-dataset-activity/recent-edited-dataset-activity.component.html +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-dataset-activity/recent-edited-dataset-activity.component.html @@ -2,8 +2,7 @@
-
- +
{{'DATASET-LISTING.DATASET-DESCRIPTION' | translate}}
{{'DATASET-LISTING.STATES.EDITED' | translate}}: {{activity.modified | date:"longDate"}}
diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts index 2a990faec..7296d4fee 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts @@ -1,5 +1,5 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core'; import { FormBuilder, FormControl } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; @@ -34,6 +34,8 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni @Input() showGrant: boolean; @Input() isPublic: boolean; + @Output() filtersChanged: EventEmitter = new EventEmitter(); + filteringGrantsAsync = false; sizeError = false; maxFileSize: number = 1048576; @@ -139,6 +141,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni controlModified(): void { this.clearErrorModel(); + this.filtersChanged.emit(); if (this.refreshCallback != null && (this.formGroup.get('like').value == null || this.formGroup.get('like').value.length === 0 || this.formGroup.get('like').value.length > 2) ) { From d3e7f57cbdbb95c6e1d79a162bcfb81ab128c671 Mon Sep 17 00:00:00 2001 From: apapachristou Date: Tue, 7 Jul 2020 15:54:12 +0300 Subject: [PATCH 3/4] Adds search on dmp listing, fixes bug on load more --- .../criteria/dmp-criteria.component.html | 4 +-- .../ui/dmp/listing/dmp-listing.component.html | 15 +++++++-- .../ui/dmp/listing/dmp-listing.component.scss | 31 ++++++++++++++----- .../ui/dmp/listing/dmp-listing.component.ts | 19 ++++++++++++ 4 files changed, 56 insertions(+), 13 deletions(-) diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.html b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.html index 4181250b5..9fbde9a29 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.html @@ -3,13 +3,13 @@
{{'CRITERIA.FILTERS'| translate}}
- + diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html index b860a01eb..57d773e51 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html @@ -8,18 +8,27 @@

{{'DMP-LISTING.TEXT-INFO-QUESTION' | translate}} {{'DMP-LISTING.LINK-ZENODO' | translate}} {{'DMP-LISTING.GET-IDEA' | translate}}

-
+
-
+ + + search + + {{formGroup.get('like').getError('backendError').message}} + + +
-
+
diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss index 6248d3a2d..318765330 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss @@ -186,17 +186,32 @@ } .filter-btn { - position: fixed; - right: 0px; - z-index: 100; - width: 37px; + position: fixed; + right: 0px; + z-index: 100; + width: 37px; } .filter-btn button { - color: white; - background-color: #23BCBA; - width: 37px; - height: 45px; + color: white; + background-color: #23bcba; + width: 37px; + height: 45px; +} + +.search-form { + // font-size: 12px; + text-align: left; + width: 17.5rem; +} + +.search-form mat-icon { + color: #129d99; +} + +::ng-deep .mat-form-field-wrapper { + background-color: white !important; + padding-bottom: 0 !important; } // .bot-paginator { diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts index 8cd507e04..88b50b691 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts @@ -24,6 +24,7 @@ import { UiNotificationService, SnackBarNotificationLevel } from '@app/core/serv import { isNullOrUndefined } from 'util'; import { AuthService } from '@app/core/services/auth/auth.service'; import { DmpCriteriaDialogComponent } from './criteria/dmp-criteria-dialog.component'; +import { FormBuilder, FormControl } from '@angular/forms'; @Component({ @@ -53,6 +54,9 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread pageSize: number = 5; criteria: DmpCriteria; + public formGroup = new FormBuilder().group({ + like: new FormControl() + }) constructor( private dmpService: DmpService, @@ -153,6 +157,10 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread } }); + + this.formGroup.get('like').valueChanges + .pipe(takeUntil(this._destroyed)) + .subscribe(x => this.controlModified()); } public refresh(resetPages = false) { @@ -206,6 +214,17 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread this.refresh(); } + controlModified(): void { + // this.clearErrorModel(); + // if (this.refreshCallback != null && + // (this.formGroup.get('like').value == null || this.formGroup.get('like').value.length === 0 || this.formGroup.get('like').value.length > 2) + // ) { + // setTimeout(() => this.refreshCallback(true)); + // } + this.criteria.like = this.formGroup.get("like").value; + this.refresh(); + } + // rowClicked(dmp: DmpListingModel) { // this.router.navigate(['/plans/overview/' + dmp.id]); // } From 5c8c156220c6c1249d252830ad7081fe492eb83b Mon Sep 17 00:00:00 2001 From: apapachristou Date: Tue, 7 Jul 2020 18:29:15 +0300 Subject: [PATCH 4/4] Fixes on filters of dmp listing --- .../criteria/dmp-criteria-dialog.component.html | 2 +- .../criteria/dmp-criteria-dialog.component.ts | 4 ++-- .../dmp/listing/criteria/dmp-criteria.component.ts | 13 ++++++++++++- .../app/ui/dmp/listing/dmp-listing.component.html | 5 +---- .../app/ui/dmp/listing/dmp-listing.component.scss | 2 +- .../src/app/ui/dmp/listing/dmp-listing.component.ts | 7 +++++-- 6 files changed, 22 insertions(+), 11 deletions(-) diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.html b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.html index d137b3900..8646ab950 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.html @@ -1,2 +1,2 @@ clear - + diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts index 31355d3e4..c835030f6 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts @@ -2,6 +2,7 @@ import { Inject, Component, ViewChild, OnInit, Output, EventEmitter } from '@ang import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material'; import { DmpCriteriaComponent } from './dmp-criteria.component'; import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; +import { FormGroup } from '@angular/forms'; @Component({ selector: 'dmp-criteria-dialog-component', @@ -14,13 +15,12 @@ export class DmpCriteriaDialogComponent implements OnInit { constructor( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: { showGrant: boolean, isPublic: boolean, criteria: DmpCriteria, updateDataFn: Function } + @Inject(MAT_DIALOG_DATA) public data: { showGrant: boolean, isPublic: boolean, criteria: DmpCriteria, formGroup: FormGroup, updateDataFn: Function } ) { } ngOnInit() { this.criteria.setCriteria(this.data.criteria); - // this.data.updateDataFn(this.criteria); } onNoClick(): void { diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts index 7296d4fee..54e4b4dd8 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core'; -import { FormBuilder, FormControl } from '@angular/forms'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; import { GrantListingModel } from '@app/core/model/grant/grant-listing'; @@ -34,6 +34,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni @Input() showGrant: boolean; @Input() isPublic: boolean; + @Input() criteriaFormGroup: FormGroup; @Output() filtersChanged: EventEmitter = new EventEmitter(); filteringGrantsAsync = false; @@ -98,6 +99,15 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni ngOnInit() { super.ngOnInit(); + + // This if is just for passing label on chips of dialog + if (this.formGroup && this.criteriaFormGroup) { + this.formGroup.get('datasetTemplates').setValue(this.criteriaFormGroup.get('datasetTemplates').value); + this.formGroup.get('grants').setValue(this.criteriaFormGroup.get('grants').value); + this.formGroup.get('collaborators').setValue(this.criteriaFormGroup.get('collaborators').value); + this.formGroup.get('organisations').setValue(this.criteriaFormGroup.get('organisations').value); + } + this.formGroup.get('role').valueChanges .pipe(takeUntil(this._destroyed)) .subscribe(x => this.controlModified()); @@ -133,6 +143,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni this.formGroup.get('collaborators').patchValue(criteria.collaborators); this.formGroup.get('datasetTemplates').patchValue(criteria.datasetTemplates); this.formGroup.get('grantStatus').patchValue(criteria.grantStatus); + this.formGroup.get('organisations').patchValue(criteria.organisations); } onCallbackError(error: any) { diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html index 57d773e51..9a4aaf680 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html @@ -8,15 +8,12 @@

{{'DMP-LISTING.TEXT-INFO-QUESTION' | translate}} {{'DMP-LISTING.LINK-ZENODO' | translate}} {{'DMP-LISTING.GET-IDEA' | translate}}

-
- search diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss index 318765330..09bb2e64f 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.scss @@ -209,7 +209,7 @@ color: #129d99; } -::ng-deep .mat-form-field-wrapper { +::ng-deep .search-form .mat-form-field-wrapper { background-color: white !important; padding-bottom: 0 !important; } diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts index 88b50b691..d9c351631 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts @@ -24,7 +24,7 @@ import { UiNotificationService, SnackBarNotificationLevel } from '@app/core/serv import { isNullOrUndefined } from 'util'; import { AuthService } from '@app/core/services/auth/auth.service'; import { DmpCriteriaDialogComponent } from './criteria/dmp-criteria-dialog.component'; -import { FormBuilder, FormControl } from '@angular/forms'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; @Component({ @@ -54,6 +54,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread pageSize: number = 5; criteria: DmpCriteria; + criteriaFormGroup: FormGroup; public formGroup = new FormBuilder().group({ like: new FormControl() }) @@ -295,6 +296,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread showGrant: this.showGrant, isPublic: this.isPublic, criteria: this.criteria, + formGroup: this.criteriaFormGroup, // criteria: this.grantId ? this.criteria : this.getDefaultCriteria(), updateDataFn: this.updateDataFn.bind(this) }, @@ -306,6 +308,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread } updateDataFn(criteria: DmpCriteriaComponent): void { + this.criteriaFormGroup = criteria.formGroup; this.toDmpCriteria(criteria); this.refresh(); } @@ -341,7 +344,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread } hasScrollbar(): boolean { - return document.getElementById("main-page").scrollHeight > document.documentElement.clientHeight; + return document.getElementById("main-page").scrollHeight > document.documentElement.clientHeight } }