diff --git a/src/app/components/pagination-component/pagination-component.sass b/src/app/components/pagination-component/pagination-component.sass
index 291273b7f..3e56a5558 100644
--- a/src/app/components/pagination-component/pagination-component.sass
+++ b/src/app/components/pagination-component/pagination-component.sass
@@ -6,16 +6,18 @@
display: grid
justify-content: center
-ngb-pagination ::ng-deep .page-item .page-link
- border: none !important
- display: flex
- justify-content: center
- align-items: center
- border-radius: 6px
+ngb-pagination
+ &::ng-deep .page-item .page-link
+ border: none !important
+ display: flex
+ justify-content: center
+ align-items: center
+ border-radius: 6px
& span
display: none
-ngb-pagination ::ng-deep *
- font-size: 14px
+ ngb-pagination
+ &::ng-deep *
+ font-size: 14px
.page_button
display: inline-block
width: 16px
diff --git a/src/app/components/pagination-component/pagination.component.html b/src/app/components/pagination-component/pagination.component.html
index bbe842dd3..74d80221c 100644
--- a/src/app/components/pagination-component/pagination.component.html
+++ b/src/app/components/pagination-component/pagination.component.html
@@ -5,6 +5,9 @@
[collectionSize]="(pageInfo.totalPages || currentPage) * 10"
[maxSize]="7"
[(page)]="currentPage"
+ [directionLinks]="false"
+ [rotate]="true"
+ [ellipses]="true"
(pageChange)="onPageChange(currentPage)"
aria-label="Custom pagination"
>
diff --git a/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.html b/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.html
index 947837b73..f184346eb 100644
--- a/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.html
+++ b/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.html
@@ -30,7 +30,11 @@
@@ -52,12 +56,16 @@
No block matches
-
+
diff --git a/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.ts b/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.ts
index c91d23503..35c4d3eb9 100644
--- a/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.ts
+++ b/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.ts
@@ -4,6 +4,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from
import { DatasetInfo } from "src/app/interface/navigation.interface";
import { MaybeNull } from "src/app/common/app.types";
import { IDropdownSettings } from "ng-multiselect-dropdown";
+import { MetadataBlockFragment } from "src/app/api/kamu.graphql.interface";
@Component({
selector: "app-block-navigation",
@@ -15,6 +16,7 @@ export class BlockNavigationComponent {
@Input() public datasetHistory: MaybeNull;
@Input() public currentBlockHash: string;
@Input() public datasetInfo: DatasetInfo;
+ @Input() public allHistory: MetadataBlockFragment[];
@Output() public onPageChangeEmit = new EventEmitter();
public searchHash = "";
public currentPage = 1;
diff --git a/src/app/dataset-block/metadata-block/components/block-navigation/pipes/block-hash-filter.pipe.ts b/src/app/dataset-block/metadata-block/components/block-navigation/pipes/block-hash-filter.pipe.ts
index 371b389da..18fd0ba41 100644
--- a/src/app/dataset-block/metadata-block/components/block-navigation/pipes/block-hash-filter.pipe.ts
+++ b/src/app/dataset-block/metadata-block/components/block-navigation/pipes/block-hash-filter.pipe.ts
@@ -5,8 +5,12 @@ import { MetadataBlockFragment } from "src/app/api/kamu.graphql.interface";
name: "blockHashFilter",
})
export class BlockHashFilterPipe implements PipeTransform {
- transform(blocks: MetadataBlockFragment[], filter: string): MetadataBlockFragment[] {
+ transform(
+ blocks: MetadataBlockFragment[],
+ filter: string,
+ allHistory: MetadataBlockFragment[],
+ ): MetadataBlockFragment[] {
if (filter === "") return blocks;
- return blocks.filter((block: MetadataBlockFragment) => (block.blockHash as string).includes(filter));
+ return allHistory.filter((block: MetadataBlockFragment) => (block.blockHash as string).includes(filter));
}
}
diff --git a/src/app/dataset-block/metadata-block/components/block-navigation/pipes/event-type-filter.pipe.ts b/src/app/dataset-block/metadata-block/components/block-navigation/pipes/event-type-filter.pipe.ts
index 6d92251ba..83ee97df7 100644
--- a/src/app/dataset-block/metadata-block/components/block-navigation/pipes/event-type-filter.pipe.ts
+++ b/src/app/dataset-block/metadata-block/components/block-navigation/pipes/event-type-filter.pipe.ts
@@ -5,13 +5,17 @@ import { MetadataBlockFragment } from "src/app/api/kamu.graphql.interface";
name: "eventTypeFilter",
})
export class EventTypeFilterPipe implements PipeTransform {
- transform(blocks: MetadataBlockFragment[], filters: string[]): MetadataBlockFragment[] {
+ transform(
+ blocks: MetadataBlockFragment[],
+ filters: string[],
+ allHistory: MetadataBlockFragment[],
+ ): MetadataBlockFragment[] {
if (!filters.length) {
return blocks;
} else {
const result = [] as MetadataBlockFragment[];
filters.forEach((filter: string) =>
- result.push(...blocks.filter((block) => block.event.__typename === filter)),
+ result.push(...allHistory.filter((block) => block.event.__typename === filter)),
);
return result;
}
diff --git a/src/app/dataset-block/metadata-block/metadata-block.component.html b/src/app/dataset-block/metadata-block/metadata-block.component.html
index 1dd1505cb..fa0beeeff 100644
--- a/src/app/dataset-block/metadata-block/metadata-block.component.html
+++ b/src/app/dataset-block/metadata-block/metadata-block.component.html
@@ -31,6 +31,7 @@
= null;
private blocksPerPage = 10;
+ public mapHistory = new Map();
ngOnInit(): void {
this.datasetInfo = this.getDatasetInfoFromUrl();
@@ -54,14 +56,31 @@ export class MetadataBlockComponent extends BaseProcessingComponent implements O
this.loadMetadataBlock(),
this.loadHistory(),
this.appDatasetSubsService.onDatasetHistoryChanges.subscribe((result: DatasetHistoryUpdate) => {
- this.datasetHistoryUpdate = result;
+ this.mapHistory.set(result.pageInfo.currentPage, result);
+ if (result.pageInfo.hasNextPage && result.pageInfo.totalPages !== this.mapHistory.size) {
+ this.loadHistory(result.pageInfo.currentPage + 1);
+ }
+ const firstPageHistory = this.mapHistory.get(0);
+ if (firstPageHistory) {
+ this.datasetHistoryUpdate = firstPageHistory;
+ }
this.cdr.detectChanges();
}),
);
}
+ public get allHistory(): MetadataBlockFragment[] {
+ return Array.from(this.mapHistory.values())
+ .map((item) => item.history)
+ .reduce((acc, cur) => [...acc, ...cur], []);
+ }
+
public onPageChange(currentPage: number): void {
- this.trackSubscription(this.loadHistory(currentPage - 1));
+ const currentHistory = this.mapHistory.get(currentPage - 1);
+ if (currentHistory) {
+ this.datasetHistoryUpdate = currentHistory;
+ this.cdr.detectChanges();
+ }
}
private loadMetadataBlock(): Subscription {
diff --git a/src/app/dataset-block/metadata-block/metadata-block.module.ts b/src/app/dataset-block/metadata-block/metadata-block.module.ts
index 7c7caba57..7a1a6e373 100644
--- a/src/app/dataset-block/metadata-block/metadata-block.module.ts
+++ b/src/app/dataset-block/metadata-block/metadata-block.module.ts
@@ -46,6 +46,7 @@ import { EventTimePropertyComponent } from "./components/event-details/component
import { OrderPropertyComponent } from "./components/event-details/components/common/order-property/order-property.component";
import { CommandPropertyComponent } from "./components/event-details/components/common/command-property/command-property.component";
import { StepTypePropertyComponent } from "./components/event-details/components/common/step-type-property/step-type-property.component";
+import { NgbPaginationModule } from "@ng-bootstrap/ng-bootstrap";
@NgModule({
declarations: [
@@ -98,6 +99,7 @@ import { StepTypePropertyComponent } from "./components/event-details/components
DisplayTimeModule,
DisplayHashModule,
SharedModule,
+ NgbPaginationModule,
],
exports: [MetadataBlockComponent],
})
diff --git a/src/styles.sass b/src/styles.sass
index 4863e0e18..72b9a1273 100644
--- a/src/styles.sass
+++ b/src/styles.sass
@@ -129,8 +129,8 @@ a
& .navbar
padding: 0
[data-test-id="appLogo"]
- background: none
- border: none
+ background: none
+ border: none
.mat-progress-spinner circle
stroke: $app-darkSeaGreen !important
@@ -296,7 +296,7 @@ a:visited
a:visited
color: inherit
router-outlet
- display: none
+ display: none
.app-content__card-columns
column-count: 1
grid-column-gap: 1.25rem
@@ -499,9 +499,9 @@ router-outlet
> i
font-size: 18px
[data-test-id="searchInput"]
- padding-left: 35px
- &::placeholder
- color: $app-white
+ padding-left: 35px
+ &::placeholder
+ color: $app-white
#searchInput.searchSidenav .input-group > [data-test-id="searchInput"].form-control
background: $app-white
@@ -883,13 +883,13 @@ app-account .dropdown-menu
width: 20px
font-size: 20px
[role="menu"] .UnderlineNav-item
- display: flex
- justify-content: flex-start
- align-items: center
+ display: flex
+ justify-content: flex-start
+ align-items: center
details summary::-webkit-details-marker,
details summary::marker
- display: none
- content: ""
+ display: none
+ content: ""
.UnderlineNav-item
padding: 8px 16px
font-size: 14px