result to screen #2

Merged
clement.freville2 merged 3 commits from print-response into master 1 year ago

@ -14,6 +14,21 @@
</ngx-codemirror> </ngx-codemirror>
</div> </div>
<div>
<ngx-codemirror
[options]="{
theme: 'material',
lineNumbers: false,
lineWrapping: false,
mode: mode,
autofocus: true,
readOnly: true
}"
[(ngModel)]="resultContent"
>
</ngx-codemirror>
</div>
<div> <div>
<label for="language">Langage de programmation</label> <label for="language">Langage de programmation</label>
<select <select

@ -34,6 +34,7 @@ export class EditorComponent implements OnInit{
// Contenu de l'éditeur que l'on passera au serveur // Contenu de l'éditeur que l'on passera au serveur
editorContent: string = defaults[this.mode]; editorContent: string = defaults[this.mode];
resultContent: string = defaults[this.mode];
constructor(private router: Router, private codeExecutionService: CodeExecutionService) {} constructor(private router: Router, private codeExecutionService: CodeExecutionService) {}
@ -62,6 +63,11 @@ export class EditorComponent implements OnInit{
onRunButtonClicked() { onRunButtonClicked() {
// Le code à exécuter est le contenu de l'éditeur // Le code à exécuter est le contenu de l'éditeur
const codeToExecute = this.editorContent; const codeToExecute = this.editorContent;
this.codeExecutionService.executeCode(codeToExecute, this.mode); this.codeExecutionService.executeCode(codeToExecute, this.mode);
this.codeExecutionService.getResult().subscribe(result => {
this.resultContent = result;
});
} }
} }

@ -1,12 +1,14 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { SSE } from 'sse.js'; import { SSE } from 'sse.js';
import { Observable, Subject } from 'rxjs';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
}) })
export class CodeExecutionService { export class CodeExecutionService {
private apiUrl = 'http://localhost:3000/run'; // Url du serveur Node.js en local private apiUrl = 'http://localhost:3000/run';
private resultSubject = new Subject<string>();
constructor(private http: HttpClient) {} constructor(private http: HttpClient) {}
@ -19,8 +21,17 @@ export class CodeExecutionService {
}, },
payload: JSON.stringify({ code, language }), payload: JSON.stringify({ code, language }),
}); });
sse.addEventListener('message', (event: MessageEvent<string>) => { sse.addEventListener('message', (event: MessageEvent<string>) => {
console.log(event.data); const result = event.data;
// Émettre le résultat à tous les abonnés
const text = decodeURIComponent(result.replace(/%00/g, ''));
this.resultSubject.next(text);
}); });
} }
getResult(): Observable<string> {
return this.resultSubject.asObservable();
}
} }

Loading…
Cancel
Save