Skip to content

Commit a4e025e

Browse files
guguclaude
andcommitted
fix: use proper links for chart navigation and reorder navbar tabs
Changed create/edit chart buttons to anchor tags with routerLink for better accessibility and navigation behavior. Moved Charts to be the second navbar item after Tables. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 8f27fad commit a4e025e

4 files changed

Lines changed: 22 additions & 21 deletions

File tree

frontend/src/app/components/charts/charts-list/charts-list.component.html

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ <h1 class="mat-h1">Saved Queries</h1>
1919
<mat-icon matSuffix>search</mat-icon>
2020
</mat-form-field>
2121

22-
<button mat-flat-button color="primary"
23-
(click)="openCreatePage()"
22+
<a mat-flat-button color="primary"
23+
[routerLink]="['/charts', connectionId, 'new']"
24+
(click)="trackCreatePageOpened()"
2425
data-testid="create-chart-button">
2526
<mat-icon>add</mat-icon>
2627
Create Query
27-
</button>
28+
</a>
2829
</div>
2930

3031
<app-placeholder-table-data *ngIf="loading"></app-placeholder-table-data>
@@ -34,10 +35,12 @@ <h1 class="mat-h1">Saved Queries</h1>
3435
<h3>No saved queries found</h3>
3536
<p *ngIf="searchQuery">No queries match your search criteria.</p>
3637
<p *ngIf="!searchQuery">Create your first saved query to visualize your data.</p>
37-
<button *ngIf="!searchQuery" mat-stroked-button color="primary" (click)="openCreatePage()">
38+
<a *ngIf="!searchQuery" mat-stroked-button color="primary"
39+
[routerLink]="['/charts', connectionId, 'new']"
40+
(click)="trackCreatePageOpened()">
3841
<mat-icon>add</mat-icon>
3942
Create Query
40-
</button>
43+
</a>
4144
</div>
4245

4346
<table *ngIf="!loading && filteredQueries.length > 0" mat-table [dataSource]="filteredQueries" class="mat-elevation-z2 charts-table">
@@ -85,11 +88,13 @@ <h3>No saved queries found</h3>
8588
<mat-icon>more_vert</mat-icon>
8689
</button>
8790
<mat-menu #actionsMenu="matMenu">
88-
<button mat-menu-item (click)="openEditPage(query)"
91+
<a mat-menu-item
92+
[routerLink]="['/charts', connectionId, query.id]"
93+
(click)="trackEditPageOpened()"
8994
attr.data-testid="chart-edit-{{i}}-menu-item">
9095
<mat-icon>edit</mat-icon>
9196
<span>Edit</span>
92-
</button>
97+
</a>
9398
<mat-divider></mat-divider>
9499
<button mat-menu-item (click)="openDeleteDialog(query)" class="delete-action"
95100
attr.data-testid="chart-delete-{{i}}-menu-item">

frontend/src/app/components/charts/charts-list/charts-list.component.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { MatMenuModule } from '@angular/material/menu';
1111
import { MatTableModule } from '@angular/material/table';
1212
import { MatTooltipModule } from '@angular/material/tooltip';
1313
import { Title } from '@angular/platform-browser';
14-
import { ActivatedRoute, Router, RouterModule } from '@angular/router';
14+
import { ActivatedRoute, RouterModule } from '@angular/router';
1515
import { Angulartics2 } from 'angulartics2';
1616
import { Subject, Subscription } from 'rxjs';
1717
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
@@ -57,7 +57,6 @@ export class ChartsListComponent implements OnInit, OnDestroy {
5757
private _savedQueries: SavedQueriesService,
5858
private _connections: ConnectionsService,
5959
private route: ActivatedRoute,
60-
private router: Router,
6160
private dialog: MatDialog,
6261
private angulartics2: Angulartics2,
6362
private title: Title,
@@ -115,15 +114,13 @@ export class ChartsListComponent implements OnInit, OnDestroy {
115114
this.searchSubject.next(query);
116115
}
117116

118-
openCreatePage(): void {
119-
this.router.navigate(['/charts', this.connectionId, 'new']);
117+
trackCreatePageOpened(): void {
120118
this.angulartics2.eventTrack.next({
121119
action: 'Charts: create chart page opened',
122120
});
123121
}
124122

125-
openEditPage(query: SavedQuery): void {
126-
this.router.navigate(['/charts', this.connectionId, query.id]);
123+
trackEditPageOpened(): void {
127124
this.angulartics2.eventTrack.next({
128125
action: 'Charts: edit chart page opened',
129126
});

frontend/src/app/services/connections.service.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -253,18 +253,18 @@ describe('ConnectionsService', () => {
253253
expect(service.currentTab).toEqual('dashboard');
254254
});
255255

256-
it('should get visible tabs dashboard, audit and charts in any case', () => {
257-
expect(service.visibleTabs).toEqual(['dashboard', 'audit', 'charts']);
256+
it('should get visible tabs dashboard, charts and audit in any case', () => {
257+
expect(service.visibleTabs).toEqual(['dashboard', 'charts', 'audit']);
258258
});
259259

260-
it('should get visible tabs dashboard, audit, permissions and charts if groupsAccessLevel is true', () => {
260+
it('should get visible tabs dashboard, charts, audit and permissions if groupsAccessLevel is true', () => {
261261
service.groupsAccessLevel = true;
262-
expect(service.visibleTabs).toEqual(['dashboard', 'audit', 'permissions', 'charts']);
262+
expect(service.visibleTabs).toEqual(['dashboard', 'charts', 'audit', 'permissions']);
263263
});
264264

265-
it('should get visible tabs dashboard, audit, charts, connection-settings and edit-db if connectionAccessLevel is edit', () => {
265+
it('should get visible tabs dashboard, charts, audit, connection-settings and edit-db if connectionAccessLevel is edit', () => {
266266
service.connectionAccessLevel = AccessLevel.Edit;
267-
expect(service.visibleTabs).toEqual(['dashboard', 'audit', 'charts', 'connection-settings', 'edit-db']);
267+
expect(service.visibleTabs).toEqual(['dashboard', 'charts', 'audit', 'connection-settings', 'edit-db']);
268268
});
269269

270270
it('should call fetchConnections', () => {

frontend/src/app/services/connections.service.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,8 @@ export class ConnectionsService {
117117
}
118118

119119
get visibleTabs() {
120-
let tabs = ['dashboard', 'audit'];
120+
let tabs = ['dashboard', 'charts', 'audit'];
121121
if (this.groupsAccessLevel) tabs.push('permissions');
122-
tabs.push('charts');
123122
if (this.isPermitted(this.connectionAccessLevel)) tabs.push('connection-settings', 'edit-db');
124123
return tabs;
125124
}

0 commit comments

Comments
 (0)