adding data browser
This commit is contained in:
1
src/components/result/result.component.html
Normal file
1
src/components/result/result.component.html
Normal file
@@ -0,0 +1 @@
|
||||
<fbi-table [headers]="headers" [rows]="rows"></fbi-table>
|
||||
3
src/components/result/result.component.scss
Normal file
3
src/components/result/result.component.scss
Normal file
@@ -0,0 +1,3 @@
|
||||
:host {
|
||||
padding: 8px;
|
||||
}
|
||||
23
src/components/result/result.component.spec.ts
Normal file
23
src/components/result/result.component.spec.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ResultComponent } from './result.component';
|
||||
|
||||
describe('ResultComponent', () => {
|
||||
let component: ResultComponent;
|
||||
let fixture: ComponentFixture<ResultComponent>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [ResultComponent]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(ResultComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
49
src/components/result/result.component.ts
Normal file
49
src/components/result/result.component.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { Component } from '@angular/core';
|
||||
import { TreeComponent } from '../tree/tree.component';
|
||||
import { QueryService } from '../../services/query.service';
|
||||
import { Query } from '../../models/query';
|
||||
import { ExecuteService } from '../../services/execute.service';
|
||||
import { forkJoin } from 'rxjs';
|
||||
import { Header } from '../../models/header';
|
||||
import { TableComponent } from '../table/table.component';
|
||||
|
||||
@Component({
|
||||
selector: 'fbi-result',
|
||||
standalone: true,
|
||||
imports: [CommonModule, TreeComponent, TableComponent],
|
||||
templateUrl: './result.component.html',
|
||||
styleUrl: './result.component.scss',
|
||||
})
|
||||
export class ResultComponent {
|
||||
headers: Header[] = [];
|
||||
rows: Record<string, any>[] = [];
|
||||
|
||||
constructor(
|
||||
queryService: QueryService,
|
||||
private executeService: ExecuteService
|
||||
) {
|
||||
let last: string = '';
|
||||
queryService.Query.subscribe((query: Query) => {
|
||||
if (query.isValid()) {
|
||||
const current = query.toString();
|
||||
if (last !== current) {
|
||||
this.load(query);
|
||||
last = current;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private load(query: Query): void {
|
||||
forkJoin({
|
||||
headers: this.executeService.headers(query),
|
||||
data: this.executeService.data(query),
|
||||
}).subscribe(
|
||||
(result: { headers: Header[]; data: Record<string, any>[] }) => {
|
||||
this.headers = result.headers;
|
||||
this.rows = result.data;
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user