diff --git a/frontends/dnet-is-application/src/app/app-routing.module.ts b/frontends/dnet-is-application/src/app/app-routing.module.ts index 04f02978..0c3a5aa2 100644 --- a/frontends/dnet-is-application/src/app/app-routing.module.ts +++ b/frontends/dnet-is-application/src/app/app-routing.module.ts @@ -10,23 +10,23 @@ import { DsmSearchComponent, DsmResultsComponent, DsmApiComponent } from './dsm/ import { MdstoreInspectorComponent, MdstoresComponent } from './mdstores/mdstores.component'; const routes: Routes = [ - { path:"" , redirectTo:'info', pathMatch: 'full' }, - { path:"info" , component:InfoComponent }, - { path:"resources/:type" , component:ResourcesComponent }, - { path:"adv_resources/context" , component:ContextsComponent }, - { path:"adv_resources/vocabulary" , component:VocabulariesComponent }, - { path:"adv_resources/protocol" , component:ProtocolsComponent }, - { path:"wf_history" , component:WfHistoryComponent }, - { path:"ctx_viewer" , component:ContextViewerComponent }, - { path:"voc_editor" , component:VocabularyEditorComponent }, - { path:"dsm/search" , component:DsmSearchComponent }, - { path:"dsm/results/:page/:size" , component:DsmResultsComponent }, - { path:"mdstores" , component:MdstoresComponent }, - { path:"mdrecords/:versionId/:limit" , component:MdstoreInspectorComponent } + { path: "", redirectTo: 'info', pathMatch: 'full' }, + { path: "info", component: InfoComponent }, + { path: "resources/:type", component: ResourcesComponent }, + { path: "adv_resources/context", component: ContextsComponent }, + { path: "adv_resources/vocabulary", component: VocabulariesComponent }, + { path: "adv_resources/protocol", component: ProtocolsComponent }, + { path: "wf_history", component: WfHistoryComponent }, + { path: "ctx_viewer", component: ContextViewerComponent }, + { path: "voc_editor", component: VocabularyEditorComponent }, + { path: "dsm/search", component: DsmSearchComponent }, + { path: "dsm/results/:page/:size", component: DsmResultsComponent }, + { path: "mdstores", component: MdstoresComponent }, + { path: "mdrecords/:versionId/:limit", component: MdstoreInspectorComponent } ]; @NgModule({ - imports: [RouterModule.forRoot(routes)], - exports: [RouterModule] + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] }) export class AppRoutingModule { } diff --git a/frontends/dnet-is-application/src/app/app.component.css b/frontends/dnet-is-application/src/app/app.component.css index 1f3a5e34..04e875cd 100644 --- a/frontends/dnet-is-application/src/app/app.component.css +++ b/frontends/dnet-is-application/src/app/app.component.css @@ -1,17 +1,17 @@ .sidenav-container { - height: 100%; - } - - .sidenav { - width: 350px; - } - - .sidenav .mat-toolbar { - background: inherit; - } - - .mat-toolbar.mat-primary { - position: sticky; - top: 0; - z-index: 1; - } + height: 100%; +} + +.sidenav { + width: 350px; +} + +.sidenav .mat-toolbar { + background: inherit; +} + +.mat-toolbar.mat-primary { + position: sticky; + top: 0; + z-index: 1; +} diff --git a/frontends/dnet-is-application/src/app/app.component.html b/frontends/dnet-is-application/src/app/app.component.html index 2b5ac62f..75ed2858 100644 --- a/frontends/dnet-is-application/src/app/app.component.html +++ b/frontends/dnet-is-application/src/app/app.component.html @@ -1,24 +1,23 @@
- +
- - - - - - - {{title}} - -
- - -
-
+ + + + + + + {{title}} + +
+ + +
+
- diff --git a/frontends/dnet-is-application/src/app/app.component.ts b/frontends/dnet-is-application/src/app/app.component.ts index d9d78bc2..16e87ae7 100644 --- a/frontends/dnet-is-application/src/app/app.component.ts +++ b/frontends/dnet-is-application/src/app/app.component.ts @@ -5,20 +5,19 @@ import { map, shareReplay } from 'rxjs/operators'; import { SpinnerService } from './common/spinner.service'; @Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] }) export class AppComponent { - title = 'D-NET Information Service Application'; - - isHandset$: Observable = this.breakpointObserver.observe(Breakpoints.Handset) - .pipe( - map(result => result.matches), - shareReplay() - ); + title = 'D-NET Information Service Application'; - constructor(private breakpointObserver: BreakpointObserver, public spinnerService: SpinnerService) {} + isHandset$: Observable = this.breakpointObserver.observe(Breakpoints.Handset) + .pipe( + map(result => result.matches), + shareReplay() + ); + + constructor(private breakpointObserver: BreakpointObserver, public spinnerService: SpinnerService) { } } - diff --git a/frontends/dnet-is-application/src/app/app.module.ts b/frontends/dnet-is-application/src/app/app.module.ts index bb67000f..5b95a356 100644 --- a/frontends/dnet-is-application/src/app/app.module.ts +++ b/frontends/dnet-is-application/src/app/app.module.ts @@ -37,69 +37,69 @@ import { SpinnerHttpInterceptor } from './common/spinner.service'; import { MdstoresComponent, MdstoreInspectorComponent, MDStoreVersionsDialog, AddMDStoreDialog } from './mdstores/mdstores.component'; @NgModule({ - declarations: [ - AppComponent, - FilterPipe, - MainMenuPanelsComponent, - InfoComponent, - ProtocolsComponent, - WfHistoryComponent, - WfDialog, - ResourcesComponent, - ResContentDialog, - ResCreateNewDialog, - ResMetadataDialog, - ContextsComponent, - ContextViewerComponent, - ContextParamsDialog, - VocabulariesComponent, - VocabularyEditorComponent, - VocDialog, - VocTermDialog, - DsmSearchComponent, - DsmResultsComponent, - DsmApiComponent, - DsmAddApiDialog, - DsmBrowseDialog, - MdstoresComponent, - MdstoreInspectorComponent, - MDStoreVersionsDialog, - AddMDStoreDialog - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - HttpClientModule, - BrowserModule, - AppRoutingModule, - FormsModule, - HttpClientModule, - LayoutModule, - MatToolbarModule, - MatButtonModule, - MatSidenavModule, - MatIconModule, - MatListModule, - MatTreeModule, - MatBadgeModule, - MatCardModule, - MatFormFieldModule, - MatInputModule, - MatSelectModule, - MatTableModule, - MatExpansionModule, - MatDialogModule, - MatSortModule, - ReactiveFormsModule, - MatSnackBarModule, - MatPaginatorModule, - MatProgressSpinnerModule - ], - providers: [{ - provide: HTTP_INTERCEPTORS, - useClass: SpinnerHttpInterceptor, - multi: true - }], - bootstrap: [ AppComponent ] + declarations: [ + AppComponent, + FilterPipe, + MainMenuPanelsComponent, + InfoComponent, + ProtocolsComponent, + WfHistoryComponent, + WfDialog, + ResourcesComponent, + ResContentDialog, + ResCreateNewDialog, + ResMetadataDialog, + ContextsComponent, + ContextViewerComponent, + ContextParamsDialog, + VocabulariesComponent, + VocabularyEditorComponent, + VocDialog, + VocTermDialog, + DsmSearchComponent, + DsmResultsComponent, + DsmApiComponent, + DsmAddApiDialog, + DsmBrowseDialog, + MdstoresComponent, + MdstoreInspectorComponent, + MDStoreVersionsDialog, + AddMDStoreDialog + ], + imports: [ + BrowserModule, + BrowserAnimationsModule, + HttpClientModule, + BrowserModule, + AppRoutingModule, + FormsModule, + HttpClientModule, + LayoutModule, + MatToolbarModule, + MatButtonModule, + MatSidenavModule, + MatIconModule, + MatListModule, + MatTreeModule, + MatBadgeModule, + MatCardModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + MatTableModule, + MatExpansionModule, + MatDialogModule, + MatSortModule, + ReactiveFormsModule, + MatSnackBarModule, + MatPaginatorModule, + MatProgressSpinnerModule + ], + providers: [{ + provide: HTTP_INTERCEPTORS, + useClass: SpinnerHttpInterceptor, + multi: true + }], + bootstrap: [AppComponent] }) export class AppModule { } diff --git a/frontends/dnet-is-application/src/app/common/filter.pipe.ts b/frontends/dnet-is-application/src/app/common/filter.pipe.ts index fbcc2c95..c3d46b9f 100644 --- a/frontends/dnet-is-application/src/app/common/filter.pipe.ts +++ b/frontends/dnet-is-application/src/app/common/filter.pipe.ts @@ -2,24 +2,24 @@ import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'searchFilter' }) export class FilterPipe implements PipeTransform { - /** - * Pipe filters the list of elements based on the search text provided - * - * @param items list of elements to search in - * @param searchText search string - * @returns list of elements filtered by search text or [] - */ + /** + * Pipe filters the list of elements based on the search text provided + * + * @param items list of elements to search in + * @param searchText search string + * @returns list of elements filtered by search text or [] + */ - transform(items: any[], searchText: string): any[] { - if (!items) return []; - if (!searchText) return items; + transform(items: any[], searchText: string): any[] { + if (!items) return []; + if (!searchText) return items; - searchText = searchText.trim().toLocaleLowerCase(); + searchText = searchText.trim().toLocaleLowerCase(); - return items.filter(obj => { - return Object.keys(obj).reduce((acc, curr) => { - return acc || JSON.stringify(obj[curr]).toLowerCase().includes(searchText); - }, false); - }); - } -} \ No newline at end of file + return items.filter(obj => { + return Object.keys(obj).reduce((acc, curr) => { + return acc || JSON.stringify(obj[curr]).toLowerCase().includes(searchText); + }, false); + }); + } +} diff --git a/frontends/dnet-is-application/src/app/common/is.model.ts b/frontends/dnet-is-application/src/app/common/is.model.ts index 803e0976..708594d5 100644 --- a/frontends/dnet-is-application/src/app/common/is.model.ts +++ b/frontends/dnet-is-application/src/app/common/is.model.ts @@ -197,4 +197,4 @@ export interface MDStoreRecord { dateOfCollection: string, dateOfTransformation: string, provenance: any -} \ No newline at end of file +} diff --git a/frontends/dnet-is-application/src/app/common/spinner.service.ts b/frontends/dnet-is-application/src/app/common/spinner.service.ts index 1aafe32e..e6e8739d 100644 --- a/frontends/dnet-is-application/src/app/common/spinner.service.ts +++ b/frontends/dnet-is-application/src/app/common/spinner.service.ts @@ -9,30 +9,30 @@ import { tap } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class SpinnerService { - visibility: BehaviorSubject; + visibility: BehaviorSubject; - constructor() { this.visibility = new BehaviorSubject(false); } + constructor() { this.visibility = new BehaviorSubject(false); } - show() { this.visibility.next(true); } - hide() { this.visibility.next(false);} + show() { this.visibility.next(true); } + hide() { this.visibility.next(false); } } @Injectable() export class SpinnerHttpInterceptor implements HttpInterceptor { - constructor(private spinnerService: SpinnerService) { } + constructor(private spinnerService: SpinnerService) { } - intercept(req: HttpRequest, next: HttpHandler): Observable> { + intercept(req: HttpRequest, next: HttpHandler): Observable> { - this.spinnerService.show(); + this.spinnerService.show(); - return next.handle(req) - .pipe(tap((event: HttpEvent) => { - if (event instanceof HttpResponse) { - this.spinnerService.hide(); - } - }, (error) => { - this.spinnerService.hide(); - })); - } + return next.handle(req) + .pipe(tap((event: HttpEvent) => { + if (event instanceof HttpResponse) { + this.spinnerService.hide(); + } + }, (error) => { + this.spinnerService.hide(); + })); + } } diff --git a/frontends/dnet-is-application/src/app/contexts/context-params-dialog.html b/frontends/dnet-is-application/src/app/contexts/context-params-dialog.html index 77187640..c5544ce1 100644 --- a/frontends/dnet-is-application/src/app/contexts/context-params-dialog.html +++ b/frontends/dnet-is-application/src/app/contexts/context-params-dialog.html @@ -1,16 +1,16 @@

