From cfea56891da9f1eea77f6dd1c3aaf64cbea2087b Mon Sep 17 00:00:00 2001 From: "hugo.pradier2" Date: Thu, 11 Jan 2024 16:24:53 +0100 Subject: [PATCH 1/6] =?UTF-8?q?Correctif=20:=20le=20code=20envoy=C3=A9=20n?= =?UTF-8?q?=20est=20plus=20celui=20par=20d=C3=A9faut=20mais=20le=20contenu?= =?UTF-8?q?=20de=20l=20editeur=20directement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/components/editor/editor.component.html | 6 +++--- src/app/components/editor/editor.component.ts | 13 +++++++++---- src/app/services/codeExecution.service.ts | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/app/components/editor/editor.component.html b/src/app/components/editor/editor.component.html index 5c06bd3..4c9981c 100644 --- a/src/app/components/editor/editor.component.html +++ b/src/app/components/editor/editor.component.html @@ -8,10 +8,10 @@ mode: mode, autofocus: true }" - [ngModel]="defaults[mode]" + [(ngModel)]="editorContent" [autoFocus]="true" - (ngModelChange)="handleChange($event)" - > + > +
diff --git a/src/app/components/editor/editor.component.ts b/src/app/components/editor/editor.component.ts index c2f565c..3f5f0a6 100644 --- a/src/app/components/editor/editor.component.ts +++ b/src/app/components/editor/editor.component.ts @@ -20,6 +20,7 @@ const defaults = { 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é @@ -31,6 +32,9 @@ export class EditorComponent implements OnInit{ }; 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 { @@ -56,11 +60,14 @@ export class EditorComponent implements OnInit{ } onRunButtonClicked() { - const codeToExecute = this.defaults[this.mode]; - + // Le code à exécuter est le contenu de l'éditeur + const codeToExecute = this.editorContent; + this.codeExecutionService.executeCode(codeToExecute).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']); }, @@ -69,6 +76,4 @@ export class EditorComponent implements OnInit{ } ); } - - } diff --git a/src/app/services/codeExecution.service.ts b/src/app/services/codeExecution.service.ts index e9bd80a..a487009 100644 --- a/src/app/services/codeExecution.service.ts +++ b/src/app/services/codeExecution.service.ts @@ -6,7 +6,7 @@ import { Observable } from 'rxjs'; providedIn: 'root', }) export class CodeExecutionService { - private apiUrl = 'http://localhost:3000'; // Url du serveur Node.js en local + private apiUrl = 'http://localhost:3000/run'; // Url du serveur Node.js en local constructor(private http: HttpClient) {} From 62a99938bb34cd45fa1420d8f86cc6bee1577ace Mon Sep 17 00:00:00 2001 From: "hugo.pradier2" Date: Mon, 15 Jan 2024 08:32:42 +0100 Subject: [PATCH 2/6] Envoie le langage au serveur --- src/app/components/editor/editor.component.ts | 8 ++++---- src/app/services/codeExecution.service.ts | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/app/components/editor/editor.component.ts b/src/app/components/editor/editor.component.ts index 3f5f0a6..7587211 100644 --- a/src/app/components/editor/editor.component.ts +++ b/src/app/components/editor/editor.component.ts @@ -62,15 +62,15 @@ export class EditorComponent implements OnInit{ onRunButtonClicked() { // Le code à exécuter est le contenu de l'éditeur const codeToExecute = this.editorContent; - - this.codeExecutionService.executeCode(codeToExecute).subscribe( + + 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); } diff --git a/src/app/services/codeExecution.service.ts b/src/app/services/codeExecution.service.ts index a487009..f4cd893 100644 --- a/src/app/services/codeExecution.service.ts +++ b/src/app/services/codeExecution.service.ts @@ -10,7 +10,7 @@ export class CodeExecutionService { constructor(private http: HttpClient) {} - executeCode(code: string): Observable { - return this.http.post(this.apiUrl, { code }); + executeCode(code: string, language: string): Observable { + return this.http.post(this.apiUrl, { code, language }); } -} \ No newline at end of file +} From 5b4839668daa364338472d9bf391dba0cd52e944 Mon Sep 17 00:00:00 2001 From: clfreville2 Date: Mon, 15 Jan 2024 10:57:42 +0100 Subject: [PATCH 3/6] Add POST SSE --- package-lock.json | 6 ++++++ package.json | 1 + src/app/components/editor/editor.component.ts | 14 +------------- src/app/services/codeExecution.service.ts | 16 +++++++++++++--- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f5be49..08b6afe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "@ngx-translate/http-loader": "^8.0.0", "codemirror": "^5.65.16", "rxjs": "~7.8.1", + "sse.js": "^2.2.0", "tslib": "^2.6.2", "zone.js": "~0.14.2" }, @@ -11298,6 +11299,11 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "node_modules/sse.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sse.js/-/sse.js-2.2.0.tgz", + "integrity": "sha512-v1ciaikunC99FKS23rS973HYU0DnnvugtX13UggNvrgRUSungaGeLmKlm57t0dI2E1TcCqzc2Pj2njBDXFIpKQ==" + }, "node_modules/ssri": { "version": "10.0.5", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", diff --git a/package.json b/package.json index f8150a9..116746e 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@ngx-translate/http-loader": "^8.0.0", "codemirror": "^5.65.16", "rxjs": "~7.8.1", + "sse.js": "^2.2.0", "tslib": "^2.6.2", "zone.js": "~0.14.2" }, diff --git a/src/app/components/editor/editor.component.ts b/src/app/components/editor/editor.component.ts index 7587211..65fbb44 100644 --- a/src/app/components/editor/editor.component.ts +++ b/src/app/components/editor/editor.component.ts @@ -62,18 +62,6 @@ export class EditorComponent implements OnInit{ 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); - } - ); + this.codeExecutionService.executeCode(codeToExecute, this.mode); } } diff --git a/src/app/services/codeExecution.service.ts b/src/app/services/codeExecution.service.ts index f4cd893..c2ecafd 100644 --- a/src/app/services/codeExecution.service.ts +++ b/src/app/services/codeExecution.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; +import { SSE } from 'sse.js'; @Injectable({ providedIn: 'root', @@ -10,7 +10,17 @@ export class CodeExecutionService { constructor(private http: HttpClient) {} - executeCode(code: string, language: string): Observable { - return this.http.post(this.apiUrl, { code, language }); + executeCode(code: string, language: string) { + const sse = new SSE(this.apiUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'text/event-stream', + }, + payload: JSON.stringify({ code, language }), + }); + sse.addEventListener('message', (event: MessageEvent) => { + console.log(event.data); + }); } } From e6516aa240161b82f5dce7baa147d17dcec98b04 Mon Sep 17 00:00:00 2001 From: clfreville2 Date: Tue, 16 Jan 2024 10:30:58 +0100 Subject: [PATCH 4/6] Update Node version in CI --- .drone.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.drone.yml b/.drone.yml index 3bf18b5..4f30a59 100644 --- a/.drone.yml +++ b/.drone.yml @@ -2,8 +2,7 @@ kind: pipeline steps: - name: build - image: node:20-alpine3.18 + image: node:20-alpine3.19 commands: - npm install - - npm install -g @angular/cli - - ng build \ No newline at end of file + - npm run build From a17d97c05073463229f6473d2821654d11dc811e Mon Sep 17 00:00:00 2001 From: Bastien OLLIER Date: Tue, 16 Jan 2024 11:46:33 +0100 Subject: [PATCH 5/6] result to screen (#2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit please, peer review my code Co-authored-by: bastien ollier Co-authored-by: clfreville2 Reviewed-on: https://codefirst.iut.uca.fr/git/sandkasten/sandkasten-web/pulls/2 Reviewed-by: Clément FRÉVILLE Co-authored-by: Bastien OLLIER Co-committed-by: Bastien OLLIER --- src/app/components/editor/editor.component.html | 15 +++++++++++++++ src/app/components/editor/editor.component.ts | 6 ++++++ src/app/services/codeExecution.service.ts | 15 +++++++++++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/app/components/editor/editor.component.html b/src/app/components/editor/editor.component.html index 4c9981c..26a7fa7 100644 --- a/src/app/components/editor/editor.component.html +++ b/src/app/components/editor/editor.component.html @@ -14,6 +14,21 @@
+
+ + +
+