diff --git a/dmp-frontend/src/app/app-routing.module.ts b/dmp-frontend/src/app/app-routing.module.ts
index f70d29cdf..05223d28e 100644
--- a/dmp-frontend/src/app/app-routing.module.ts
+++ b/dmp-frontend/src/app/app-routing.module.ts
@@ -16,6 +16,7 @@ const appRoutes: Routes = [
{ path: '', redirectTo: '/welcome', pathMatch: 'full' },
{ path: "unauthorized", loadChildren: './unauthorized/unauthorized.module#UnauthorizedModule' },
{ path: "users", loadChildren: './users/users.module#UsersModule' },
+ { path: "datasetsProfiles", loadChildren: './datasets-admin-listing/dataset-admin.module#DatasetAdminModule' },
{ path: "welcome", component: WelcomepageComponent }
];
diff --git a/dmp-frontend/src/app/dataset-profile-form/dataset-profile.router.ts b/dmp-frontend/src/app/dataset-profile-form/dataset-profile.router.ts
index 44e2337e6..e4f05656b 100644
--- a/dmp-frontend/src/app/dataset-profile-form/dataset-profile.router.ts
+++ b/dmp-frontend/src/app/dataset-profile-form/dataset-profile.router.ts
@@ -2,7 +2,6 @@ import { RouterModule, Routes } from '@angular/router';
import { FormComponent } from 'app/dataset-profile-form/form/form.component';
export const DatasetProfileRoutes: Routes = [
- //{ path: "new/:dmpId", component: DatasetWizardComponent, canActivate: [AuthGuard] }
{
path: ':id',
component: FormComponent
diff --git a/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.html b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.html
new file mode 100644
index 000000000..78465427a
--- /dev/null
+++ b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.html
@@ -0,0 +1,94 @@
+
+
{{titlePrefix}} {{'DATASET-LISTING.TITLE' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.NAME' | translate}}
+ {{row.label}}
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.DMP' | translate}}
+ {{row.dmp}}
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.PROFILE' | translate}}
+ {{row.profile}}
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.DATAREPOSITORIES' | translate}}
+ {{row.dataRepositories}}
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.REGISTRIES' | translate}}
+ {{row.registries}}
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.SERVICES' | translate}}
+ {{row.services}}
+
+
+
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.DESCRIPTION' | translate}}
+ {{row.description}}
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.CREATED' | translate}}
+ {{row.created | date:'shortDate'}}
+
+
+
+
+ {{'DATASET-LISTING.COLUMNS.ACTIONS' | translate}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.scss b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.scss
new file mode 100644
index 000000000..2688cb118
--- /dev/null
+++ b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.scss
@@ -0,0 +1,35 @@
+.mat-table {
+ margin: 24px;
+}
+
+.mat-fab-bottom-right {
+ top: auto !important;
+ right: 20px !important;
+ bottom: 10px !important;
+ left: auto !important;
+ position: fixed !important;
+}
+
+.full-width {
+ width: 100%;
+}
+
+.mat-card {
+ margin: 16px 0;
+}
+
+.mat-row {
+ cursor: pointer;
+}
+
+mat-row:hover {
+ background-color: lightgray;
+}
+
+// mat-row:nth-child(even){
+// background-color:red;
+// }
+
+mat-row:nth-child(odd){
+ background-color:#eef0fb;
+ }
\ No newline at end of file
diff --git a/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.ts b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.ts
new file mode 100644
index 000000000..02332b1df
--- /dev/null
+++ b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.ts
@@ -0,0 +1,156 @@
+import { DataTableRequest } from '../models/data-table/DataTableRequest';
+import { DatasetListingModel } from '../models/datasets/DatasetListingModel';
+import { DatasetCriteria } from '../models/criteria/dataset/DatasetCriteria';
+import { Component, ViewChild, OnInit, AfterViewInit } from "@angular/core";
+import { MatPaginator, MatSort, MatSnackBar } from "@angular/material";
+import { Router, Params, ActivatedRoute } from "@angular/router";
+import { TranslateService } from "@ngx-translate/core";
+import { DataSource } from "@angular/cdk/table";
+
+import { Observable } from "rxjs/Observable";
+import { PageEvent } from '@angular/material';
+import { DataManagementPlanService } from "@app/services/data-management-plan/data-management-plan.service";
+import { DataManagementPlanModel } from "@app/models/data-managemnt-plans/DataManagementPlanModel";
+import { DatasetCriteriaComponent } from '@app/shared/components/criteria/datasets/datasets-criteria.component';
+import { DatasetProfileAdmin } from '@app/services/datasetProfileAdmin/datasetProfileAfmin.service';
+
+
+@Component({
+ selector: 'app-dataset-admin-listing-component',
+ templateUrl: 'dataset-admin-listing.component.html',
+ styleUrls: ['./dataset-admin-listing.component.scss'],
+ providers: [DatasetProfileAdmin, DataManagementPlanService]
+})
+export class DatasetAdminListingComponent implements OnInit {
+
+ @ViewChild(MatPaginator) _paginator: MatPaginator;
+ @ViewChild(MatSort) sort: MatSort;
+ @ViewChild(DatasetCriteriaComponent) criteria: DatasetCriteriaComponent;
+
+
+ dataSource: DatasetDataSource | null;
+ displayedColumns: String[] = ['label', 'dmp', 'profile', 'dataRepositories', 'registries', 'services', 'description', 'created', 'actions'];
+ pageEvent: PageEvent;
+ titlePrefix: String;
+ dmpId: String;
+
+ statuses = [
+ { value: '0', viewValue: 'Active' },
+ { value: '1', viewValue: 'Inactive' }
+ ];
+
+ constructor(
+ private datasetService: DatasetProfileAdmin,
+ private router: Router,
+ private languageService: TranslateService,
+ public snackBar: MatSnackBar,
+ public route: ActivatedRoute,
+ public dataManagementPlanService: DataManagementPlanService
+ ) {
+
+ }
+
+
+ ngOnInit() {
+ this.route.params.subscribe((params: Params) => {
+ this.dmpId = params['dmpId'];
+ if (this.dmpId != null) this.setDmpTitle(this.dmpId);
+ this.criteria.setCriteria(this.getDefaultCriteria(this.dmpId));
+ this.refresh();
+ this.criteria.setRefreshCallback(() => this.refresh());
+ });
+ }
+
+ setDmpTitle(dmpId: String) {
+ this.dataManagementPlanService.getSingle(dmpId).map(data => data as DataManagementPlanModel)
+ .subscribe(data => {
+ this.titlePrefix = data.label;
+ });
+ }
+
+ refresh() {
+ this.dataSource = new DatasetDataSource(this.datasetService, this._paginator, this.sort, this.languageService, this.snackBar, this.criteria);
+ }
+
+ rowClick(rowId: String) {
+ this.router.navigate(['form/' + rowId]);
+ }
+
+ getDefaultCriteria(dmpId: String): DatasetCriteria {
+ const defaultCriteria = new DatasetCriteria();
+ if (dmpId != null) {
+ defaultCriteria.dmpIds.push(dmpId);
+ }
+ return defaultCriteria;
+ }
+
+ // makeItPublic(id: String) {
+ // debugger;
+ // this.datasetService.makeDatasetPublic(id).subscribe();
+ // }
+
+}
+
+export class DatasetDataSource extends DataSource {
+
+ totalCount = 0;
+ isLoadingResults = false;
+
+ constructor(
+ private _service: DatasetProfileAdmin,
+ private _paginator: MatPaginator,
+ private _sort: MatSort,
+ private _languageService: TranslateService,
+ private _snackBar: MatSnackBar,
+ private _criteria: DatasetCriteriaComponent
+ ) {
+ super();
+
+ }
+
+ connect(): Observable {
+ const displayDataChanges = [
+ this._paginator.page
+ //this._sort.matSortChange
+ ];
+
+
+ return Observable.merge(...displayDataChanges)
+ .startWith(null)
+ .switchMap(() => {
+ setTimeout(() => {
+ this.isLoadingResults = true;
+ });
+ const startIndex = this._paginator.pageIndex * this._paginator.pageSize;
+ 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;
+ return this._service.getPaged(request);
+ })
+ /*.catch((error: any) => {
+ this._snackBar.openFromComponent(SnackBarNotificationComponent, {
+ data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService },
+ duration: 3000,
+ extraClasses: ['snackbar-warning']
+ });
+ //this._criteria.criteria.onCallbackError(error);
+ return Observable.of(null);
+ })*/
+ .map(result => {
+ setTimeout(() => {
+ this.isLoadingResults = false;
+ });
+ return result;
+ })
+ .map(result => {
+ if (!result) { return []; }
+ if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; }
+ return result.data;
+ });
+ }
+
+ disconnect() {
+ // No-op
+ }
+}
\ No newline at end of file
diff --git a/dmp-frontend/src/app/datasets-admin-listing/dataset-admin.module.ts b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin.module.ts
new file mode 100644
index 000000000..c678fc47d
--- /dev/null
+++ b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin.module.ts
@@ -0,0 +1,54 @@
+import { RouterModule } from '@angular/router';
+import { TranslateHttpLoader } from '@ngx-translate/http-loader';
+import { DatasetService } from '../services/dataset/dataset.service';
+import { DynamicFormModule } from '../form/dynamic-form.module';
+import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
+import { DatasetAdminRoutes } from './dataset-admin.routes';
+import { DatasetAdminListingComponent } from './dataset-admin-listing.component';
+import { CommonModule } from '@angular/common';
+import { HttpClient, HttpClientModule } from '@angular/common/http';
+import { NgModule } from '@angular/core';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+
+import { SharedModule } from '../shared/shared.module'
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ HttpClientModule,
+ SharedModule,
+ RouterModule.forChild(DatasetAdminRoutes),
+ ReactiveFormsModule,
+ DynamicFormModule,
+ TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useFactory: HttpLoaderFactory,
+ deps: [HttpClient]
+ }
+ }),
+ ],
+
+ declarations: [
+ DatasetAdminListingComponent,
+ ],
+
+ exports: [
+ DatasetAdminListingComponent,
+ RouterModule
+ ],
+ providers: [
+ DatasetService
+ ]
+})
+
+export class DatasetAdminModule {
+ constructor(private translate: TranslateService) {
+ translate.setDefaultLang('en');
+ translate.use('en');
+ }
+}
+
+export function HttpLoaderFactory(httpClient: HttpClient) {
+ return new TranslateHttpLoader(httpClient, 'assets/lang/', '.json');
+}
\ No newline at end of file
diff --git a/dmp-frontend/src/app/datasets-admin-listing/dataset-admin.routes.ts b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin.routes.ts
new file mode 100644
index 000000000..fdfb9be7f
--- /dev/null
+++ b/dmp-frontend/src/app/datasets-admin-listing/dataset-admin.routes.ts
@@ -0,0 +1,7 @@
+import { AuthGuard } from '../guards/auth.guard';
+import { DatasetAdminListingComponent } from './dataset-admin-listing.component';
+import { RouterModule, Routes } from '@angular/router';
+
+export const DatasetAdminRoutes: Routes = [
+ { path: '', component: DatasetAdminListingComponent, canActivate: [AuthGuard] },
+];
diff --git a/dmp-frontend/src/app/services/datasetProfileAdmin/datasetProfileAfmin.service.ts b/dmp-frontend/src/app/services/datasetProfileAdmin/datasetProfileAfmin.service.ts
index 6ceba92ca..a6305b739 100644
--- a/dmp-frontend/src/app/services/datasetProfileAdmin/datasetProfileAfmin.service.ts
+++ b/dmp-frontend/src/app/services/datasetProfileAdmin/datasetProfileAfmin.service.ts
@@ -9,6 +9,7 @@ import { DatasetModel } from '../../models/datasets/DatasetModel';
import { DatasetCriteria } from '../../models/criteria/dataset/DatasetCriteria';
import { DatasetProfileModelAdmin } from '../../models/datasetProfileAdmin/DatasetProfileModelAdmin';
+import { DatasetListingModel } from '@app/models/datasets/DatasetListingModel';
@Injectable()
@@ -36,12 +37,9 @@ export class DatasetProfileAdmin {
getDatasetProfileById(datasetProfileID){
return this.http.get(this.actionUrl + 'get/' + datasetProfileID, { headers: this.headers })
}
- // getPaged(dataTableRequest: DataTableRequest): Observable> {
- // return this.http.post>(this.actionUrl + 'getPaged', dataTableRequest, { headers: this.headers });
- // }
- // makeDatasetPublic(id: String){
- // return this.http.get(this.actionUrl + 'makepublic/' + id, { headers: this.headers })
- // }
+ getPaged(dataTableRequest: DataTableRequest): Observable> {
+ return this.http.post>(this.actionUrl + 'datasetprofiles/getPaged', dataTableRequest, { headers: this.headers });
+ }
}
diff --git a/dmp-frontend/src/app/shared/components/navigation/navigation.component.html b/dmp-frontend/src/app/shared/components/navigation/navigation.component.html
index 2d2045813..61cbcb5fd 100644
--- a/dmp-frontend/src/app/shared/components/navigation/navigation.component.html
+++ b/dmp-frontend/src/app/shared/components/navigation/navigation.component.html
@@ -5,6 +5,7 @@
+
diff --git a/dmp-frontend/src/assets/lang/en.json b/dmp-frontend/src/assets/lang/en.json
index bd964d6f6..f19754f5e 100644
--- a/dmp-frontend/src/assets/lang/en.json
+++ b/dmp-frontend/src/assets/lang/en.json
@@ -26,7 +26,8 @@
"PROJECTS": "Projects",
"DMPS": "Plans",
"DATASETS": "Datasets",
- "USERS": "Users"
+ "USERS": "Users",
+ "DATASETS(ADMIN)":"Datasets (Admin)"
},
"PROJECT-LISTING": {