Parameters

-

No parameters

- -
- - {{p.name}} - - -
+

No parameters

+ +
+ + {{p.name}} + + +
- +
diff --git a/frontends/dnet-is-application/src/app/contexts/context-viewer.component.html b/frontends/dnet-is-application/src/app/contexts/context-viewer.component.html index d53f6ffc..99af6411 100644 --- a/frontends/dnet-is-application/src/app/contexts/context-viewer.component.html +++ b/frontends/dnet-is-application/src/app/contexts/context-viewer.component.html @@ -1,44 +1,48 @@

Context Viewer

- Context ID: {{context?.id}}
- Label: {{context?.label}}
- Type: {{context?.type}}
+ Context ID: {{context?.id}}
+ Label: {{context?.label}}
+ Type: {{context?.type}}

- Return to contexts list - - Download + Return to contexts list + + Download

+ + diff --git a/frontends/dnet-is-application/src/app/contexts/contexts.component.css b/frontends/dnet-is-application/src/app/contexts/contexts.component.css index c0c2065c..77938286 100644 --- a/frontends/dnet-is-application/src/app/contexts/contexts.component.css +++ b/frontends/dnet-is-application/src/app/contexts/contexts.component.css @@ -1,12 +1,11 @@ - .context-node { - padding-top: 1em; + padding-top: 1em; } .context-node a { - text-decoration: none; + text-decoration: none; } .context-node a:hover { - text-decoration: underline; -} \ No newline at end of file + text-decoration: underline; +} diff --git a/frontends/dnet-is-application/src/app/contexts/contexts.component.html b/frontends/dnet-is-application/src/app/contexts/contexts.component.html index 4b35ec73..4b056d04 100644 --- a/frontends/dnet-is-application/src/app/contexts/contexts.component.html +++ b/frontends/dnet-is-application/src/app/contexts/contexts.component.html @@ -1,41 +1,44 @@

Contexts

- Filter - + Filter + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - + + + +
Id - {{element.id}} - Id + {{element.id}} + Label {{element.label}} Label {{element.label}} Type {{element.type}} Type {{element.type}} Parameters - - Parameters + +
No data matching the filter "{{input.value}}"
No data matching the filter "{{input.value}}"
diff --git a/frontends/dnet-is-application/src/app/contexts/contexts.component.ts b/frontends/dnet-is-application/src/app/contexts/contexts.component.ts index 1fc5e41f..0046d27c 100644 --- a/frontends/dnet-is-application/src/app/contexts/contexts.component.ts +++ b/frontends/dnet-is-application/src/app/contexts/contexts.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject,AfterViewInit, OnInit, ViewChild } from '@angular/core'; +import { Component, Inject, AfterViewInit, OnInit, ViewChild } from '@angular/core'; import { ISService } from '../common/is.service'; import { MatTableDataSource } from '@angular/material/table'; import { MatSort } from '@angular/material/sort'; @@ -7,95 +7,95 @@ import { ActivatedRoute, Params } from '@angular/router'; import { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; @Component({ - selector: 'app-contexts', - templateUrl: './contexts.component.html', - styleUrls: ['./contexts.component.css'] + selector: 'app-contexts', + templateUrl: './contexts.component.html', + styleUrls: ['./contexts.component.css'] }) -export class ContextsComponent implements AfterViewInit ,OnInit { - contextsDatasource: MatTableDataSource = new MatTableDataSource([]); +export class ContextsComponent implements AfterViewInit, OnInit { + contextsDatasource: MatTableDataSource = new MatTableDataSource([]); - colums: string[] = ['id', 'label', 'type', 'buttons']; + colums: string[] = ['id', 'label', 'type', 'buttons']; - @ViewChild(MatSort) sort: MatSort | undefined + @ViewChild(MatSort) sort: MatSort | undefined - constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { - } + constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { + } - ngOnInit() { - this.reload(); - } + ngOnInit() { + this.reload(); + } - ngAfterViewInit() { - if(this.sort) this.contextsDatasource.sort = this.sort; - } + ngAfterViewInit() { + if (this.sort) this.contextsDatasource.sort = this.sort; + } - reload() { - this.service.loadContexts((data: Context[]) => this.contextsDatasource.data = data); - } + reload() { + this.service.loadContexts((data: Context[]) => this.contextsDatasource.data = data); + } - applyFilter(event: Event) { - const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); - this.contextsDatasource.filter = filterValue; - } - - showParamsDialog(context: Context): void { - const dialogRef = this.dialog.open(ContextParamsDialog, { - data: context.parameters, - width: '80%' - }); - } + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); + this.contextsDatasource.filter = filterValue; + } + + showParamsDialog(context: Context): void { + const dialogRef = this.dialog.open(ContextParamsDialog, { + data: context.parameters, + width: '80%' + }); + } } @Component({ - selector: 'context-dialog', - templateUrl: 'context-params-dialog.html', - styleUrls: ['./contexts.component.css'] + selector: 'context-dialog', + templateUrl: 'context-params-dialog.html', + styleUrls: ['./contexts.component.css'] }) export class ContextParamsDialog { - - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { - } - - onNoClick(): void { - this.dialogRef.close(); - } + + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { + } + + onNoClick(): void { + this.dialogRef.close(); + } } @Component({ - selector: 'app-context-editor', - templateUrl: './context-viewer.component.html', - styleUrls: ['./contexts.component.css'] + selector: 'app-context-editor', + templateUrl: './context-viewer.component.html', + styleUrls: ['./contexts.component.css'] }) export class ContextViewerComponent implements OnInit { - - context?:Context - categories:ContextNode[] = []; - constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { - } + context?: Context + categories: ContextNode[] = []; - ngOnInit() { - this.route.queryParams.subscribe((params) => { - this.service.loadContext(params['id'], (data: Context) => this.context = data); - this.service.loadContextCategories(params['id'], (data:ContextNode[]) => this.categories = data); - }); - } + constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { + } - populateNode(level:number, node:ContextNode): void { - this.service.loadContextConcepts(level, node.id, (data:ContextNode[]) => { - node.populated = true; - node.childs = data - }); - } + ngOnInit() { + this.route.queryParams.subscribe((params) => { + this.service.loadContext(params['id'], (data: Context) => this.context = data); + this.service.loadContextCategories(params['id'], (data: ContextNode[]) => this.categories = data); + }); + } - showParamsDialog(params:ContextParam[] | undefined): void { - if (params) { - this.dialog.open(ContextParamsDialog, { - data: params, - width: '80%' - }); - } - } + populateNode(level: number, node: ContextNode): void { + this.service.loadContextConcepts(level, node.id, (data: ContextNode[]) => { + node.populated = true; + node.childs = data + }); + } + + showParamsDialog(params: ContextParam[] | undefined): void { + if (params) { + this.dialog.open(ContextParamsDialog, { + data: params, + width: '80%' + }); + } + } } diff --git a/frontends/dnet-is-application/src/app/dsm/dsm-add-api.dialog.html b/frontends/dnet-is-application/src/app/dsm/dsm-add-api.dialog.html index bc7fb221..1a633bc6 100644 --- a/frontends/dnet-is-application/src/app/dsm/dsm-add-api.dialog.html +++ b/frontends/dnet-is-application/src/app/dsm/dsm-add-api.dialog.html @@ -1,126 +1,126 @@
-

Add a new API

+

Add a new API

-
- - Protocol - - {{i}} - - This field is required - +
+ + Protocol + + {{i}} + + This field is required + - - - API Description - - - - Datasource (ID: {{data.dsId}}) - - + + + API Description + + + + Datasource (ID: {{data.dsId}}) + + - - Api ID (prefix) - - + + Api ID (prefix) + + - - Api ID (suffix) - - This field is - required - + + Api ID (suffix) + + This field is + required + - - Compatibility level - - {{i}} - - This field is - required - + + Compatibility level + + {{i}} + + This field is + required + - - Content description - - {{i}} - - This field is - required - - - + + Content description + + {{i}} + + This field is + required + + + - - - Configuration Parameters - - - - Base URL - - - Invalid URL - : This field is required - - + + + Configuration Parameters + + + + Base URL + + + Invalid URL + : This field is + required + + - - - - - {{selectedProtocol}} - {{p.label}} - (Comma separeted values) - (Numeric) - - - Invalid value - - - {{selectedProtocol}} - {{p.label}} (true/false) - - - true - false - - Invalid value - - + + + + + {{selectedProtocol}} - {{p.label}} + (Comma separeted values) + (Numeric) + + + Invalid value + + + {{selectedProtocol}} - {{p.label}} (true/false) + + + true + false + + Invalid value + + - - {{selectedProtocol}} - {{p.label}} (multiple choice) - - - 0 - TODO - 1 - TODO - 2 - TODO - 3 - TODO - - Invalid value - - + + {{selectedProtocol}} - {{p.label}} (multiple + choice) + + + 0 - TODO + 1 - TODO + 2 - TODO + 3 - TODO + + Invalid value + + - - XPath for Metatadata Identifier - - This field is - required - - - -
+ + XPath for Metatadata Identifier + + This field is + required + + + +
-
- - - - {{ addApiForm.errors?.['serverError'] }} - -
+
+ + + + {{ addApiForm.errors?.['serverError'] }} + +
\ No newline at end of file +--> diff --git a/frontends/dnet-is-application/src/app/dsm/dsm-browse-dialog.html b/frontends/dnet-is-application/src/app/dsm/dsm-browse-dialog.html index a4df34ea..a50e82d3 100644 --- a/frontends/dnet-is-application/src/app/dsm/dsm-browse-dialog.html +++ b/frontends/dnet-is-application/src/app/dsm/dsm-browse-dialog.html @@ -1,36 +1,39 @@

{{data.label}}

- - Filter - - - - - - - - - - - - - - - - - - - - - - -
Name - {{element.name}} - # datasources {{element.total}}
No data matching the filter "{{input.value}}"
- + + Filter + + + + + + + + + + + + + + + + + + + + + + +
+ Name + {{element.name}} + # + datasources {{element.total}}
No data matching the filter "{{input.value}}"
+
- +
diff --git a/frontends/dnet-is-application/src/app/dsm/dsm-results.component.html b/frontends/dnet-is-application/src/app/dsm/dsm-results.component.html index 48ec88b9..25d7cccf 100644 --- a/frontends/dnet-is-application/src/app/dsm/dsm-results.component.html +++ b/frontends/dnet-is-application/src/app/dsm/dsm-results.component.html @@ -1,92 +1,89 @@

Datasource Manager: Results

- Searching for {{field}} = "{{value}}" - Searching for "{{value}}" - Returning all the datasources + Searching for {{field}} = "{{value}}" + Searching for "{{value}}" + Returning all the datasources

