added support for JSON view (data fetched via service)

This commit is contained in:
Maria Teresa Paratore 2023-09-28 18:04:31 +02:00
parent c4360a6ddb
commit 1883f3ce77
8 changed files with 56 additions and 10 deletions

View File

@ -25,6 +25,7 @@ import { MatIconModule } from '@angular/material/icon';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { RscTreeComponent } from './rsc-tree/rsc-tree.component';
import { TableScreenComponent } from './table-screen/table-screen.component';
import { RawjsonPaneComponent } from './rawjson-pane/rawjson-pane.component';
@NgModule({
imports: [
BrowserModule,
@ -40,6 +41,7 @@ import { TableScreenComponent } from './table-screen/table-screen.component';
BrowserAnimationsModule,
TableScreenComponent,
TabsModule.forRoot(),
RawjsonPaneComponent,
],
providers: [
Title,

View File

@ -2,6 +2,6 @@ export interface ITabbedEntity {
id: string;
title: string;
content: string;
//prevediamo contenuti di tipo diverso
//prevediamo contenuti di tipo diverso (quindi switch al momento della costruzione dei tab)
type: number;
}

View File

@ -0,0 +1,4 @@
<h2 *ngIf="chosenId" id="detail-title">Raw JSON for UID: {{ chosenId }}</h2>
<div class="bg-light">
<pre>{{ fetchedRawData | json }}</pre>
</div>

View File

@ -0,0 +1,26 @@
import { CommonModule } from '@angular/common';
import { Component, Input, OnInit } from '@angular/core';
import { ResourcesLoaderService } from 'app/services/resources-loader.service';
@Component({
standalone: true,
imports: [CommonModule],
selector: 'jhi-rawjson-pane',
templateUrl: './rawjson-pane.component.html',
styleUrls: ['./rawjson-pane.component.scss'],
providers: [ResourcesLoaderService],
})
export class RawjsonPaneComponent implements OnInit {
@Input() chosenId: string;
fetchedRawData: string;
constructor(private myService: ResourcesLoaderService) {
this.fetchedRawData = '';
this.chosenId = '';
}
ngOnInit(): void {
//TODO: passare al servizio qui sotto: chosenItem.id come parametro rest
this.myService.getJsonDetail(this.chosenId).subscribe(res => {
this.fetchedRawData = res;
});
}
}

View File

@ -19,14 +19,21 @@ export class ResourcesLoaderService {
//TODO: pipe per gestione errori
return this.http.get<IHostingnode[]>('http://localhost:3002/is/hostingnodes/all');
}
//TODO: a regime questo metodo prende un parametro nella get
getHostingNodeDetail(): Observable<string> {
//TODO: pipe per gestione errori
return this.http.get<string>('http://localhost:3002/is/hostingnodes/detail');
}
//TODO: a regime questo metodo prende un parametro nella get
getResourcesByContext(): Observable<IResource[]> {
//TODO: pipe per gestione errori
return this.http.get<IResource[]>('http://localhost:3002/is/ctxresources');
}
//TODO: a regime questo metodo prende un parametro nella get
//(e probabilmente anche un tipo per fare uno switch sul tipo di risorsa da prendere)
getJsonDetail(uid: string): Observable<string> {
//TODO: pipe per gestione errori
return this.http.get<string>('http://localhost:3002/is/hostingnodes/detail');
}
getHostingNodeDetail(): Observable<string> {
//TODO: pipe per gestione errori
return this.http.get<string>('http://localhost:3002/is/hostingnodes/detail');
}
}

View File

@ -58,14 +58,20 @@
<mat-tab-group [selectedIndex]="selectedIdx">
<ng-container *ngFor="let tab of tabs; let index = index">
<mat-tab>
<!--stile linguetta tab-->
<!--stile linguetta tab begin-->
<ng-template mat-tab-label>
<div class="col" style="margin-left: 20px">{{ tab.title }}</div>
<button *ngIf="tab.title !== 'JSON View'" style="color: black" mat-icon-button (click)="closeTab(index)">
<mat-icon>close</mat-icon>
</button>
</ng-template>
{{ tab.content }}
<!--stile linguetta tab close-->
<div *ngIf="tab.title !== 'JSON View'; else mainTabMsg">
<jhi-rawjson-pane [chosenId]="tab.id"></jhi-rawjson-pane>
</div>
<ng-template #mainTabMsg>
<h2>JSON raw data will show here</h2>
</ng-template>
</mat-tab>
</ng-container>
</mat-tab-group>

View File

@ -22,6 +22,7 @@ import { IContextNode } from 'app/services/i-context-node';
import { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';
import { MatTab, MatTabGroup } from '@angular/material/tabs';
import { ITabbedEntity } from 'app/i-tabbed-entity';
import { RawjsonPaneComponent } from 'app/rawjson-pane/rawjson-pane.component';
@Component({
standalone: true,
@ -29,7 +30,7 @@ import { ITabbedEntity } from 'app/i-tabbed-entity';
templateUrl: './table-screen.component.html',
styleUrls: ['./table-screen.component.scss'],
providers: [MockCtxloaderService, ResourcesLoaderService],
imports: [MatTableModule, MatSortModule, SharedModule, MatPaginatorModule],
imports: [MatTableModule, MatSortModule, SharedModule, MatPaginatorModule, RawjsonPaneComponent],
})
export class TableScreenComponent implements OnInit, AfterViewInit, OnChanges {
//TODO: questo a regime mettere sotto CONST