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