- Filter in current page (Total: {{(results | searchFilter: filterText).length}}) - + Filter in current page (Total: {{(results | searchFilter: filterText).length}}) + - + - - {{r.name}} - {{r.otherName}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Id{{r.id}}
Type{{r.type}}
Namespace Prefix{{r.nsprefix}}
Collected From{{r.collectedFrom}}
URL{{r.websiteUrl}}
Organization(s) - - {{o.name}} - {{o.country}} -
-
-
APIs - -

- {{a.id}} - {{a.protocol}} - {{a.compliance}} - active - not active - -
- Last aggregation: - {{a.aggrDate}} - (total: {{a.aggrTotal}}) -
-

-
- -
Consent Terms of UseYES
Fulltext DownloadYES
-
+ + {{r.name}} + {{r.otherName}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Id{{r.id}}
Type{{r.type}}
Namespace Prefix{{r.nsprefix}}
Collected From{{r.collectedFrom}}
URL{{r.websiteUrl}}
Organization(s) + + {{o.name}} + {{o.country}} +
+
+
APIs + +

+ {{a.id}} + {{a.protocol}} + {{a.compliance}} + active + not active + +
+ Last aggregation: + {{a.aggrDate}} + (total: {{a.aggrTotal}}) +
+

+
+ +
Consent Terms of UseYES
Fulltext DownloadYES
+
@@ -97,11 +94,6 @@ - - \ No newline at end of file + + diff --git a/frontends/dnet-is-application/src/app/dsm/dsm-search.component.html b/frontends/dnet-is-application/src/app/dsm/dsm-search.component.html index 96609e55..c87284e8 100644 --- a/frontends/dnet-is-application/src/app/dsm/dsm-search.component.html +++ b/frontends/dnet-is-application/src/app/dsm/dsm-search.component.html @@ -1,18 +1,17 @@

Datasource Manager: Search

- - Search... - - + + Search... + +
-

Or browse using:

- +

Or browse using:

+
- diff --git a/frontends/dnet-is-application/src/app/dsm/dsm.component.css b/frontends/dnet-is-application/src/app/dsm/dsm.component.css index 5b48ec7e..382df3d7 100644 --- a/frontends/dnet-is-application/src/app/dsm/dsm.component.css +++ b/frontends/dnet-is-application/src/app/dsm/dsm.component.css @@ -1,20 +1,21 @@ .dsm-result-table { - margin-top: 1em; - border-collapse: collapse; + margin-top: 1em; + border-collapse: collapse; } .dsm-result-table tr:not(:last-child) { - border-bottom: 1pt solid lightgrey; + border-bottom: 1pt solid lightgrey; } -.dsm-result-table th, .dsm-result-table td{ - text-align: left; - font-size: 0.9em; - vertical-align: top; +.dsm-result-table th, +.dsm-result-table td { + text-align: left; + font-size: 0.9em; + vertical-align: top; } -.dsm-result-table td button { - font-size: 0.8em !important; - padding: 0 !important; - height: 2.5em !important; -} \ No newline at end of file +.dsm-result-table td button { + font-size: 0.8em !important; + padding: 0 !important; + height: 2.5em !important; +} diff --git a/frontends/dnet-is-application/src/app/dsm/dsm.component.ts b/frontends/dnet-is-application/src/app/dsm/dsm.component.ts index 563948b3..ffc3adc2 100644 --- a/frontends/dnet-is-application/src/app/dsm/dsm.component.ts +++ b/frontends/dnet-is-application/src/app/dsm/dsm.component.ts @@ -12,240 +12,240 @@ import { FormBuilder, FormControl, FormGroup, ValidatorFn, Validators } from '@a import { MatSelectChange } from '@angular/material/select'; @Component({ - selector: 'app-dsm-search', - templateUrl: './dsm-search.component.html', - styleUrls: ['./dsm.component.css'] + selector: 'app-dsm-search', + templateUrl: './dsm-search.component.html', + styleUrls: ['./dsm.component.css'] }) export class DsmSearchComponent implements OnInit { - searchText:string = ''; - browsableFields:KeyValue[] = []; + searchText: string = ''; + browsableFields: KeyValue[] = []; - constructor(public service: ISService, public route: ActivatedRoute, public router: Router, public dialog: MatDialog) { - } + constructor(public service: ISService, public route: ActivatedRoute, public router: Router, public dialog: MatDialog) { + } - ngOnInit() { - this.service.dsmBrowsableFields((data: KeyValue[]) => this.browsableFields = data); - } + ngOnInit() { + this.service.dsmBrowsableFields((data: KeyValue[]) => this.browsableFields = data); + } - search() { - this.router.navigate(['/dsm/results/0/50'], { - queryParams: { value: this.searchText } - }); - } + search() { + this.router.navigate(['/dsm/results/0/50'], { + queryParams: { value: this.searchText } + }); + } - browseField(field:string, label:string) { - const dialogRef = this.dialog.open(DsmBrowseDialog, { - data: { field: field, label: label }, - width: '80%' - }); - } + browseField(field: string, label: string) { + const dialogRef = this.dialog.open(DsmBrowseDialog, { + data: { field: field, label: label }, + width: '80%' + }); + } } @Component({ - selector: 'app-dsm-results', - templateUrl: './dsm-results.component.html', - styleUrls: ['./dsm.component.css'] + selector: 'app-dsm-results', + templateUrl: './dsm-results.component.html', + styleUrls: ['./dsm.component.css'] }) export class DsmResultsComponent implements OnInit { - filterText:string = ''; - results:Datasource[] = []; - nResults:number = 0; - currPage:number = 0; - nPages:number = 0; - pageSize:number = 0; - field?:string; - value:string = ''; - - constructor(public service: ISService, public route: ActivatedRoute, public router: Router, public dialog: MatDialog) { - } + filterText: string = ''; + results: Datasource[] = []; + nResults: number = 0; + currPage: number = 0; + nPages: number = 0; + pageSize: number = 0; + field?: string; + value: string = ''; - ngOnInit(): void { - combineLatest([ this.route.params, this.route.queryParams ], - (params: Params, queryParams: Params) => ({ params, queryParams }) - ).subscribe((res: { params: Params; queryParams: Params }) => { - const { params, queryParams} = res; - this.currPage = parseInt(params['page']); - this.pageSize = parseInt(params['size']); - this.field = queryParams['field']; - this.value = queryParams['value']; - this.reload(); - }); - } + constructor(public service: ISService, public route: ActivatedRoute, public router: Router, public dialog: MatDialog) { + } - reload() { - if (this.field) { - this.service.dsmSearchByField(this.field, this.value, this.currPage, this.pageSize, (page:Page) => { - this.results = page.content; - this.nResults = page.totalElements; - this.nPages = page.totalPages; - }); - } else { - this.service.dsmSearch(this.value, this.currPage, this.pageSize, (page:Page) => { - this.results = page.content; - this.nResults = page.totalElements; - this.nPages = page.totalPages; - }); - } - } + ngOnInit(): void { + combineLatest([this.route.params, this.route.queryParams], + (params: Params, queryParams: Params) => ({ params, queryParams }) + ).subscribe((res: { params: Params; queryParams: Params }) => { + const { params, queryParams } = res; + this.currPage = parseInt(params['page']); + this.pageSize = parseInt(params['size']); + this.field = queryParams['field']; + this.value = queryParams['value']; + this.reload(); + }); + } - changePage(event: PageEvent) { - let path = '/dsm/results/' + event.pageIndex + '/' + event.pageSize; - let qp = this.field ? - { field: this.field, value: this.value } : - { value: this.value }; - - this.router.navigate([path], { - queryParams: qp - }); - } + reload() { + if (this.field) { + this.service.dsmSearchByField(this.field, this.value, this.currPage, this.pageSize, (page: Page) => { + this.results = page.content; + this.nResults = page.totalElements; + this.nPages = page.totalPages; + }); + } else { + this.service.dsmSearch(this.value, this.currPage, this.pageSize, (page: Page) => { + this.results = page.content; + this.nResults = page.totalElements; + this.nPages = page.totalPages; + }); + } + } - openAddApiDialog(dsId:string, dsName:string) { - const dialogRef = this.dialog.open(DsmAddApiDialog, { - data: { dsId: dsId, dsName: dsName }, - width: '80%' - }); + changePage(event: PageEvent) { + let path = '/dsm/results/' + event.pageIndex + '/' + event.pageSize; + let qp = this.field ? + { field: this.field, value: this.value } : + { value: this.value }; - dialogRef.afterClosed().subscribe(result => { - if (result) this.reload(); - }); - } + this.router.navigate([path], { + queryParams: qp + }); + } + + openAddApiDialog(dsId: string, dsName: string) { + const dialogRef = this.dialog.open(DsmAddApiDialog, { + data: { dsId: dsId, dsName: dsName }, + width: '80%' + }); + + dialogRef.afterClosed().subscribe(result => { + if (result) this.reload(); + }); + } } @Component({ - selector: 'app-dsm-api', - templateUrl: './dsm-api.component.html', - styleUrls: ['./dsm.component.css'] + selector: 'app-dsm-api', + templateUrl: './dsm-api.component.html', + styleUrls: ['./dsm.component.css'] }) export class DsmApiComponent { } @Component({ - selector: 'dsm-browse-dialog', - templateUrl: 'dsm-browse-dialog.html', - styleUrls: ['./dsm.component.css'] + selector: 'dsm-browse-dialog', + templateUrl: 'dsm-browse-dialog.html', + styleUrls: ['./dsm.component.css'] }) export class DsmBrowseDialog implements OnInit { - datasource: MatTableDataSource = new MatTableDataSource([]); - colums: string[] = ['name', 'total']; - - @ViewChild(MatSort) sort: MatSort | undefined + datasource: MatTableDataSource = new MatTableDataSource([]); + colums: string[] = ['name', 'total']; - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { - } + @ViewChild(MatSort) sort: MatSort | undefined - ngOnInit(): void { - this.service.dsmBrowse(this.data.field, (res:BrowseTerm[]) => this.datasource.data = res); - } + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { + } - ngAfterViewInit() { - if (this.sort) this.datasource.sort = this.sort; - } + ngOnInit(): void { + this.service.dsmBrowse(this.data.field, (res: BrowseTerm[]) => this.datasource.data = res); + } - applyFilter(event: Event) { - const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); - this.datasource.filter = filterValue; - } + ngAfterViewInit() { + if (this.sort) this.datasource.sort = this.sort; + } - onNoClick(): void { - this.dialogRef.close(); - } + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); + this.datasource.filter = filterValue; + } + + onNoClick(): void { + this.dialogRef.close(); + } } @Component({ - selector: 'dsm-add-api-dialog', - templateUrl: './dsm-add-api.dialog.html', - styleUrls: ['./dsm.component.css'] + selector: 'dsm-add-api-dialog', + templateUrl: './dsm-add-api.dialog.html', + styleUrls: ['./dsm.component.css'] }) export class DsmAddApiDialog { - selectedProtocol:string = ''; + selectedProtocol: string = ''; - apiPrefix:string = ''; - paramPrefix:string = '__PARAM_'; + apiPrefix: string = ''; + paramPrefix: string = '__PARAM_'; - protocols:string[] = []; - compatibilityLevels:string[] = []; - contentDescTypes:string[] = []; + protocols: string[] = []; + compatibilityLevels: string[] = []; + contentDescTypes: string[] = []; - protocolsMap:any = {}; - selProtParams:ProtocolParam[] = []; + protocolsMap: any = {}; + selProtParams: ProtocolParam[] = []; - addApiForm:FormGroup = new FormGroup({ - apiIdSuffix: new FormControl('', [Validators.required]), - compatibility : new FormControl('', [Validators.required]), - contentdescription : new FormControl('', [Validators.required]), - protocol : new FormControl('', [Validators.required]), - baseurl : new FormControl('', [Validators.required, Validators.pattern('^(http|https|ftp|file|sftp|jar|mongodb):\/\/')]), - metadataIdentifierPath : new FormControl('', [Validators.required]) - }); + addApiForm: FormGroup = new FormGroup({ + apiIdSuffix: new FormControl('', [Validators.required]), + compatibility: new FormControl('', [Validators.required]), + contentdescription: new FormControl('', [Validators.required]), + protocol: new FormControl('', [Validators.required]), + baseurl: new FormControl('', [Validators.required, Validators.pattern('^(http|https|ftp|file|sftp|jar|mongodb):\/\/')]), + metadataIdentifierPath: new FormControl('', [Validators.required]) + }); - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { - this.apiPrefix = 'api_________::' + data.dsId + '::'; - this.service.dsmConf((conf:DsmConf) => { - this.compatibilityLevels = conf.compatibilityLevels; - this.contentDescTypes = conf.contentDescTypes; - conf.protocols.forEach((p) => { - this.protocols.push(p.id); - this.protocolsMap[p.id] = p.params; - }); - }); - } + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { + this.apiPrefix = 'api_________::' + data.dsId + '::'; + this.service.dsmConf((conf: DsmConf) => { + this.compatibilityLevels = conf.compatibilityLevels; + this.contentDescTypes = conf.contentDescTypes; + conf.protocols.forEach((p) => { + this.protocols.push(p.id); + this.protocolsMap[p.id] = p.params; + }); + }); + } - onChangeProtocol(e:MatSelectChange):void { - this.selectedProtocol = e.value; + onChangeProtocol(e: MatSelectChange): void { + this.selectedProtocol = e.value; - Object.keys(this.addApiForm.controls).forEach(k => { - if (k.startsWith(this.paramPrefix)) { - this.addApiForm.removeControl(k); - } - }); - - if (this.protocolsMap[e.value]) { - this.selProtParams = this.protocolsMap[e.value]; - this.selProtParams.forEach(p => { - let validations:ValidatorFn[] = []; - if (!p.optional) { validations.push(Validators.required); } - if (p.type == 'INT') { validations.push(Validators.pattern('^[0-9]*$')); } - this.addApiForm.addControl(this.paramPrefix + p.name, new FormControl('', validations)); - }); - } else { - this.selProtParams = []; - } - } + Object.keys(this.addApiForm.controls).forEach(k => { + if (k.startsWith(this.paramPrefix)) { + this.addApiForm.removeControl(k); + } + }); - onSubmit():void { - let api:ApiInsert = { - id: this.apiPrefix + this.addApiForm.get('apiIdSuffix')?.value, - protocol: this.selectedProtocol, - datasource: this.data.dsId, - contentdescription: this.addApiForm.get('contentdescription')?.value, - removable: true, - compatibility: this.addApiForm.get('compatibility')?.value, - metadataIdentifierPath: this.addApiForm.get('metadataIdentifierPath')?.value, - baseurl: this.addApiForm.get('baseurl')?.value, - apiParams : [] - }; - - Object.keys(this.addApiForm.controls).forEach(k => { - if (k.startsWith(this.paramPrefix)) { - let val = this.addApiForm.get(k)?.value; - if (val) { - api.apiParams.push({ - param: k.substring(this.paramPrefix.length), - value: (Array.isArray(val)) ? val.join() : val - }); - } - } - }); - console.log(api); - //this.service.dsmAddApi(api, (data: void) => this.dialogRef.close(1), this.metadataForm); - } - - onNoClick(): void { - this.dialogRef.close(); - } + if (this.protocolsMap[e.value]) { + this.selProtParams = this.protocolsMap[e.value]; + this.selProtParams.forEach(p => { + let validations: ValidatorFn[] = []; + if (!p.optional) { validations.push(Validators.required); } + if (p.type == 'INT') { validations.push(Validators.pattern('^[0-9]*$')); } + this.addApiForm.addControl(this.paramPrefix + p.name, new FormControl('', validations)); + }); + } else { + this.selProtParams = []; + } + } + + onSubmit(): void { + let api: ApiInsert = { + id: this.apiPrefix + this.addApiForm.get('apiIdSuffix')?.value, + protocol: this.selectedProtocol, + datasource: this.data.dsId, + contentdescription: this.addApiForm.get('contentdescription')?.value, + removable: true, + compatibility: this.addApiForm.get('compatibility')?.value, + metadataIdentifierPath: this.addApiForm.get('metadataIdentifierPath')?.value, + baseurl: this.addApiForm.get('baseurl')?.value, + apiParams: [] + }; + + Object.keys(this.addApiForm.controls).forEach(k => { + if (k.startsWith(this.paramPrefix)) { + let val = this.addApiForm.get(k)?.value; + if (val) { + api.apiParams.push({ + param: k.substring(this.paramPrefix.length), + value: (Array.isArray(val)) ? val.join() : val + }); + } + } + }); + console.log(api); + //this.service.dsmAddApi(api, (data: void) => this.dialogRef.close(1), this.metadataForm); + } + + onNoClick(): void { + this.dialogRef.close(); + } } diff --git a/frontends/dnet-is-application/src/app/info/info.component.html b/frontends/dnet-is-application/src/app/info/info.component.html index 89bb6a4f..d26c0a2f 100644 --- a/frontends/dnet-is-application/src/app/info/info.component.html +++ b/frontends/dnet-is-application/src/app/info/info.component.html @@ -1,66 +1,66 @@

Container Info

- Filter - + Filter +
-
-

{{section.name}}

- +
+

{{section.name}}

+
- - - - + + + + - - - - + + + + - + - - - - -
Property {{element.k}} Property {{element.k}} Value {{element.v}} Value {{element.v}}
No data matching the filter "{{input.value}}"
-
+ + + No data matching the filter "{{input.value}}" + + +
-

Modules

- +

Modules

+
- - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - -
Group {{element.group}} Group {{element.group}} Name {{element.name}} Name {{element.name}} Versions {{v}}
Versions {{v}}
Files {{f}}
Files {{f}}
No data matching the filter "{{input.value}}"
-
\ No newline at end of file + + + No data matching the filter "{{input.value}}" + + + diff --git a/frontends/dnet-is-application/src/app/info/info.component.ts b/frontends/dnet-is-application/src/app/info/info.component.ts index 2af2453d..7623c041 100644 --- a/frontends/dnet-is-application/src/app/info/info.component.ts +++ b/frontends/dnet-is-application/src/app/info/info.component.ts @@ -4,42 +4,42 @@ import { MatTableDataSource } from '@angular/material/table'; import { Module } from '../common/is.model'; export interface KeyValueDatasource { - name: string; - datasource: MatTableDataSource; + name: string; + datasource: MatTableDataSource; } @Component({ - selector: 'app-info', - templateUrl: './info.component.html', - styleUrls: ['./info.component.css'] + selector: 'app-info', + templateUrl: './info.component.html', + styleUrls: ['./info.component.css'] }) export class InfoComponent { - - kvDatasources:KeyValueDatasource[] = []; - moduleDatasource:MatTableDataSource = new MatTableDataSource([]); - displayedKVColumns: string[] = ['k', 'v']; - displayedModuleColumns: string[] = ['group', 'name', 'versions', 'files']; - - constructor(public service:ISService) { - this.service.loadInfo((data:any[]) => { - data.forEach(section => { - if (section['name'] == 'Modules') { - this.moduleDatasource.data = section['data']; - } else { - this.kvDatasources.push({ - name: section['name'], - datasource : new MatTableDataSource(section['data']) - }); - } - }) - }); - } + kvDatasources: KeyValueDatasource[] = []; + moduleDatasource: MatTableDataSource = new MatTableDataSource([]); - applyFilter(event: Event) { - const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); - this.kvDatasources.forEach(s => s.datasource.filter = filterValue) - this.moduleDatasource.filter = filterValue; - } + displayedKVColumns: string[] = ['k', 'v']; + displayedModuleColumns: string[] = ['group', 'name', 'versions', 'files']; + + constructor(public service: ISService) { + this.service.loadInfo((data: any[]) => { + data.forEach(section => { + if (section['name'] == 'Modules') { + this.moduleDatasource.data = section['data']; + } else { + this.kvDatasources.push({ + name: section['name'], + datasource: new MatTableDataSource(section['data']) + }); + } + }) + }); + } + + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); + this.kvDatasources.forEach(s => s.datasource.filter = filterValue) + this.moduleDatasource.filter = filterValue; + } } diff --git a/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.css b/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.css index b0c933e2..a5f5b119 100644 --- a/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.css +++ b/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.css @@ -1,37 +1,45 @@ .menu-count { - padding-top: 0.1em; - padding-bottom: 0.1em; - padding-left: 0.4em; - padding-right: 0.4em; - border-radius: 1em; - color: #fff; - background-color:cornflowerblue; - text-align: center; + padding-top: 0.1em; + padding-bottom: 0.1em; + padding-left: 0.4em; + padding-right: 0.4em; + border-radius: 1em; + color: #fff; + background-color: cornflowerblue; + text-align: center; } -.collapse-buttons { text-align: right; } -.collapse-buttons button { font-size: 0.6em; } -.mat-expansion-panel-spacing { margin: 0; } +.collapse-buttons { + text-align: right; +} + +.collapse-buttons button { + font-size: 0.6em; +} + +.mat-expansion-panel-spacing { + margin: 0; +} .menu-item { - padding-top: 0.3em; - padding-bottom: 0.3em; - padding-left: 7%; - padding-right: 3%; - font-size: 0.9em; - width: 90%; - color: #696969; - text-decoration: none !important; - display: inline-block; + padding-top: 0.3em; + padding-bottom: 0.3em; + padding-left: 7%; + padding-right: 3%; + font-size: 0.9em; + width: 90%; + color: #696969; + text-decoration: none !important; + display: inline-block; } .menu-item:hover { - color: #999; - background-color: #eaeaea; + color: #999; + background-color: #eaeaea; } .menu-item .badge-label { - font-size: 0.6em; - float: right; - width: 2em; -} \ No newline at end of file + font-size: 0.6em; + float: right; + width: 2em; +} diff --git a/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.html b/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.html index b55acbfa..6d70e2f4 100644 --- a/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.html +++ b/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.html @@ -1,80 +1,80 @@
- - + +
- - - Home - - Home - - - - Datasources - -
- Search -
-
+ + + Home + + Home + + + + Datasources + +
+ Search +
+
- - - Simple Resources - - - + + + Simple Resources + + + - - - Advanced Resources - - - + + + Advanced Resources + + + - - - Tools - - - + + + Tools + + + - - - Logs - - - + + + Logs + + + - - - Info - - - + + + Info + + +
diff --git a/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.ts b/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.ts index a4452d44..5edc85c6 100644 --- a/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.ts +++ b/frontends/dnet-is-application/src/app/main-menu-panels/main-menu-panels.component.ts @@ -5,18 +5,18 @@ import { MatAccordion } from '@angular/material/expansion'; @Component({ - selector: 'app-main-menu-panels', - templateUrl: './main-menu-panels.component.html', - styleUrls: ['./main-menu-panels.component.css'] + selector: 'app-main-menu-panels', + templateUrl: './main-menu-panels.component.html', + styleUrls: ['./main-menu-panels.component.css'] }) export class MainMenuPanelsComponent { - @ViewChild(MatAccordion) - accordion!:MatAccordion; + @ViewChild(MatAccordion) + accordion!: MatAccordion; - resTypes:ResourceType[] = []; + resTypes: ResourceType[] = []; - constructor(public service:ISService) { - this.service.loadResourceTypes((data:ResourceType[]) => this.resTypes = data); - } + constructor(public service: ISService) { + this.service.loadResourceTypes((data: ResourceType[]) => this.resTypes = data); + } } diff --git a/frontends/dnet-is-application/src/app/mdstores/add-mdstore-dialog.html b/frontends/dnet-is-application/src/app/mdstores/add-mdstore-dialog.html index 304cbd67..95acf790 100644 --- a/frontends/dnet-is-application/src/app/mdstores/add-mdstore-dialog.html +++ b/frontends/dnet-is-application/src/app/mdstores/add-mdstore-dialog.html @@ -48,4 +48,4 @@ - \ No newline at end of file + diff --git a/frontends/dnet-is-application/src/app/mdstores/mdstore-inspector.component.html b/frontends/dnet-is-application/src/app/mdstores/mdstore-inspector.component.html index 46c591e3..c7d4c7cf 100644 --- a/frontends/dnet-is-application/src/app/mdstores/mdstore-inspector.component.html +++ b/frontends/dnet-is-application/src/app/mdstores/mdstore-inspector.component.html @@ -82,4 +82,4 @@
{{rec.body}}
- \ No newline at end of file + diff --git a/frontends/dnet-is-application/src/app/mdstores/mdstores-versions-dialog.html b/frontends/dnet-is-application/src/app/mdstores/mdstores-versions-dialog.html index afa3fa8c..ae79fe42 100644 --- a/frontends/dnet-is-application/src/app/mdstores/mdstores-versions-dialog.html +++ b/frontends/dnet-is-application/src/app/mdstores/mdstores-versions-dialog.html @@ -42,4 +42,4 @@
-
\ No newline at end of file + diff --git a/frontends/dnet-is-application/src/app/mdstores/mdstores.component.css b/frontends/dnet-is-application/src/app/mdstores/mdstores.component.css index 2b67c4b5..f20421d3 100644 --- a/frontends/dnet-is-application/src/app/mdstores/mdstores.component.css +++ b/frontends/dnet-is-application/src/app/mdstores/mdstores.component.css @@ -31,4 +31,4 @@ width: 1em; height: 1em; font-size: 1em; -} \ No newline at end of file +} diff --git a/frontends/dnet-is-application/src/app/mdstores/mdstores.component.html b/frontends/dnet-is-application/src/app/mdstores/mdstores.component.html index 2907e810..561a52c5 100644 --- a/frontends/dnet-is-application/src/app/mdstores/mdstores.component.html +++ b/frontends/dnet-is-application/src/app/mdstores/mdstores.component.html @@ -58,4 +58,4 @@ - \ No newline at end of file + diff --git a/frontends/dnet-is-application/src/app/mdstores/mdstores.component.ts b/frontends/dnet-is-application/src/app/mdstores/mdstores.component.ts index e36dfef6..030add74 100644 --- a/frontends/dnet-is-application/src/app/mdstores/mdstores.component.ts +++ b/frontends/dnet-is-application/src/app/mdstores/mdstores.component.ts @@ -174,4 +174,4 @@ export class AddMDStoreDialog { onNoClick(): void { this.dialogRef.close(); } -} \ No newline at end of file +} diff --git a/frontends/dnet-is-application/src/app/protocols/protocols.component.html b/frontends/dnet-is-application/src/app/protocols/protocols.component.html index 4cb904dd..c69e779a 100644 --- a/frontends/dnet-is-application/src/app/protocols/protocols.component.html +++ b/frontends/dnet-is-application/src/app/protocols/protocols.component.html @@ -1,45 +1,45 @@

