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.
sandkasten-web/src/app/components/editor/editor.component.ts

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);
}
);
}
}