import { Component, inject, computed } from '@angular/core'; import { ButtonModule } from 'primeng/button'; import { ToggleSwitchModule } from 'primeng/toggleswitch'; import { SliderModule } from 'primeng/slider'; import { TooltipModule } from 'primeng/tooltip'; import { FormsModule } from '@angular/forms'; import { MessageService } from 'primeng/api'; import { SchemaStore } from '../../store/schema.store'; @Component({ selector: 'app-toolbar', standalone: true, imports: [ButtonModule, ToggleSwitchModule, SliderModule, TooltipModule, FormsModule], template: `
`, }) export class ToolbarComponent { readonly store = inject(SchemaStore); private readonly messageService = inject(MessageService); zoom = computed(() => { const g = this.store.graph(); return g ? Math.round(g.zoom() * 100) : 100; }); handleZoomIn() { this.store.graph()?.zoom(0.1); } handleZoomOut() { this.store.graph()?.zoom(-0.1); } handleFit() { this.store.graph()?.zoomToFit({ padding: 40 }); } handleZoomChange(value: number) { const g = this.store.graph(); if (g) { g.zoomTo(value / 100); } } deleteSelected() { const g = this.store.graph(); if (g) { const cells = g.getSelectedCells(); if (cells.length) g.removeCells(cells); } } wip() { this.messageService.add({ severity: 'info', summary: 'В разработке' }); } }