Harvesting Protocols

-

{{prot.protocol}}

+

{{prot.protocol}}

- +
- - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + -   - +   + - - - - -
Name {{element.name}} Name {{element.name}} Label {{element.label}} Label {{element.label}} Type {{element.type}} Type {{element.type}} Required - - Required + + Has Sel Function - - Has Sel Function + +
No parameters
-
\ No newline at end of file + + + No parameters + + + diff --git a/frontends/dnet-is-application/src/app/protocols/protocols.component.ts b/frontends/dnet-is-application/src/app/protocols/protocols.component.ts index 788cb85e..3f156840 100644 --- a/frontends/dnet-is-application/src/app/protocols/protocols.component.ts +++ b/frontends/dnet-is-application/src/app/protocols/protocols.component.ts @@ -4,28 +4,28 @@ import { MatTableDataSource } from '@angular/material/table'; import { Protocol, ProtocolParam } from '../common/is.model'; export interface ProtocolDatasource { - protocol: string; - datasource: MatTableDataSource; + protocol: string; + datasource: MatTableDataSource; } @Component({ - selector: 'app-protocols', - templateUrl: './protocols.component.html', - styleUrls: ['./protocols.component.css'] + selector: 'app-protocols', + templateUrl: './protocols.component.html', + styleUrls: ['./protocols.component.css'] }) export class ProtocolsComponent { - protDatasources: ProtocolDatasource[] = []; - colums: string[] = ['name', 'label', 'type', 'optional', 'hasSelFunction']; + protDatasources: ProtocolDatasource[] = []; + colums: string[] = ['name', 'label', 'type', 'optional', 'hasSelFunction']; - constructor(public service: ISService) { - this.service.loadProtocols((data: Protocol[]) => - data.forEach(p => { - this.protDatasources.push({ - protocol: p.id, - datasource: new MatTableDataSource(p.params) - }); - }) - ); - } + constructor(public service: ISService) { + this.service.loadProtocols((data: Protocol[]) => + data.forEach(p => { + this.protDatasources.push({ + protocol: p.id, + datasource: new MatTableDataSource(p.params) + }); + }) + ); + } } diff --git a/frontends/dnet-is-application/src/app/resources/content-dialog.html b/frontends/dnet-is-application/src/app/resources/content-dialog.html index fec72d7b..be486906 100644 --- a/frontends/dnet-is-application/src/app/resources/content-dialog.html +++ b/frontends/dnet-is-application/src/app/resources/content-dialog.html @@ -1,27 +1,27 @@
-

