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: 'В разработке' });
}
}