mirror of
https://github.com/jwetzell/showbridge-webui.git
synced 2026-08-18 12:43:57 +00:00
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { Component, inject, input, model } from '@angular/core';
|
|
import { MatButtonModule } from '@angular/material/button';
|
|
import { MatIconModule } from '@angular/material/icon';
|
|
import { MatMenuModule } from '@angular/material/menu';
|
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
import { RouteConfig } from '../../models/config';
|
|
import { SchemaService } from '../../services/schema';
|
|
import { RouteComponent } from '../route/route';
|
|
|
|
@Component({
|
|
selector: 'app-route-list',
|
|
imports: [RouteComponent, MatMenuModule, MatIconModule, MatButtonModule, MatTooltipModule],
|
|
templateUrl: './route-list.html',
|
|
styleUrl: './route-list.css',
|
|
})
|
|
export class RouteListComponent {
|
|
routes = model<RouteConfig[]>();
|
|
moduleIds = input<string[]>();
|
|
public schemaService = inject(SchemaService);
|
|
|
|
private snackBar = inject(MatSnackBar);
|
|
|
|
deleteRoute(index: number) {
|
|
this.routes.update((routes) => {
|
|
if (routes) {
|
|
routes?.splice(index, 1);
|
|
return [...routes];
|
|
}
|
|
return routes;
|
|
});
|
|
this.snackBar.open('Route Removed', 'Dismiss', {
|
|
duration: 3000,
|
|
});
|
|
}
|
|
|
|
routeUpdated(index: number, route: RouteConfig | undefined) {
|
|
if (route === undefined) {
|
|
console.error('route is undefined, not updating');
|
|
return;
|
|
}
|
|
this.routes.update((routes) => {
|
|
if (routes) {
|
|
routes[index].input = route.input;
|
|
if (route.processors) {
|
|
routes[index].processors = [...route.processors];
|
|
}
|
|
return [...routes];
|
|
}
|
|
return routes;
|
|
});
|
|
}
|
|
|
|
addRoute() {
|
|
const routeTemplate = this.schemaService.getSkeletonForRoute();
|
|
this.routes.update((routes) => {
|
|
if (!routes) {
|
|
routes = [];
|
|
}
|
|
routes?.push(routeTemplate);
|
|
return [...routes];
|
|
});
|
|
this.snackBar.open('Route Added', 'Dismiss', {
|
|
duration: 3000,
|
|
});
|
|
}
|
|
}
|