Edit content

+

Edit content

-
+
- - ID - - + + ID + + - - Content ({{data.contentType}}) - - This field is required - -
+ + Content ({{data.contentType}}) + + This field is required + +
-
- - - - {{ contentForm.errors?.['serverError'] }} - -
+
+ + + + {{ contentForm.errors?.['serverError'] }} + +
diff --git a/frontends/dnet-is-application/src/app/resources/metadata-dialog.html b/frontends/dnet-is-application/src/app/resources/metadata-dialog.html index 4a4761e9..1c391d15 100644 --- a/frontends/dnet-is-application/src/app/resources/metadata-dialog.html +++ b/frontends/dnet-is-application/src/app/resources/metadata-dialog.html @@ -1,36 +1,36 @@
-

Edit metadata

+

Edit metadata

-
+
- - ID - - + + ID + + - - Type - - + + Type + + - - Name - - This field is required - + + Name + + This field is required + - - Description - - -
+ + Description + + +
-
- - - - {{ metadataForm.errors?.['serverError'] }} - -
+
+ + + + {{ metadataForm.errors?.['serverError'] }} + +
diff --git a/frontends/dnet-is-application/src/app/resources/new-dialog.html b/frontends/dnet-is-application/src/app/resources/new-dialog.html index a9b95ca2..4ed97939 100644 --- a/frontends/dnet-is-application/src/app/resources/new-dialog.html +++ b/frontends/dnet-is-application/src/app/resources/new-dialog.html @@ -1,33 +1,33 @@
-

New Resource

+

New Resource

-
+
- - Name - - This field is required - + + Name + + This field is required + - - Description - - + + Description + + - - Content ({{data.contentType}}) - - This field is required - + + Content ({{data.contentType}}) + + This field is required + -
+
-
- - - - {{ newResourceForm.errors?.['serverError'] }} - -
+
+ + + + {{ newResourceForm.errors?.['serverError'] }} + +
diff --git a/frontends/dnet-is-application/src/app/resources/resources.component.html b/frontends/dnet-is-application/src/app/resources/resources.component.html index eae86cdb..426ffefc 100644 --- a/frontends/dnet-is-application/src/app/resources/resources.component.html +++ b/frontends/dnet-is-application/src/app/resources/resources.component.html @@ -3,27 +3,26 @@ - Filter (Total: {{(resources | searchFilter: searchText).length}}) - + Filter (Total: {{(resources | searchFilter: searchText).length}}) + - - {{r.name}} {{type.contentType}} - - -

{{r.description}}

-

- Id: {{r.id}}
Creation date: {{r.creationDate}}
Modification date: {{r.modificationDate}} -

-
- - - - raw content - - -
- - - + + {{r.name}} {{type.contentType}} + + +

{{r.description}}

+

+ Id: {{r.id}}
Creation date: {{r.creationDate}}
Modification date: + {{r.modificationDate}} +

+
+ + + + raw content + + + diff --git a/frontends/dnet-is-application/src/app/resources/resources.component.ts b/frontends/dnet-is-application/src/app/resources/resources.component.ts index 1f4b93bc..c801a65a 100644 --- a/frontends/dnet-is-application/src/app/resources/resources.component.ts +++ b/frontends/dnet-is-application/src/app/resources/resources.component.ts @@ -6,159 +6,159 @@ import { ResourceType, SimpleResource } from '../common/is.model'; import { FormControl, FormGroup } from '@angular/forms'; @Component({ - selector: 'app-resources', - templateUrl: './resources.component.html', - styleUrls: ['./resources.component.css'] + selector: 'app-resources', + templateUrl: './resources.component.html', + styleUrls: ['./resources.component.css'] }) export class ResourcesComponent implements OnInit { - typeId:string = ''; - type:ResourceType = { id: '', name: '', contentType: '', count: 0, simple: true }; - resources:SimpleResource[] = []; - searchText:string = ''; + typeId: string = ''; + type: ResourceType = { id: '', name: '', contentType: '', count: 0, simple: true }; + resources: SimpleResource[] = []; + searchText: string = ''; - constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { - } + constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { + } - ngOnInit() { - this.route.params.subscribe(params => { - this.typeId = params['type']; - this.service.loadResourceType(this.typeId, (data: ResourceType) => this.type = data); - this.reload() - }); - } + ngOnInit() { + this.route.params.subscribe(params => { + this.typeId = params['type']; + this.service.loadResourceType(this.typeId, (data: ResourceType) => this.type = data); + this.reload() + }); + } - reload() { - if (this.typeId) { - this.service.loadSimpleResources(this.typeId, (data: SimpleResource[]) => this.resources = data); - } - } + reload() { + if (this.typeId) { + this.service.loadSimpleResources(this.typeId, (data: SimpleResource[]) => this.resources = data); + } + } - openNewDialog(): void { - const dialogRef = this.dialog.open(ResCreateNewDialog, { - data: this.type, - width: '80%' - }); + openNewDialog(): void { + const dialogRef = this.dialog.open(ResCreateNewDialog, { + data: this.type, + width: '80%' + }); - dialogRef.afterClosed().subscribe(result => { - if (result) this.reload(); - }); - } + dialogRef.afterClosed().subscribe(result => { + if (result) this.reload(); + }); + } - openMetadataDialog(r:SimpleResource): void { - const dialogRef = this.dialog.open(ResMetadataDialog, { - data: r, - width: '80%' - }); + openMetadataDialog(r: SimpleResource): void { + const dialogRef = this.dialog.open(ResMetadataDialog, { + data: r, + width: '80%' + }); - dialogRef.afterClosed().subscribe(result => { - if (result) this.reload(); - }); - } + dialogRef.afterClosed().subscribe(result => { + if (result) this.reload(); + }); + } - openContentDialog(r:SimpleResource): void { - this.service.loadSimpleResourceContent(r.id, (data: string) => { - const dialogRef = this.dialog.open(ResContentDialog, { - data: { - id: r.id, - contentType: this.type.contentType, - content: data - }, - width: '80%' - }); - - dialogRef.afterClosed().subscribe(result => { - if (result) this.reload(); - }); - }); - } + openContentDialog(r: SimpleResource): void { + this.service.loadSimpleResourceContent(r.id, (data: string) => { + const dialogRef = this.dialog.open(ResContentDialog, { + data: { + id: r.id, + contentType: this.type.contentType, + content: data + }, + width: '80%' + }); - deleteResource(r:SimpleResource) { - if (confirm('Are you sure?')) { - this.service.deleteSimpleResource(r.id, (data: void) => this.reload()); - } - } + dialogRef.afterClosed().subscribe(result => { + if (result) this.reload(); + }); + }); + } + + deleteResource(r: SimpleResource) { + if (confirm('Are you sure?')) { + this.service.deleteSimpleResource(r.id, (data: void) => this.reload()); + } + } } @Component({ - selector: 'res-content-dialog', - templateUrl: 'content-dialog.html', - styleUrls: ['resources.component.css'] + selector: 'res-content-dialog', + templateUrl: 'content-dialog.html', + styleUrls: ['resources.component.css'] }) export class ResContentDialog { - contentFormControl = new FormControl(''); - - contentForm = new FormGroup({ - content : this.contentFormControl - }); + contentFormControl = new FormControl(''); - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { - this.contentFormControl.setValue(data.content); - } + contentForm = new FormGroup({ + content: this.contentFormControl + }); - onSubmit():void { - let content = this.contentFormControl.value; - if (content) { - this.service.saveSimpleResourceContent(this.data.id, content, (data: void) => this.dialogRef.close(1), this.contentForm) - } - } - - onNoClick(): void { - this.dialogRef.close(); - } + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { + this.contentFormControl.setValue(data.content); + } + + onSubmit(): void { + let content = this.contentFormControl.value; + if (content) { + this.service.saveSimpleResourceContent(this.data.id, content, (data: void) => this.dialogRef.close(1), this.contentForm) + } + } + + onNoClick(): void { + this.dialogRef.close(); + } } @Component({ - selector: 'res-metadata-dialog', - templateUrl: 'metadata-dialog.html', - styleUrls: ['resources.component.css'] + selector: 'res-metadata-dialog', + templateUrl: 'metadata-dialog.html', + styleUrls: ['resources.component.css'] }) export class ResMetadataDialog { - metadataForm = new FormGroup({ - name: new FormControl(''), - description : new FormControl('') - }); + metadataForm = new FormGroup({ + name: new FormControl(''), + description: new FormControl('') + }); - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { - this.metadataForm.get('name')?.setValue(data.name); - if (data.description) { - this.metadataForm.get('description')?.setValue(data.description); - } - } + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { + this.metadataForm.get('name')?.setValue(data.name); + if (data.description) { + this.metadataForm.get('description')?.setValue(data.description); + } + } - onSubmit():void { - const res = Object.assign({}, this.data, this.metadataForm.value); - this.service.saveSimpleResourceMedatata(res, (data: void) => this.dialogRef.close(1), this.metadataForm); - } - - onNoClick(): void { - this.dialogRef.close(); - } + onSubmit(): void { + const res = Object.assign({}, this.data, this.metadataForm.value); + this.service.saveSimpleResourceMedatata(res, (data: void) => this.dialogRef.close(1), this.metadataForm); + } + + onNoClick(): void { + this.dialogRef.close(); + } } @Component({ - selector: 'res-new-dialog', - templateUrl: 'new-dialog.html', - styleUrls: ['resources.component.css'] + selector: 'res-new-dialog', + templateUrl: 'new-dialog.html', + styleUrls: ['resources.component.css'] }) export class ResCreateNewDialog { - newResourceForm = new FormGroup({ - name: new FormControl(''), - description : new FormControl(''), - content : new FormControl('') - }); + newResourceForm = new FormGroup({ + name: new FormControl(''), + description: new FormControl(''), + content: new FormControl('') + }); - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) {} - - onSubmit():void { - let name:string = this.newResourceForm.get('name')?.value!; - let type:string = this.data.id!; - let description:string = this.newResourceForm.get('description')?.value!; - let content:string = this.newResourceForm.get('content')?.value!; - - this.service.addSimpleResource(name, type, description, content, (data: void) => this.dialogRef.close(1), this.newResourceForm); - } - onNoClick(): void { - this.dialogRef.close(); - } -} \ No newline at end of file + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { } + + onSubmit(): void { + let name: string = this.newResourceForm.get('name')?.value!; + let type: string = this.data.id!; + let description: string = this.newResourceForm.get('description')?.value!; + let content: string = this.newResourceForm.get('content')?.value!; + + this.service.addSimpleResource(name, type, description, content, (data: void) => this.dialogRef.close(1), this.newResourceForm); + } + onNoClick(): void { + this.dialogRef.close(); + } +} diff --git a/frontends/dnet-is-application/src/app/vocabularies/voc-dialog.html b/frontends/dnet-is-application/src/app/vocabularies/voc-dialog.html index 7b63b8a6..28c2ba36 100644 --- a/frontends/dnet-is-application/src/app/vocabularies/voc-dialog.html +++ b/frontends/dnet-is-application/src/app/vocabularies/voc-dialog.html @@ -1,32 +1,32 @@
-

