diff --git a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.html b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.html
index 492cc3a6f..594ab4b80 100644
--- a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.html
+++ b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.html
@@ -6,18 +6,27 @@
diff --git a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.ts b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.ts
index 2bcc3f26e..e408e3ca2 100644
--- a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.ts
+++ b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.ts
@@ -9,6 +9,12 @@ import { ExternalSourcesService } from '../../../../core/services/external-sourc
import { EnumUtils } from '../../../../core/services/utilities/enum-utils.service';
import { RequestItem } from '../../../../core/query/request-item';
import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.component';
+import { DmpCriteria } from '../../../../core/query/dmp/dmp-criteria';
+import { DmpService } from '../../../../core/services/dmp/dmp.service';
+import { DataTableRequest } from '../../../../core/model/data-table/data-table-request';
+import { DataTableData } from '../../../../core/model/data-table/data-table-data';
+import { DmpListingModel } from '../../../../core/model/dmp/dmp-listing';
+import { Input } from '@angular/core';
@Component({
selector: 'app-dataset-criteria-component',
@@ -17,10 +23,10 @@ import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.comp
})
export class DatasetCriteriaComponent extends BaseCriteriaComponent implements OnInit {
+ @Input() dmpSearchEnabled;
public criteria: any;
public filteringTagsAsync = false;
public filteredTags: ExternalSourceItemModel[];
-
statuses = DatasetStatus;
tagsAutoCompleteConfiguration = {
@@ -30,9 +36,17 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
titleFn: (item) => item['name']
};
+ dmpAutoCompleteConfiguration = {
+ filterFn: (x, excluded) => this.filterDmps(x).map(x => x.data),
+ initialItems: (extraData) => this.filterDmps('').map(x => x.data),
+ displayFn: (item) => item['label'],
+ titleFn: (item) => item['label']
+ };
+
constructor(
private externalSourcesService: ExternalSourcesService,
- public enumUtils: EnumUtils
+ public enumUtils: EnumUtils,
+ public dmpService: DmpService
) {
super(new ValidationErrorModel());
}
@@ -60,7 +74,6 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
}
filterTags(value: string): Observable {
-
this.filteredTags = undefined;
this.filteringTagsAsync = true;
@@ -69,6 +82,14 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O
criteria.like = value;
requestItem.criteria = criteria;
return this.externalSourcesService.searchDatasetTags(requestItem);
+ }
+ filterDmps(value: string): Observable> {
+ const fields: Array = new Array();
+ fields.push('asc');
+ const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields });
+ dmpDataTableRequest.criteria = new DmpCriteria();
+ dmpDataTableRequest.criteria.like = value;
+ return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete");
}
}
diff --git a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.html b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.html
index d8b8a93ae..f69c23264 100644
--- a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.html
+++ b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.html
@@ -1,7 +1,7 @@
{{'DATASET-LISTING.TITLE' | translate}} {{titlePrefix}}
-
+
diff --git a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts
index e00fc6bd4..93ba77eb0 100644
--- a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts
+++ b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts
@@ -34,6 +34,7 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
pageEvent: PageEvent;
titlePrefix: String;
dmpId: string;
+ dmpSearchEnabled = true;
constructor(
private datasetService: DatasetService,
@@ -47,23 +48,24 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
super();
}
-
ngOnInit() {
-
this.route.params
.pipe(takeUntil(this._destroyed))
.subscribe(async (params: Params) => {
this.dmpId = params['dmpId'];
- this.criteria.setCriteria(this.getDefaultCriteria(this.dmpId));
- this.refresh();
this.criteria.setRefreshCallback(() => this.refresh());
if (this.dmpId != null) {
+ this.dmpSearchEnabled = false;
const dmp = await this.dmpService.getSingle(this.dmpId).toPromise();
+ this.criteria.setCriteria(this.getDefaultCriteria(dmp));
+ this.refresh();
this.breadCrumbs = Observable.of([{ parentComponentName: 'DmpEditorComponent', label: dmp.label, url: 'plans/edit/' + this.dmpId }]);
if (params['dmpLabel'] !== undefined) {
this.titlePrefix = 'for ' + params['dmpLabel'];
}
} else {
+ this.criteria.setCriteria(this.getDefaultCriteria());
+ this.refresh();
this.breadCrumbs = Observable.of([]);
}
});
@@ -77,7 +79,7 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
this.router.navigate(['/datasets/edit/' + rowId]);
}
- getDefaultCriteria(dmpId: String): DatasetCriteria {
+ getDefaultCriteria(dmpId: any = null): DatasetCriteria {
const defaultCriteria = new DatasetCriteria();
if (dmpId != null) {
defaultCriteria.dmpIds.push(dmpId);
@@ -90,7 +92,6 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB
.pipe(takeUntil(this._destroyed))
.subscribe();
}
-
}
export class DatasetDataSource extends DataSource {
@@ -106,7 +107,6 @@ export class DatasetDataSource extends DataSource {
private dmpId: String
) {
super();
-
}
connect(): Observable {
@@ -115,7 +115,6 @@ export class DatasetDataSource extends DataSource {
//this._sort.matSortChange
];
-
return Observable.merge(...displayDataChanges)
.startWith(null)
.switchMap(() => {
@@ -123,7 +122,13 @@ export class DatasetDataSource extends DataSource {
let fields: Array = new Array();
if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; }
const request = new DataTableRequest(startIndex, this._paginator.pageSize, { fields: fields });
- request.criteria = this._criteria.criteria;
+ request.criteria = {
+ like: this._criteria.criteria.like,
+ status: this._criteria.criteria.status,
+ dmpIds: this._criteria.criteria.dmpIds ? this._criteria.criteria.dmpIds.map(x => x.id) : null,
+ tags: this._criteria.criteria.tags,
+ allVersions: this._criteria.criteria.allVersions
+ }
if (this.dmpId) { request.criteria.allVersions = true; }
return this._service.getPaged(request);
})
diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json
index bc1383403..09eaf772f 100644
--- a/dmp-frontend/src/assets/i18n/en.json
+++ b/dmp-frontend/src/assets/i18n/en.json
@@ -270,7 +270,9 @@
"DMP-SEARCH": {
"PLACEHOLDER": "Search DMP"
},
- "ERROR-MESSAGE": "This DMP does not contain this Dataset Profile"
+ "COPY": "Copy",
+ "CANCEL": "Cancel",
+ "ERROR-MESSAGE": "Selected DMP does not contain this Dataset Profile"
}
},
"DATASET-LISTING": {
@@ -419,7 +421,7 @@
"CRITERIA": {
"FILTERS": "Filters",
"PROJECTS": {
- "LIKE": "Search",
+ "LIKE": "Search Projects",
"PERIOD-FROM": "Project Start",
"PERIOD-TO": "Project End",
"PROJECT-STATE-TYPE": "Project Status",
@@ -437,10 +439,11 @@
"PERIOD-TO": "End",
"STATUS": "Status",
"NONE": "-",
- "TAGS": "Tags"
+ "TAGS": "Tags",
+ "LIKE": "Search Datasets"
},
"DMP": {
- "LIKE": "Search",
+ "LIKE": "Search DMPs",
"PROJECTS": "Projects"
},
"USERS": {