You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.3 KiB
80 lines
2.3 KiB
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;
|
|
|
|
// Contenu de l'éditeur que l'on passera au serveur
|
|
editorContent: string = defaults[this.mode];
|
|
|
|
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() {
|
|
// Le code à exécuter est le contenu de l'éditeur
|
|
const codeToExecute = this.editorContent;
|
|
|
|
this.codeExecutionService.executeCode(codeToExecute, this.mode).subscribe(
|
|
(response) => {
|
|
console.log('Réponse du serveur:', response);
|
|
console.log('Code qui va être exécuté:', codeToExecute);
|
|
|
|
// Redirigez vers une autre page (par exemple, 'output')
|
|
this.router.navigate(['/output']);
|
|
},
|
|
(error) => {
|
|
console.error('Erreur lors de l\'exécution du code:', error);
|
|
}
|
|
);
|
|
}
|
|
}
|