Edit vocabulary

-

New vocabulary

+

Edit vocabulary

+

New vocabulary

-
- - ID - - This field is required - +
+ + ID + + This field is required + - - Name - - This field is required - + + Name + + This field is required + - - Description - - -
+ + Description + + +
-
- - - - {{ vocForm.errors?.['serverError'] }} - -
+
+ + + + {{ vocForm.errors?.['serverError'] }} + +
-
\ No newline at end of file + diff --git a/frontends/dnet-is-application/src/app/vocabularies/voc-term-dialog.html b/frontends/dnet-is-application/src/app/vocabularies/voc-term-dialog.html index 51834546..232ae2c2 100644 --- a/frontends/dnet-is-application/src/app/vocabularies/voc-term-dialog.html +++ b/frontends/dnet-is-application/src/app/vocabularies/voc-term-dialog.html @@ -1,82 +1,76 @@
-

Edit term

-

New term

+

Edit term

+

New term

-
- - Code - - This field is required - +
+ + Code + + This field is required + - - Name - - This field is required - + + Name + + This field is required + - - Encoding - - + + Encoding + + - +
- - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + - -
Term{{element.term}} - - New term - - - Encoding{{element.encoding}} - - New encoding - - - Term{{element.term}} + + New term + + + - - - -
No synonyms
Encoding{{element.encoding}} + + New encoding + + +
+ + + + + + + + + - + + No synonyms + + + + + + -
+
-
- - - - {{ termForm.errors?.['serverError'] }} - -
+
+ + + + {{ termForm.errors?.['serverError'] }} + +
diff --git a/frontends/dnet-is-application/src/app/vocabularies/vocabularies.component.html b/frontends/dnet-is-application/src/app/vocabularies/vocabularies.component.html index 54e833d4..328544fb 100644 --- a/frontends/dnet-is-application/src/app/vocabularies/vocabularies.component.html +++ b/frontends/dnet-is-application/src/app/vocabularies/vocabularies.component.html @@ -3,42 +3,45 @@ - Filter - + Filter + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - + + + +
Id - {{element.id}} - Id + + {{element.id}} + Name {{element.name}} Name + {{element.name}} Description {{element.description}} Description {{element.description}} - - - + + +
No data matching the filter "{{input.value}}"
No data matching the filter "{{input.value}}"
diff --git a/frontends/dnet-is-application/src/app/vocabularies/vocabularies.component.ts b/frontends/dnet-is-application/src/app/vocabularies/vocabularies.component.ts index f9bb1aec..0d37f421 100644 --- a/frontends/dnet-is-application/src/app/vocabularies/vocabularies.component.ts +++ b/frontends/dnet-is-application/src/app/vocabularies/vocabularies.component.ts @@ -8,238 +8,238 @@ import { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dial import { FormControl, FormGroup } from '@angular/forms'; @Component({ - selector: 'app-vocabularies', - templateUrl: './vocabularies.component.html', - styleUrls: ['./vocabularies.component.css'] + selector: 'app-vocabularies', + templateUrl: './vocabularies.component.html', + styleUrls: ['./vocabularies.component.css'] }) export class VocabulariesComponent implements OnInit, AfterViewInit { - vocsDatasource: MatTableDataSource = new MatTableDataSource([]); + vocsDatasource: MatTableDataSource = new MatTableDataSource([]); - colums: string[] = ['id', 'name', 'description', 'buttons']; + colums: string[] = ['id', 'name', 'description', 'buttons']; - @ViewChild(MatSort) sort: MatSort | undefined + @ViewChild(MatSort) sort: MatSort | undefined - constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { - } + constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { + } - ngOnInit() { - this.reload(); - } + ngOnInit() { + this.reload(); + } - ngAfterViewInit() { - if (this.sort) this.vocsDatasource.sort = this.sort; - } + ngAfterViewInit() { + if (this.sort) this.vocsDatasource.sort = this.sort; + } - reload() { - this.service.loadVocabularies((data: Vocabulary[]) => this.vocsDatasource.data = data); - } + reload() { + this.service.loadVocabularies((data: Vocabulary[]) => this.vocsDatasource.data = data); + } - applyFilter(event: Event) { - const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); - this.vocsDatasource.filter = filterValue; - } + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); + this.vocsDatasource.filter = filterValue; + } - newVocabularyDialog(): void { - const dialogRef = this.dialog.open(VocDialog, { - data: { id: '', name: '', description: '' }, - width: '80%' - }); + newVocabularyDialog(): void { + const dialogRef = this.dialog.open(VocDialog, { + data: { id: '', name: '', description: '' }, + width: '80%' + }); - dialogRef.afterClosed().subscribe(result => { - if (result) this.reload(); - }); - } + dialogRef.afterClosed().subscribe(result => { + if (result) this.reload(); + }); + } - editVocabularyDialog(vocabulary: Vocabulary): void { - const dialogRef = this.dialog.open(VocDialog, { - data: vocabulary, - width: '80%' - }); + editVocabularyDialog(vocabulary: Vocabulary): void { + const dialogRef = this.dialog.open(VocDialog, { + data: vocabulary, + width: '80%' + }); - dialogRef.afterClosed().subscribe(result => { - if (result) this.reload(); - }); - } + dialogRef.afterClosed().subscribe(result => { + if (result) this.reload(); + }); + } - deleteVocabulary(vocabulary: Vocabulary): void { - if (confirm("Are you sure?")) { - this.service.deleteVocabulary(vocabulary.id, (data: void) => this.reload()); - } - } + deleteVocabulary(vocabulary: Vocabulary): void { + if (confirm("Are you sure?")) { + this.service.deleteVocabulary(vocabulary.id, (data: void) => this.reload()); + } + } } @Component({ - selector: 'app-vocabulary-editor', - templateUrl: './vocabulary-editor.component.html', - styleUrls: ['./vocabularies.component.css'] + selector: 'app-vocabulary-editor', + templateUrl: './vocabulary-editor.component.html', + styleUrls: ['./vocabularies.component.css'] }) export class VocabularyEditorComponent implements OnInit, AfterViewInit { - voc?: Vocabulary + voc?: Vocabulary - termsDatasource: MatTableDataSource = new MatTableDataSource([]); - colums: string[] = ['code', 'name', 'encoding', 'synonyms', 'buttons']; + termsDatasource: MatTableDataSource = new MatTableDataSource([]); + colums: string[] = ['code', 'name', 'encoding', 'synonyms', 'buttons']; - @ViewChild(MatSort) sort: MatSort | undefined + @ViewChild(MatSort) sort: MatSort | undefined - constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { - } + constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { + } - ngOnInit() { - this.reload(); - } + ngOnInit() { + this.reload(); + } - ngAfterViewInit() { - if (this.sort) this.termsDatasource.sort = this.sort; - } + ngAfterViewInit() { + if (this.sort) this.termsDatasource.sort = this.sort; + } - reload() { - this.route.queryParams.subscribe((params) => { - this.service.loadVocabulary(params['id'], (data: Vocabulary) => this.voc = data); - this.service.loadVocabularyTerms(params['id'], (data: VocabularyTerm[]) => this.termsDatasource.data = data); - }); - } + reload() { + this.route.queryParams.subscribe((params) => { + this.service.loadVocabulary(params['id'], (data: Vocabulary) => this.voc = data); + this.service.loadVocabularyTerms(params['id'], (data: VocabularyTerm[]) => this.termsDatasource.data = data); + }); + } - applyFilter(event: Event) { - const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); - this.termsDatasource.filter = filterValue; - } + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); + this.termsDatasource.filter = filterValue; + } - newVocabularyTermDialog(): void { - if (this.voc?.id) { - const dialogRef = this.dialog.open(VocTermDialog, { - data: { vocabulary: this.voc.id, code: '', name: '', encoding: 'OPENAIRE', synonyms: []}, - width: '80%' - }); + newVocabularyTermDialog(): void { + if (this.voc?.id) { + const dialogRef = this.dialog.open(VocTermDialog, { + data: { vocabulary: this.voc.id, code: '', name: '', encoding: 'OPENAIRE', synonyms: [] }, + width: '80%' + }); - dialogRef.afterClosed().subscribe(result => { - if (result) this.reload(); - }); - } + dialogRef.afterClosed().subscribe(result => { + if (result) this.reload(); + }); + } - } + } - editVocabularyTermDialog(term: VocabularyTerm): void { - const dialogRef = this.dialog.open(VocTermDialog, { - data: term, - width: '80%' - }); + editVocabularyTermDialog(term: VocabularyTerm): void { + const dialogRef = this.dialog.open(VocTermDialog, { + data: term, + width: '80%' + }); - dialogRef.afterClosed().subscribe(result => { - if (result) this.reload(); - }); - } + dialogRef.afterClosed().subscribe(result => { + if (result) this.reload(); + }); + } - deleteVocabularyTerm(term: VocabularyTerm): void { - if (confirm("Are you sure?") && this.voc?.id && term.code) { - this.service.deleteVocabularyTerm(this.voc.id, term.code, (data: void) => this.reload()); - } - } + deleteVocabularyTerm(term: VocabularyTerm): void { + if (confirm("Are you sure?") && this.voc?.id && term.code) { + this.service.deleteVocabularyTerm(this.voc.id, term.code, (data: void) => this.reload()); + } + } } @Component({ - selector: 'voc-dialog', - templateUrl: 'voc-dialog.html', - styleUrls: ['vocabularies.component.css'] + selector: 'voc-dialog', + templateUrl: 'voc-dialog.html', + styleUrls: ['vocabularies.component.css'] }) export class VocDialog { - vocForm = new FormGroup({ - id: new FormControl(''), - name: new FormControl(''), - description: new FormControl('') - }); + vocForm = new FormGroup({ + id: new FormControl(''), + name: new FormControl(''), + description: new FormControl('') + }); - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { - this.vocForm.get('id')?.setValue(data.id); - this.vocForm.get('name')?.setValue(data.name); - this.vocForm.get('description')?.setValue(data.description); - } + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { + this.vocForm.get('id')?.setValue(data.id); + this.vocForm.get('name')?.setValue(data.name); + this.vocForm.get('description')?.setValue(data.description); + } - onSubmit(): void { - const voc = Object.assign({}, this.data, this.vocForm.value); - this.service.saveVocabulary(voc, (data: void) => this.dialogRef.close(1), this.vocForm); - } + onSubmit(): void { + const voc = Object.assign({}, this.data, this.vocForm.value); + this.service.saveVocabulary(voc, (data: void) => this.dialogRef.close(1), this.vocForm); + } - onNoClick(): void { - this.dialogRef.close(); - } + onNoClick(): void { + this.dialogRef.close(); + } } @Component({ - selector: 'voc-term-dialog', - templateUrl: 'voc-term-dialog.html', - styleUrls: ['vocabularies.component.css'] + selector: 'voc-term-dialog', + templateUrl: 'voc-term-dialog.html', + styleUrls: ['vocabularies.component.css'] }) export class VocTermDialog { - termForm = new FormGroup({ - code: new FormControl(''), - name: new FormControl(''), - encoding: new FormControl('OPENAIRE'), - tmpSynonymTerm: new FormControl(''), - tmpSynonymEncoding: new FormControl('OPENAIRE') - }); + termForm = new FormGroup({ + code: new FormControl(''), + name: new FormControl(''), + encoding: new FormControl('OPENAIRE'), + tmpSynonymTerm: new FormControl(''), + tmpSynonymEncoding: new FormControl('OPENAIRE') + }); - synonymsDatasource: MatTableDataSource = new MatTableDataSource([]); - synonymColums: string[] = ['term', 'encoding', 'buttons']; - @ViewChild(MatTable) synonymsTable: MatTable | undefined; + synonymsDatasource: MatTableDataSource = new MatTableDataSource([]); + synonymColums: string[] = ['term', 'encoding', 'buttons']; + @ViewChild(MatTable) synonymsTable: MatTable | undefined; - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { - this.termForm.get('code')?.setValue(data.code); - this.termForm.get('name')?.setValue(data.name); - this.termForm.get('encoding')?.setValue(data.encoding); - this.synonymsDatasource.data = data.synonyms; - } + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, public service: ISService) { + this.termForm.get('code')?.setValue(data.code); + this.termForm.get('name')?.setValue(data.name); + this.termForm.get('encoding')?.setValue(data.encoding); + this.synonymsDatasource.data = data.synonyms; + } - onSubmit(): void { - console.log('SUBMIT'); + onSubmit(): void { + console.log('SUBMIT'); - let oldCode = this.data.code; - let voc = this.data.vocabulary; + let oldCode = this.data.code; + let voc = this.data.vocabulary; - let term:VocabularyTerm = { - code : this.termForm.get('code')?.value!, - name : this.termForm.get('name')?.value!, - encoding : this.termForm.get('encoding')?.value!, - synonyms: this.synonymsDatasource.data, - vocabulary: voc - } + let term: VocabularyTerm = { + code: this.termForm.get('code')?.value!, + name: this.termForm.get('name')?.value!, + encoding: this.termForm.get('encoding')?.value!, + synonyms: this.synonymsDatasource.data, + vocabulary: voc + } - this.service.saveVocabularyTerm(voc, term, (data: void) => { - if (oldCode && oldCode != term.code) { - this.service.deleteVocabularyTerm(voc, oldCode, (data: void) => this.dialogRef.close(1)) - } else { this.dialogRef.close(1) } - }, this.termForm); - } + this.service.saveVocabularyTerm(voc, term, (data: void) => { + if (oldCode && oldCode != term.code) { + this.service.deleteVocabularyTerm(voc, oldCode, (data: void) => this.dialogRef.close(1)) + } else { this.dialogRef.close(1) } + }, this.termForm); + } - removeSynonym(pos:number) { - this.synonymsDatasource.data.splice(pos, 1); - this.synonymsTable?.renderRows(); - } + removeSynonym(pos: number) { + this.synonymsDatasource.data.splice(pos, 1); + this.synonymsTable?.renderRows(); + } - isNewSynonymValid(): boolean { - if (!this.termForm.get('tmpSynonymTerm')) return false; - if (!this.termForm.get('tmpSynonymEncoding')) return false; - if (this.termForm.get('tmpSynonymTerm')?.value?.trim().length == 0) return false; - if (this.termForm.get('tmpSynonymEncoding')?.value?.trim().length == 0) return false; - return true; - } + isNewSynonymValid(): boolean { + if (!this.termForm.get('tmpSynonymTerm')) return false; + if (!this.termForm.get('tmpSynonymEncoding')) return false; + if (this.termForm.get('tmpSynonymTerm')?.value?.trim().length == 0) return false; + if (this.termForm.get('tmpSynonymEncoding')?.value?.trim().length == 0) return false; + return true; + } - addSynonym() { - this.synonymsDatasource.data.push({ - term: this.termForm.get('tmpSynonymTerm')?.value!, - encoding: this.termForm.get('tmpSynonymEncoding')?.value! - }); - this.termForm.get('tmpSynonymTerm')?.setValue(''); - this.termForm.get('tmpSynonymEncoding')?.setValue('OPENAIRE'); - this.synonymsTable?.renderRows(); - } + addSynonym() { + this.synonymsDatasource.data.push({ + term: this.termForm.get('tmpSynonymTerm')?.value!, + encoding: this.termForm.get('tmpSynonymEncoding')?.value! + }); + this.termForm.get('tmpSynonymTerm')?.setValue(''); + this.termForm.get('tmpSynonymEncoding')?.setValue('OPENAIRE'); + this.synonymsTable?.renderRows(); + } - onNoClick(): void { - this.dialogRef.close(); - } -} \ No newline at end of file + onNoClick(): void { + this.dialogRef.close(); + } +} diff --git a/frontends/dnet-is-application/src/app/vocabularies/vocabulary-editor.component.html b/frontends/dnet-is-application/src/app/vocabularies/vocabulary-editor.component.html index 1c7752b7..8cbc146a 100644 --- a/frontends/dnet-is-application/src/app/vocabularies/vocabulary-editor.component.html +++ b/frontends/dnet-is-application/src/app/vocabularies/vocabulary-editor.component.html @@ -1,66 +1,66 @@

