diff --git a/web/angular/src/app/app-routing.module.ts b/web/angular/src/app/app-routing.module.ts index 1aefed9..8195dad 100755 --- a/web/angular/src/app/app-routing.module.ts +++ b/web/angular/src/app/app-routing.module.ts @@ -8,9 +8,13 @@ import {UpdateProjectComponent} from "./update-project/update-project.component" import {Title} from "@angular/platform-browser"; import {filter} from "rxjs/operators"; import {TranslateService} from "@ngx-translate/core"; +import {LoginComponent} from "./login/login.component"; +import {CreateAccountComponent} from "./create-account/create-account.component"; const routes: Routes = [ {path: "log", component: LogsComponent}, + {path: "login", component: LoginComponent}, + {path: "new_account", component: CreateAccountComponent}, {path: "projects", component: ProjectListComponent}, {path: "project/:id", component: ProjectDashboardComponent}, {path: "project/:id/update", component: UpdateProjectComponent}, diff --git a/web/angular/src/app/app.module.ts b/web/angular/src/app/app.module.ts index cdc915a..a9609dc 100755 --- a/web/angular/src/app/app.module.ts +++ b/web/angular/src/app/app.module.ts @@ -40,7 +40,8 @@ import {SnackBarComponent} from "./messenger/snack-bar.component"; import {TranslateLoader, TranslateModule, TranslateService} from "@ngx-translate/core"; import {TranslateHttpLoader} from "@ngx-translate/http-loader"; import {TranslatedPaginator} from "./TranslatedPaginatorConfiguration"; -import {Router} from "@angular/router"; +import {LoginComponent} from './login/login.component'; +import {CreateAccountComponent} from './create-account/create-account.component'; export function createTranslateLoader(http: HttpClient) { @@ -57,6 +58,8 @@ export function createTranslateLoader(http: HttpClient) { CreateProjectComponent, UpdateProjectComponent, SnackBarComponent, + LoginComponent, + CreateAccountComponent, ], imports: [ BrowserModule, diff --git a/web/angular/src/app/create-account/create-account.component.css b/web/angular/src/app/create-account/create-account.component.css new file mode 100644 index 0000000..bc76a27 --- /dev/null +++ b/web/angular/src/app/create-account/create-account.component.css @@ -0,0 +1,3 @@ +mat-form-field { + width: 100%; +} diff --git a/web/angular/src/app/create-account/create-account.component.html b/web/angular/src/app/create-account/create-account.component.html new file mode 100644 index 0000000..eb0cb14 --- /dev/null +++ b/web/angular/src/app/create-account/create-account.component.html @@ -0,0 +1,30 @@ +
+ + {{"create_account.title" | translate}} + +
+ + {{"login.username" | translate}} + {{credentials.username?.length || 0}}/16 + + + + + {{ "login.password" | translate}} + + + + + {{ "login.repeat_password" | translate}} + + +
+
+ + + +
+
diff --git a/web/angular/src/app/create-account/create-account.component.ts b/web/angular/src/app/create-account/create-account.component.ts new file mode 100644 index 0000000..f22aa2c --- /dev/null +++ b/web/angular/src/app/create-account/create-account.component.ts @@ -0,0 +1,28 @@ +import {Component, OnInit} from '@angular/core'; +import {Credentials} from "../models/credentials"; + +@Component({ + selector: 'app-create-account', + templateUrl: './create-account.component.html', + styleUrls: ['./create-account.component.css'] +}) +export class CreateAccountComponent implements OnInit { + + credentials: Credentials = {}; + + constructor() { + } + + ngOnInit() { + } + + canCreate(): boolean { + return this.credentials.username && this.credentials.username != "" && + this.credentials.password == this.credentials.repeatPassword + } + + onClick() { + alert("e") + } + +} diff --git a/web/angular/src/app/login/login.component.css b/web/angular/src/app/login/login.component.css new file mode 100644 index 0000000..ef0ee71 --- /dev/null +++ b/web/angular/src/app/login/login.component.css @@ -0,0 +1,3 @@ +.mat-form-field { + width: 100%; +} diff --git a/web/angular/src/app/login/login.component.html b/web/angular/src/app/login/login.component.html new file mode 100644 index 0000000..001e58e --- /dev/null +++ b/web/angular/src/app/login/login.component.html @@ -0,0 +1,22 @@ +
+ + {{"login.title" | translate}} + +
+ + {{"login.username" | translate}} + + + + + {{ "login.password" | translate}} + + +
+
+ + + +
+
diff --git a/web/angular/src/app/login/login.component.ts b/web/angular/src/app/login/login.component.ts new file mode 100644 index 0000000..af2b29d --- /dev/null +++ b/web/angular/src/app/login/login.component.ts @@ -0,0 +1,22 @@ +import {Component, OnInit} from '@angular/core'; +import {Credentials} from "../models/credentials"; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.css'] +}) +export class LoginComponent implements OnInit { + + credentials: Credentials = {}; + + constructor() { + } + + ngOnInit() { + } + + onClick() { + + } +} diff --git a/web/angular/src/app/models/credentials.ts b/web/angular/src/app/models/credentials.ts new file mode 100644 index 0000000..26b86a8 --- /dev/null +++ b/web/angular/src/app/models/credentials.ts @@ -0,0 +1,5 @@ +export interface Credentials { + username: string, + password: string, + repeatPassword: string, +} diff --git a/web/angular/src/assets/i18n/en.json b/web/angular/src/assets/i18n/en.json index 623ee7c..7cf670f 100644 --- a/web/angular/src/assets/i18n/en.json +++ b/web/angular/src/assets/i18n/en.json @@ -28,7 +28,9 @@ "project": "Project", "projects": "Projects", "log": "Logs", - "new_project": "New project" + "new_project": "New project", + "login": "Login", + "new_account": "Create account" }, "project": { "name": "Project name", @@ -47,5 +49,16 @@ "dashboard": { "title": "Dashboard for", "metadata": "Project metadata" + }, + "login": { + "title": "Manager login", + "login": "Login", + "username": "Username", + "password": "Password", + "repeat_password": "Repeat password" + }, + "create_account": { + "title": "Create manager account", + "create": "Create account" } } diff --git a/web/angular/src/assets/i18n/fr.json b/web/angular/src/assets/i18n/fr.json index baf4d87..a7b81d4 100644 --- a/web/angular/src/assets/i18n/fr.json +++ b/web/angular/src/assets/i18n/fr.json @@ -29,7 +29,9 @@ "projects": "Projets", "log": "Journal", "new_project": "Nouveau projet", - "update": "Modifier" + "update": "Modifier", + "login": "Ouverture de session", + "new_account": "Création de compte" }, "project": { "name": "Nom du projet", @@ -42,11 +44,23 @@ "create_subtitle": "todo: sous-titre", "public": "Publique", "create": "Créer", - "motd": "Message du jour" + "motd": "Message du jour", + "update": "Mettre à jour" }, "dashboard": { "title": "Tableau de bord pour ", "metadata": "Métadonnés du projet" + }, + "login": { + "title": "Identification - chef de projet", + "login": "Ouvrir un session", + "username": "Nom d'utilisateur", + "password": "Mot de passe", + "repeat_password": "Répéter le mot de passe" + }, + "create_account": { + "title": "Création d'un compte de chef de projet", + "create": "Créer un compte" } } diff --git a/web/angular/src/styles.css b/web/angular/src/styles.css index 8d87d32..186df79 100644 --- a/web/angular/src/styles.css +++ b/web/angular/src/styles.css @@ -49,3 +49,24 @@ body { max-width: 1440px; } } + +.small-container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + margin-top: 15px; +} + +@media (min-width: 576px) { + .small-container { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .small-container { + max-width: 720px; + } +}