This is an automated email from the ASF dual-hosted git repository. rshah pushed a commit to branch feature/tpv2-role-details in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git
commit cacfc77372e52d859c921bc8fc11a5ebb49a4962 Author: Rima Shah <[email protected]> AuthorDate: Wed May 3 22:34:58 2023 -0600 Updated folder name --- .../users/roles/tables/roles-table.component.html | 28 ------ .../users/roles/tables/roles-table.component.scss | 13 --- .../roles/tables/roles-table.component.spec.ts | 68 ------------- .../users/roles/tables/roles-table.component.ts | 111 --------------------- 4 files changed, 220 deletions(-) diff --git a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.html b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.html deleted file mode 100644 index 1ac559b6e1..0000000000 --- a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.html +++ /dev/null @@ -1,28 +0,0 @@ -<!-- -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. ---> - -<mat-card class="table-page-content"> - <div class="search-container"> - <input type="search" name="fuzzControl" aria-label="Fuzzy Search Roles" inputmode="search" role="search" accesskey="/" placeholder="Fuzzy Search" [formControl]="fuzzControl" (input)="updateURL()" /> - </div> - <tp-generic-table - [data]="roles | async" - [cols]="columnDefs" - [fuzzySearch]="fuzzySubject" - context="roles" - [contextMenuItems]="contextMenuItems" - (contextMenuAction)="handleContextMenu($event)"> - </tp-generic-table> -</mat-card> - - -<a class="page-fab" mat-fab title="Create a new role" *ngIf="auth.hasPermission('ROLE:CREATE')" routerLink="new"><mat-icon>add</mat-icon></a> diff --git a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.scss b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.scss deleted file mode 100644 index ebe77042d3..0000000000 --- a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.scss +++ /dev/null @@ -1,13 +0,0 @@ -/* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ diff --git a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.spec.ts b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.spec.ts deleted file mode 100644 index f7df2655fc..0000000000 --- a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.spec.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import { ComponentFixture, fakeAsync, TestBed, tick } from "@angular/core/testing"; -import { MatDialogModule } from "@angular/material/dialog"; -import { RouterTestingModule } from "@angular/router/testing"; - -import { APITestingModule } from "src/app/api/testing"; -import { RoleTableComponent } from "src/app/core/users/roles/table/roles-table.component"; - -describe("RoleTableComponent", () => { - let component: RoleTableComponent; - let fixture: ComponentFixture<RoleTableComponent>; - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [ RoleTableComponent ], - imports: [ APITestingModule, RouterTestingModule, MatDialogModule ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(RoleTableComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it("should create", () => { - expect(component).toBeTruthy(); - }); - - it("updates the fuzzy search output", fakeAsync(() => { - let called = false; - const text = "testquest"; - const spy = jasmine.createSpy("subscriber", (txt: string): void =>{ - if (!called) { - expect(txt).toBe(""); - called = true; - } else { - expect(txt).toBe(text); - } - }); - component.fuzzySubject.subscribe(spy); - tick(); - expect(spy).toHaveBeenCalled(); - component.fuzzControl.setValue(text); - component.updateURL(); - tick(); - expect(spy).toHaveBeenCalledTimes(2); - })); - - it("handles contextmenu events", () => { - expect(async () => component.handleContextMenu({ - action: component.contextMenuItems[0].name, - data: {name: "test", description: "Can only read", lastUpdated: new Date()} - })).not.toThrow(); - }); -}); diff --git a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.ts b/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.ts deleted file mode 100644 index 814e4863b9..0000000000 --- a/experimental/traffic-portal/src/app/core/users/roles/tables/roles-table.component.ts +++ /dev/null @@ -1,111 +0,0 @@ -/* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import { Component, type OnInit } from "@angular/core"; -import { FormControl } from "@angular/forms"; -import { ActivatedRoute } from "@angular/router"; -import { BehaviorSubject } from "rxjs"; -import type { ResponseRole } from "trafficops-types"; - -import { UserService } from "src/app/api"; -import { CurrentUserService } from "src/app/shared/current-user/current-user.service"; -import type { ContextMenuActionEvent, ContextMenuItem } from "src/app/shared/generic-table/generic-table.component"; -import { NavigationService } from "src/app/shared/navigation/navigation.service"; -/** - * AsnsTableComponent is the controller for the "Asns" table. - */ -@Component({ - selector: "tp-roles", - styleUrls: ["./roles-table.component.scss"], - templateUrl: "./roles-table.component.html" -}) -export class RolesTableComponent implements OnInit { - /** List of roles */ - public roles: Promise<Array<ResponseRole>>; - constructor(private readonly route: ActivatedRoute, private readonly headerSvc: NavigationService, - private readonly api: UserService, public readonly auth: CurrentUserService) { - this.fuzzySubject = new BehaviorSubject<string>(""); - this.roles = this.api.getRoles(); - this.headerSvc.headerTitle.next("Roles"); - } - - /** Initializes table data, loading it from Traffic Ops. */ - public ngOnInit(): void { - this.route.queryParamMap.subscribe( - m => { - const search = m.get("search"); - if (search) { - this.fuzzControl.setValue(decodeURIComponent(search)); - this.updateURL(); - } - }, - e => { - console.error("Failed to get query parameters:", e); - } - ); - } - - /** Definitions of the table's columns according to the ag-grid API */ - public columnDefs = [ - { - field: "name", - headerName: "Name" - }, - { - field: "description", - headerName: "Description", - }, - { - field: "lastUpdated", - headerName: "Last Updated" - } - ]; - - /** Definitions for the context menu items (which act on augmented asn data). */ - public contextMenuItems: Array<ContextMenuItem<ResponseRole>> = [ - { - href: (selectedRow: ResponseRole): string => `${selectedRow.name}`, - name: "View Role" - }, - { - href: (selectedRow: ResponseRole): string => `${selectedRow.name}`, - name: "Open in New Tab", - newTab: true - }, - { - href: (selectedRow: ResponseRole): string => `/core/users?role=${selectedRow.name}`, - name: "View Users" - }, - ]; - - /** A subject that child components can subscribe to for access to the fuzzy search query text */ - public fuzzySubject: BehaviorSubject<string>; - - /** Form controller for the user search input. */ - public fuzzControl = new FormControl<string>(""); - - /** Update the URL's 'search' query parameter for the user's search input. */ - public updateURL(): void { - this.fuzzySubject.next(this.fuzzControl.value ?? ""); - } - - /** - * Handles a context menu event. - * - * @param a The action selected from the context menu. - */ - public handleContextMenu(a: ContextMenuActionEvent<Readonly<ResponseRole>>): void { - console.log("action:", a); - } -}
