Update translations, again
This commit is contained in:
parent
a7a18a6b6b
commit
7be73d06ba
|
@ -1 +1 @@
|
|||
<button (click)="locationBackService.goBack()" id="backBtn" [title]="'go_back'|translate|titlecase"><i class="fas fa-arrow-left"></i> {{ 'go_back'|translate|titlecase }}</button>
|
||||
<button (click)="locationBackService.goBack()" id="backBtn" [title]="'go_back'|translate"><i class="fas fa-arrow-left"></i> {{ 'go_back'|translate }}</button>
|
|
@ -1,6 +1,6 @@
|
|||
<div class="input-group flex-nowrap">
|
||||
<span class="input-group-text" id="addon-wrapping">Filtra interventi per data</span>
|
||||
<input type="text" [disabled]="disabled" placeholder="Seleziona un intervallo di date" class="form-control" placement="bottom"
|
||||
<span class="input-group-text" id="addon-wrapping" translate>select_date_range</span>
|
||||
<input type="text" [disabled]="disabled" [placeholder]="'select_date_range'|translate" class="form-control" placement="bottom"
|
||||
bsDaterangepicker [bsConfig]="dateRangePickerOptions" [maxDate]="maxDate" [(bsValue)]="range" (bsValueChange)="updateValue($event)">
|
||||
<button class="btn btn-outline-secondary" type="button" (click)="resetRange()">Rimuovi filtri</button>
|
||||
<button class="btn btn-outline-secondary" type="button" (click)="resetRange()" translate>select_date_range</button>
|
||||
</div>
|
|
@ -1,5 +1,5 @@
|
|||
<div class="input-group">
|
||||
<input type="text" [disabled]="disabled" [placeholder]="'press_to_select_a_date'|translate|titlecase" class="form-control date-picker"
|
||||
<input type="text" [disabled]="disabled" [placeholder]="'press_to_select_a_date'|translate" class="form-control date-picker"
|
||||
bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [(ngModel)]="date" (ngModelChange)=updateValue()>
|
||||
<input type="time" [disabled]="disabled" class="form-control" [(ngModel)]="time" (change)=updateValue()>
|
||||
</div>
|
|
@ -96,7 +96,7 @@ export class MapPickerComponent implements OnInit {
|
|||
|
||||
searchPlace() {
|
||||
if(this.placeName.length < 3) {
|
||||
this.translate.get('map_picker.place_min_length').subscribe((res: string) => {
|
||||
this.translate.get('validation.place_min_length').subscribe((res: string) => {
|
||||
this.toastr.error(res);
|
||||
});
|
||||
return;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<div class="modal-header">
|
||||
<h4 class="modal-title pull-left" translate>user_info_modal.title</h4>
|
||||
<h4 class="modal-title pull-left" translate>medical_examination_modal.title</h4>
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close close pull-right"
|
||||
[attr.aria-label]="'close' | translate | titlecase"
|
||||
[attr.aria-label]="'close' | translate | ftitlecase"
|
||||
(click)="bsModalRef.hide()"
|
||||
>
|
||||
<span aria-hidden="true" class="visually-hidden">×</span>
|
||||
|
@ -12,26 +12,26 @@
|
|||
<div class="modal-body">
|
||||
<form [formGroup]="form" (submit)="formSubmit()" class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label for="me_date" class="form-label">Data</label>
|
||||
<input formControlName="date" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|titlecase" id="me_date" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [maxDate]="dateMaxDate">
|
||||
<label for="me_date" class="form-label">{{ 'date'|translate|ftitlecase }}</label>
|
||||
<input formControlName="date" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|ftitlecase" id="me_date" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [maxDate]="dateMaxDate">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="me_expiration_date" class="form-label">Data scadenza</label>
|
||||
<input formControlName="expiration_date" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|titlecase" id="me_expiration_date" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [minDate]="expirationDateMinDate">
|
||||
<label for="me_expiration_date" class="form-label">{{ 'expiration_date'|translate|ftitlecase }}</label>
|
||||
<input formControlName="expiration_date" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|ftitlecase" id="me_expiration_date" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [minDate]="expirationDateMinDate">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label for="me_certifier">Ente/Certificatore</label>
|
||||
<label for="me_certifier">{{ 'certifier'|translate|ftitlecase }}</label>
|
||||
<input formControlName="certifier" type="text" class="form-control" id="me_certifier">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label for="dl_scan" class="form-label">Carica certificato medico (<u>OPZIONALE</u>, PDF)</label>
|
||||
<label for="dl_scan" class="form-label">{{ 'upload_medical_examination_certificate'|translate|ftitlecase }} (<u>{{ 'optional'|translate|uppercase }}</u>, <i>.pdf</i>)</label>
|
||||
<input class="form-control" type="file" id="dl_scan" (change)="onMedicalExaminationCertificateSelected($event)">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" (click)="formSubmit()">
|
||||
{{ "add" | translate | titlecase }}
|
||||
{{ "add" | translate | ftitlecase }}
|
||||
</button>
|
||||
<button type="button" class="btn btn-secondary" (click)="bsModalRef.hide()">
|
||||
{{ "close" | translate }}
|
||||
|
|
|
@ -46,7 +46,7 @@ export class ModalAddMedicalExaminationComponent implements OnInit {
|
|||
event.target.value = null;
|
||||
Swal.fire({
|
||||
title: this.translateService.instant("error_title"),
|
||||
text: this.translateService.instant("edit_user.image_format_not_supported"),
|
||||
text: this.translateService.instant("validation.document_format_not_supported"),
|
||||
icon: 'error',
|
||||
confirmButtonText: 'Ok'
|
||||
});
|
||||
|
@ -56,7 +56,7 @@ export class ModalAddMedicalExaminationComponent implements OnInit {
|
|||
event.target.value = null;
|
||||
Swal.fire({
|
||||
title: this.translateService.instant("error_title"),
|
||||
text: this.translateService.instant("edit_user.file_too_big"),
|
||||
text: this.translateService.instant("validation.file_too_big"),
|
||||
icon: 'error',
|
||||
confirmButtonText: 'Ok'
|
||||
});
|
||||
|
|
|
@ -4,6 +4,7 @@ import { CommonModule } from '@angular/common';
|
|||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||
import { TranslationModule } from '../../translation.module';
|
||||
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
|
||||
import { FirstLetterUppercasePipe } from 'src/app/_pipes/first-letter-uppercase.pipe';
|
||||
|
||||
import { ModalAddMedicalExaminationComponent } from './modal-add-medical-examination.component';
|
||||
|
||||
|
@ -16,7 +17,8 @@ import { ModalAddMedicalExaminationComponent } from './modal-add-medical-examina
|
|||
FormsModule,
|
||||
ReactiveFormsModule,
|
||||
TranslationModule,
|
||||
BsDatepickerModule.forRoot()
|
||||
BsDatepickerModule.forRoot(),
|
||||
FirstLetterUppercasePipe
|
||||
],
|
||||
exports: [
|
||||
ModalAddMedicalExaminationComponent
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="modal-header">
|
||||
<h4 class="modal-title pull-left" translate>alert.state</h4>
|
||||
<button type="button" class="btn-close close pull-right" [attr.aria-label]="'close'|translate|titlecase" (click)="bsModalRef.hide()">
|
||||
<button type="button" class="btn-close close pull-right" [attr.aria-label]="'close'|translate|ftitlecase" (click)="bsModalRef.hide()">
|
||||
<span aria-hidden="true" class="visually-hidden">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
@ -14,16 +14,16 @@
|
|||
<i class="fas fa-exclamation-triangle"></i> {{ 'alert.closed'|translate }}
|
||||
</div>
|
||||
<div class="alert alert-info" role="alert" *ngIf="!alertClosed && getCurrentUserResponse() == null">
|
||||
<i class="fas fa-info-circle"></i> Sarai presente alla chiamata?
|
||||
<i class="fas fa-info-circle"></i> {{ 'alert.request_response_question'|translate }}
|
||||
<div class="btn-group ms-3" role="group">
|
||||
<button class="btn btn-success" type="button" (click)="setCurrentUserResponse(1)">Si</button>
|
||||
<button class="btn btn-danger" type="button" (click)="setCurrentUserResponse(0)">No</button>
|
||||
<button class="btn btn-success" type="button" (click)="setCurrentUserResponse(1)">{{ 'yes'|translate|titlecase }}</button>
|
||||
<button class="btn btn-danger" type="button" (click)="setCurrentUserResponse(0)">{{ 'no'|translate|titlecase }}</button>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-border table-striped w-100">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{{ 'name'|translate|titlecase }}</td>
|
||||
<td>{{ 'name'|translate|ftitlecase }}</td>
|
||||
<td colspan="2">{{ 'alert.response_status'|translate }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="modal-header">
|
||||
<h4 class="modal-title pull-left">{{ 'update_availability_schedule'|translate }}</h4>
|
||||
<button type="button" class="btn-close close pull-right" [attr.aria-label]="'close'|translate|titlecase" (click)="bsModalRef.hide()">
|
||||
<button type="button" class="btn-close close pull-right" [attr.aria-label]="'close'|translate|ftitlecase" (click)="bsModalRef.hide()">
|
||||
<span aria-hidden="true" class="visually-hidden">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<button
|
||||
type="button"
|
||||
class="btn-close close pull-right"
|
||||
[attr.aria-label]="'close' | translate | titlecase"
|
||||
[attr.aria-label]="'close' | translate | ftitlecase"
|
||||
(click)="bsModalRef.hide()"
|
||||
>
|
||||
<span aria-hidden="true" class="visually-hidden">×</span>
|
||||
|
@ -20,27 +20,27 @@
|
|||
<th></th>
|
||||
<th></th>
|
||||
<tr *ngIf="user.surname">
|
||||
<td>{{ 'surname'|translate|titlecase }}</td>
|
||||
<td>{{ 'surname'|translate|ftitlecase }}</td>
|
||||
<td>{{ user.surname }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'name'|translate|titlecase }}</td>
|
||||
<td>{{ 'name'|translate|ftitlecase }}</td>
|
||||
<td>{{ user.name }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'username'|translate|titlecase }}</td>
|
||||
<td>{{ 'username'|translate|ftitlecase }}</td>
|
||||
<td>{{ user.username }}</td>
|
||||
</tr>
|
||||
<tr *ngIf="user.birthday">
|
||||
<td>{{ 'birthday'|translate|titlecase }}</td>
|
||||
<td>{{ 'birthday'|translate|ftitlecase }}</td>
|
||||
<td>{{ user.birthday | date:'dd/MM/yyyy' }}</td>
|
||||
</tr>
|
||||
<tr *ngIf="user.birthplace">
|
||||
<td>{{ 'birthplace'|translate|titlecase }}</td>
|
||||
<td>{{ 'birthplace'|translate|ftitlecase }}</td>
|
||||
<td>{{ user.birthplace }}<ng-container *ngIf="user.birthplace_province"> ({{ user.birthplace_province }})</ng-container></td>
|
||||
</tr>
|
||||
<tr *ngIf="user.ssn">
|
||||
<td>{{ 'ssn'|translate|titlecase }}</td>
|
||||
<td>{{ 'ssn'|translate|ftitlecase }}</td>
|
||||
<td>{{ user.ssn }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -50,7 +50,7 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr *ngIf="user.address">
|
||||
<td>{{ 'address'|translate|titlecase }}</td>
|
||||
<td>{{ 'address'|translate|ftitlecase }}</td>
|
||||
<td>
|
||||
<a href="https://maps.google.com/?q={{ user.address }}" target="_blank">
|
||||
{{ user.address }}<ng-container *ngIf="user.address_zip_code"> ({{ 'zip_code'|translate }} <i>{{ user.address_zip_code }}</i>)</ng-container>
|
||||
|
@ -58,11 +58,11 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'phone_number'|translate|titlecase }}</td>
|
||||
<td>{{ 'phone_number'|translate|ftitlecase }}</td>
|
||||
<td><a href="tel:{{ user.phone_number }}">{{ user.phone_number }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'email'|translate|titlecase }}</td>
|
||||
<td>{{ 'email'|translate|ftitlecase }}</td>
|
||||
<td><a href="mailto:{{ user.email }}">{{ user.email }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -72,28 +72,28 @@
|
|||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'driver'|translate|titlecase }}</td>
|
||||
<td>{{ 'driver'|translate|ftitlecase }}</td>
|
||||
<td>
|
||||
<i class="fa fa-check" style="color:green" *ngIf="user.driver"></i>
|
||||
<i class="fa fa-times" style="color:red" *ngIf="!user.driver"></i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'chief'|translate|titlecase }}</td>
|
||||
<td>{{ 'chief'|translate|ftitlecase }}</td>
|
||||
<td>
|
||||
<img alt="red helmet" src="./assets/icons/red_helmet.png" width="20px" *ngIf="user.chief"> Si
|
||||
<img alt="black helmet" src="./assets/icons/black_helmet.png" width="20px" *ngIf="!user.chief"> No
|
||||
</td>
|
||||
</tr>
|
||||
<tr *ngIf="user.course_date">
|
||||
<td>{{ 'course_date'|translate|titlecase }}</td>
|
||||
<td>{{ 'course_date'|translate|ftitlecase }}</td>
|
||||
<td>{{ user.course_date }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" (click)="goToEditPage()" [disabled]="!canGoToEditPage">
|
||||
{{ "edit" | translate | titlecase }}
|
||||
{{ "edit" | translate | ftitlecase }}
|
||||
</button>
|
||||
<button type="button" class="btn btn-secondary" (click)="bsModalRef.hide()">
|
||||
{{ "close" | translate }}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<ng-container *ngIf="sourceType && enablePaginationTypes.includes(sourceType)">
|
||||
<div class="row mt-5 mb-3">
|
||||
<div class="col-xs-12 col-12">
|
||||
<input type="text" class="form-control" placeholder="{{ 'search'|translate|titlecase }}" [(ngModel)]="searchText" (ngModelChange)="onSearchTextChange($event)">
|
||||
<input type="text" class="form-control" placeholder="{{ 'search'|translate|ftitlecase }}" [(ngModel)]="searchText" (ngModelChange)="onSearchTextChange($event)">
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
|
@ -13,16 +13,16 @@
|
|||
<table *ngIf="sourceType === 'list'" id="table" class="table table-striped table-bordered dt-responsive nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'name'|translate|titlecase }}</th>
|
||||
<th>{{ 'available'|translate|titlecase }}</th>
|
||||
<th>{{ 'driver'|translate|titlecase }}</th>
|
||||
<th>{{ 'name'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'available'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'driver'|translate|ftitlecase }}</th>
|
||||
<ng-container *ngIf="auth.profile.can('users-read')">
|
||||
<th>{{ 'call'|translate|titlecase }}</th>
|
||||
<th>{{ 'call'|translate|ftitlecase }}</th>
|
||||
</ng-container>
|
||||
<th>{{ 'services'|translate|titlecase }}</th>
|
||||
<th>{{ 'availability_minutes'|translate|titlecase }}</th>
|
||||
<th>{{ 'services'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'availability_minutes'|translate|ftitlecase }}</th>
|
||||
<ng-container *ngIf="auth.profile.can('users-update')">
|
||||
<th>{{ 'edit'|translate|titlecase }}</th>
|
||||
<th>{{ 'edit'|translate|ftitlecase }}</th>
|
||||
</ng-container>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -60,10 +60,10 @@
|
|||
<table id="table" class="table table-striped table-bordered dt-responsive nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'action'|translate|titlecase }}</th>
|
||||
<th>{{ 'changed'|translate|titlecase }}</th>
|
||||
<th>{{ 'editor'|translate|titlecase }}</th>
|
||||
<th>{{ 'datetime'|translate|titlecase }}</th>
|
||||
<th>{{ 'action'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'changed'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'editor'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'datetime'|translate|ftitlecase }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="table_body">
|
||||
|
@ -82,17 +82,17 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{{ 'start'|translate|titlecase }}</th>
|
||||
<th>{{ 'end'|translate|titlecase }}</th>
|
||||
<th>{{ 'code'|translate|titlecase }}</th>
|
||||
<th>{{ 'chief'|translate|titlecase }}</th>
|
||||
<th>{{ 'drivers'|translate|titlecase }}</th>
|
||||
<th>{{ 'crew'|translate|titlecase }}</th>
|
||||
<th>{{ 'place'|translate|titlecase }}</th>
|
||||
<th>{{ 'notes'|translate|titlecase }}</th>
|
||||
<th>{{ 'type'|translate|titlecase }}</th>
|
||||
<th *ngIf="auth.profile.can('services-update')">{{ 'update'|translate|titlecase }}</th>
|
||||
<th *ngIf="auth.profile.can('services-delete')">{{ 'remove'|translate|titlecase }}</th>
|
||||
<th>{{ 'start'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'end'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'code'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'chief'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'drivers'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'crew'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'place'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'notes'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'type'|translate|ftitlecase }}</th>
|
||||
<th *ngIf="auth.profile.can('services-update')">{{ 'update'|translate|ftitlecase }}</th>
|
||||
<th *ngIf="auth.profile.can('services-delete')">{{ 'remove'|translate|ftitlecase }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="table_body">
|
||||
|
@ -108,7 +108,7 @@
|
|||
<td>
|
||||
<ng-container *ngIf="row.place.name"><i>{{ row.place.name }}</i></ng-container><br>
|
||||
<ng-container *ngIf="row.place.village">{{ row.place.village }}</ng-container><br>
|
||||
<a class="place_details_link cursor-pointer" (click)="openPlaceDetails(row.place.id)">{{ 'more details'|translate|titlecase }}</a>
|
||||
<a class="place_details_link cursor-pointer" (click)="openPlaceDetails(row.place.id)">{{ 'more details'|translate|ftitlecase }}</a>
|
||||
</td>
|
||||
<td>{{ row.notes }}</td>
|
||||
<td>{{ row.type }}</td>
|
||||
|
@ -124,15 +124,15 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<td>#</td>
|
||||
<th>{{ 'name'|translate|titlecase }}</th>
|
||||
<th>{{ 'start'|translate|titlecase }}</th>
|
||||
<th>{{ 'end'|translate|titlecase }}</th>
|
||||
<th>{{ 'chief'|translate|titlecase }}</th>
|
||||
<th>{{ 'crew'|translate|titlecase }}</th>
|
||||
<th>{{ 'place'|translate|titlecase }}</th>
|
||||
<th>{{ 'notes'|translate|titlecase }}</th>
|
||||
<th *ngIf="auth.profile.can('trainings-update')">{{ 'update'|translate|titlecase }}</th>
|
||||
<th *ngIf="auth.profile.can('trainings-delete')">{{ 'remove'|translate|titlecase }}</th>
|
||||
<th>{{ 'name'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'start'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'end'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'chief'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'crew'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'place'|translate|ftitlecase }}</th>
|
||||
<th>{{ 'notes'|translate|ftitlecase }}</th>
|
||||
<th *ngIf="auth.profile.can('trainings-update')">{{ 'update'|translate|ftitlecase }}</th>
|
||||
<th *ngIf="auth.profile.can('trainings-delete')">{{ 'remove'|translate|ftitlecase }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="table_body">
|
||||
|
@ -178,17 +178,17 @@
|
|||
</ng-template>
|
||||
|
||||
<ng-template #nextTemplate let-disabled="disabled" let-currentPage="currentPage">
|
||||
{{ 'next'|translate|titlecase }}
|
||||
{{ 'next'|translate|ftitlecase }}
|
||||
</ng-template>
|
||||
|
||||
<ng-template #prevTemplate let-disabled="disabled" let-currentPage="currentPage">
|
||||
{{ 'previous'|translate|titlecase }}
|
||||
{{ 'previous'|translate|ftitlecase }}
|
||||
</ng-template>
|
||||
|
||||
<ng-template #lastTemplate let-disabled="disabled" let-currentPage="currentPage">
|
||||
{{ 'last'|translate|titlecase }}
|
||||
{{ 'last'|translate|ftitlecase }}
|
||||
</ng-template>
|
||||
|
||||
<ng-template #firstTemplate let-disabled="disabled" let-currentPage="currentPage">
|
||||
{{ 'first'|translate|titlecase }}
|
||||
{{ 'first'|translate|ftitlecase }}
|
||||
</ng-template>
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
import { Pipe, PipeTransform } from '@angular/core';
|
||||
|
||||
@Pipe({
|
||||
name: 'ftitlecase',
|
||||
standalone: true
|
||||
})
|
||||
export class FirstLetterUppercasePipe implements PipeTransform {
|
||||
|
||||
transform(value: unknown, ...args: unknown[]): unknown {
|
||||
if(typeof value !== "string") return value;
|
||||
return value.charAt(0).toUpperCase() + value.slice(1);
|
||||
}
|
||||
|
||||
}
|
|
@ -3,21 +3,21 @@
|
|||
<form method="post" [formGroup]="serviceForm" (ngSubmit)="formSubmit()">
|
||||
<div class="container">
|
||||
<div class="form-group has-validation">
|
||||
<label for="date-picker-start">{{ 'start'|translate|titlecase }}</label>
|
||||
<label for="date-picker-start">{{ 'start'|translate|ftitlecase }}</label>
|
||||
<datetime-picker formControlName="start" [class.is-invalid]="!isFieldValid('start')" id="date-picker-start"></datetime-picker>
|
||||
<div class="invalid-feedback" *ngIf="start.errors?.['required']" translate>
|
||||
edit_service.select_start_datetime
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group has-validation">
|
||||
<label for="date-picker-end">{{ 'end'|translate|titlecase }}</label>
|
||||
<label for="date-picker-end">{{ 'end'|translate|ftitlecase }}</label>
|
||||
<datetime-picker formControlName="end" [class.is-invalid]="!isFieldValid('end')" id="date-picker-end"></datetime-picker>
|
||||
<div class="invalid-feedback" *ngIf="end.errors?.['required']" translate>
|
||||
edit_service.select_end_datetime
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group has-validation">
|
||||
<label for="code">{{ 'code'|translate|titlecase }}</label>
|
||||
<label for="code">{{ 'code'|translate|ftitlecase }}</label>
|
||||
<input formControlName="code" [class.is-invalid]="!isFieldValid('code')" id="code" class="form-control"
|
||||
type="text" placeholder="1234/5">
|
||||
<div class="invalid-feedback" *ngIf="code.errors?.['required']" translate>
|
||||
|
@ -25,7 +25,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group has-validation" [class.is-invalid-div]="!isFieldValid('chief')">
|
||||
<label>{{ 'chief'|translate|titlecase }}</label>
|
||||
<label>{{ 'chief'|translate|ftitlecase }}</label>
|
||||
<br>
|
||||
<ng-container *ngFor="let user of users">
|
||||
<div class="form-check">
|
||||
|
@ -38,7 +38,7 @@
|
|||
</ng-container>
|
||||
</div>
|
||||
<div class="form-group has-validation" [class.is-invalid-div]="!isFieldValid('drivers')">
|
||||
<label>{{ 'drivers'|translate|titlecase }}</label>
|
||||
<label>{{ 'drivers'|translate|ftitlecase }}</label>
|
||||
<br>
|
||||
<ng-container *ngFor="let user of users">
|
||||
<div class="form-check" *ngIf="user.driver">
|
||||
|
@ -64,17 +64,17 @@
|
|||
</ng-container>
|
||||
</div>
|
||||
<div [class.is-invalid-div]="!isFieldValid('lat')" class="mb-2">
|
||||
<label>{{ 'place'|translate|titlecase }}</label>
|
||||
<label>{{ 'place'|translate|ftitlecase }}</label>
|
||||
<map-picker *ngIf="addingService" (markerSet)="setPlace($event.lat, $event.lng)"></map-picker>
|
||||
<map-picker *ngIf="!addingService && loadedServiceLat !== ''" (markerSet)="setPlace($event.lat, $event.lng)" [selectLat]="loadedServiceLat" [selectLng]="loadedServiceLng"></map-picker>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="notes">{{ 'notes'|translate|titlecase }}</label><br>
|
||||
<label for="notes">{{ 'notes'|translate|ftitlecase }}</label><br>
|
||||
<textarea formControlName="notes" class="form-control" id="notes"></textarea>
|
||||
</div>
|
||||
<br>
|
||||
<div class="form-group">
|
||||
<label>{{ 'type'|translate|titlecase }}</label>
|
||||
<label>{{ 'type'|translate|ftitlecase }}</label>
|
||||
<br>
|
||||
<div class="input-group has-validation">
|
||||
<select formControlName="type" [class.is-invalid]="!isFieldValid('type')" class="form-control mr-2">
|
||||
|
@ -82,7 +82,7 @@
|
|||
<option *ngFor="let service_type of types" value="{{ service_type.id }}">{{ service_type.name }}</option>
|
||||
</select>
|
||||
<button class="btn btn-outline-secondary" type="button" tabindex="-1" (click)="addingType = true">
|
||||
{{ 'add'|translate|titlecase }}
|
||||
{{ 'add'|translate|ftitlecase }}
|
||||
</button>
|
||||
<div class="invalid-feedback" *ngIf="type.errors?.['required']" translate>
|
||||
edit_service.select_service_type
|
||||
|
@ -91,12 +91,12 @@
|
|||
<div class="input-group mb-2 mt-2" *ngIf="addingType">
|
||||
<input type="text" class="form-control" [placeholder]="'type'|translate" [(ngModel)]="newType"
|
||||
[ngModelOptions]="{standalone: true}">
|
||||
<button class="btn btn-secondary" type="button" (click)="addType()">{{ 'submit'|translate|titlecase }}</button>
|
||||
<button class="btn btn-secondary" type="button" (click)="addType()">{{ 'submit'|translate|ftitlecase }}</button>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<button id="submit_button" type="submit" class="btn btn-primary" [disabled]="submittingForm">{{ 'submit'|translate|titlecase }}</button>
|
||||
<button class="btn" type="button" (click)="formReset()" [disabled]="submittingForm">{{ 'reset'|translate|titlecase }}</button>
|
||||
<button id="submit_button" type="submit" class="btn btn-primary" [disabled]="submittingForm">{{ 'submit'|translate|ftitlecase }}</button>
|
||||
<button class="btn" type="button" (click)="formReset()" [disabled]="submittingForm">{{ 'reset'|translate|ftitlecase }}</button>
|
||||
<div class="d-flex justify-content-center mt-2 pt-2 mb-3" *ngIf="submittingForm">
|
||||
<div class="spinner spinner-border"></div>
|
||||
</div>
|
||||
|
|
|
@ -130,13 +130,13 @@ export class EditServiceComponent implements OnInit {
|
|||
|
||||
addType() {
|
||||
if (this.newType.length < 2) {
|
||||
this.translate.get('edit_service.type_must_be_two_characters_long').subscribe((res: string) => {
|
||||
this.translate.get('validation.type_must_be_two_characters_long').subscribe((res: string) => {
|
||||
this.toastr.error(res);
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (this.types.find(t => t.name == this.newType)) {
|
||||
this.translate.get('edit_service.type_already_exists').subscribe((res: string) => {
|
||||
this.translate.get('validation.type_already_exists').subscribe((res: string) => {
|
||||
this.toastr.error(res);
|
||||
});
|
||||
return;
|
||||
|
|
|
@ -7,6 +7,7 @@ import { MapPickerModule } from '../../_components/map-picker/map-picker.module'
|
|||
import { DatetimePickerModule } from '../../_components/datetime-picker/datetime-picker.module';
|
||||
import { BackBtnModule } from '../../_components/back-btn/back-btn.module';
|
||||
import { TranslationModule } from '../../translation.module';
|
||||
import { FirstLetterUppercasePipe } from '../../_pipes/first-letter-uppercase.pipe';
|
||||
|
||||
import { EditServiceRoutingModule } from './edit-service-routing.module';
|
||||
import { EditServiceComponent } from './edit-service.component';
|
||||
|
@ -24,7 +25,8 @@ import { EditServiceComponent } from './edit-service.component';
|
|||
MapPickerModule,
|
||||
DatetimePickerModule,
|
||||
BackBtnModule,
|
||||
TranslationModule
|
||||
TranslationModule,
|
||||
FirstLetterUppercasePipe
|
||||
]
|
||||
})
|
||||
export class EditServiceModule { }
|
||||
|
|
|
@ -3,21 +3,21 @@
|
|||
<form method="post" [formGroup]="trainingForm" (ngSubmit)="formSubmit()">
|
||||
<div class="container">
|
||||
<div class="form-group has-validation">
|
||||
<label for="date-picker-start">{{ 'start'|translate|titlecase }}</label>
|
||||
<label for="date-picker-start">{{ 'start'|translate|ftitlecase }}</label>
|
||||
<datetime-picker formControlName="start" [class.is-invalid]="!isFieldValid('start')" id="date-picker-start"></datetime-picker>
|
||||
<div class="invalid-feedback" *ngIf="start.errors?.['required']" translate>
|
||||
edit_training.select_start_datetime
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group has-validation">
|
||||
<label for="date-picker-end">{{ 'end'|translate|titlecase }}</label>
|
||||
<label for="date-picker-end">{{ 'end'|translate|ftitlecase }}</label>
|
||||
<datetime-picker formControlName="end" [class.is-invalid]="!isFieldValid('end')" id="date-picker-end"></datetime-picker>
|
||||
<div class="invalid-feedback" *ngIf="end.errors?.['required']" translate>
|
||||
edit_training.select_end_datetime
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group has-validation">
|
||||
<label for="name">{{ 'name'|translate|titlecase }}</label>
|
||||
<label for="name">{{ 'name'|translate|ftitlecase }}</label>
|
||||
<input formControlName="name" [class.is-invalid]="!isFieldValid('name')" id="name" class="form-control"
|
||||
type="text" [placeholder]="'edit_training.name_placeholder'|translate">
|
||||
<div class="invalid-feedback" *ngIf="name.errors?.['required']" translate>
|
||||
|
@ -25,7 +25,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group has-validation" [class.is-invalid-div]="!isFieldValid('chief')">
|
||||
<label>{{ 'chief'|translate|titlecase }}</label>
|
||||
<label>{{ 'chief'|translate|ftitlecase }}</label>
|
||||
<br>
|
||||
<ng-container *ngFor="let user of users">
|
||||
<div class="form-check">
|
||||
|
@ -51,7 +51,7 @@
|
|||
</ng-container>
|
||||
</div>
|
||||
<div class="form-group has-validation">
|
||||
<label for="place">{{ 'place'|translate|titlecase }}</label>
|
||||
<label for="place">{{ 'place'|translate|ftitlecase }}</label>
|
||||
<input formControlName="place" [class.is-invalid]="!isFieldValid('place')" id="place" class="form-control"
|
||||
type="text">
|
||||
<div class="invalid-feedback" *ngIf="place.errors?.['required']" translate>
|
||||
|
@ -59,13 +59,13 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="notes">{{ 'notes'|translate|titlecase }}</label><br>
|
||||
<label for="notes">{{ 'notes'|translate|ftitlecase }}</label><br>
|
||||
<textarea formControlName="notes" class="form-control" id="notes"></textarea>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
<button id="submit_button" type="submit" class="btn btn-primary" [disabled]="submittingForm">{{ 'submit'|translate|titlecase }}</button>
|
||||
<button class="btn" type="button" (click)="formReset()" [disabled]="submittingForm">{{ 'reset'|translate|titlecase }}</button>
|
||||
<button id="submit_button" type="submit" class="btn btn-primary" [disabled]="submittingForm">{{ 'submit'|translate|ftitlecase }}</button>
|
||||
<button class="btn" type="button" (click)="formReset()" [disabled]="submittingForm">{{ 'reset'|translate|ftitlecase }}</button>
|
||||
<div class="d-flex justify-content-center mt-2 pt-2 mb-3" *ngIf="submittingForm">
|
||||
<div class="spinner spinner-border"></div>
|
||||
</div>
|
||||
|
|
|
@ -7,6 +7,7 @@ import { MapPickerModule } from '../../_components/map-picker/map-picker.module'
|
|||
import { DatetimePickerModule } from '../../_components/datetime-picker/datetime-picker.module';
|
||||
import { BackBtnModule } from '../../_components/back-btn/back-btn.module';
|
||||
import { TranslationModule } from '../../translation.module';
|
||||
import { FirstLetterUppercasePipe } from '../../_pipes/first-letter-uppercase.pipe';
|
||||
|
||||
import { EditTrainingRoutingModule } from './edit-training-routing.module';
|
||||
import { EditTrainingComponent } from './edit-training.component';
|
||||
|
@ -24,7 +25,8 @@ import { EditTrainingComponent } from './edit-training.component';
|
|||
MapPickerModule,
|
||||
DatetimePickerModule,
|
||||
BackBtnModule,
|
||||
TranslationModule
|
||||
TranslationModule,
|
||||
FirstLetterUppercasePipe
|
||||
]
|
||||
})
|
||||
export class EditTrainingModule { }
|
||||
|
|
|
@ -8,142 +8,142 @@
|
|||
|
||||
<form [formGroup]="profileForm" (ngSubmit)="formSubmit()" class="row g-4 m-3">
|
||||
<div class="col-md-6">
|
||||
<label for="name" class="form-label">{{ 'name'|translate|titlecase }}</label>
|
||||
<label for="name" class="form-label">{{ 'name'|translate|ftitlecase }}</label>
|
||||
<input formControlName="name" autocomplete="name" type="text" class="form-control" id="name">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="surname" class="form-label">{{ 'surname'|translate|titlecase }}</label>
|
||||
<label for="surname" class="form-label">{{ 'surname'|translate|ftitlecase }}</label>
|
||||
<input formControlName="surname" autocomplete="additional-name" type="text" class="form-control" id="surname">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="username" class="form-label">{{ 'username'|translate|titlecase }}</label>
|
||||
<label for="username" class="form-label">{{ 'username'|translate|ftitlecase }}</label>
|
||||
<input formControlName="username" autocomplete="username" type="text" class="form-control" id="username">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="ssn" class="form-label">{{ 'ssn'|translate|titlecase }}</label>
|
||||
<label for="ssn" class="form-label">{{ 'ssn'|translate|ftitlecase }}</label>
|
||||
<input formControlName="ssn" autocomplete="ssn" type="text" class="form-control" id="ssn">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="birthday" class="form-label">{{ 'birthday'|translate|titlecase }}</label>
|
||||
<input formControlName="birthday" autocomplete="bday" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|titlecase" id="birthday" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [maxDate]="birthdayMaxDate">
|
||||
<label for="birthday" class="form-label">{{ 'birthday'|translate|ftitlecase }}</label>
|
||||
<input formControlName="birthday" autocomplete="bday" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|ftitlecase" id="birthday" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [maxDate]="birthdayMaxDate">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="birthplace" class="form-label">{{ 'birthplace'|translate|titlecase }}</label>
|
||||
<label for="birthplace" class="form-label">{{ 'birthplace'|translate|ftitlecase }}</label>
|
||||
<div class="input-group" id="birthplace">
|
||||
<input formControlName="birthplace" type="text" class="form-control" [placeholder]="'place'|translate|titlecase">
|
||||
<input formControlName="birthplace_province" type="text" class="form-control" [placeholder]="'province'|translate|titlecase">
|
||||
<input formControlName="birthplace" type="text" class="form-control" [placeholder]="'place'|translate|ftitlecase">
|
||||
<input formControlName="birthplace_province" type="text" class="form-control" [placeholder]="'province'|translate|ftitlecase">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 class="text-center mt-5"><i class="fas fa-fire-extinguisher"></i> {{ 'service_information'|translate|titlecase }}</h2>
|
||||
<h2 class="text-center mt-5"><i class="fas fa-fire-extinguisher"></i> {{ 'service_information'|translate|ftitlecase }}</h2>
|
||||
<div class="col-md-12">
|
||||
<label for="course_date" class="form-label">{{ 'course_date'|translate|titlecase }}</label>
|
||||
<input formControlName="course_date" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|titlecase" id="course_date" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [maxDate]="birthdayMaxDate">
|
||||
<label for="course_date" class="form-label">{{ 'course_date'|translate|ftitlecase }}</label>
|
||||
<input formControlName="course_date" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|ftitlecase" id="course_date" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [maxDate]="birthdayMaxDate">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="driver" class="form-label">{{ 'driver'|translate|titlecase }}</label>
|
||||
<label for="driver" class="form-label">{{ 'driver'|translate|ftitlecase }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input formControlName="driver" class="form-check-input custom-check-input" type="checkbox" role="switch" id="driver">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="chief" class="form-label">{{ 'chief'|translate|titlecase }}</label>
|
||||
<label for="chief" class="form-label">{{ 'chief'|translate|ftitlecase }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input formControlName="chief" class="form-check-input custom-check-input" type="checkbox" role="switch" id="chief">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="banned" class="form-label">{{ 'banned'|translate|titlecase }}</label>
|
||||
<label for="banned" class="form-label">{{ 'banned'|translate|ftitlecase }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input formControlName="banned" class="form-check-input custom-check-input" type="checkbox" role="switch" id="banned">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="hidden" class="form-label">{{ 'hidden'|translate|titlecase }}</label>
|
||||
<label for="hidden" class="form-label">{{ 'hidden'|translate|ftitlecase }}</label>
|
||||
<div class="form-check form-switch">
|
||||
<input formControlName="hidden" class="form-check-input custom-check-input" type="checkbox" role="switch" id="hidden">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="creation_date" class="form-label">{{ 'edit_user.creation_date'|translate|titlecase }}</label>
|
||||
<label for="creation_date" class="form-label">{{ 'edit_user.creation_date'|translate|ftitlecase }}</label>
|
||||
<input type="text" class="form-control" disabled id="creation_date" [value]="creation_date">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="update_date" class="form-label">{{ 'edit_user.last_update'|translate|titlecase }}</label>
|
||||
<label for="update_date" class="form-label">{{ 'edit_user.last_update'|translate|ftitlecase }}</label>
|
||||
<input type="text" class="form-control" disabled id="update_date" [value]="update_date">
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<label for="last_access_date" class="form-label">{{ 'edit_user.last_access'|translate|titlecase }}</label>
|
||||
<label for="last_access_date" class="form-label">{{ 'edit_user.last_access'|translate|ftitlecase }}</label>
|
||||
<input type="text" class="form-control" disabled id="last_access_date" [value]="last_access_date">
|
||||
</div>
|
||||
|
||||
<h2 class="text-center mt-5"><i class="fas fa-phone"></i> {{ 'contact_information'|translate|titlecase }}</h2>
|
||||
<h2 class="text-center mt-5"><i class="fas fa-phone"></i> {{ 'contact_information'|translate|ftitlecase }}</h2>
|
||||
<div class="col-md-8">
|
||||
<label for="address" class="form-label">{{ 'address'|translate|titlecase }}</label>
|
||||
<label for="address" class="form-label">{{ 'address'|translate|ftitlecase }}</label>
|
||||
<input formControlName="address" type="text" class="form-control" id="address">
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label for="address_zip_code" class="form-label">{{ 'zip_code'|translate|titlecase }}</label>
|
||||
<label for="address_zip_code" class="form-label">{{ 'zip_code'|translate|ftitlecase }}</label>
|
||||
<input formControlName="address_zip_code" type="number" class="form-control" id="address_zip_code" placeholder="12345">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="phone_number" class="form-label">{{ 'phone_number'|translate|titlecase }}</label>
|
||||
<label for="phone_number" class="form-label">{{ 'phone_number'|translate|ftitlecase }}</label>
|
||||
<input formControlName="phone_number" type="number" class="form-control" id="phone_number">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label for="email" class="form-label">{{ 'email'|translate|titlecase }}</label>
|
||||
<label for="email" class="form-label">{{ 'email'|translate|ftitlecase }}</label>
|
||||
<input formControlName="email" type="email" class="form-control" id="email">
|
||||
</div>
|
||||
|
||||
<h2 class="text-center mt-5"><i class="fas fa-id-card"></i> {{ 'documents'|translate|titlecase }}</h2>
|
||||
<h2 class="text-center mt-5"><i class="fas fa-id-card"></i> {{ 'documents'|translate|ftitlecase }}</h2>
|
||||
<ng-container formGroupName="driving_license">
|
||||
<h3 class="text-center mt-3">{{ 'driving_license'|translate|titlecase }} <i class="fas fa-car-side"></i></h3>
|
||||
<h3 class="text-center mt-3">{{ 'driving_license'|translate|ftitlecase }} <i class="fas fa-car-side"></i></h3>
|
||||
<div class="col-md-12" *ngIf="dlCurrScanUrl !== null">
|
||||
<img [src]="dlCurrScanUrl" class="img-fluid rounded mx-auto d-block w-50">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="dl_number" class="form-label">{{ 'driving_license_number'|translate|titlecase }}</label>
|
||||
<label for="dl_number" class="form-label">{{ 'driving_license_number'|translate|ftitlecase }}</label>
|
||||
<input formControlName="number" autocomplete="dl-number" type="text" class="form-control" id="dl_number" placeholder="AB1234567">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="dl_type" class="form-label">{{ 'driving_license_type'|translate|titlecase }}</label>
|
||||
<label for="dl_type" class="form-label">{{ 'driving_license_type'|translate|ftitlecase }}</label>
|
||||
<input formControlName="type" autocomplete="dl-type" type="text" class="form-control" id="dl_type">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="dl_expiration_date" class="form-label">{{ 'driving_license_expiration_date'|translate|titlecase }}</label>
|
||||
<input formControlName="expiration_date" autocomplete="dl-expiration-date" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|titlecase" id="dl_expiration_date" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [minDate]="dlExpirationMinDate">
|
||||
<label for="dl_expiration_date" class="form-label">{{ 'driving_license_expiration_date'|translate|ftitlecase }}</label>
|
||||
<input formControlName="expiration_date" autocomplete="dl-expiration-date" type="text" class="form-control" [placeholder]="'press_to_select_a_date'|translate|ftitlecase" id="dl_expiration_date" bsDatepicker [bsConfig]="{ adaptivePosition: true, dateInputFormat: 'DD/MM/YYYY' }" [minDate]="dlExpirationMinDate">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="dl_scan" class="form-label">{{ 'driving_license_scan'|translate|titlecase }}</label>
|
||||
<label for="dl_scan" class="form-label">{{ 'driving_license_scan'|translate|ftitlecase }}</label>
|
||||
<input class="form-control" type="file" id="dl_scan" (change)="onDrivingLicenseScanSelected($event)" #drivingLicenseFileUpload>
|
||||
<div *ngIf="tmpDrivingLicenseImgData !== null">
|
||||
<img [src]="tmpDrivingLicenseImgData" class="img-fluid p-1 w-75">
|
||||
<button type="button" class="btn btn-primary" *ngIf="dlScanNotUploadedYet" (click)="uploadDrivingLicenseScan(drivingLicenseFileUpload)">
|
||||
<i class="fas fa-upload"></i> {{ 'upload_scan'|translate|titlecase }}
|
||||
<i class="fas fa-upload"></i> {{ 'upload_scan'|translate|ftitlecase }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</ng-container>
|
||||
|
||||
<h2 class="text-center mt-5"><i class="fas fa-tshirt"></i> {{ 'clothings'|translate|titlecase }}</h2>
|
||||
<h2 class="text-center mt-5"><i class="fas fa-tshirt"></i> {{ 'clothings'|translate|ftitlecase }}</h2>
|
||||
<div class="col-md-6">
|
||||
<label for="suit_size" class="form-label">{{ 'suit_size'|translate|titlecase }}</label>
|
||||
<label for="suit_size" class="form-label">{{ 'suit_size'|translate|ftitlecase }}</label>
|
||||
<input formControlName="suit_size" type="text" class="form-control" id="suit_size" placeholder="M, L, XL...">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label for="boot_size" class="form-label">{{ 'boot_size'|translate|titlecase }}</label>
|
||||
<label for="boot_size" class="form-label">{{ 'boot_size'|translate|ftitlecase }}</label>
|
||||
<input formControlName="boot_size" type="text" class="form-control" id="boot_size" placeholder="41, 42, 43...">
|
||||
</div>
|
||||
|
||||
<div class="col-12 m-3 mt-4">
|
||||
<button type="submit" class="btn btn-lg btn-primary">{{ 'update'|translate|titlecase }}</button>
|
||||
<button type="submit" class="btn btn-lg btn-primary">{{ 'update'|translate|ftitlecase }}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
@ -185,17 +185,17 @@
|
|||
<hr>
|
||||
|
||||
<div class="text-center">
|
||||
<h3>Visite mediche</h3>
|
||||
<h3>{{ 'medical_examinations'|translate|uppercase }}</h3>
|
||||
<button *ngIf="!hideMEAddBtn" class="btn btn-sm btn-outline-success m-2" (click)="openModalAddMedicalExamination()">
|
||||
<i class="fas fa-plus"></i> {{ 'add'|translate|titlecase }}
|
||||
<i class="fas fa-plus"></i> {{ 'add'|translate|ftitlecase }}
|
||||
</button>
|
||||
<table class="mx-auto table table-striped table-bordered table-responsive">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>DATA</th>
|
||||
<th>ENTE</th>
|
||||
<th>SCADENZA</th>
|
||||
<th *ngIf="!hideMECertCol">CERT.</th>
|
||||
<th>{{ 'date'|translate|uppercase }}</th>
|
||||
<th>{{ 'certifier'|translate|uppercase }}</th>
|
||||
<th>{{ 'expiration_date'|translate|uppercase }}</th>
|
||||
<th *ngIf="!hideMECertCol">{{ 'certificate_short'|translate|uppercase }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ export class EditUserComponent implements OnInit {
|
|||
event.target.value = null;
|
||||
Swal.fire({
|
||||
title: this.translateService.instant("error_title"),
|
||||
text: this.translateService.instant("edit_user.image_format_not_supported"),
|
||||
text: this.translateService.instant("validation.image_format_not_supported"),
|
||||
icon: 'error',
|
||||
confirmButtonText: 'Ok'
|
||||
});
|
||||
|
@ -171,7 +171,7 @@ export class EditUserComponent implements OnInit {
|
|||
event.target.value = null;
|
||||
Swal.fire({
|
||||
title: this.translateService.instant("error_title"),
|
||||
text: this.translateService.instant("edit_user.file_too_big"),
|
||||
text: this.translateService.instant("validation.file_too_big"),
|
||||
icon: 'error',
|
||||
confirmButtonText: 'Ok'
|
||||
});
|
||||
|
|
|
@ -6,6 +6,7 @@ import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
|
|||
import { BackBtnModule } from '../../_components/back-btn/back-btn.module';
|
||||
import { ModalAddMedicalExaminationModule } from 'src/app/_components/modal-add-medical-examination/modal-add-medical-examination.module';
|
||||
import { TranslationModule } from '../../translation.module';
|
||||
import { FirstLetterUppercasePipe } from 'src/app/_pipes/first-letter-uppercase.pipe';
|
||||
|
||||
import { EditUserRoutingModule } from './edit-user-routing.module';
|
||||
import { EditUserComponent } from './edit-user.component';
|
||||
|
@ -22,7 +23,8 @@ import { EditUserComponent } from './edit-user.component';
|
|||
BsDatepickerModule.forRoot(),
|
||||
BackBtnModule,
|
||||
ModalAddMedicalExaminationModule,
|
||||
TranslationModule
|
||||
TranslationModule,
|
||||
FirstLetterUppercasePipe
|
||||
]
|
||||
})
|
||||
export class EditUserModule { }
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<div class="text-center">
|
||||
<h3 *ngIf="available !== undefined">{{ 'list.your_availability_is'|translate }} <b>{{ available ? ("available"|translate|uppercase) : ("unavailable"|translate|uppercase) }}{{ manual_mode ? "" : " ("+('programmed'|translate)+")" }}</b></h3>
|
||||
<div id="availability-btn-group">
|
||||
<button (click)="changeAvailibility(1)" type="button" id="activate-btn" class="btn btn-lg btn-success me-1">{{ 'set_available'|translate|titlecase }}</button>
|
||||
<button (click)="changeAvailibility(0)" type="button" id="deactivate-btn" class="btn btn-lg btn-danger">{{ 'set_unavailable'|translate|titlecase }}</button>
|
||||
<button (click)="changeAvailibility(1)" type="button" id="activate-btn" class="btn btn-lg btn-success me-1">{{ 'set_available'|translate|ftitlecase }}</button>
|
||||
<button (click)="changeAvailibility(0)" type="button" id="deactivate-btn" class="btn btn-lg btn-danger">{{ 'set_unavailable'|translate|ftitlecase }}</button>
|
||||
</div>
|
||||
<ng-container *ngIf="manual_mode !== undefined">
|
||||
<button type="button" class="btn btn-secondary" *ngIf="manual_mode" (click)="updateManualMode(0)">
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
<div class="my-2 text-danger" *ngIf="!loginResponse.loginOk">{{ loginResponse.message }}</div>
|
||||
<div class="form-floating">
|
||||
<input type="text" class="form-control" (keydown.enter)="inputPassword.focus()" [(ngModel)]="username" id="username" [placeholder]="'username'|translate">
|
||||
<label for="username">{{ 'username'|translate|titlecase }}</label>
|
||||
<label for="username">{{ 'username'|translate|ftitlecase }}</label>
|
||||
</div>
|
||||
<div class="form-floating">
|
||||
<input type="password" class="form-control" (keydown.enter)="login()" [(ngModel)]="password" id="password" [placeholder]="'password'|translate" #inputPassword>
|
||||
<label for="password">{{ 'password'|translate|titlecase }}</label>
|
||||
<label for="password">{{ 'password'|translate|ftitlecase }}</label>
|
||||
</div>
|
||||
<button class="w-100 btn btn-lg btn-primary" (click)="login()" [disabled]="loading">
|
||||
<span *ngIf="!loading" translate>login.submit_btn</span>
|
||||
|
|
|
@ -12,27 +12,27 @@
|
|||
</h3>
|
||||
<br>
|
||||
<h4 *ngIf="place_info.name">
|
||||
{{ 'name'|translate|titlecase }}: <b>{{ place_info.name }}</b>
|
||||
{{ 'name'|translate|ftitlecase }}: <b>{{ place_info.name }}</b>
|
||||
</h4>
|
||||
<h4 *ngIf="place_info.country">
|
||||
{{ 'place_details.country'|translate|titlecase }}: <b>
|
||||
{{ 'place_details.country'|translate|ftitlecase }}: <b>
|
||||
{{ place_info.country }} ({{ place_info.country_code }})
|
||||
<ng-container *ngIf="place_info.state">- {{ place_info.state }}</ng-container>
|
||||
</b>
|
||||
</h4>
|
||||
<h4 *ngIf="place_info.village">
|
||||
{{ 'place_details.village'|translate|titlecase }}: <b>
|
||||
{{ 'place_details.village'|translate|ftitlecase }}: <b>
|
||||
{{ place_info.village }}
|
||||
<ng-container *ngIf="place_info.suburb">- {{ place_info.suburb }}</ng-container>
|
||||
</b> ({{ 'place_details.postcode'|translate }} <b>{{ place_info.postcode }}</b>)
|
||||
</h4>
|
||||
<h4 *ngIf="place_info.municipality">
|
||||
{{ 'place_details.municipality'|translate|titlecase }}: <b>{{ place_info.municipality }}</b>
|
||||
{{ 'place_details.municipality'|translate|ftitlecase }}: <b>{{ place_info.municipality }}</b>
|
||||
</h4>
|
||||
<h4 *ngIf="place_info.road">
|
||||
{{ 'place_details.road'|translate|titlecase }}: <b>{{ place_info.road }}</b>
|
||||
{{ 'place_details.road'|translate|ftitlecase }}: <b>{{ place_info.road }}</b>
|
||||
</h4>
|
||||
<h4 *ngIf="place_info.house_number">
|
||||
{{ 'place_details.house_number'|translate|titlecase }}: <b>{{ place_info.house_number }}</b>
|
||||
{{ 'place_details.house_number'|translate|ftitlecase }}: <b>{{ place_info.house_number }}</b>
|
||||
</h4>
|
||||
</div>
|
|
@ -1,6 +1,7 @@
|
|||
import { NgModule } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { TranslationModule } from '../../translation.module';
|
||||
import { FirstLetterUppercasePipe } from 'src/app/_pipes/first-letter-uppercase.pipe';
|
||||
|
||||
import { LeafletModule } from '@asymmetrik/ngx-leaflet';
|
||||
import { BackBtnModule } from '../../_components/back-btn/back-btn.module';
|
||||
|
@ -17,7 +18,8 @@ import { PlaceDetailsComponent } from './place-details.component';
|
|||
PlaceDetailsRoutingModule,
|
||||
LeafletModule,
|
||||
BackBtnModule,
|
||||
TranslationModule
|
||||
TranslationModule,
|
||||
FirstLetterUppercasePipe
|
||||
]
|
||||
})
|
||||
export class PlaceDetailsModule { }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<owner-image></owner-image>
|
||||
<div class="text-center mb-4">
|
||||
<button type="button" class="btn btn-primary" (click)="addService()">{{ 'add'|translate|titlecase }} {{ 'service'|translate }}</button>
|
||||
<button type="button" class="btn btn-primary" (click)="addService()">{{ 'add'|translate|ftitlecase }} {{ 'service'|translate }}</button>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div class="alert alert-primary mt-4" role="alert">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<owner-image></owner-image>
|
||||
<div class="text-center mb-4">
|
||||
<button type="button" class="btn btn-primary" (click)="addTraining()">{{ 'add'|translate|titlecase }} {{ 'training'|translate }}</button>
|
||||
<button type="button" class="btn btn-primary" (click)="addTraining()">{{ 'add'|translate|ftitlecase }} {{ 'training'|translate }}</button>
|
||||
</div>
|
||||
<app-table [sourceType]="'trainings'" [refreshInterval]="1200000"></app-table>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<a routerLinkActive="active" (click)="menuButtonClicked = false" routerLink="/services" translate>menu.services</a>
|
||||
<a routerLinkActive="active" (click)="menuButtonClicked = false" routerLink="/trainings" translate>menu.trainings</a>
|
||||
<a routerLinkActive="active" (click)="menuButtonClicked = false" routerLink="/logs" translate>menu.logs</a>
|
||||
<a style="float: right;" id="logout" routerLinkActive="active" [routerLink]="auth.profile.profilePageLink">{{ 'menu.hi'|translate|titlecase }}, {{ auth.profile.name }}. <b id="logout-text" (click)="logout($event)" translate *ngIf="!auth.profile.impersonating_user">menu.logout</b><b id="logout-text" (click)="auth.logout()" translate *ngIf="auth.profile.impersonating_user">menu.stop_impersonating</b></a>
|
||||
<a style="float: right;" id="logout" routerLinkActive="active" [routerLink]="auth.profile.profilePageLink">{{ 'menu.hi'|translate|ftitlecase }}, {{ auth.profile.name }}. <b id="logout-text" (click)="logout($event)" translate *ngIf="!auth.profile.impersonating_user">menu.logout</b><b id="logout-text" (click)="auth.logout()" translate *ngIf="auth.profile.impersonating_user">menu.stop_impersonating</b></a>
|
||||
<a class="icon" id="menuButton" (click)="menuButtonClicked = !menuButtonClicked">☰</a>
|
||||
</div>
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
|||
</div>
|
||||
|
||||
<alert type="danger" *ngIf="alerts.length > 0">
|
||||
<strong>{{ 'warning'|translate|titlecase }}!</strong> {{ 'alert.warning_body'|translate }}<br>
|
||||
<strong>{{ 'warning'|translate|ftitlecase }}!</strong> {{ 'alert.warning_body'|translate }}<br>
|
||||
<ng-container *ngIf="alerts.length == 1">
|
||||
{{ 'alert.current_alert'|translate }}: <a (click)="openAlert(alerts[0]['id'])"><b>{{ alerts[0]["created_at"] | date:'dd/MM/YYYY, HH:mm:ss' }}</b> ({{ 'press_for_more_info'|translate }})</a>
|
||||
</ng-container>
|
||||
|
@ -32,5 +32,5 @@
|
|||
|
||||
<div id="footer" class="footer text-center p-3">
|
||||
{{ 'footer_text' | translate }}<br>
|
||||
<p>{{ 'revision' | translate | titlecase }} {{ versions.revision }} ({{ revision_datetime_string }})</p>
|
||||
<p>{{ 'revision' | translate | ftitlecase }} {{ versions.revision }} ({{ revision_datetime_string }})</p>
|
||||
</div>
|
||||
|
|
|
@ -37,6 +37,9 @@ import { TrainingsComponent } from './_routes/trainings/trainings.component';
|
|||
|
||||
import { AuthInterceptor } from './_providers/auth-interceptor.provider';
|
||||
|
||||
//import { ApplicationPipesModule } from './_pipes/application-pipes.module';
|
||||
import { FirstLetterUppercasePipe } from './_pipes/first-letter-uppercase.pipe';
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent,
|
||||
|
@ -86,7 +89,12 @@ import { AuthInterceptor } from './_providers/auth-interceptor.provider';
|
|||
deps: [HttpClient]
|
||||
}
|
||||
}),
|
||||
TranslationModule
|
||||
TranslationModule,
|
||||
//ApplicationPipesModule
|
||||
FirstLetterUppercasePipe
|
||||
],
|
||||
exports: [
|
||||
FirstLetterUppercasePipe
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
"current_alerts": "Current alerts",
|
||||
"state": "Alert state",
|
||||
"closed": "Alert closed",
|
||||
"request_response_question": "Do you respond to the alert?",
|
||||
"response_status": "Response status",
|
||||
"no_response": "No response",
|
||||
"waiting_for_response": "Waiting for response",
|
||||
|
@ -67,7 +68,6 @@
|
|||
"place_load_failed": "Place could not be loaded. Please try again"
|
||||
},
|
||||
"map_picker": {
|
||||
"place_min_length": "Place name must be at least 3 characters long",
|
||||
"loading_error": "Error loading search results. Please try again later"
|
||||
},
|
||||
"edit_service": {
|
||||
|
@ -77,8 +77,6 @@
|
|||
"other_crew_members": "Other crew members",
|
||||
"select_type": "Select a type",
|
||||
"select_service_type": "Select a service type",
|
||||
"type_must_be_two_characters_long": "Type must be at least 2 characters long",
|
||||
"type_already_exists": "Type already exists",
|
||||
"type_added_successfully": "Type added successfully",
|
||||
"service_added_successfully": "Service added successfully",
|
||||
"service_add_failed": "Service could not be added. Please try again",
|
||||
|
@ -99,12 +97,10 @@
|
|||
"training_add_failed": "Training could not be added. Please try again",
|
||||
"training_updated_successfully": "Training updated successfully",
|
||||
"training_update_failed": "Training could not be updated. Please try again",
|
||||
"training_load_failed": "Errore durante il caricamento dell'intervento. Riprovare più tardi",
|
||||
"users_load_failed": "Errore durante il caricamento degli utenti. Riprovare più tardi"
|
||||
"training_load_failed": "Error loading training. Please try again",
|
||||
"users_load_failed": "Error loading users. Please try again"
|
||||
},
|
||||
"edit_user": {
|
||||
"image_format_not_supported": "Image format not supported",
|
||||
"file_too_big": "File too big",
|
||||
"success_text": "User updated successfully",
|
||||
"error_text": "User could not be updated. Please try again",
|
||||
"creation_date": "User creation date",
|
||||
|
@ -114,6 +110,17 @@
|
|||
"user_info_modal": {
|
||||
"title": "User info"
|
||||
},
|
||||
"medical_examination_modal": {
|
||||
"title": "Add medical examination"
|
||||
},
|
||||
"validation": {
|
||||
"place_min_length": "Place name must be at least 3 characters long",
|
||||
"type_must_be_two_characters_long": "Type must be at least 2 characters long",
|
||||
"type_already_exists": "Type already exists",
|
||||
"image_format_not_supported": "Image format not supported",
|
||||
"document_format_not_supported": "Document format not supported",
|
||||
"file_too_big": "File too big"
|
||||
},
|
||||
"username": "username",
|
||||
"password": "password",
|
||||
"warning": "warning",
|
||||
|
@ -160,9 +167,15 @@
|
|||
"driving_license_type": "driving license type",
|
||||
"driving_license_scan": "driving license scan",
|
||||
"upload_scan": "upload scan",
|
||||
"upload_medical_examination_certificate": "upload medical examination certificate",
|
||||
"clothings": "clothings",
|
||||
"suit_size": "suit size",
|
||||
"boot_size": "boot size",
|
||||
"medical_examinations": "medical examinations",
|
||||
"date": "date",
|
||||
"expiration_date": "expiration date",
|
||||
"certifier": "certifier",
|
||||
"certificate_short": "cert.",
|
||||
"banned": "banned",
|
||||
"hidden": "hidden",
|
||||
"driver": "driver",
|
||||
|
@ -195,18 +208,23 @@
|
|||
"search": "search",
|
||||
"submit": "invia",
|
||||
"reset": "reset",
|
||||
"go_back": "go back",
|
||||
"go_back": "Go back",
|
||||
"next": "next",
|
||||
"previous": "previous",
|
||||
"last": "last",
|
||||
"first": "first",
|
||||
"press_to_select_a_date": "press to select a date",
|
||||
"press_to_select_a_date": "Press to select a date",
|
||||
"footer_text": "Allerta-VVF, free software developed for volunteer firefighters brigades.",
|
||||
"revision": "revision",
|
||||
"unknown": "unknown",
|
||||
"edit": "edit",
|
||||
"never": "never",
|
||||
"optional": "optional",
|
||||
"not_enough_permissions": "You don't have enough permissions to access this page.",
|
||||
"error_title": "Error",
|
||||
"success_title": "Successo"
|
||||
"success_title": "Success",
|
||||
"select_date_range": "Select date range",
|
||||
"remove_date_filters": "Remove date filters",
|
||||
"yes": "yes",
|
||||
"no": "no"
|
||||
}
|
|
@ -37,6 +37,7 @@
|
|||
"current_alerts": "Emergenze in corso",
|
||||
"state": "Stato dell'allerta",
|
||||
"closed": "Allerta rientrata",
|
||||
"request_response_question": "Sarai presente alla chiamata?",
|
||||
"response_status": "Stato della risposta",
|
||||
"no_response": "Nessuna risposta",
|
||||
"waiting_for_response": "In attesa di risposta",
|
||||
|
@ -67,7 +68,6 @@
|
|||
"place_load_failed": "Errore durante il caricamento del luogo. Riprova più tardi"
|
||||
},
|
||||
"map_picker": {
|
||||
"place_min_length": "Il nome della località deve essere di almeno 3 caratteri",
|
||||
"loading_error": "Errore di caricamento dei risultati della ricerca. Riprovare più tardi"
|
||||
},
|
||||
"edit_service": {
|
||||
|
@ -77,7 +77,6 @@
|
|||
"other_crew_members": "Altri membri della squadra",
|
||||
"select_type": "Seleziona una tipologia",
|
||||
"select_service_type": "Seleziona una tipologia di intervento",
|
||||
"type_must_be_two_characters_long": "La tipologia deve essere di almeno 2 caratteri",
|
||||
"type_already_exists": "La tipologia è già presente",
|
||||
"type_added_successfully": "Tipologia aggiunta con successo",
|
||||
"service_added_successfully": "Intervento aggiunto con successo",
|
||||
|
@ -103,8 +102,6 @@
|
|||
"users_load_failed": "Errore durante il caricamento degli utenti. Riprovare più tardi"
|
||||
},
|
||||
"edit_user": {
|
||||
"image_format_not_supported": "Formato immagine non supportato",
|
||||
"file_too_big": "File troppo grande",
|
||||
"success_text": "Utente aggiornato con successo",
|
||||
"error_text": "L'utente non può essere aggiornato. Riprova più tardi",
|
||||
"creation_date": "Data di creazione dell'utente",
|
||||
|
@ -114,6 +111,15 @@
|
|||
"user_info_modal": {
|
||||
"title": "Scheda utente"
|
||||
},
|
||||
"medical_examination_modal": {
|
||||
"title": "Aggiungi visita medica"
|
||||
},
|
||||
"validation": {
|
||||
"place_min_length": "Il nome della località deve essere di almeno 3 caratteri",
|
||||
"type_must_be_two_characters_long": "La tipologia deve essere di almeno 2 caratteri",
|
||||
"image_format_not_supported": "Formato immagine non supportato",
|
||||
"file_too_big": "File troppo grande"
|
||||
},
|
||||
"username": "username",
|
||||
"password": "password",
|
||||
"warning": "attenzione",
|
||||
|
@ -160,9 +166,15 @@
|
|||
"driving_license_type": "tipologia patente",
|
||||
"driving_license_scan": "scansione patente",
|
||||
"upload_scan": "carica scansione",
|
||||
"upload_medical_examination_certificate": "carica certificato visita medica",
|
||||
"clothings": "indumenti",
|
||||
"suit_size": "taglia tuta",
|
||||
"boot_size": "taglia scarponi",
|
||||
"medical_examinations": "visite mediche",
|
||||
"date": "data",
|
||||
"expiration_date": "data di scadenza",
|
||||
"certifier": "ente/certificatore",
|
||||
"certificate_short": "cert.",
|
||||
"banned": "bannato",
|
||||
"hidden": "nascosto",
|
||||
"driver": "autista",
|
||||
|
@ -195,18 +207,23 @@
|
|||
"search": "cerca",
|
||||
"submit": "invia",
|
||||
"reset": "reset",
|
||||
"go_back": "torna indietro",
|
||||
"go_back": "Torna indietro",
|
||||
"next": "successiva",
|
||||
"previous": "precedente",
|
||||
"last": "ultima",
|
||||
"first": "prima",
|
||||
"press_to_select_a_date": "premi per selezionare una data",
|
||||
"press_to_select_a_date": "Premi per selezionare una data",
|
||||
"footer_text": "Allerta-VVF, software libero realizzato per i Vigili del Fuoco volontari.",
|
||||
"revision": "revisione",
|
||||
"unknown": "sconosciuto",
|
||||
"edit": "modifica",
|
||||
"never": "mai",
|
||||
"optional": "opzionale",
|
||||
"not_enough_permissions": "Non hai i permessi necessari per accedere a questa pagina.",
|
||||
"error_title": "Errore",
|
||||
"success_title": "Successo"
|
||||
"success_title": "Successo",
|
||||
"select_date_range": "Seleziona un intervallo di date",
|
||||
"remove_date_filters": "Rimuovi filtri",
|
||||
"yes": "si",
|
||||
"no": "no"
|
||||
}
|
Loading…
Reference in New Issue