// Questo file fa parte di MyTown.
// MyTown è software libero: puoi ridistribuirlo e/o modificarlo secondo
// i termini della GNU Affero General Public License come pubblicata dalla
// Free Software Foundation, versione 3.
// Distribuito senza ALCUNA GARANZIA; vedi la GNU AGPL v3 per i dettagli.
// Copyright (C) Kondor Consulting & Services S.r.l.
// SPDX-License-Identifier: AGPL-3.0-or-later


import { Component, Input, OnInit, ViewChild } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { IonicModule, ModalController } from '@ionic/angular';
import { DrawingBoardComponent } from '../app-drawingboard/app-drawingboard.component';
import * as LZString from 'lz-string';

@Component({
	selector: 'app-drawing-modal',
	templateUrl: './drawing-modal.component.html',
	styleUrls: ['./drawing-modal.component.scss'],
	imports: [FormsModule, IonicModule, DrawingBoardComponent],
})
export class DrawingModalComponent implements OnInit {
	@Input() lavagna: string = '';
	@Input() isInView: boolean = false;
	@Input() title: string = '';

	@Input() prt_id: number = 0;
	@Input() sopralluogo_id: number = 0;

	@ViewChild(DrawingBoardComponent, { static: false }) drawingBoardComponent!: DrawingBoardComponent;

	constructor(private modalController: ModalController) {}

	ngOnInit() {
		// Attendo la fine dell'animazione di apertura del modale: solo a quel punto
		// il contenitore ha le dimensioni corrette e il canvas può essere disegnato.
		setTimeout(() => {
			if (this.lavagna) {
				this.drawingBoardComponent.loadDrawingData(this.lavagna);
			} else {
				// Sopralluogo nuovo (nessun disegno da caricare): senza questo refresh il
				// canvas resterebbe con le dimensioni calcolate durante l'animazione
				// (contenitore ad altezza 0) e l'area di disegno non sarebbe visibile.
				this.drawingBoardComponent.refresh();
			}
		}, 300);
	}

	handleDrawingboardSaveData(savedData: string[]) {
		this.lavagna = savedData[0];
		this.modalController.dismiss(savedData);
	}

	async closeModal() {
		await this.modalController.dismiss();
	}

	// Close modal with data
	async saveAndClose() {
		this.drawingBoardComponent.savePage();
	}

	async onBackButton() {
		await this.closeModal();
	}
}
