import { Component, OnInit, ViewChild, Input, ElementRef } from '@angular/core';
import { SignaturesContentService } from '../service/signatures.service';
import {
    MatMenuTrigger,
} from '@angular/material';
import { NotificationService } from '../service/notification.service';
import { DomSanitizer } from '@angular/platform-browser';


@Component({
    selector: 'app-document-sign-list',
    templateUrl: 'document-sign-list.component.html',
})
export class DocumentSignListComponent implements OnInit {


    @Input('canvas') canvas: ElementRef;

    @ViewChild('menuTrigger') menuSign: MatMenuTrigger;

    constructor(private sanitization: DomSanitizer, public signaturesService: SignaturesContentService, public notificationService: NotificationService) { }

    ngOnInit(): void { }

    moveSign(event: any, i: number) {
        this.signaturesService.signaturesContent[this.signaturesService.currentPage][i].positionX = event.x;
        this.signaturesService.signaturesContent[this.signaturesService.currentPage][i].positionY = event.y;
    }

    cloneSign(i: number) {

        const r = confirm('Voulez-vous apposer la signature sur les autres pages ?');

        if (r) {
            this.signaturesService.signaturesContent[this.signaturesService.currentPage][i].inAllPage = true;
            this.signaturesService.signaturesContent[this.signaturesService.currentPage][i].token = Math.random().toString(36).substr(2, 9);

            for (let index = 1; index <= this.signaturesService.totalPage; index++) {
                if (!this.signaturesService.signaturesContent[index]) {
                  this.signaturesService.signaturesContent[index] = [];
                }
                if (index !== this.signaturesService.currentPage) {
                    this.signaturesService.signaturesContent[index].push(JSON.parse(JSON.stringify(this.signaturesService.signaturesContent[this.signaturesService.currentPage][i])));
                }
              }
        }
        this.menuSign.closeMenu();
    }

    deleteSignature(i: number) {

        if (this.signaturesService.signaturesContent[this.signaturesService.currentPage][i].inAllPage === true) {
            const token = this.signaturesService.signaturesContent[this.signaturesService.currentPage][i].token;
            const r = confirm('Voulez-vous supprimer la signature sur les autres pages ?');

            if (r) {

                for (let index = 1; index <= this.signaturesService.totalPage; index++) {
                    if (!this.signaturesService.signaturesContent[index]) {
                        this.signaturesService.signaturesContent[index] = [];
                    }
                    for (let index2 = 0; index2 <= this.signaturesService.signaturesContent[index].length; index2++) {
                        if (this.signaturesService.signaturesContent[index][index2]) {
                            if (token === this.signaturesService.signaturesContent[index][index2].token) {
                                this.signaturesService.signaturesContent[index].splice(index2, 1);
                            }
                        }
                    }
                }
            } else {
                this.signaturesService.signaturesContent[this.signaturesService.currentPage].splice(i, 1);
            }
        } else {
            this.signaturesService.signaturesContent[this.signaturesService.currentPage].splice(i, 1);
        }
    }

    // USE TO PREVENT ISSUE IN MOBILE
    openMenu(menu: MatMenuTrigger) {
        menu.openMenu();
    }
}