import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { CodeExecutionService } from 'src/app/services/codeExecution.service';

// Exemple de code pour chaque langage
const defaults = {
  markdown:
    '# Sankasten\n\nProjet **SAE 3A** par _FRIZOT, MAZINGUE, OLLIER, FREVILLE ET PRADIER_ text\nGit [Sankasten WEB](https://codefirst.iut.uca.fr/git/sandkasten/sandkasten-web.git)',
    'text/typescript': `const component = {
    name: "@exemple/Typescript",
    author: "Sandkasten",
    repo: "https://codefirst.iut.uca.fr/git/sandkasten/sandkasten-web.git"
  };
  const hello: string = 'Bonjour ceci est un test de code en typescript';`
};

@Component({
  selector: 'app-editor',
  templateUrl: './editor.component.html',
  styleUrls: ['./editor.component.scss']
})
export class EditorComponent implements OnInit{
  loadingProgress: number = 0; // Pour suivre la progression du chargement
  isLoaded: boolean = false; // Pour vérifier si le chargement est terminé

  // Mode par défaut
  mode: keyof typeof defaults = 'text/typescript';
  options = {
    lineNumbers: true,
    mode: this.mode,
  };
  defaults = defaults;

  constructor(private router: Router, private codeExecutionService: CodeExecutionService) {}

  ngOnInit(): void {
    
  }

  // Change le langage de l'éditeur
  changeMode(): void {
    this.options = {
      ...this.options,
      mode: this.mode,
    };
  }

  // Affiche le contenu de l'éditeur
  handleChange($event: Event): void {
    console.log('ngModelChange', $event);
  }

  // Efface le contenu de l'éditeur
  clear(): void {
    this.defaults[this.mode] = '';
  }
  
  onRunButtonClicked() {
    const codeToExecute = this.defaults[this.mode];
  
    this.codeExecutionService.executeCode(codeToExecute).subscribe(
      (response) => {
        console.log('Réponse du serveur:', response);
        // Redirigez vers une autre page (par exemple, 'output')
        this.router.navigate(['/output']);
      },
      (error) => {
        console.error('Erreur lors de l\'exécution du code:', error);
      }
    );
  }
  

}
