diff --git a/package-lock.json b/package-lock.json
index 52ed1e6..781e4d8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,6 +17,7 @@
"@angular/platform-browser-dynamic": "^17.3.0",
"@angular/router": "^17.3.0",
"@fortawesome/angular-fontawesome": "^0.14.1",
+ "@fortawesome/free-regular-svg-icons": "^6.6.0",
"@fortawesome/free-solid-svg-icons": "^6.6.0",
"chart.js": "^4.4.3",
"papaparse": "^5.4.1",
@@ -2720,6 +2721,18 @@
"node": ">=6"
}
},
+ "node_modules/@fortawesome/free-regular-svg-icons": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz",
+ "integrity": "sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==",
+ "license": "(CC-BY-4.0 AND MIT)",
+ "dependencies": {
+ "@fortawesome/fontawesome-common-types": "6.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/@fortawesome/free-solid-svg-icons": {
"version": "6.6.0",
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz",
diff --git a/package.json b/package.json
index 5acbc55..14eb1d9 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,7 @@
"@angular/platform-browser-dynamic": "^17.3.0",
"@angular/router": "^17.3.0",
"@fortawesome/angular-fontawesome": "^0.14.1",
+ "@fortawesome/free-regular-svg-icons": "^6.6.0",
"@fortawesome/free-solid-svg-icons": "^6.6.0",
"chart.js": "^4.4.3",
"papaparse": "^5.4.1",
diff --git a/src/components/metadata/metadata.component.html b/src/components/metadata/metadata.component.html
index 1c170da..b2f2614 100644
--- a/src/components/metadata/metadata.component.html
+++ b/src/components/metadata/metadata.component.html
@@ -1,6 +1,11 @@
-
+
+
+content content content content content content content content content
+ content content content content content content content content content
+
diff --git a/src/components/metadata/metadata.component.ts b/src/components/metadata/metadata.component.ts
index 095260e..8f835e2 100644
--- a/src/components/metadata/metadata.component.ts
+++ b/src/components/metadata/metadata.component.ts
@@ -1,22 +1,30 @@
-import { Component } from '@angular/core';
+import { Component, ViewChild } from '@angular/core';
import { TreeComponent } from '../tree/tree.component';
import { TreeNode } from '../../models/tree-node';
import { MetaService } from '../../services/meta.service';
import { Action } from '../../models/action';
-import { faAdd } from '@fortawesome/free-solid-svg-icons';
+import { faAdd, faFilter } from '@fortawesome/free-solid-svg-icons';
import { QueryService } from '../../services/query.service';
import { combineLatest } from 'rxjs';
import { Query } from '../../models/query';
+import { WindowComponent } from '../window/window.component';
@Component({
selector: 'fbi-metadata',
standalone: true,
- imports: [TreeComponent],
+ imports: [TreeComponent, WindowComponent],
templateUrl: './metadata.component.html',
styleUrl: './metadata.component.scss',
})
export class MetadataComponent {
node: TreeNode = new TreeNode({});
+ @ViewChild(WindowComponent) window!: WindowComponent;
+
+ windowComponent = WindowComponent;
+
+ windowConfig = {
+ title: 'test',
+ };
constructor(metaService: MetaService, private queryService: QueryService) {
combineLatest({
@@ -33,7 +41,10 @@ export class MetadataComponent {
const children = node.children ?? [];
children.forEach((child: Partial) => recurse(child));
if (children.length === 0) {
- const actions = [{ label: 'Add', icon: faAdd, data: ACTIONS.ADD }];
+ const actions = [
+ { label: 'Filter', icon: faFilter, data: ACTIONS.FILTER },
+ { label: 'Add', icon: faAdd, data: ACTIONS.ADD },
+ ];
node.actions = actions as Action[];
}
};
@@ -53,6 +64,9 @@ export class MetadataComponent {
case ACTIONS.ADD:
this.queryService.add(event.node.data);
break;
+ case ACTIONS.FILTER:
+ this.window.show();
+ break;
}
}
@@ -72,4 +86,5 @@ export class MetadataComponent {
enum ACTIONS {
ADD = 'add',
+ FILTER = 'filter',
}
diff --git a/src/components/query/query.component.html b/src/components/query/query.component.html
index e19c5f3..b1b910f 100644
--- a/src/components/query/query.component.html
+++ b/src/components/query/query.component.html
@@ -1,4 +1,4 @@
-
+
|
-
- Showing {{ (data.page.page - 1) * data.page.size + 1 }} to
- {{ data.page.page * data.page.size }} of {{ data.total }}
+
+ @for (btn of pagesize; track btn) {
+
+ }
+
+
+ {{ (data.page.page - 1) * data.page.size + 1 }}-{{
+ Math.min(data.page.page * data.page.size, data.total)
+ }}
+ of {{ data.total }}
-
+
+ @for (btn of pager; track page) { @if (btn.ellipsis) {
+ ...
+ } @else {
+ } }
+
|
diff --git a/src/components/table/table.component.scss b/src/components/table/table.component.scss
index 29f92e0..36f1410 100644
--- a/src/components/table/table.component.scss
+++ b/src/components/table/table.component.scss
@@ -1,5 +1,6 @@
table {
border-collapse: collapse;
+ min-width: 400px;
}
thead {
@@ -56,6 +57,27 @@ tfoot {
color: #777;
}
+div.left {
+ float: left;
+}
+
+div.right {
+ float: right;
+}
+
.clickable {
cursor: pointer;
}
+
+input {
+ border: 1px solid #ddd;
+ background-color: #eee;
+}
+
+input:hover {
+ background-color: #eff;
+}
+
+input.current {
+ background-color: #95b9c7;
+}
diff --git a/src/components/table/table.component.ts b/src/components/table/table.component.ts
index ef2755d..1341dce 100644
--- a/src/components/table/table.component.ts
+++ b/src/components/table/table.component.ts
@@ -1,5 +1,12 @@
import { CommonModule } from '@angular/common';
-import { Component, EventEmitter, Input, Output } from '@angular/core';
+import {
+ Component,
+ EventEmitter,
+ Input,
+ OnChanges,
+ Output,
+ SimpleChanges,
+} from '@angular/core';
import { Header } from '../../models/header';
import {
faSort,
@@ -18,24 +25,108 @@ import { Page } from '../../models/page';
templateUrl: './table.component.html',
styleUrl: './table.component.scss',
})
-export class TableComponent {
+export class TableComponent implements OnChanges {
@Input() data!: Result;
@Output() page = new EventEmitter();
@Output() sort = new EventEmitter