diff --git a/angular.json b/angular.json index 9f1698b..145f9de 100644 --- a/angular.json +++ b/angular.json @@ -25,7 +25,7 @@ "src/assets" ], "styles": [ - "src/styles.css" + "src/styles.scss" ], "scripts": [] }, @@ -84,7 +84,7 @@ "src/assets" ], "styles": [ - "src/styles.css" + "src/styles.scss" ], "scripts": [] } diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 91e0c64..d92668d 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,10 +1,10 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { EditorComponent } from './editor/editor.component'; -import { LandingPageComponent } from './landing-page/landing-page.component'; -import { OutputComponent } from './output/output.component'; -import {DocumentationComponent} from "./documentation/documentation.component"; -import {FormComponent} from "./form/form.component"; +import { EditorComponent } from './components/editor/editor.component'; +import { LandingPageComponent } from './components/landing-page/landing-page.component'; +import { OutputComponent } from './components/output/output.component'; +import {DocumentationComponent} from "./components/documentation/documentation.component"; +import {FormComponent} from "./components/form/form.component"; // Toutes les routes de l'application sont définies ici const routes: Routes = [ diff --git a/src/app/app.component.css b/src/app/app.component.css deleted file mode 100644 index d1c3fe8..0000000 --- a/src/app/app.component.css +++ /dev/null @@ -1,10 +0,0 @@ -body{ - display: flex; - flex-direction: column; - height: 100vh; - margin: 0; -} - -main { - flex: 1; -} diff --git a/src/app/app.component.html b/src/app/app.component.html index d3d5c21..20ba0c2 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,5 +1,7 @@ - - + +
+ +
@@ -12,4 +14,5 @@ +
diff --git a/src/app/app.component.scss b/src/app/app.component.scss new file mode 100644 index 0000000..a8f8a53 --- /dev/null +++ b/src/app/app.component.scss @@ -0,0 +1,15 @@ +body.light-theme { + background-color: #ffffff; + color: #000000; + /* Autres styles pour le thème clair */ +} + +body.dark-theme { + background-color: #333333; + color: #ffffff; + /* Autres styles pour le thème sombre */ +} + +main { + flex: 1; +} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 28e67fa..3f94dc8 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,10 +1,24 @@ -import { Component } from '@angular/core'; -import { TranslateService } from '@ngx-translate/core'; - +import { Component, OnInit } from '@angular/core'; +import { ThemeService } from './services/theme.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] + styleUrls: ['./app.component.scss'] }) -export class AppComponent { + +export class AppComponent implements OnInit { + themeClass = 'light-theme'; + + constructor(private themeService: ThemeService) {} + + ngOnInit() { + this.themeService.isDarkTheme.subscribe((isDark) => { + this.themeClass = isDark ? 'dark-theme' : 'light-theme'; + console.log('Theme class updated:', this.themeClass); + }); + } + + toggleTheme() { + this.themeService.toggleDarkTheme(); + } } \ No newline at end of file diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 1928cb6..7d007c6 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -3,13 +3,13 @@ import { BrowserModule } from '@angular/platform-browser'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; -import { HeaderComponent } from './header/header.component'; -import { FooterComponent } from './footer/footer.component'; -import { EditorComponent } from './editor/editor.component'; -import { OutputComponent } from './output/output.component'; -import { LandingPageComponent } from './landing-page/landing-page.component'; -import { DocumentationComponent } from './documentation/documentation.component'; -import { FormComponent } from './form/form.component'; +import { HeaderComponent } from './components/header/header.component'; +import { FooterComponent } from './components/footer/footer.component'; +import { EditorComponent } from './components/editor/editor.component'; +import { OutputComponent } from './components/output/output.component'; +import { LandingPageComponent } from './components/landing-page/landing-page.component'; +import { DocumentationComponent } from './components/documentation/documentation.component'; +import { FormComponent } from './components/form/form.component'; import { ReactiveFormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms'; @@ -18,7 +18,8 @@ import { CodemirrorModule } from '@ctrl/ngx-codemirror'; import { HttpClient, HttpClientModule } from '@angular/common/http'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; -import { TranslationService } from './service/translation.service'; + +import { TranslationService } from './services/translation.service'; @NgModule({ declarations: [ diff --git a/src/app/documentation/documentation.component.html b/src/app/components/documentation/documentation.component.html similarity index 100% rename from src/app/documentation/documentation.component.html rename to src/app/components/documentation/documentation.component.html diff --git a/src/app/documentation/documentation.component.css b/src/app/components/documentation/documentation.component.scss similarity index 100% rename from src/app/documentation/documentation.component.css rename to src/app/components/documentation/documentation.component.scss diff --git a/src/app/documentation/documentation.component.spec.ts b/src/app/components/documentation/documentation.component.spec.ts similarity index 100% rename from src/app/documentation/documentation.component.spec.ts rename to src/app/components/documentation/documentation.component.spec.ts diff --git a/src/app/documentation/documentation.component.ts b/src/app/components/documentation/documentation.component.ts similarity index 79% rename from src/app/documentation/documentation.component.ts rename to src/app/components/documentation/documentation.component.ts index 36cd8a1..af87d03 100644 --- a/src/app/documentation/documentation.component.ts +++ b/src/app/components/documentation/documentation.component.ts @@ -3,7 +3,7 @@ import { Component } from '@angular/core'; @Component({ selector: 'app-documentation', templateUrl: './documentation.component.html', - styleUrls: ['./documentation.component.css'] + styleUrls: ['./documentation.component.scss'] }) export class DocumentationComponent { diff --git a/src/app/editor/editor.component.html b/src/app/components/editor/editor.component.html similarity index 100% rename from src/app/editor/editor.component.html rename to src/app/components/editor/editor.component.html diff --git a/src/app/editor/editor.component.css b/src/app/components/editor/editor.component.scss similarity index 100% rename from src/app/editor/editor.component.css rename to src/app/components/editor/editor.component.scss diff --git a/src/app/editor/editor.component.spec.ts b/src/app/components/editor/editor.component.spec.ts similarity index 100% rename from src/app/editor/editor.component.spec.ts rename to src/app/components/editor/editor.component.spec.ts diff --git a/src/app/editor/editor.component.ts b/src/app/components/editor/editor.component.ts similarity index 74% rename from src/app/editor/editor.component.ts rename to src/app/components/editor/editor.component.ts index e7bef8f..c2f565c 100644 --- a/src/app/editor/editor.component.ts +++ b/src/app/components/editor/editor.component.ts @@ -1,5 +1,6 @@ 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 = { @@ -16,7 +17,7 @@ const defaults = { @Component({ selector: 'app-editor', templateUrl: './editor.component.html', - styleUrls: ['./editor.component.css'] + styleUrls: ['./editor.component.scss'] }) export class EditorComponent implements OnInit{ loadingProgress: number = 0; // Pour suivre la progression du chargement @@ -30,7 +31,7 @@ export class EditorComponent implements OnInit{ }; defaults = defaults; - constructor(private router: Router){} + constructor(private router: Router, private codeExecutionService: CodeExecutionService) {} ngOnInit(): void { @@ -53,22 +54,21 @@ export class EditorComponent implements OnInit{ clear(): void { this.defaults[this.mode] = ''; } - - // Si click sur "Run", on redirige vers la page d'output + onRunButtonClicked() { - this.loadingProgress = 0; - this.isLoaded = false; - - // Simuler le chargement pendant 5 secondes - const interval = setInterval(() => { - this.loadingProgress++; - if (this.loadingProgress >= 100) { - clearInterval(interval); // Arrêtez la simulation de chargement - this.isLoaded = true; + 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); } - }, 50); // Augmenter la valeur pour ralentir la progression du chargement si nécessaire + ); } + } diff --git a/src/app/footer/footer.component.html b/src/app/components/footer/footer.component.html similarity index 100% rename from src/app/footer/footer.component.html rename to src/app/components/footer/footer.component.html diff --git a/src/app/footer/footer.component.css b/src/app/components/footer/footer.component.scss similarity index 100% rename from src/app/footer/footer.component.css rename to src/app/components/footer/footer.component.scss diff --git a/src/app/footer/footer.component.spec.ts b/src/app/components/footer/footer.component.spec.ts similarity index 100% rename from src/app/footer/footer.component.spec.ts rename to src/app/components/footer/footer.component.spec.ts diff --git a/src/app/footer/footer.component.ts b/src/app/components/footer/footer.component.ts similarity index 87% rename from src/app/footer/footer.component.ts rename to src/app/components/footer/footer.component.ts index d6ade9c..5eaf2fc 100644 --- a/src/app/footer/footer.component.ts +++ b/src/app/components/footer/footer.component.ts @@ -3,7 +3,7 @@ import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-footer', templateUrl: './footer.component.html', - styleUrls: ['./footer.component.css'] + styleUrls: ['./footer.component.scss'] }) export class FooterComponent implements OnInit { sandkasten_logo!: string; diff --git a/src/app/form/form.component.html b/src/app/components/form/form.component.html similarity index 100% rename from src/app/form/form.component.html rename to src/app/components/form/form.component.html diff --git a/src/app/form/form.component.css b/src/app/components/form/form.component.scss similarity index 100% rename from src/app/form/form.component.css rename to src/app/components/form/form.component.scss diff --git a/src/app/form/form.component.spec.ts b/src/app/components/form/form.component.spec.ts similarity index 100% rename from src/app/form/form.component.spec.ts rename to src/app/components/form/form.component.spec.ts diff --git a/src/app/form/form.component.ts b/src/app/components/form/form.component.ts similarity index 96% rename from src/app/form/form.component.ts rename to src/app/components/form/form.component.ts index 795f2c0..f2bf5e9 100644 --- a/src/app/form/form.component.ts +++ b/src/app/components/form/form.component.ts @@ -6,7 +6,7 @@ import emailjs from '@emailjs/browser'; @Component({ selector: 'app-form', templateUrl: './form.component.html', - styleUrls: ['./form.component.css'] + styleUrls: ['./form.component.scss'] }) export class FormComponent { form: FormGroup; diff --git a/src/app/header/header.component.html b/src/app/components/header/header.component.html similarity index 100% rename from src/app/header/header.component.html rename to src/app/components/header/header.component.html diff --git a/src/app/header/header.component.css b/src/app/components/header/header.component.scss similarity index 61% rename from src/app/header/header.component.css rename to src/app/components/header/header.component.scss index 998928e..8a9be90 100644 --- a/src/app/header/header.component.css +++ b/src/app/components/header/header.component.scss @@ -1,5 +1,11 @@ .toolbar { - background-color: #494b92; + &.dark-theme { + background-color: black !important; + } + + &.light-theme { + background-color: white !important; + } padding: 0 1rem; display: flex; flex-direction: row; @@ -29,18 +35,36 @@ } .left_part .menu a { - color: white; + &.dark-theme { + color: black !important; + } + + &.light-theme { + color: white !important; + } text-decoration: none; padding: .5rem .5rem 0; } .left_part .menu a:hover { - background-color: #686AB7; + &.dark-theme { + background-color: black !important; + } + + &.light-theme { + background-color: white !important; + } transition: background-color .3s ease; } .left_part .menu a.active { - background-color: #686AB7; + &.dark-theme { + background-color: black !important; + } + + &.light-theme { + background-color: white !important; + } } .sandkasten-logo { @@ -52,7 +76,13 @@ .logo_title { font-size: 1.5rem; font-weight: 500; - color: white; + &.dark-theme { + color: black !important; + } + + &.light-theme { + color: white !important; + } } .right_part { @@ -60,7 +90,13 @@ flex-direction: row; align-items: center; gap: 2rem; - color: white; + &.dark-theme { + color: black !important; + } + + &.light-theme { + color: white !important; + } } .gitea_logo_container .gitea-logo { diff --git a/src/app/header/header.component.spec.ts b/src/app/components/header/header.component.spec.ts similarity index 100% rename from src/app/header/header.component.spec.ts rename to src/app/components/header/header.component.spec.ts diff --git a/src/app/header/header.component.ts b/src/app/components/header/header.component.ts similarity index 89% rename from src/app/header/header.component.ts rename to src/app/components/header/header.component.ts index 23b0eeb..ddeb23c 100644 --- a/src/app/header/header.component.ts +++ b/src/app/components/header/header.component.ts @@ -1,12 +1,12 @@ import { Component, OnInit } from '@angular/core'; import {BreakpointObserver, Breakpoints} from '@angular/cdk/layout'; import {Router} from "@angular/router"; -import { TranslationService } from '../service/translation.service'; +import { TranslationService } from '../../services/translation.service'; @Component({ selector: 'app-header', templateUrl: './header.component.html', - styleUrls: ['./header.component.css'] + styleUrls: ['./header.component.scss'] }) export class HeaderComponent implements OnInit { title!: string; diff --git a/src/app/components/landing-page/landing-page.component.html b/src/app/components/landing-page/landing-page.component.html new file mode 100644 index 0000000..a5eb4ce --- /dev/null +++ b/src/app/components/landing-page/landing-page.component.html @@ -0,0 +1,11 @@ +
+
+

{{ 'LandingPage.Welcome' | translate}}

+ {{ 'LandingPage.Description' | translate}} +
+ +
diff --git a/src/app/landing-page/landing-page.component.css b/src/app/components/landing-page/landing-page.component.scss similarity index 97% rename from src/app/landing-page/landing-page.component.css rename to src/app/components/landing-page/landing-page.component.scss index b246888..cd12a31 100644 --- a/src/app/landing-page/landing-page.component.css +++ b/src/app/components/landing-page/landing-page.component.scss @@ -1,6 +1,5 @@ .landing-block { padding: 6rem; - display: flex; flex-direction: row; gap: 2rem; @@ -11,9 +10,8 @@ display: flex; flex-direction: column; gap: 2.5rem; - padding: 2rem 1rem; - background: #EEEEEE; + background: #686AB7; } .landing-links { diff --git a/src/app/landing-page/landing-page.component.spec.ts b/src/app/components/landing-page/landing-page.component.spec.ts similarity index 100% rename from src/app/landing-page/landing-page.component.spec.ts rename to src/app/components/landing-page/landing-page.component.spec.ts diff --git a/src/app/landing-page/landing-page.component.ts b/src/app/components/landing-page/landing-page.component.ts similarity index 90% rename from src/app/landing-page/landing-page.component.ts rename to src/app/components/landing-page/landing-page.component.ts index 3379e6e..4c7e29c 100644 --- a/src/app/landing-page/landing-page.component.ts +++ b/src/app/components/landing-page/landing-page.component.ts @@ -4,7 +4,7 @@ import { Router } from '@angular/router'; @Component({ selector: 'app-landing-page', templateUrl: './landing-page.component.html', - styleUrls: ['./landing-page.component.css'] + styleUrls: ['./landing-page.component.scss'] }) export class LandingPageComponent implements OnInit{ constructor(private router: Router){} diff --git a/src/app/output/output.component.html b/src/app/components/output/output.component.html similarity index 100% rename from src/app/output/output.component.html rename to src/app/components/output/output.component.html diff --git a/src/app/output/output.component.css b/src/app/components/output/output.component.scss similarity index 100% rename from src/app/output/output.component.css rename to src/app/components/output/output.component.scss diff --git a/src/app/output/output.component.spec.ts b/src/app/components/output/output.component.spec.ts similarity index 100% rename from src/app/output/output.component.spec.ts rename to src/app/components/output/output.component.spec.ts diff --git a/src/app/output/output.component.ts b/src/app/components/output/output.component.ts similarity index 79% rename from src/app/output/output.component.ts rename to src/app/components/output/output.component.ts index f0d2b4b..8638d83 100644 --- a/src/app/output/output.component.ts +++ b/src/app/components/output/output.component.ts @@ -3,7 +3,7 @@ import { Component } from '@angular/core'; @Component({ selector: 'app-output', templateUrl: './output.component.html', - styleUrls: ['./output.component.css'] + styleUrls: ['./output.component.scss'] }) export class OutputComponent { diff --git a/src/app/services/codeExecution.service.ts b/src/app/services/codeExecution.service.ts new file mode 100644 index 0000000..e9bd80a --- /dev/null +++ b/src/app/services/codeExecution.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class CodeExecutionService { + private apiUrl = 'http://localhost:3000'; // Url du serveur Node.js en local + + constructor(private http: HttpClient) {} + + executeCode(code: string): Observable { + return this.http.post(this.apiUrl, { code }); + } +} \ No newline at end of file diff --git a/src/app/services/theme.service.ts b/src/app/services/theme.service.ts new file mode 100644 index 0000000..daf6118 --- /dev/null +++ b/src/app/services/theme.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class ThemeService { + private _darkTheme = new BehaviorSubject(false); + isDarkTheme = this._darkTheme.asObservable(); + + toggleDarkTheme() { + this._darkTheme.next(!this._darkTheme.value); + console.log('Theme toggled'); + } +} \ No newline at end of file diff --git a/src/app/service/translation.service.ts b/src/app/services/translation.service.ts similarity index 100% rename from src/app/service/translation.service.ts rename to src/app/services/translation.service.ts diff --git a/src/favicon.ico b/src/favicon.ico deleted file mode 100644 index 997406a..0000000 Binary files a/src/favicon.ico and /dev/null differ diff --git a/src/styles.css b/src/styles.scss similarity index 100% rename from src/styles.css rename to src/styles.scss