adding data browser

This commit is contained in:
2024-09-08 22:11:51 -04:00
parent e88499cbaf
commit 224e6388c1
48 changed files with 1037 additions and 75 deletions

View File

@@ -0,0 +1 @@
<fbi-table [headers]="headers" [rows]="rows"></fbi-table>

View File

@@ -0,0 +1,3 @@
:host {
padding: 8px;
}

View 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();
});
});

View 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;
}
);
}
}