-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdataset-view-menu.component.ts
More file actions
111 lines (95 loc) · 4.13 KB
/
dataset-view-menu.component.ts
File metadata and controls
111 lines (95 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import { WidgetHeightService } from "../../services/widget-height.service";
import {
AfterViewInit,
ChangeDetectionStrategy,
Component,
ElementRef,
HostListener,
inject,
Input,
OnInit,
ViewChild,
} from "@angular/core";
import { MatSidenav } from "@angular/material/sidenav";
import { DatasetViewTypeEnum } from "../dataset-view.interface";
import { SideNavHelper } from "../../common/sidenav.helper";
import { isMobileView, promiseWithCatch } from "src/app/common/app.helpers";
import { DatasetBasicsFragment, DatasetPermissionsFragment } from "src/app/api/kamu.graphql.interface";
import { ElementsViewService, ViewModeElement } from "src/app/services/elements-view.service";
import { Observable } from "rxjs";
@Component({
selector: "app-dataset-view-menu",
templateUrl: "./dataset-view-menu.component.html",
styleUrls: ["./dataset-view-menu.component.scss"],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DatasetViewMenuComponent implements OnInit, AfterViewInit {
@ViewChild("sidenav", { static: true }) public sidenav?: MatSidenav;
@ViewChild("menuTrigger") trigger: ElementRef;
@ViewChild("datasetViewMenu") datasetViewMenuComponent: ElementRef<HTMLDivElement>;
@Input({ required: true }) datasetBasics: DatasetBasicsFragment;
@Input({ required: true }) datasetPermissions: DatasetPermissionsFragment;
@Input({ required: true }) datasetViewType: DatasetViewTypeEnum;
@Input() isMinimizeSearchAdditionalButtons: boolean;
public readonly DatasetViewTypeEnum: typeof DatasetViewTypeEnum = DatasetViewTypeEnum;
private sideNavHelper: SideNavHelper;
private elementsViewService = inject(ElementsViewService);
private widgetHeightService = inject(WidgetHeightService);
public viewModeElement$: Observable<ViewModeElement>;
public readonly ViewModeElement: typeof ViewModeElement = ViewModeElement;
public ngAfterViewInit(): void {
this.widgetHeightService.setWidgetOffsetTop(
this.datasetViewMenuComponent.nativeElement.clientHeight +
this.datasetViewMenuComponent.nativeElement.offsetTop,
);
}
public ngOnInit(): void {
if (this.sidenav) {
this.sideNavHelper = new SideNavHelper(this.sidenav);
}
this.viewModeElement$ = this.elementsViewService.viewModeElement();
}
public get isDatasetViewTypeOverview(): boolean {
return this.datasetViewType === DatasetViewTypeEnum.Overview;
}
public get isDatasetViewTypeData(): boolean {
return this.datasetViewType === DatasetViewTypeEnum.Data;
}
public get isDatasetViewTypeMetadata(): boolean {
return this.datasetViewType === DatasetViewTypeEnum.Metadata;
}
public get isDatasetViewTypeHistory(): boolean {
return this.datasetViewType === DatasetViewTypeEnum.History;
}
public get isDatasetViewTypeLineage(): boolean {
return this.datasetViewType === DatasetViewTypeEnum.Lineage;
}
public get isDatasetViewTypeDiscussions(): boolean {
return this.datasetViewType === DatasetViewTypeEnum.Discussions;
}
public get isDatasetViewTypeFlows(): boolean {
return this.datasetViewType === DatasetViewTypeEnum.Flows;
}
public get isDatasetViewTypeSettings(): boolean {
return this.datasetViewType === DatasetViewTypeEnum.Settings;
}
public get datasetLink(): string {
return `/${this.datasetBasics.owner.accountName}/${this.datasetBasics.name}/`;
}
@HostListener("window:resize")
private checkWindowSize(): void {
this.isMinimizeSearchAdditionalButtons = isMobileView();
if (this.sidenav) {
if (isMobileView()) {
promiseWithCatch(this.sideNavHelper.close());
} else {
promiseWithCatch(this.sideNavHelper.open());
}
}
if (this.datasetViewMenuComponent.nativeElement.offsetHeight)
this.widgetHeightService.setWidgetOffsetTop(
this.datasetViewMenuComponent.nativeElement.offsetHeight +
this.datasetViewMenuComponent.nativeElement.offsetTop,
);
}
}