Vocabulary Editor

- Vocabulary ID: {{voc?.id}}
- Vocabulary Name: {{voc?.name}}
- Description: {{voc?.description}} + Vocabulary ID: {{voc?.id}}
+ Vocabulary Name: {{voc?.name}}
+ Description: {{voc?.description}}

- return to vocabulary list - - Download + return to vocabulary list + + Download

- Filter - + Filter + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - -
Code - {{element.code}} Code + {{element.code}} Name - {{element.name}} Name + {{element.name}} - Encoding {{element.encoding}} + Encoding {{element.encoding}} - Description - 0 synonym(s) - - {{s.term}} - - + Description + 0 synonym(s) + + {{s.term}} + + - - - + + +
No data matching the filter "{{input.value}}"
\ No newline at end of file + + + No data matching the filter "{{input.value}}" + + diff --git a/frontends/dnet-is-application/src/app/wf-history/wf-dialog.html b/frontends/dnet-is-application/src/app/wf-history/wf-dialog.html index 20039068..2296e56d 100644 --- a/frontends/dnet-is-application/src/app/wf-history/wf-dialog.html +++ b/frontends/dnet-is-application/src/app/wf-history/wf-dialog.html @@ -1,40 +1,41 @@

Details

-

- Started at: {{startDate}}
- Finished at: {{endDate}}
- Duration: {{duration}}
-

+

+ Started at: {{startDate}}
+ Finished at: {{endDate}}
+ Duration: {{duration}}
+

- - Filter - - + + Filter + + - +
- - - - + + + + - - - - + + + + - - + + - - - - -
k{{element.k}}k{{element.k}}v {{element.v}} v {{element.v}}
No data matching the filter "{{filterParams.value}}"
+ + + No data matching the filter "{{filterParams.value}}" + + +
- +
diff --git a/frontends/dnet-is-application/src/app/wf-history/wf-history.component.css b/frontends/dnet-is-application/src/app/wf-history/wf-history.component.css index 8b137891..e69de29b 100644 --- a/frontends/dnet-is-application/src/app/wf-history/wf-history.component.css +++ b/frontends/dnet-is-application/src/app/wf-history/wf-history.component.css @@ -1 +0,0 @@ - diff --git a/frontends/dnet-is-application/src/app/wf-history/wf-history.component.html b/frontends/dnet-is-application/src/app/wf-history/wf-history.component.html index bafaa743..1542189e 100644 --- a/frontends/dnet-is-application/src/app/wf-history/wf-history.component.html +++ b/frontends/dnet-is-application/src/app/wf-history/wf-history.component.html @@ -1,66 +1,75 @@

Workflow History

- Filter - + Filter +

- Recent workflows (max {{total}}) - Workflows from {{from | date:"yyyy-MM-dd HH:mm:ss"}} to {{to | - date:"yyyy-MM-dd HH:mm:ss"}} - Workflows from {{from | date:"yyyy-MM-dd HH:mm:ss"}} to - undefined - Workflows from undefined to {{to | date:"yyyy-MM-dd - HH:mm:ss"}} -
- Count : {{historyDatasource.filteredData.length}} + Recent workflows (max {{total}}) + Workflows from {{from | date:"yyyy-MM-dd HH:mm:ss"}} to {{to | + date:"yyyy-MM-dd HH:mm:ss"}} + Workflows from {{from | date:"yyyy-MM-dd HH:mm:ss"}} to + undefined + Workflows from undefined to {{to | date:"yyyy-MM-dd + HH:mm:ss"}} +
+ Count : {{historyDatasource.filteredData.length}}

- - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - -
Process Id - {{element.processId}} - Process Id + {{element.processId}} + Workflow Name {{element.name}} + Workflow Name {{element.name}} Workflow Family {{element.family}} + Workflow Family {{element.family}} Datasource {{element.dsName}} Datasource {{element.dsName}} Status {{element.status}} + Status {{element.status}} + Start Date {{element.startDate}} Start Date {{element.startDate}} End Date {{element.endDate}} + End Date {{element.endDate}}
No data matching the filter "{{input.value}}"
\ No newline at end of file + + + No data matching the filter "{{input.value}}" + + diff --git a/frontends/dnet-is-application/src/app/wf-history/wf-history.component.ts b/frontends/dnet-is-application/src/app/wf-history/wf-history.component.ts index 165070f3..cdfb6c7d 100644 --- a/frontends/dnet-is-application/src/app/wf-history/wf-history.component.ts +++ b/frontends/dnet-is-application/src/app/wf-history/wf-history.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject,AfterViewInit, OnInit, ViewChild } from '@angular/core'; +import { Component, Inject, AfterViewInit, OnInit, ViewChild } from '@angular/core'; import { ISService } from '../common/is.service'; import { MatTableDataSource } from '@angular/material/table'; import { MatSort } from '@angular/material/sort'; @@ -8,148 +8,148 @@ import { combineLatest } from 'rxjs'; import { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; @Component({ - selector: 'app-wf-history', - templateUrl: './wf-history.component.html', - styleUrls: ['./wf-history.component.css'] + selector: 'app-wf-history', + templateUrl: './wf-history.component.html', + styleUrls: ['./wf-history.component.css'] }) -export class WfHistoryComponent implements AfterViewInit , OnInit{ +export class WfHistoryComponent implements AfterViewInit, OnInit { - historyDatasource: MatTableDataSource = new MatTableDataSource([]); + historyDatasource: MatTableDataSource = new MatTableDataSource([]); - colums: string[] = ['processId', 'name', 'family', 'dsName', 'status', 'startDate', 'endDate']; + colums: string[] = ['processId', 'name', 'family', 'dsName', 'status', 'startDate', 'endDate']; - total: number = 100 - from: number = -1 - to: number = -1 + total: number = 100 + from: number = -1 + to: number = -1 - constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { - } + constructor(public service: ISService, public route: ActivatedRoute, public dialog: MatDialog) { + } - ngOnInit() { - combineLatest([ this.route.params, this.route.queryParams ], - (params: Params, queryParams: Params) => ({ params, queryParams }) - ).subscribe((res: { params: Params; queryParams: Params }) => { - const { params, queryParams} = res; - let totalP = queryParams['total']; - let fromP = queryParams['from']; - let toP = queryParams['to']; - - if (totalP) { this.total = parseInt(totalP); } - if (fromP) { this.from = parseInt(fromP); } - if (toP) { this.to = parseInt(toP); } - - this.service.loadWfHistory(this.total, this.from, this.to, (data: WfHistoryEntry[]) => this.historyDatasource.data = data); - }); - } + ngOnInit() { + combineLatest([this.route.params, this.route.queryParams], + (params: Params, queryParams: Params) => ({ params, queryParams }) + ).subscribe((res: { params: Params; queryParams: Params }) => { + const { params, queryParams } = res; + let totalP = queryParams['total']; + let fromP = queryParams['from']; + let toP = queryParams['to']; - @ViewChild(MatSort) sort: MatSort | undefined + if (totalP) { this.total = parseInt(totalP); } + if (fromP) { this.from = parseInt(fromP); } + if (toP) { this.to = parseInt(toP); } - ngAfterViewInit() { - if(this.sort) this.historyDatasource.sort = this.sort; - } + this.service.loadWfHistory(this.total, this.from, this.to, (data: WfHistoryEntry[]) => this.historyDatasource.data = data); + }); + } - applyFilter(event: Event) { - const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); - this.historyDatasource.filter = filterValue; - } + @ViewChild(MatSort) sort: MatSort | undefined + + ngAfterViewInit() { + if (this.sort) this.historyDatasource.sort = this.sort; + } + + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); + this.historyDatasource.filter = filterValue; + } + + openWfDialog(wf: WfHistoryEntry): void { + const wfDialogRef = this.dialog.open(WfDialog, { + data: wf + }); + } - openWfDialog(wf: WfHistoryEntry): void { - const wfDialogRef = this.dialog.open(WfDialog, { - data: wf - }); - } - } @Component({ - selector: 'wf-dialog', - templateUrl: 'wf-dialog.html', - styleUrls: ['wf-history.component.css'] + selector: 'wf-dialog', + templateUrl: 'wf-dialog.html', + styleUrls: ['wf-history.component.css'] }) export class WfDialog { - startDate:string = ''; - endDate:string = ''; - duration:string = ''; + startDate: string = ''; + endDate: string = ''; + duration: string = ''; + + wfDatasource: MatTableDataSource = new MatTableDataSource([]); + colums: string[] = ['k', 'v']; + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: WfHistoryEntry, + ) { + let list: KeyValue[] = []; + let map = new Map(Object.entries(data.details)); + for (let [key, value] of map) { + list.push({ k: key, v: value }); + } + this.wfDatasource.data = list; + this.startDate = data.startDate; + this.endDate = data.endDate; + this.duration = this.calculateDateDiff( + parseInt(map.get('system:startDate')), + parseInt(map.get('system:endDate')) + ); + } + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); + this.wfDatasource.filter = filterValue; + } + onNoClick(): void { + this.dialogRef.close(); + } + + + calculateDateDiff(start: number, end: number): string { + if (start <= 0 || end <= 0) { + return '-'; + } + var seconds = 0; + var minutes = 0; + var hours = 0; + var days = 0; + + if (end > start) { + seconds = Math.round((end - start) / 1000); + if (seconds > 60) { + minutes = Math.floor(seconds / 60); + seconds = seconds % 60; + if (minutes > 60) { + hours = Math.floor(minutes / 60); + minutes = minutes % 60; + if (hours > 24) { + days = Math.floor(hours / 24); + hours = hours % 24; + } + } + } + } + var res = ''; + if (days > 0) { + if (res) { res += ', '; } + res += days + " day(s)" + } + if (hours > 0) { + if (res) { res += ', '; } + res += hours + " hour(s)" + } + if (minutes > 0) { + if (res) { res += ', '; } + res += minutes + " minute(s)" + } + if (seconds > 0) { + if (res) { res += ', '; } + res += seconds + " second(s)" + } + if (!res) { + res = '0 seconds'; + } + + return res; + } - wfDatasource: MatTableDataSource = new MatTableDataSource([]); - colums: string[] = ['k', 'v']; - constructor( - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: WfHistoryEntry, - ) { - let list:KeyValue[] = []; - let map = new Map(Object.entries(data.details)); - for (let [key, value] of map) { - list.push({k: key, v: value}); - } - this.wfDatasource.data = list; - this.startDate = data.startDate; - this.endDate = data.endDate; - this.duration = this.calculateDateDiff( - parseInt(map.get('system:startDate')), - parseInt(map.get('system:endDate')) - ); - } - applyFilter(event: Event) { - const filterValue = (event.target as HTMLInputElement).value.trim().toLowerCase(); - this.wfDatasource.filter = filterValue; - } - onNoClick(): void { - this.dialogRef.close(); - } - calculateDateDiff(start:number, end:number):string { - if (start <= 0 || end <= 0) { - return '-'; - } - var seconds = 0; - var minutes = 0; - var hours = 0; - var days = 0; - - if (end > start) { - seconds = Math.round((end - start) / 1000); - if (seconds > 60) { - minutes = Math.floor(seconds / 60); - seconds = seconds % 60; - if (minutes > 60) { - hours = Math.floor(minutes / 60); - minutes = minutes % 60; - if (hours > 24) { - days = Math.floor(hours / 24); - hours = hours % 24; - } - } - } - } - var res = ''; - if (days > 0) { - if (res) { res += ', '; } - res += days + " day(s)" - } - if (hours > 0) { - if (res) { res += ', '; } - res += hours + " hour(s)" - } - if (minutes > 0) { - if (res) { res += ', '; } - res += minutes + " minute(s)" - } - if (seconds > 0) { - if (res) { res += ', '; } - res += seconds + " second(s)" - } - if (!res) { - res = '0 seconds'; - } - - return res; } - - - - -} \ No newline at end of file diff --git a/frontends/dnet-is-application/src/index.html b/frontends/dnet-is-application/src/index.html index 0260c70f..65491012 100644 --- a/frontends/dnet-is-application/src/index.html +++ b/frontends/dnet-is-application/src/index.html @@ -1,16 +1,19 @@ + - - DnetIsApplication - - - - - - + + DnetIsApplication + + + + + + + - + + diff --git a/frontends/dnet-is-application/src/proxy.conf.json b/frontends/dnet-is-application/src/proxy.conf.json index 2ab102c1..baedfdcd 100644 --- a/frontends/dnet-is-application/src/proxy.conf.json +++ b/frontends/dnet-is-application/src/proxy.conf.json @@ -1,10 +1,10 @@ { - "/ajax": { - "target": "http://localhost:8280", - "secure": false - }, - "/api": { - "target": "http://localhost:8280", - "secure": false - } -} \ No newline at end of file + "/ajax": { + "target": "http://localhost:8280", + "secure": false + }, + "/api": { + "target": "http://localhost:8280", + "secure": false + } +} diff --git a/frontends/dnet-is-application/src/styles.css b/frontends/dnet-is-application/src/styles.css index f0100ad8..fd1cc6b3 100644 --- a/frontends/dnet-is-application/src/styles.css +++ b/frontends/dnet-is-application/src/styles.css @@ -1,108 +1,129 @@ /* You can add global styles to this file, and also import other style files */ -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } +html, +body { + height: 100%; +} -.small { font-size: 0.9em !important; } -.muted { color: darkgray; } +body { + margin: 0; + font-family: Roboto, "Helvetica Neue", sans-serif; +} -table { - width: 100%; - table-layout: fixed !important; +.small { + font-size: 0.9em !important; +} + +.muted { + color: darkgray; +} + +table { + width: 100%; + table-layout: fixed !important; } tr { - height: auto !important; + height: auto !important; } -th.mat-sort-header-sorted { color: black !important; } - -th, td { - white-space: nowrap !important; - overflow: hidden !important; - text-overflow: ellipsis !important; - font-size: 0.9em !important; - padding-top: 0.5em !important; - padding-bottom: 0.5em !important; - text-align: left; +th.mat-sort-header-sorted { + color: black !important; } -.table-buttons { text-align: right !important; } -.table-buttons button { - font-size: 0.8em !important; - padding: 0 !important; - height: 2.5em !important; +th, +td { + white-space: nowrap !important; + overflow: hidden !important; + text-overflow: ellipsis !important; + font-size: 0.9em !important; + padding-top: 0.5em !important; + padding-bottom: 0.5em !important; + text-align: left; +} + +.table-buttons { + text-align: right !important; +} + +.table-buttons button { + font-size: 0.8em !important; + padding: 0 !important; + height: 2.5em !important; } .warning { - background-color: darkorange; + background-color: darkorange; } .text-monospace { - font-family: monospace; + font-family: monospace; } -a, a:not([href]) { - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - text-decoration: none; - text-underline-offset: 3px; - color: #336699; +a, +a:not([href]) { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + text-decoration: none; + text-underline-offset: 3px; + color: #336699; } -a:hover, a:not([href]):hover { - text-decoration: underline; +a:hover, +a:not([href]):hover { + text-decoration: underline; } .badge-label { - padding-top: 0.3em; - padding-bottom: 0.3em; - padding-left: 0.5em; - padding-right: 0.5em; - border-radius: 0.7em; - font-size: 0.9em; - color: #fff; - text-align: center; + padding-top: 0.3em; + padding-bottom: 0.3em; + padding-left: 0.5em; + padding-right: 0.5em; + border-radius: 0.7em; + font-size: 0.9em; + color: #fff; + text-align: center; } .badge-default { - background-color:#336699; + background-color: #336699; } .badge-success { - background-color:darkgreen; + background-color: darkgreen; } .badge-failure { - background-color:red; + background-color: red; } .badge-warning { - background-color:darkorange; + background-color: darkorange; } .badge-info { - background-color: cornflowerblue + background-color: cornflowerblue } .mat-mdc-dialog-actions .mat-mdc-form-field-error { - margin-left: 2em !important; - margin-right: 2em !important; - font-size: 0.75em !important; + margin-left: 2em !important; + margin-right: 2em !important; + font-size: 0.75em !important; } .spinner { - position: absolute; - width: 300px; - left: 0; - right: 0; - top: 40%; - margin: auto; - z-index: 10000; + position: absolute; + width: 300px; + left: 0; + right: 0; + top: 40%; + margin: auto; + z-index: 10000; } -.spinner * { margin: auto; } - \ No newline at end of file +.spinner * { + margin: auto; +}