From 3df3ed15ce5789abef9df9ec55d435317b9ddb2d Mon Sep 17 00:00:00 2001 From: annampak Date: Tue, 6 Feb 2018 15:56:33 +0200 Subject: [PATCH] Dataset Profile Datatable Admin- material was implemented --- dmp-frontend/src/app/app-routing.module.ts | 1 + .../dataset-profile.router.ts | 1 - .../dataset-admin-listing.component.html | 94 +++++++++++ .../dataset-admin-listing.component.scss | 35 ++++ .../dataset-admin-listing.component.ts | 156 ++++++++++++++++++ .../dataset-admin.module.ts | 54 ++++++ .../dataset-admin.routes.ts | 7 + .../datasetProfileAfmin.service.ts | 10 +- .../navigation/navigation.component.html | 1 + dmp-frontend/src/assets/lang/en.json | 3 +- 10 files changed, 354 insertions(+), 8 deletions(-) create mode 100644 dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.html create mode 100644 dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.scss create mode 100644 dmp-frontend/src/app/datasets-admin-listing/dataset-admin-listing.component.ts create mode 100644 dmp-frontend/src/app/datasets-admin-listing/dataset-admin.module.ts create mode 100644 dmp-frontend/src/app/datasets-admin-listing/dataset-admin.routes.ts 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": {