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 @@
-
+
-
-
-
-
-
-
- menu
-
- {{title}}
-
-
-
-
-
-
+
+
+
+
+
+
+ menu
+
+ {{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}}
+
+
+
- Close
+ Close
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
- Global parameters
- Download
+ Return to contexts list
+ Global parameters
+ 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
-
- show
-
-
+
+ Parameters
+
+ show
+
+
-
-
+
+
-
-
- 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 @@
\ 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}}
- Close
+ Close
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}}
-
- 0">
- Organization(s)
-
-
- {{o.name}}
-
-
-
-
-
-
- APIs
-
-
-
- {{a.id}}
- {{a.protocol}}
- {{a.compliance}}
- active
- not active
-
-
- Last aggregation:
- {{a.aggrDate}}
- (total: {{a.aggrTotal}})
-
-
-
- add api
-
-
-
- Consent Terms of Use
- YES
-
-
- Fulltext Download
- YES
-
-
-
+
+ {{r.name}}
+ {{r.otherName}}
+
+
+
+
+ Id
+ {{r.id}}
+
+
+ Type
+ {{r.type}}
+
+
+ Namespace Prefix
+ {{r.nsprefix}}
+
+
+ Collected From
+ {{r.collectedFrom}}
+
+
+ URL
+ {{r.websiteUrl}}
+
+ 0">
+ Organization(s)
+
+
+ {{o.name}}
+
+
+
+
+
+
+ APIs
+
+
+
+ {{a.id}}
+ {{a.protocol}}
+ {{a.compliance}}
+ active
+ not active
+
+
+ Last aggregation:
+ {{a.aggrDate}}
+ (total: {{a.aggrTotal}})
+
+
+
+ add api
+
+
+
+ Consent Terms of Use
+ YES
+
+
+ Fulltext Download
+ YES
+
+
+
@@ -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
-
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
+
-
0">
-
{{section.name}}
-
+ 0">
+
{{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}}"
+
+
+
0">
-
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 @@
- Expand All
- Collapse All
+ Expand All
+ Collapse All
-
-
- Home
-
-
-
-
-
- Datasources
-
-
-
-
-
+
+
+ Home
+
+
+
+
+
+ Datasources
+
+
+
+
+
-
-
- 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 @@
Close
-
\ 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 @@
delete
zeppelin
-
\ 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 @@
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
-
-
- Submit
- Close
-
- {{ metadataForm.errors?.['serverError'] }}
-
-
+
+ Submit
+ Close
+
+ {{ 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
-
-
- Submit
- Close
-
- {{ newResourceForm.errors?.['serverError'] }}
-
-
+
+ Submit
+ Close
+
+ {{ 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 @@
create a new resource
- 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}}
-
-
-
- edit metadata
- edit content
- raw content
- delete
-
-
-
-
-
+
+ {{r.name}} {{type.contentType}}
+
+
+ {{r.description}}
+
+ Id: {{r.id}} Creation date: {{r.creationDate}} Modification date:
+ {{r.modificationDate}}
+
+
+
+ edit metadata
+ edit content
+ raw content
+ delete
+
+
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
-
-
- Submit
- Close
-
- {{ vocForm.errors?.['serverError'] }}
-
-
+
+ Submit
+ Close
+
+ {{ 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
-
+
+
-
- Submit
- Close
-
- {{ termForm.errors?.['serverError'] }}
-
-
+
+ Submit
+ Close
+
+ {{ 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 @@
create a new vocabulary
- Filter
-
+ Filter
+
-
- Id
-
- {{element.id}}
-
-
+
+ Id
+
+
+ {{element.id}}
+
+
-
- Name
- {{element.name}}
-
+
+ Name
+
+ {{element.name}}
+
-
- Description
- {{element.description}}
-
+
+ Description
+ {{element.description}}
+
-
-
-
- edit
- delete
-
-
+
+
+
+ edit
+ delete
+
+
-
-
+
+
-
-
- 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
- create a new term
- Download
+ return to vocabulary list
+ create a new term
+ 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}}
+
+
+
-
-
-
- edit
- delete
-
-
+
+
+
+ edit
+ delete
+
+
-
-
+
+
-
-
- 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}}"
+
+
+
- Close
+ Close
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}})
- = 0 && to >= 0">Workflows from {{from | date:"yyyy-MM-dd HH:mm:ss"}} to {{to |
- date:"yyyy-MM-dd HH:mm:ss"}}
- = 0 && to < 0">Workflows from {{from | date:"yyyy-MM-dd HH:mm:ss"}} to
- undefined
- = 0">Workflows from undefined to {{to | date:"yyyy-MM-dd
- HH:mm:ss"}}
-
- Count : {{historyDatasource.filteredData.length}}
+ Recent workflows (max {{total}})
+ = 0 && to >= 0">Workflows from {{from | date:"yyyy-MM-dd HH:mm:ss"}} to {{to |
+ date:"yyyy-MM-dd HH:mm:ss"}}
+ = 0 && to < 0">Workflows from {{from | date:"yyyy-MM-dd HH:mm:ss"}} to
+ undefined
+ = 0">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;
+}