indent_size à 4
This commit is contained in:
@@ -4,7 +4,7 @@ root = true
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
indent_size = 4
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
|
||||
@@ -1,15 +1,3 @@
|
||||
/* .hamburger__icon {
|
||||
position: relative;
|
||||
height: 1rem;
|
||||
margin-right: 1rem;
|
||||
cursor: pointer;
|
||||
fill: #ffff;
|
||||
}
|
||||
|
||||
.hamburger__icon__fill {
|
||||
fill: #424242
|
||||
} */
|
||||
|
||||
.navigation.side-menu-active {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ import { ServiceCacheApi } from "../services/service-cache-api.service";
|
||||
RouterOutlet,
|
||||
RouterLink,
|
||||
TranslateModule,
|
||||
TranslatePipe
|
||||
TranslatePipe,
|
||||
],
|
||||
})
|
||||
export class AppComponent implements OnInit {
|
||||
@@ -58,7 +58,9 @@ export class AppComponent implements OnInit {
|
||||
) {
|
||||
const sanitizer = inject(DomSanitizer);
|
||||
const resolver: IconResolver = (name) =>
|
||||
sanitizer.bypassSecurityTrustResourceUrl(`/assets/icon/${name}.svg`);
|
||||
sanitizer.bypassSecurityTrustResourceUrl(
|
||||
`/assets/icon/${name}.svg`,
|
||||
);
|
||||
const iconRegistry = inject(MatIconRegistry);
|
||||
iconRegistry.addSvgIconResolver(resolver);
|
||||
|
||||
|
||||
@@ -56,7 +56,9 @@ export const appConfig: ApplicationConfig = {
|
||||
const initializerFn = initConfig(inject(ConfigurationHelper));
|
||||
return initializerFn();
|
||||
}),
|
||||
provideHttpClient(withInterceptors([JwtAuthInterceptor, ErrorInterceptor])),
|
||||
provideHttpClient(
|
||||
withInterceptors([JwtAuthInterceptor, ErrorInterceptor]),
|
||||
),
|
||||
provideCharts(withDefaultRegisterables()),
|
||||
provideZoneChangeDetection({ eventCoalescing: true }),
|
||||
provideRouter(routes),
|
||||
|
||||
@@ -6,13 +6,17 @@ export const routes: Routes = [
|
||||
{
|
||||
path: "",
|
||||
loadComponent: () =>
|
||||
import("./default/default.component").then((m) => m.DefaultComponent),
|
||||
import("./default/default.component").then(
|
||||
(m) => m.DefaultComponent,
|
||||
),
|
||||
canActivate: [AuthGuardService],
|
||||
},
|
||||
{
|
||||
path: "summary",
|
||||
loadComponent: () =>
|
||||
import("./summary/summary.component").then((m) => m.SummaryComponent),
|
||||
import("./summary/summary.component").then(
|
||||
(m) => m.SummaryComponent,
|
||||
),
|
||||
canActivate: [AuthGuardService],
|
||||
},
|
||||
{
|
||||
@@ -34,7 +38,9 @@ export const routes: Routes = [
|
||||
{
|
||||
path: "newjump",
|
||||
loadComponent: () =>
|
||||
import("./new-jump/new-jump.component").then((m) => m.NewJumpComponent),
|
||||
import("./new-jump/new-jump.component").then(
|
||||
(m) => m.NewJumpComponent,
|
||||
),
|
||||
canActivate: [AuthGuardService],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -13,15 +13,17 @@
|
||||
matInput
|
||||
#firstname="matInput"
|
||||
formControlName="firstname"
|
||||
[ngClass]="{ 'is-invalid': submitted && formCtrls['firstname'].errors }"
|
||||
[ngClass]="{
|
||||
'is-invalid': submitted && formCtrls['firstname'].errors,
|
||||
}"
|
||||
tabindex="0"
|
||||
/>
|
||||
@if (formCtrls['firstname'].hasError('required')) {
|
||||
@if (formCtrls["firstname"].hasError("required")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_FirstnameRequired" | translate }}
|
||||
</mat-error>
|
||||
}
|
||||
@if (formCtrls['firstname'].hasError('minlength')) {
|
||||
@if (formCtrls["firstname"].hasError("minlength")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_FirstnamePattern" | translate }}
|
||||
</mat-error>
|
||||
@@ -35,15 +37,17 @@
|
||||
matInput
|
||||
type="text"
|
||||
formControlName="lastname"
|
||||
[ngClass]="{ 'is-invalid': submitted && formCtrls['lastname'].errors }"
|
||||
[ngClass]="{
|
||||
'is-invalid': submitted && formCtrls['lastname'].errors,
|
||||
}"
|
||||
tabindex="1"
|
||||
/>
|
||||
@if (formCtrls['lastname'].hasError('required')) {
|
||||
@if (formCtrls["lastname"].hasError("required")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_LastnameRequired" | translate }}
|
||||
</mat-error>
|
||||
}
|
||||
@if (formCtrls['lastname'].hasError('minlength')) {
|
||||
@if (formCtrls["lastname"].hasError("minlength")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_LastnamePattern" | translate }}
|
||||
</mat-error>
|
||||
@@ -57,15 +61,17 @@
|
||||
matInput
|
||||
type="email"
|
||||
formControlName="email"
|
||||
[ngClass]="{ 'is-invalid': submitted && formCtrls['email'].errors }"
|
||||
[ngClass]="{
|
||||
'is-invalid': submitted && formCtrls['email'].errors,
|
||||
}"
|
||||
tabindex="3"
|
||||
/>
|
||||
@if (formCtrls['email'].hasError('required')) {
|
||||
@if (formCtrls["email"].hasError("required")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_EmailRequired" | translate }}
|
||||
</mat-error>
|
||||
}
|
||||
@if (formCtrls['email'].hasError('email')) {
|
||||
@if (formCtrls["email"].hasError("email")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_EmailPattern" | translate }}
|
||||
</mat-error>
|
||||
@@ -79,15 +85,17 @@
|
||||
matInput
|
||||
type="text"
|
||||
formControlName="username"
|
||||
[ngClass]="{ 'is-invalid': submitted && formCtrls['username'].errors }"
|
||||
[ngClass]="{
|
||||
'is-invalid': submitted && formCtrls['username'].errors,
|
||||
}"
|
||||
tabindex="4"
|
||||
/>
|
||||
@if (formCtrls['username'].hasError('required')) {
|
||||
@if (formCtrls["username"].hasError("required")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_UsernameRequired" | translate }}
|
||||
</mat-error>
|
||||
}
|
||||
@if (formCtrls['username'].hasError('minlength')) {
|
||||
@if (formCtrls["username"].hasError("minlength")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_UsernamePattern" | translate }}
|
||||
</mat-error>
|
||||
@@ -101,15 +109,17 @@
|
||||
matInput
|
||||
type="password"
|
||||
formControlName="password"
|
||||
[ngClass]="{ 'is-invalid': submitted && formCtrls['password'].errors }"
|
||||
[ngClass]="{
|
||||
'is-invalid': submitted && formCtrls['password'].errors,
|
||||
}"
|
||||
tabindex="5"
|
||||
/>
|
||||
@if (formCtrls['password'].hasError('required')) {
|
||||
@if (formCtrls["password"].hasError("required")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_PasswordRequired" | translate }}
|
||||
</mat-error>
|
||||
}
|
||||
@if (formCtrls['password'].hasError('pattern')) {
|
||||
@if (formCtrls["password"].hasError("pattern")) {
|
||||
<mat-error>
|
||||
{{ "LoginCreateUser_PasswordPattern" | translate }}
|
||||
</mat-error>
|
||||
|
||||
@@ -25,7 +25,7 @@ import { ServiceComm } from "../../services/service-comm.service";
|
||||
MatFormFieldModule,
|
||||
ReactiveFormsModule,
|
||||
MatInputModule,
|
||||
MatButtonModule
|
||||
MatButtonModule,
|
||||
],
|
||||
})
|
||||
export class JumpInfosComponent implements OnInit {
|
||||
@@ -35,7 +35,7 @@ export class JumpInfosComponent implements OnInit {
|
||||
constructor(
|
||||
@Inject(MAT_DIALOG_DATA) public data: any,
|
||||
private serviceJump: JumpService,
|
||||
private serviceComm: ServiceComm
|
||||
private serviceComm: ServiceComm,
|
||||
) {
|
||||
this.jump = new JumpResp(data.jump);
|
||||
this.editMode = data.editMode;
|
||||
@@ -49,7 +49,7 @@ export class JumpInfosComponent implements OnInit {
|
||||
this.jump.id,
|
||||
this.jump.isSpecial,
|
||||
this.jump.withCutaway,
|
||||
this.jump.notes
|
||||
this.jump.notes,
|
||||
)
|
||||
.subscribe(() => {
|
||||
this.serviceComm.refreshData(AddAction.Jump);
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ "ListAircrafts_Header_Name" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.name }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="imageData">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
@@ -35,13 +37,18 @@
|
||||
/>
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-header-row
|
||||
*matHeaderRowDef="displayedColumns; sticky: true"
|
||||
></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</div>
|
||||
} @else {
|
||||
<mat-progress-spinner [mode]="'indeterminate'"></mat-progress-spinner>
|
||||
}
|
||||
<mat-paginator [length]="resultsLength" [pageSize]="10"></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -23,7 +23,7 @@ import { AircraftResp } from "../../models/aircraft";
|
||||
MatPaginatorModule,
|
||||
MatProgressSpinnerModule,
|
||||
MatTableModule,
|
||||
MatButtonModule
|
||||
MatButtonModule,
|
||||
],
|
||||
})
|
||||
export class ListOfAircraftsComponent implements OnInit {
|
||||
@@ -38,7 +38,7 @@ export class ListOfAircraftsComponent implements OnInit {
|
||||
private serviceComm: ServiceComm,
|
||||
private authenticationService: AuthenticationService,
|
||||
public dialog: MatDialog,
|
||||
private translateService: TranslateService
|
||||
private translateService: TranslateService,
|
||||
) {
|
||||
this.isUserAdmin =
|
||||
this.authenticationService.currentUserValue.roles === "admin";
|
||||
@@ -65,7 +65,9 @@ export class ListOfAircraftsComponent implements OnInit {
|
||||
this.serviceApi.getListOfAircrafts().subscribe((data) => {
|
||||
setTimeout(() => {
|
||||
data.sort((a, b) => a.name.localeCompare(b.name));
|
||||
this.dataSourceTable = new MatTableDataSource<AircraftResp>(data);
|
||||
this.dataSourceTable = new MatTableDataSource<AircraftResp>(
|
||||
data,
|
||||
);
|
||||
this.dataSourceTable.paginator = this.paginator;
|
||||
this.resultsLength = data.length;
|
||||
}, 500);
|
||||
|
||||
@@ -21,8 +21,16 @@
|
||||
</mat-form-field>
|
||||
<table mat-table [dataSource]="dataSourceTable">
|
||||
<ng-container matColumnDef="isfavorite">
|
||||
<th mat-header-cell *matHeaderCellDef style="min-width: 144px"></th>
|
||||
<td mat-cell *matCellDef="let element" style="text-align: left">
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
style="min-width: 144px"
|
||||
></th>
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let element"
|
||||
style="text-align: left"
|
||||
>
|
||||
@if (element.isFavorite === true) {
|
||||
<mat-icon
|
||||
aria-hidden="false"
|
||||
@@ -53,9 +61,9 @@
|
||||
<a
|
||||
href="https://www.openstreetmap.org/?mlat={{
|
||||
element.latitude
|
||||
}}&mlon={{ element.longitude }}#map=14/{{ element.latitude }}/{{
|
||||
element.longitude
|
||||
}}"
|
||||
}}&mlon={{ element.longitude }}#map=14/{{
|
||||
element.latitude
|
||||
}}/{{ element.longitude }}"
|
||||
target="_blank"
|
||||
>
|
||||
<mat-icon
|
||||
@@ -88,7 +96,10 @@
|
||||
{{ "ListDz_Header_Name" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
<span class="spanWithBreakWord" [innerHTML]="element.name"></span>
|
||||
<span
|
||||
class="spanWithBreakWord"
|
||||
[innerHTML]="element.name"
|
||||
></span>
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="address">
|
||||
@@ -96,22 +107,32 @@
|
||||
{{ "ListDz_Header_Address" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
<span class="spanWithBreakWord" [innerHTML]="element.address"></span>
|
||||
<span
|
||||
class="spanWithBreakWord"
|
||||
[innerHTML]="element.address"
|
||||
></span>
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="type">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ "ListDz_Header_Type" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.type }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.type }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-header-row
|
||||
*matHeaderRowDef="displayedColumns; sticky: true"
|
||||
></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</div>
|
||||
} @else {
|
||||
<mat-progress-spinner [mode]="'indeterminate'"></mat-progress-spinner>
|
||||
}
|
||||
<mat-paginator [length]="resultsLength" [pageSize]="20"></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -31,7 +31,7 @@ import { NewDropZoneComponent } from "../new-drop-zone/new-drop-zone.component";
|
||||
MatFormFieldModule,
|
||||
ReactiveFormsModule,
|
||||
MatInputModule,
|
||||
MatButtonModule
|
||||
MatButtonModule,
|
||||
],
|
||||
})
|
||||
export class ListOfDzsComponent implements OnInit {
|
||||
@@ -51,7 +51,7 @@ export class ListOfDzsComponent implements OnInit {
|
||||
private serviceComm: ServiceComm,
|
||||
private authenticationService: AuthenticationService,
|
||||
public dialog: MatDialog,
|
||||
private translateService: TranslateService
|
||||
private translateService: TranslateService,
|
||||
) {
|
||||
this.isUserAdmin =
|
||||
this.authenticationService.currentUserValue.roles === "admin";
|
||||
@@ -80,9 +80,11 @@ export class ListOfDzsComponent implements OnInit {
|
||||
data.sort(
|
||||
(a, b) =>
|
||||
(b.isFavorite ? 1 : 0) - (a.isFavorite ? 1 : 0) ||
|
||||
a.name.localeCompare(b.name)
|
||||
a.name.localeCompare(b.name),
|
||||
);
|
||||
this.dataSourceTable = new MatTableDataSource<DropZoneResp>(
|
||||
data,
|
||||
);
|
||||
this.dataSourceTable = new MatTableDataSource<DropZoneResp>(data);
|
||||
this.dataSourceTable.paginator = this.paginator;
|
||||
this.resultsLength = data.length;
|
||||
}, 500);
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
<div class="content">
|
||||
@if (dataSourceTable != null) {
|
||||
<div>
|
||||
<button mat-raised-button color="accent" (click)="openDialogToAdd()">
|
||||
<button
|
||||
mat-raised-button
|
||||
color="accent"
|
||||
(click)="openDialogToAdd()"
|
||||
>
|
||||
{{ "ListGears_Add" | translate }}
|
||||
</button>
|
||||
<table mat-table [dataSource]="dataSourceTable">
|
||||
@@ -12,19 +16,31 @@
|
||||
<td mat-cell *matCellDef="let element">{{ element.id }}</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="name">
|
||||
<th mat-header-cell *matHeaderCellDef style="min-width: 130px">
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
style="min-width: 130px"
|
||||
>
|
||||
{{ "ListGears_Header_Name" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.name }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="manufacturer">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ "ListGears_Header_Manufacturer" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.manufacturer }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.manufacturer }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="maxSize">
|
||||
<th mat-header-cell *matHeaderCellDef style="min-width: 90px">
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
style="min-width: 90px"
|
||||
>
|
||||
{{ "ListGears_Header_CanopySize" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
@@ -35,27 +51,38 @@
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ "ListGears_Header_Aad" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.aad }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.aad }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="mainCanopy">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ "ListGears_Header_Main" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.mainCanopy }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.mainCanopy }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="reserveCanopy">
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ "ListGears_Header_Reserve" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.reserveCanopy }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.reserveCanopy }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-header-row
|
||||
*matHeaderRowDef="displayedColumns; sticky: true"
|
||||
></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</div>
|
||||
} @else {
|
||||
<mat-progress-spinner [mode]="'indeterminate'"></mat-progress-spinner>
|
||||
}
|
||||
<mat-paginator [length]="resultsLength" [pageSize]="10"></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -22,7 +22,7 @@ import { NewGearComponent } from "../new-gear/new-gear.component";
|
||||
MatPaginatorModule,
|
||||
MatProgressSpinnerModule,
|
||||
MatTableModule,
|
||||
MatButtonModule
|
||||
MatButtonModule,
|
||||
],
|
||||
})
|
||||
export class ListOfGearsComponent implements OnInit {
|
||||
@@ -42,7 +42,7 @@ export class ListOfGearsComponent implements OnInit {
|
||||
private serviceApi: GearService,
|
||||
private serviceComm: ServiceComm,
|
||||
public dialog: MatDialog,
|
||||
private translateService: TranslateService
|
||||
private translateService: TranslateService,
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
|
||||
@@ -35,18 +35,32 @@
|
||||
<div>
|
||||
<table mat-table [dataSource]="dataSourceTable">
|
||||
<ng-container matColumnDef="comment">
|
||||
<th mat-header-cell *matHeaderCellDef style="text-align: center">
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
style="text-align: center"
|
||||
>
|
||||
Comments
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element" style="text-align: left">
|
||||
<span style="white-space: nowrap">{{ element.comment }}</span>
|
||||
<span style="white-space: nowrap">{{
|
||||
element.comment
|
||||
}}</span>
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="data">
|
||||
<th mat-header-cell *matHeaderCellDef style="text-align: center">
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
style="text-align: center"
|
||||
>
|
||||
Image
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element" style="text-align: center">
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let element"
|
||||
style="text-align: center"
|
||||
>
|
||||
<img
|
||||
src="{{ element.data }}"
|
||||
alt="image"
|
||||
@@ -56,7 +70,10 @@
|
||||
/>
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
|
||||
<tr
|
||||
mat-header-row
|
||||
*matHeaderRowDef="displayedColumns; sticky: true"
|
||||
></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
<mat-paginator [length]="resultsLength" [pageSize]="10"></mat-paginator>
|
||||
|
||||
@@ -95,7 +95,8 @@ export class ListOfImagesComponent implements OnInit {
|
||||
if (!allowed_types.includes(file.type)) {
|
||||
this.imageError = "Only Images are allowed ( JPG | PNG )";
|
||||
} else if (file.size > max_size) {
|
||||
this.imageError = "Maximum size allowed is " + max_size / 1000 + "Mb";
|
||||
this.imageError =
|
||||
"Maximum size allowed is " + max_size / 1000 + "Mb";
|
||||
} else {
|
||||
const reader = new FileReader();
|
||||
reader.onload = this.checkAndExtractDataToBase64.bind(this);
|
||||
@@ -115,7 +116,11 @@ export class ListOfImagesComponent implements OnInit {
|
||||
|
||||
if (img_height > max_height && img_width > max_width) {
|
||||
this.imageError =
|
||||
"Maximum dimentions allowed " + max_height + "*" + max_width + "px";
|
||||
"Maximum dimentions allowed " +
|
||||
max_height +
|
||||
"*" +
|
||||
max_width +
|
||||
"px";
|
||||
} else {
|
||||
const imgBase64Path = e.target.result;
|
||||
this.selectedFile = imgBase64Path;
|
||||
|
||||
@@ -21,15 +21,22 @@
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ "ListJumpType_Header_Name" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.name }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-header-row
|
||||
*matHeaderRowDef="displayedColumns; sticky: true"
|
||||
></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</div>
|
||||
} @else {
|
||||
<mat-progress-spinner [mode]="'indeterminate'"></mat-progress-spinner>
|
||||
}
|
||||
<mat-paginator [length]="resultsLength" [pageSize]="20"></mat-paginator>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -23,7 +23,7 @@ import { NewJumpTypeComponent } from "../new-jump-type/new-jump-type.component";
|
||||
MatPaginatorModule,
|
||||
MatProgressSpinnerModule,
|
||||
MatTableModule,
|
||||
MatButtonModule
|
||||
MatButtonModule,
|
||||
],
|
||||
})
|
||||
export class ListOfJumpTypesComponent implements OnInit {
|
||||
@@ -38,7 +38,7 @@ export class ListOfJumpTypesComponent implements OnInit {
|
||||
private serviceComm: ServiceComm,
|
||||
private authenticationService: AuthenticationService,
|
||||
public dialog: MatDialog,
|
||||
private translateService: TranslateService
|
||||
private translateService: TranslateService,
|
||||
) {
|
||||
this.isUserAdmin =
|
||||
this.authenticationService.currentUserValue.roles === "admin";
|
||||
@@ -65,7 +65,9 @@ export class ListOfJumpTypesComponent implements OnInit {
|
||||
this.serviceApi.getListOfJumpTypes().subscribe((data) => {
|
||||
setTimeout(() => {
|
||||
data.sort((a, b) => a.name.localeCompare(b.name));
|
||||
this.dataSourceTable = new MatTableDataSource<JumpTypeResp>(data);
|
||||
this.dataSourceTable = new MatTableDataSource<JumpTypeResp>(
|
||||
data,
|
||||
);
|
||||
this.dataSourceTable.paginator = this.paginator;
|
||||
this.resultsLength = data.length;
|
||||
}, 500);
|
||||
|
||||
@@ -12,9 +12,7 @@
|
||||
</div>
|
||||
|
||||
@if (isLoading) {
|
||||
<mat-progress-bar
|
||||
[mode]="'indeterminate'"
|
||||
></mat-progress-bar>
|
||||
<mat-progress-bar [mode]="'indeterminate'"></mat-progress-bar>
|
||||
}
|
||||
|
||||
<div>
|
||||
@@ -48,7 +46,9 @@
|
||||
<mat-icon
|
||||
aria-hidden="false"
|
||||
aria-label="Special jump"
|
||||
[style.visibility]="element.isSpecial ? 'visible' : 'hidden'"
|
||||
[style.visibility]="
|
||||
element.isSpecial ? 'visible' : 'hidden'
|
||||
"
|
||||
svgIcon="celebration"
|
||||
></mat-icon>
|
||||
</td>
|
||||
@@ -60,7 +60,8 @@
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element; let i = index">
|
||||
{{
|
||||
paginator.length - (paginator.pageIndex * paginator.pageSize + i)
|
||||
paginator.length -
|
||||
(paginator.pageIndex * paginator.pageSize + i)
|
||||
}}
|
||||
</td>
|
||||
</ng-container>
|
||||
@@ -85,7 +86,11 @@
|
||||
>
|
||||
{{ "ListJump_Header_JumpType" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element" style="text-wrap: nowrap">
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let element"
|
||||
style="text-wrap: nowrap"
|
||||
>
|
||||
<span
|
||||
class="smallSpanWithBreakWord"
|
||||
[innerHTML]="element.jumpType.name"
|
||||
@@ -121,7 +126,9 @@
|
||||
<th mat-header-cell *matHeaderCellDef>
|
||||
{{ "ListJump_Header_Id" | translate }}
|
||||
</th>
|
||||
<td mat-cell *matCellDef="let element">{{ element.gear.name }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.gear.name }}
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<ng-container matColumnDef="actions">
|
||||
@@ -152,7 +159,10 @@
|
||||
</td>
|
||||
</ng-container>
|
||||
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
|
||||
<tr
|
||||
mat-header-row
|
||||
*matHeaderRowDef="displayedColumns; sticky: true"
|
||||
></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -63,7 +63,7 @@ export class ListOfJumpsComponent implements OnInit {
|
||||
private serviceComm: ServiceComm,
|
||||
public dialog: MatDialog,
|
||||
private translateService: TranslateService,
|
||||
private statsService: StatsService
|
||||
private statsService: StatsService,
|
||||
) {}
|
||||
|
||||
ngAferViewInit(): void {
|
||||
|
||||
@@ -12,9 +12,7 @@
|
||||
</div>
|
||||
|
||||
@if (isLoading) {
|
||||
<mat-progress-bar
|
||||
[mode]="'indeterminate'"
|
||||
></mat-progress-bar>
|
||||
<mat-progress-bar [mode]="'indeterminate'"></mat-progress-bar>
|
||||
}
|
||||
|
||||
<mat-radio-group
|
||||
@@ -58,14 +56,14 @@
|
||||
</button>
|
||||
|
||||
@if (dataSourceTable?.data.length) {
|
||||
<table
|
||||
mat-table
|
||||
[dataSource]="dataSourceTable"
|
||||
>
|
||||
<table mat-table [dataSource]="dataSourceTable">
|
||||
<ng-container matColumnDef="id">
|
||||
<th mat-header-cell *matHeaderCellDef>ID</th>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
<span class="smallSpanWithBreakWord" [innerHTML]="element.id"></span>
|
||||
<span
|
||||
class="smallSpanWithBreakWord"
|
||||
[innerHTML]="element.id"
|
||||
></span>
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="tunnel">
|
||||
@@ -109,13 +107,23 @@
|
||||
<td mat-cell *matCellDef="let element">
|
||||
<span
|
||||
class="smallSpanWithBreakWord"
|
||||
[innerHTML]="element.flightDate | date: 'yyyy-MM-dd'"
|
||||
[innerHTML]="
|
||||
element.flightDate | date: 'yyyy-MM-dd'
|
||||
"
|
||||
></span>
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="actions">
|
||||
<th mat-header-cell *matHeaderCellDef style="min-width: 80px"></th>
|
||||
<td mat-cell *matCellDef="let element" style="text-align: left">
|
||||
<th
|
||||
mat-header-cell
|
||||
*matHeaderCellDef
|
||||
style="min-width: 80px"
|
||||
></th>
|
||||
<td
|
||||
mat-cell
|
||||
*matCellDef="let element"
|
||||
style="text-align: left"
|
||||
>
|
||||
<mat-icon
|
||||
aria-hidden="false"
|
||||
aria-label="Delete this jump"
|
||||
@@ -125,8 +133,14 @@
|
||||
></mat-icon>
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-header-row
|
||||
*matHeaderRowDef="displayedColumns; sticky: true"
|
||||
></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -65,7 +65,7 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
private serviceComm: ServiceComm,
|
||||
private serviceTunnelFlight: TunnelFlightService,
|
||||
private translateService: TranslateService,
|
||||
private dateService: DateService
|
||||
private dateService: DateService,
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -124,7 +124,9 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
}
|
||||
|
||||
private updateTitle() {
|
||||
this.translateService.get("ListTunnelFlight_Title").subscribe((data) => {
|
||||
this.translateService
|
||||
.get("ListTunnelFlight_Title")
|
||||
.subscribe((data) => {
|
||||
this.serviceComm.updatedComponentTitle(data);
|
||||
});
|
||||
}
|
||||
@@ -135,7 +137,10 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
// Get data to show in a table
|
||||
let endDate = new Date();
|
||||
endDate.setHours(0, 0, 0, 0);
|
||||
let beginDate = this.computeBeginDateByPeriod(this.selectedPeriod, endDate);
|
||||
let beginDate = this.computeBeginDateByPeriod(
|
||||
this.selectedPeriod,
|
||||
endDate,
|
||||
);
|
||||
|
||||
this.serviceTunnelFlight
|
||||
.getTunnelFlights(beginDate, endDate)
|
||||
@@ -151,7 +156,10 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
// Get data to show in a table
|
||||
let endDate = new Date();
|
||||
endDate.setHours(0, 0, 0, 0);
|
||||
let beginDate = this.computeBeginDateByPeriod(this.selectedPeriod, endDate);
|
||||
let beginDate = this.computeBeginDateByPeriod(
|
||||
this.selectedPeriod,
|
||||
endDate,
|
||||
);
|
||||
|
||||
this.serviceTunnelFlight
|
||||
.getTunnelFlightsByMonth(beginDate, endDate)
|
||||
@@ -159,7 +167,7 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
const allMonths = this.getMontsBetweenDates(beginDate, endDate);
|
||||
const cumulatedTime = this.getCumulatedTimeByTypeByMonth(
|
||||
data,
|
||||
allMonths
|
||||
allMonths,
|
||||
);
|
||||
this.computeTimeByType(data);
|
||||
this.barChartData = {
|
||||
@@ -177,12 +185,16 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
.pipe(
|
||||
groupBy((type) => type.type, { element: (p) => p.nb }),
|
||||
mergeMap((group$) =>
|
||||
group$.pipe(reduce((acc, cur) => [...acc, cur], [`${group$.key}`]))
|
||||
group$.pipe(
|
||||
reduce((acc, cur) => [...acc, cur], [`${group$.key}`]),
|
||||
),
|
||||
),
|
||||
map((arr) => ({
|
||||
id: arr[0],
|
||||
values: arr.slice(1).reduce((a, b) => Number(a) + Number(b), 0),
|
||||
}))
|
||||
values: arr
|
||||
.slice(1)
|
||||
.reduce((a, b) => Number(a) + Number(b), 0),
|
||||
})),
|
||||
)
|
||||
.subscribe((p) => {
|
||||
console.log(p);
|
||||
@@ -190,7 +202,10 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
});
|
||||
}
|
||||
|
||||
private getMontsBetweenDates(beginDate: Date, endDate: Date): Array<string> {
|
||||
private getMontsBetweenDates(
|
||||
beginDate: Date,
|
||||
endDate: Date,
|
||||
): Array<string> {
|
||||
let results: Array<string> = [];
|
||||
let tmpBeginDate = new Date(beginDate.getTime());
|
||||
const tmpEndDate = new Date(endDate.getTime());
|
||||
@@ -205,15 +220,17 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
|
||||
private getCumulatedTimeByTypeByMonth(
|
||||
stats: TunnelFlightByMonth[],
|
||||
allMonths: string[]
|
||||
allMonths: string[],
|
||||
): Array<any> {
|
||||
let tmpResults = new Map<string, number[]>();
|
||||
|
||||
const disctintType = Array.from(new Set(stats.map((item) => item.type)));
|
||||
const disctintType = Array.from(
|
||||
new Set(stats.map((item) => item.type)),
|
||||
);
|
||||
disctintType.forEach((type) => {
|
||||
tmpResults.set(
|
||||
type,
|
||||
Array.from({ length: allMonths.length }, (v, k) => 0)
|
||||
Array.from({ length: allMonths.length }, (v, k) => 0),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -247,7 +264,7 @@ export class ListOfTunnelFlightsComponent implements OnInit {
|
||||
|
||||
private computeBeginDateByPeriod(
|
||||
selectedPeriod: String,
|
||||
endDate: Date
|
||||
endDate: Date,
|
||||
): Date {
|
||||
let beginDate = new Date();
|
||||
|
||||
|
||||
@@ -13,14 +13,16 @@
|
||||
matInput
|
||||
#username="matInput"
|
||||
formControlName="username"
|
||||
[ngClass]="{ 'is-invalid': submitted && formCtrls['username'].errors }"
|
||||
[ngClass]="{
|
||||
'is-invalid': submitted && formCtrls['username'].errors,
|
||||
}"
|
||||
/>
|
||||
@if (formCtrls['username'].hasError('required')) {
|
||||
@if (formCtrls["username"].hasError("required")) {
|
||||
<mat-error>
|
||||
{{ "LoginUser_UsernameRequired" | translate }}
|
||||
</mat-error>
|
||||
}
|
||||
@if (formCtrls['username'].hasError('minlength')) {
|
||||
@if (formCtrls["username"].hasError("minlength")) {
|
||||
<mat-error>
|
||||
{{ 'LoginUser_UsernamePattern | translate }}
|
||||
</mat-error>
|
||||
@@ -34,14 +36,16 @@
|
||||
type="password"
|
||||
matInput
|
||||
formControlName="password"
|
||||
[ngClass]="{ 'is-invalid': submitted && formCtrls['password'].errors }"
|
||||
[ngClass]="{
|
||||
'is-invalid': submitted && formCtrls['password'].errors,
|
||||
}"
|
||||
/>
|
||||
@if (formCtrls['password'].hasError('required')) {
|
||||
@if (formCtrls["password"].hasError("required")) {
|
||||
<mat-error>
|
||||
{{ "LoginUser_PasswordRequired" | translate }}
|
||||
</mat-error>
|
||||
}
|
||||
@if (formCtrls['password'].hasError('pattern')) {
|
||||
@if (formCtrls["password"].hasError("pattern")) {
|
||||
<mat-error>
|
||||
{{ "LoginUser_PasswordPattern" | translate }}
|
||||
</mat-error>
|
||||
|
||||
@@ -41,7 +41,7 @@ export class LoginUserComponent implements OnInit {
|
||||
private formBuilder: FormBuilder,
|
||||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
private authenticationService: AuthenticationService
|
||||
private authenticationService: AuthenticationService,
|
||||
) {
|
||||
if (this.authenticationService.currentUserValue) {
|
||||
this.router.navigate(["/"]);
|
||||
@@ -54,7 +54,7 @@ export class LoginUserComponent implements OnInit {
|
||||
username: ["", [Validators.required, Validators.minLength(3)]],
|
||||
password: ["", [Validators.required]],
|
||||
},
|
||||
{ updateOn: "submit" }
|
||||
{ updateOn: "submit" },
|
||||
);
|
||||
|
||||
// get return url from route parameters or default to '/'
|
||||
@@ -73,7 +73,7 @@ export class LoginUserComponent implements OnInit {
|
||||
this.authenticationService
|
||||
.login(
|
||||
this.formCtrls["username"].value,
|
||||
this.formCtrls["password"].value
|
||||
this.formCtrls["password"].value,
|
||||
)
|
||||
.pipe(first())
|
||||
.subscribe({
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
>
|
||||
<mat-select-trigger>
|
||||
<img
|
||||
src="{{ 'assets/img/' + selectedLanguageFlag + '.svg' }}"
|
||||
src="{{
|
||||
'assets/img/' + selectedLanguageFlag + '.svg'
|
||||
}}"
|
||||
style="width: 30px"
|
||||
/>
|
||||
</mat-select-trigger>
|
||||
@@ -31,10 +33,16 @@
|
||||
|
||||
<mat-card-content>
|
||||
<mat-tab-group mat-align-tabs="center" animationDuration="0ms">
|
||||
<mat-tab label="{{ 'Login_Tab_WithUser' | translate }}" tabIndex="-1">
|
||||
<mat-tab
|
||||
label="{{ 'Login_Tab_WithUser' | translate }}"
|
||||
tabIndex="-1"
|
||||
>
|
||||
<app-login-user></app-login-user>
|
||||
</mat-tab>
|
||||
<mat-tab label="{{ 'Login_Tab_CreateUser' | translate }}" tabIndex="-1">
|
||||
<mat-tab
|
||||
label="{{ 'Login_Tab_CreateUser' | translate }}"
|
||||
tabIndex="-1"
|
||||
>
|
||||
<app-create-user></app-create-user>
|
||||
</mat-tab>
|
||||
</mat-tab-group>
|
||||
|
||||
@@ -25,7 +25,7 @@ import { CreateUserComponent } from "../create-user/create-user.component";
|
||||
MatTabsModule,
|
||||
LoginUserComponent,
|
||||
CreateUserComponent,
|
||||
TranslateModule
|
||||
TranslateModule,
|
||||
],
|
||||
})
|
||||
export class LoginComponent implements OnInit {
|
||||
|
||||
@@ -3,12 +3,19 @@
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Aircraft name</mat-label>
|
||||
<input matInput type="text" formControlName="aircraftName">
|
||||
<input matInput type="text" formControlName="aircraftName" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
<input type="file" #fileUpload id="fileUpload" name="fileUpload" accept="image/*" formControlName="image"
|
||||
(change)="onFileChanged($event)" />
|
||||
<input
|
||||
type="file"
|
||||
#fileUpload
|
||||
id="fileUpload"
|
||||
name="fileUpload"
|
||||
accept="image/*"
|
||||
formControlName="image"
|
||||
(change)="onFileChanged($event)"
|
||||
/>
|
||||
</p>
|
||||
|
||||
<button type="submit" mat-raised-button color="accent">Add</button>
|
||||
|
||||
@@ -79,7 +79,8 @@ export class NewAircraftComponent implements OnInit {
|
||||
if (!allowed_types.includes(file.type)) {
|
||||
this.imageError = "Only Images are allowed ( JPG | PNG )";
|
||||
} else if (file.size > max_size) {
|
||||
this.imageError = "Maximum size allowed is " + max_size / 1000 + "Mb";
|
||||
this.imageError =
|
||||
"Maximum size allowed is " + max_size / 1000 + "Mb";
|
||||
} else {
|
||||
const reader = new FileReader();
|
||||
reader.onload = this.checkAndExtractDataToBase64.bind(this);
|
||||
@@ -99,7 +100,11 @@ export class NewAircraftComponent implements OnInit {
|
||||
|
||||
if (img_height > max_height && img_width > max_width) {
|
||||
this.imageError =
|
||||
"Maximum dimentions allowed " + max_height + "*" + max_width + "px";
|
||||
"Maximum dimentions allowed " +
|
||||
max_height +
|
||||
"*" +
|
||||
max_width +
|
||||
"px";
|
||||
} else {
|
||||
const imgBase64Path = e.target.result;
|
||||
this.selectedFile = imgBase64Path;
|
||||
|
||||
@@ -3,43 +3,43 @@
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Name of gear</mat-label>
|
||||
<input matInput type="text" formControlName="name">
|
||||
<input matInput type="text" formControlName="name" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Manufacturer</mat-label>
|
||||
<input matInput type="text" formControlName="manufacturer">
|
||||
<input matInput type="text" formControlName="manufacturer" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Min size of canopy</mat-label>
|
||||
<input matInput type="text" formControlName="minSize">
|
||||
<input matInput type="text" formControlName="minSize" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Max size of canopy</mat-label>
|
||||
<input matInput type="text" formControlName="maxSize">
|
||||
<input matInput type="text" formControlName="maxSize" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>AAD system</mat-label>
|
||||
<input matInput type="text" formControlName="aad">
|
||||
<input matInput type="text" formControlName="aad" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Main Canopy</mat-label>
|
||||
<input matInput type="text" formControlName="mainCanopy">
|
||||
<input matInput type="text" formControlName="mainCanopy" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Reserve canopy</mat-label>
|
||||
<input matInput type="text" formControlName="reserveCanopy">
|
||||
<input matInput type="text" formControlName="reserveCanopy" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Jump type name</mat-label>
|
||||
<input matInput type="text" formControlName="jumptypeName">
|
||||
<input matInput type="text" formControlName="jumptypeName" />
|
||||
</mat-form-field>
|
||||
</p>
|
||||
|
||||
|
||||
@@ -53,7 +53,9 @@ export class NewJumpTypeComponent implements OnInit {
|
||||
}
|
||||
|
||||
onSubmit(formData) {
|
||||
this.jumpTypeService.addJumpType(formData.jumptypeName).subscribe(() => {
|
||||
this.jumpTypeService
|
||||
.addJumpType(formData.jumptypeName)
|
||||
.subscribe(() => {
|
||||
this.serviceComm.refreshData(AddAction.JumpType);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -17,12 +17,11 @@
|
||||
</div>
|
||||
|
||||
@if (notLoadingToDisplay()) {
|
||||
<form
|
||||
class="formNewJumps"
|
||||
(ngSubmit)="onFormSubmit()"
|
||||
>
|
||||
<form class="formNewJumps" (ngSubmit)="onFormSubmit()">
|
||||
<mat-form-field>
|
||||
<mat-label>{{ "NewJump_ChooseJumpType" | translate }}</mat-label>
|
||||
<mat-label>{{
|
||||
"NewJump_ChooseJumpType" | translate
|
||||
}}</mat-label>
|
||||
<input
|
||||
type="text"
|
||||
matInput
|
||||
@@ -52,7 +51,9 @@
|
||||
}
|
||||
</mat-form-field>
|
||||
<mat-form-field>
|
||||
<mat-label>{{ "NewJump_ChooseAircraft" | translate }}</mat-label>
|
||||
<mat-label>{{
|
||||
"NewJump_ChooseAircraft" | translate
|
||||
}}</mat-label>
|
||||
<input
|
||||
type="text"
|
||||
matInput
|
||||
@@ -96,9 +97,7 @@
|
||||
[displayWith]="displayNameFn"
|
||||
>
|
||||
@for (dropZone of listOfFilteredDropZone; track dropZone) {
|
||||
<mat-option
|
||||
[value]="dropZone"
|
||||
>
|
||||
<mat-option [value]="dropZone">
|
||||
{{ dropZone.name }}
|
||||
@if (dropZone.isFavorite === true) {
|
||||
<mat-icon
|
||||
@@ -274,5 +273,4 @@
|
||||
} @else {
|
||||
<mat-progress-spinner [mode]="'indeterminate'"></mat-progress-spinner>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
@@ -71,7 +71,7 @@ class PickDateAdapter extends NativeDateAdapter {
|
||||
MatFormFieldModule,
|
||||
ReactiveFormsModule,
|
||||
MatInputModule,
|
||||
MatButtonModule
|
||||
MatButtonModule,
|
||||
],
|
||||
})
|
||||
export class NewJumpComponent implements OnInit {
|
||||
@@ -106,7 +106,7 @@ export class NewJumpComponent implements OnInit {
|
||||
private serviceGear: GearService,
|
||||
private dateService: DateService,
|
||||
private translateService: TranslateService,
|
||||
private statsService: StatsService
|
||||
private statsService: StatsService,
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -140,7 +140,7 @@ export class NewJumpComponent implements OnInit {
|
||||
this.deployAltitude,
|
||||
this.countOfJumps,
|
||||
this.comments,
|
||||
this.isSpecial === undefined ? false : this.isSpecial
|
||||
this.isSpecial === undefined ? false : this.isSpecial,
|
||||
)
|
||||
.subscribe(() => {
|
||||
this.statsService.resetStats();
|
||||
@@ -199,7 +199,7 @@ export class NewJumpComponent implements OnInit {
|
||||
data.sort(
|
||||
(a, b) =>
|
||||
(b.isFavorite ? 1 : 0) - (a.isFavorite ? 1 : 0) ||
|
||||
a.name.localeCompare(b.name)
|
||||
a.name.localeCompare(b.name),
|
||||
);
|
||||
this.listOfDropZone = data;
|
||||
this.listOfFilteredDropZone = data;
|
||||
@@ -251,7 +251,7 @@ export class NewJumpComponent implements OnInit {
|
||||
|
||||
this.listOfFilteredDropZone = this.listOfDropZone;
|
||||
this.listOfFilteredDropZone = this.listOfFilteredDropZone.filter(
|
||||
(option) => option.name.toLowerCase().includes(filterValue)
|
||||
(option) => option.name.toLowerCase().includes(filterValue),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,4 +15,3 @@
|
||||
align-items: initial;
|
||||
padding-top: 25px;
|
||||
}
|
||||
|
||||
@@ -12,12 +12,11 @@
|
||||
</div>
|
||||
|
||||
@if (notLoadingToDisplay()) {
|
||||
<form
|
||||
class="formNewJumps"
|
||||
(ngSubmit)="onFormSubmit()"
|
||||
>
|
||||
<form class="formNewJumps" (ngSubmit)="onFormSubmit()">
|
||||
<mat-form-field>
|
||||
<mat-label>{{ "NewTunnelFlight_ChooseJumpType" | translate }}</mat-label>
|
||||
<mat-label>{{
|
||||
"NewTunnelFlight_ChooseJumpType" | translate
|
||||
}}</mat-label>
|
||||
<input
|
||||
type="text"
|
||||
matInput
|
||||
@@ -47,7 +46,9 @@
|
||||
}
|
||||
</mat-form-field>
|
||||
<mat-form-field>
|
||||
<mat-label>{{ "NewTunnelFlight_ChooseTunnel" | translate }}</mat-label>
|
||||
<mat-label>{{
|
||||
"NewTunnelFlight_ChooseTunnel" | translate
|
||||
}}</mat-label>
|
||||
<input
|
||||
type="text"
|
||||
matInput
|
||||
@@ -61,9 +62,7 @@
|
||||
[displayWith]="displayNameFn"
|
||||
>
|
||||
@for (tunnel of listOfFilteredTunnel; track tunnel) {
|
||||
<mat-option
|
||||
[value]="tunnel"
|
||||
>
|
||||
<mat-option [value]="tunnel">
|
||||
{{ tunnel.name }}
|
||||
</mat-option>
|
||||
}
|
||||
@@ -80,7 +79,9 @@
|
||||
}
|
||||
</mat-form-field>
|
||||
<mat-form-field>
|
||||
<mat-label>{{ "NewTunnelFlight_Date_Lbl" | translate }}</mat-label>
|
||||
<mat-label>{{
|
||||
"NewTunnelFlight_Date_Lbl" | translate
|
||||
}}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
[max]="maxDate"
|
||||
@@ -96,7 +97,9 @@
|
||||
<mat-datepicker #flightDateDp disabled="false"></mat-datepicker>
|
||||
</mat-form-field>
|
||||
<mat-form-field>
|
||||
<mat-label>{{ "NewTunnelFlight_Minutes_Lbl" | translate }}</mat-label>
|
||||
<mat-label>{{
|
||||
"NewTunnelFlight_Minutes_Lbl" | translate
|
||||
}}</mat-label>
|
||||
<input
|
||||
matInput
|
||||
placeholder="{{ 'NewTunnelFlight_Minutes' | translate }}"
|
||||
@@ -116,7 +119,9 @@
|
||||
}
|
||||
</mat-form-field>
|
||||
<mat-form-field>
|
||||
<mat-label>{{ "NewTunnelFlight_Comments_Lbl" | translate }}</mat-label>
|
||||
<mat-label>{{
|
||||
"NewTunnelFlight_Comments_Lbl" | translate
|
||||
}}</mat-label>
|
||||
<textarea
|
||||
matInput
|
||||
placeholder="{{ 'NewTunnelFlight_Comments' | translate }}"
|
||||
@@ -145,5 +150,4 @@
|
||||
} @else {
|
||||
<mat-progress-spinner [mode]="'indeterminate'"></mat-progress-spinner>
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
@@ -64,7 +64,7 @@ class PickDateAdapter extends NativeDateAdapter {
|
||||
MatFormFieldModule,
|
||||
MatOptionModule,
|
||||
MatDatepickerModule,
|
||||
MatProgressSpinnerModule
|
||||
MatProgressSpinnerModule,
|
||||
],
|
||||
})
|
||||
export class NewTunnelFlightComponent implements OnInit {
|
||||
@@ -87,7 +87,7 @@ export class NewTunnelFlightComponent implements OnInit {
|
||||
private serviceTunnelFlight: TunnelFlightService,
|
||||
private serviceJumpType: JumpTypeService,
|
||||
private translateService: TranslateService,
|
||||
private dateService: DateService
|
||||
private dateService: DateService,
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
@@ -115,7 +115,7 @@ export class NewTunnelFlightComponent implements OnInit {
|
||||
this.selectedJumpType.id,
|
||||
this.flightDate,
|
||||
this.minutesOfFlight,
|
||||
this.comments
|
||||
this.comments,
|
||||
)
|
||||
.subscribe(() => {
|
||||
this.comments = undefined;
|
||||
@@ -184,8 +184,8 @@ export class NewTunnelFlightComponent implements OnInit {
|
||||
filterValue = event.toLowerCase();
|
||||
|
||||
this.listOfFilteredTunnel = this.listOfTunnel;
|
||||
this.listOfFilteredTunnel = this.listOfFilteredTunnel.filter((option) =>
|
||||
option.name.toLowerCase().includes(filterValue)
|
||||
this.listOfFilteredTunnel = this.listOfFilteredTunnel.filter(
|
||||
(option) => option.name.toLowerCase().includes(filterValue),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,27 +35,48 @@
|
||||
<ng-template matTabContent>
|
||||
<div class="containerFlex">
|
||||
<fieldset class="contentFlex">
|
||||
<legend>{{ "Summary_LastMonth_ByDz" | translate }}</legend>
|
||||
<legend>
|
||||
{{ "Summary_LastMonth_ByDz" | translate }}
|
||||
</legend>
|
||||
<table mat-table [dataSource]="dsJumpForLastMonthByDz">
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset class="contentFlex">
|
||||
<legend>{{ "Summary_LastMonth_ByJumpType" | translate }}</legend>
|
||||
<table mat-table [dataSource]="dsJumpForLastMonthByJumpType">
|
||||
<legend>
|
||||
{{ "Summary_LastMonth_ByJumpType" | translate }}
|
||||
</legend>
|
||||
<table
|
||||
mat-table
|
||||
[dataSource]="dsJumpForLastMonthByJumpType"
|
||||
>
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -66,27 +87,48 @@
|
||||
<ng-template matTabContent>
|
||||
<div class="containerFlex">
|
||||
<fieldset class="contentFlex">
|
||||
<legend>{{ "Summary_LastYear_ByDz" | translate }}</legend>
|
||||
<legend>
|
||||
{{ "Summary_LastYear_ByDz" | translate }}
|
||||
</legend>
|
||||
<table mat-table [dataSource]="dsJumpForLastYearByDz">
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
<fieldset class="contentFlex">
|
||||
<legend>{{ "Summary_LastYear_ByJumpType" | translate }}</legend>
|
||||
<table mat-table [dataSource]="dsJumpForLastYearByJumpType">
|
||||
<legend>
|
||||
{{ "Summary_LastYear_ByJumpType" | translate }}
|
||||
</legend>
|
||||
<table
|
||||
mat-table
|
||||
[dataSource]="dsJumpForLastYearByJumpType"
|
||||
>
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -97,12 +139,19 @@
|
||||
<ng-template matTabContent>
|
||||
<table mat-table [dataSource]="dsNbJumpByDz">
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</ng-template>
|
||||
</mat-tab>
|
||||
@@ -111,12 +160,19 @@
|
||||
<ng-template matTabContent>
|
||||
<table mat-table [dataSource]="dsNbJumpByAircraft">
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</ng-template>
|
||||
</mat-tab>
|
||||
@@ -125,12 +181,19 @@
|
||||
<ng-template matTabContent>
|
||||
<table mat-table [dataSource]="dsNbJumpByGear">
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</ng-template>
|
||||
</mat-tab>
|
||||
@@ -139,12 +202,19 @@
|
||||
<ng-template matTabContent>
|
||||
<table mat-table [dataSource]="dsNbJumpByType">
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</ng-template>
|
||||
</mat-tab>
|
||||
@@ -153,12 +223,19 @@
|
||||
<ng-template matTabContent>
|
||||
<table mat-table [dataSource]="dsNbJumpByYear">
|
||||
<ng-container matColumnDef="label">
|
||||
<td mat-cell *matCellDef="let element">{{ element.label }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.label }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<ng-container matColumnDef="nb">
|
||||
<td mat-cell *matCellDef="let element">{{ element.nb }}</td>
|
||||
<td mat-cell *matCellDef="let element">
|
||||
{{ element.nb }}
|
||||
</td>
|
||||
</ng-container>
|
||||
<tr mat-row *matRowDef="let row; columns: displayedColumns"></tr>
|
||||
<tr
|
||||
mat-row
|
||||
*matRowDef="let row; columns: displayedColumns"
|
||||
></tr>
|
||||
</table>
|
||||
</ng-template>
|
||||
</mat-tab>
|
||||
|
||||
@@ -82,7 +82,8 @@ export class SummaryComponent implements OnInit {
|
||||
data.lastJump.jumpDate,
|
||||
"EEEE dd MMMM YYYY",
|
||||
);
|
||||
this.lastJump = formattedDate + " (" + data.lastJump.dropZone.name + ")";
|
||||
this.lastJump =
|
||||
formattedDate + " (" + data.lastJump.dropZone.name + ")";
|
||||
});
|
||||
|
||||
this.serviceApi.getStatsOfLastMonth().subscribe((data) => {
|
||||
@@ -193,7 +194,9 @@ export class SummaryComponent implements OnInit {
|
||||
const now = new Date();
|
||||
const currentYear = now.getFullYear();
|
||||
const nbYears = currentYear - firstYear;
|
||||
let listOfYears = new Array(nbYears).fill(null).map(() => firstYear++);
|
||||
let listOfYears = new Array(nbYears)
|
||||
.fill(null)
|
||||
.map(() => firstYear++);
|
||||
|
||||
// Prepare the list of jump type with am empty array
|
||||
let tmpResults = new Map<string, number[]>();
|
||||
|
||||
@@ -5,7 +5,12 @@
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Login</mat-label>
|
||||
<input matInput type="text" formControlName="login" readonly />
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
formControlName="login"
|
||||
readonly
|
||||
/>
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
@@ -30,7 +35,11 @@
|
||||
<p>
|
||||
<mat-form-field>
|
||||
<mat-label>Current password</mat-label>
|
||||
<input matInput type="text" formControlName="currentPassword" />
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
formControlName="currentPassword"
|
||||
/>
|
||||
</mat-form-field>
|
||||
</p>
|
||||
<p>
|
||||
|
||||
Reference in New Issue
Block a user