Commit c2344250 by Matteo

Modifiche fino a rilascio 16/7

parent e2508ec5
...@@ -853,6 +853,22 @@ ...@@ -853,6 +853,22 @@
} }
} }
}, },
"@ngx-translate/core": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-11.0.1.tgz",
"integrity": "sha512-nBCa1ZD9fAUY/3eskP3Lql2fNg8OMrYIej1/5GRsfcutx9tG/5fZLCv9m6UCw1aS+u4uK/vXjv1ctG/FdMvaWg==",
"requires": {
"tslib": "^1.9.0"
}
},
"@ngx-translate/http-loader": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-4.0.0.tgz",
"integrity": "sha512-x8LumqydWD7eX9yQTAVeoCM9gFUIGVTUjZqbxdAUavAA3qVnk9wCQux7iHLPXpydl8vyQmLoPQR+fFU+DUDOMA==",
"requires": {
"tslib": "^1.9.0"
}
},
"@schematics/angular": { "@schematics/angular": {
"version": "7.3.9", "version": "7.3.9",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.3.9.tgz", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.3.9.tgz",
......
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
"@ionic/angular": "^4.1.0", "@ionic/angular": "^4.1.0",
"@ionic/pro": "2.0.4", "@ionic/pro": "2.0.4",
"@ionic/storage": "^2.2.0", "@ionic/storage": "^2.2.0",
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0",
"cordova-android": "8.0.0", "cordova-android": "8.0.0",
"cordova-browser": "6.0.0", "cordova-browser": "6.0.0",
"cordova-plugin-android-permissions": "1.0.0", "cordova-plugin-android-permissions": "1.0.0",
......
...@@ -28,6 +28,7 @@ export class AppComponent { ...@@ -28,6 +28,7 @@ export class AppComponent {
} }
async initializeApp() { async initializeApp() {
this.utilService.loadLingua();
var state = await this.authService.syncIsLoggedIn(); var state = await this.authService.syncIsLoggedIn();
if (!state) { if (!state) {
this.router.navigate(['login']); this.router.navigate(['login']);
......
...@@ -18,6 +18,13 @@ import { AndroidPermissions } from '@ionic-native/android-permissions/ngx'; ...@@ -18,6 +18,13 @@ import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
import { EmailComposer } from '@ionic-native/email-composer/ngx'; import { EmailComposer } from '@ionic-native/email-composer/ngx';
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
import { SocialSharing } from '@ionic-native/social-sharing/ngx'; import { SocialSharing } from '@ionic-native/social-sharing/ngx';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { HttpClient } from '@angular/common/http';
export function createTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
...@@ -28,7 +35,14 @@ import { SocialSharing } from '@ionic-native/social-sharing/ngx'; ...@@ -28,7 +35,14 @@ import { SocialSharing } from '@ionic-native/social-sharing/ngx';
AppRoutingModule, AppRoutingModule,
IonicStorageModule.forRoot(), IonicStorageModule.forRoot(),
FormsModule, FormsModule,
HttpClientModule HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: createTranslateLoader,
deps: [HttpClient]
}
})
], ],
providers: [ providers: [
StatusBar, StatusBar,
......
...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular';
import { ChangePwdPage } from './change-pwd.page'; import { ChangePwdPage } from './change-pwd.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -20,7 +22,8 @@ const routes: Routes = [ ...@@ -20,7 +22,8 @@ const routes: Routes = [
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes), RouterModule.forChild(routes),
ReactiveFormsModule ReactiveFormsModule,
TranslateModule
], ],
declarations: [ChangePwdPage] declarations: [ChangePwdPage]
}) })
......
<ion-header class="header-subpage" no-border> <ion-header class="header-subpage" no-border>
<ion-toolbar> <ion-toolbar>
<ion-title class="titolo-sezione-head">cambia password</ion-title> <ion-title class="titolo-sezione-head">{{ 'change_password' | translate }}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
...@@ -14,17 +14,17 @@ ...@@ -14,17 +14,17 @@
<ion-col> <ion-col>
<div padding> <div padding>
<ion-item> <ion-item>
<ion-input formControlName="oldpassword" type="password" placeholder="vecchia password" ngModel required></ion-input> <ion-input formControlName="oldpassword" type="password" placeholder="{{ 'old_pwd' | translate }}" ngModel required></ion-input>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-input formControlName="newpassword" type="password" placeholder="nuova password" ngModel required></ion-input> <ion-input formControlName="newpassword" type="password" placeholder="{{ 'new_pwd' | translate }}" ngModel required></ion-input>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-input formControlName="newpasswordbis" type="password" placeholder="ripeti nuova password" ngModel required></ion-input> <ion-input formControlName="newpasswordbis" type="password" placeholder="{{ 'repeat_new_pwd' | translate }}" ngModel required></ion-input>
</ion-item> </ion-item>
</div> </div>
<div padding> <div padding>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">cambia Password</ion-button> <ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">{{ 'change_password' | translate }}</ion-button>
</div> </div>
</ion-col> </ion-col>
</ion-row> </ion-row>
......
...@@ -5,6 +5,8 @@ import { Router } from "@angular/router"; ...@@ -5,6 +5,8 @@ import { Router } from "@angular/router";
import { AuthService } from '../../service/auth.service'; import { AuthService } from '../../service/auth.service';
import { ErrorResponse } from '../../interface/error-response'; import { ErrorResponse } from '../../interface/error-response';
import { UtilService } from '../../../service/util.service'; import { UtilService } from '../../../service/util.service';
import { TranslateService } from '@ngx-translate/core';
import { Events } from '@ionic/angular';
@Component({ @Component({
selector: 'app-change-pwd', selector: 'app-change-pwd',
...@@ -13,7 +15,19 @@ import { UtilService } from '../../../service/util.service'; ...@@ -13,7 +15,19 @@ import { UtilService } from '../../../service/util.service';
}) })
export class ChangePwdPage implements OnInit { export class ChangePwdPage implements OnInit {
constructor(private authService: AuthService, private router: Router, private utilService: UtilService) { } constructor(
private authService: AuthService,
private router: Router,
private utilService: UtilService,
public translate: TranslateService,
public events: Events) {
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
}
change(form){ change(form){
this.utilService.showLoading(); this.utilService.showLoading();
......
...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular';
import { LoginPage } from './login.page'; import { LoginPage } from './login.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,7 +21,8 @@ const routes: Routes = [ ...@@ -19,7 +21,8 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes),
TranslateModule
], ],
declarations: [LoginPage] declarations: [LoginPage]
}) })
......
...@@ -17,41 +17,51 @@ ...@@ -17,41 +17,51 @@
<div> <div>
<ion-item class="login-field"> <ion-item class="login-field">
<ion-icon class="field-icon" item-left name="person" color="light"></ion-icon> <ion-icon class="field-icon" item-left name="person" color="light"></ion-icon>
<ion-input name="username" type="text" placeholder="Inserisci il tuo username" ngModel required></ion-input> <ion-input name="username" type="text" placeholder="{{ 'username' | translate }}" ngModel required></ion-input>
</ion-item> </ion-item>
<ion-item class="login-field"> <ion-item class="login-field">
<ion-icon class="field-icon" item-left name="lock" color="light"></ion-icon> <ion-icon class="field-icon" item-left name="lock" color="light"></ion-icon>
<ion-input name="password" type="password" placeholder="Password" ngModel required></ion-input> <ion-input name="password" type="password" placeholder="{{ 'password' | translate }}" ngModel required></ion-input>
</ion-item> </ion-item>
</div> </div>
<div class="accedi" > <div class="accedi" >
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block" tappable>ACCEDI</ion-button> <ion-button size="large" type="submit" [disabled]="form.invalid" expand="block" tappable>{{ 'accedi' | translate }}</ion-button>
</div> </div>
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row color="primary" justify-content-center> <ion-row color="primary" justify-content-center>
<div text-center class="forgot"> <div text-center class="forgot">
<a (click)='reset()' tappable>Hai perso la password?</a> <a (click)='reset()' tappable>{{ 'lost_password' | translate }}</a>
</div> </div>
</ion-row> </ion-row>
<ion-row color="primary" justify-content-center> <ion-row color="primary" justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12"> <ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<div class="business-call"> <div class="business-call">
<div class="non-account"> <div class="non-account">
Non hai ancora un account? {{ 'hai_account' | translate }}
</div> </div>
<div class="title-call"> <div class="title-call">
Prenota subito<br />la tua <span class="giallo">Business Call</span> {{ 'prenota_subito' | translate }}<br />{{ 'tua' | translate }} <span class="giallo">{{ 'business_call' | translate }}</span>
</div> </div>
<div class="descr-call"> <div class="descr-call">
I nostro consulenti pianificheranno una Business Call <strong>gratuita</strong> su misura per te e la tua azienda {{ 'consulenti' | translate }} <strong>{{ 'gratuita' | translate }}</strong> {{ 'su_misura' | translate }}
</div> </div>
<div class="appuntamento"> <div class="appuntamento">
<a (click)='redirectBusiness()' tappable>PRENOTA IL TUO APPUNTAMENTO!</a> <a (click)='redirectBusiness()' tappable>{{ 'prenota_app' | translate }}</a>
</div> </div>
</div> </div>
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12" style="color: white">
<ion-row>
<ion-label class="label-border" style="margin-top: 8px;">{{ 'lingua_selezionata' | translate }}</ion-label>
<ion-select value="clienteSel" [(ngModel)]="linguaSel" (ionChange)="cambiaLingua()" placeholder="{{linguaSel}}" interface="popover" title="{{ 'seleziona_lingua' | translate }}">
<ion-select-option *ngFor="let lingua of lingue; let i=index;" value="{{lingua.key}}">{{lingua.value}}</ion-select-option>
</ion-select>
</ion-row>
</ion-col>
</ion-row>
</ion-grid> </ion-grid>
</form> </form>
</div> </div>
......
...@@ -4,6 +4,8 @@ import { Router } from "@angular/router"; ...@@ -4,6 +4,8 @@ import { Router } from "@angular/router";
import { AuthService } from '../../service/auth.service'; import { AuthService } from '../../service/auth.service';
import { UtilService } from '../../../service/util.service'; import { UtilService } from '../../../service/util.service';
import { Platform, Events } from '@ionic/angular'; import { Platform, Events } from '@ionic/angular';
import { Pair } from 'src/app/interface/pair';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
...@@ -13,7 +15,40 @@ import { Platform, Events } from '@ionic/angular'; ...@@ -13,7 +15,40 @@ import { Platform, Events } from '@ionic/angular';
}) })
export class LoginPage implements OnInit { export class LoginPage implements OnInit {
constructor(private authService: AuthService, private router: Router, private utilService: UtilService, public events: Events,public platform: Platform) { } constructor(
private authService: AuthService,
private router: Router,
private utilService: UtilService,
public events: Events,
public platform: Platform,
public translate: TranslateService
)
{
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
this.lingue = utilService.getLanguageList();
if(utilService.getLingua() == "") {
this.linguaSel = this.lingue[0].key;
utilService.setLingua(this.linguaSel);
utilService.translate.setDefaultLang(this.linguaSel);
utilService.translate.use(this.linguaSel);
}
else this.linguaSel = utilService.getLingua();
translate = utilService.translate;
this.events.publish('functionCall:linguaCambiata', null);
}
linguaSel: string;
lingue : Array<Pair>;
cambiaLingua()
{
this.utilService.setLingua(this.linguaSel);
this.utilService.translate.setDefaultLang(this.linguaSel);
this.utilService.translate.use(this.linguaSel);
this.events.publish('functionCall:linguaCambiata', null);
}
async login(form){ async login(form){
await this.utilService.showLoading(); await this.utilService.showLoading();
...@@ -26,6 +61,7 @@ export class LoginPage implements OnInit { ...@@ -26,6 +61,7 @@ export class LoginPage implements OnInit {
else else
{ {
this.router.navigateByUrl(''); this.router.navigateByUrl('');
this.events.publish('functionCall:startup', null);
} }
}, },
(error: ErrorResponse) => { (error: ErrorResponse) => {
......
...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular';
import { ResetPage } from './reset.page'; import { ResetPage } from './reset.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -20,7 +22,8 @@ const routes: Routes = [ ...@@ -20,7 +22,8 @@ const routes: Routes = [
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes), RouterModule.forChild(routes),
ReactiveFormsModule ReactiveFormsModule,
TranslateModule
], ],
declarations: [ResetPage] declarations: [ResetPage]
}) })
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<ion-row color="primary" justify-content-center> <ion-row color="primary" justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12"> <ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<ion-toolbar class="business-toolbar"> <ion-toolbar class="business-toolbar">
<ion-buttons (click)="back()" slot="start" title="Torna alla login"> <ion-buttons (click)="back()" slot="start" title="{{ 'back_login' | translate }}">
<ion-icon name="arrow-round-back" color="#2b94d1" class="back" tappable></ion-icon> <ion-icon name="arrow-round-back" color="#2b94d1" class="back" tappable></ion-icon>
<!--<ion-icon name="arrow-dropleft-circle" color="#2b94d1" class="back"></ion-icon>--> <!--<ion-icon name="arrow-dropleft-circle" color="#2b94d1" class="back"></ion-icon>-->
</ion-buttons> </ion-buttons>
...@@ -22,15 +22,15 @@ ...@@ -22,15 +22,15 @@
<ion-row color="primary" justify-content-center> <ion-row color="primary" justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12"> <ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<div text-center> <div text-center>
<h3>Reset Password</h3> <h3>{{ 'reset_pwd' | translate }}</h3>
</div> </div>
<div padding> <div padding>
<ion-item> <ion-item>
<ion-input formControlName="email" type="email" placeholder="email" ngModel required></ion-input> <ion-input formControlName="email" type="email" placeholder="{{ 'email' | translate }}" ngModel required></ion-input>
</ion-item> </ion-item>
</div> </div>
<div padding> <div padding>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">Reset Password</ion-button> <ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">{{ 'reset_pwd' | translate }}</ion-button>
</div> </div>
</ion-col> </ion-col>
</ion-row> </ion-row>
......
...@@ -4,6 +4,8 @@ import { Router } from "@angular/router"; ...@@ -4,6 +4,8 @@ import { Router } from "@angular/router";
import { AuthService } from '../../service/auth.service'; import { AuthService } from '../../service/auth.service';
import { ErrorResponse } from './../../interface/error-response'; import { ErrorResponse } from './../../interface/error-response';
import { UtilService } from '../../../service/util.service'; import { UtilService } from '../../../service/util.service';
import { Events } from '@ionic/angular';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'app-reset', selector: 'app-reset',
...@@ -12,7 +14,14 @@ import { UtilService } from '../../../service/util.service'; ...@@ -12,7 +14,14 @@ import { UtilService } from '../../../service/util.service';
}) })
export class ResetPage implements OnInit { export class ResetPage implements OnInit {
constructor(private authService: AuthService, private router: Router, private utilService: UtilService) { } constructor(private authService: AuthService, private router: Router, public events: Events, private utilService: UtilService, public translate: TranslateService) {
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
}
reset(form){ reset(form){
this.utilService.showLoading(); this.utilService.showLoading();
......
...@@ -9,7 +9,8 @@ import { Storage } from '@ionic/storage'; ...@@ -9,7 +9,8 @@ import { Storage } from '@ionic/storage';
import { AuthResponse } from '../interface/auth-response'; import { AuthResponse } from '../interface/auth-response';
import { UtilService } from '../../service/util.service'; import { UtilService } from '../../service/util.service';
import { HttpClientDataService } from '../../service/http-client-data.service'; import { HttpClientDataService } from '../../service/http-client-data.service';
import { Platform, Events } from '@ionic/angular'; import { Events } from '@ionic/angular';
import { environment } from '../../../environments/environment';
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
...@@ -21,9 +22,7 @@ export class AuthService { ...@@ -21,9 +22,7 @@ export class AuthService {
constructor( constructor(
private httpClient: HttpClient, private httpClient: HttpClient,
private storage: Storage, private storage: Storage,
private utilService: UtilService,
private httpClientDataService: HttpClientDataService, private httpClientDataService: HttpClientDataService,
private platform: Platform,
private events: Events private events: Events
) )
{ {
...@@ -66,9 +65,14 @@ export class AuthService { ...@@ -66,9 +65,14 @@ export class AuthService {
static clienti:Cliente[]; static clienti:Cliente[];
static clienteSelezionato: Cliente; static clienteSelezionato: Cliente;
private idClienteSelezionato; private idClienteSelezionato;
private tipoStruttura: string;
loadClienti() loadClienti()
{ {
AuthService.clienteSelezionato = {
denominazione: null,
id: null
};
return this.storage.get("clienti").then((data)=>{ return this.storage.get("clienti").then((data)=>{
AuthService.clienti = data; AuthService.clienti = data;
AuthService.clienteSelezionato = AuthService.clienti[0]; AuthService.clienteSelezionato = AuthService.clienti[0];
...@@ -131,7 +135,8 @@ export class AuthService { ...@@ -131,7 +135,8 @@ export class AuthService {
} }
login(value) : Observable<ErrorResponse>{ login(value) : Observable<ErrorResponse>{
var param = UtilService.encodeBody({utente: value.username, password: value.password}); this.tipoStruttura = environment.struttura;
var param = UtilService.encodeBody({utente: value.username, password: value.password, tipostruttura: this.tipoStruttura});
this.clientiSalvati = false; this.clientiSalvati = false;
return this.httpClient.post<ErrorResponse>(this.httpClientDataService.BASE_ADDRESS+'/autenticazione/login.do', param, this.httpClientDataService.httpOptions) return this.httpClient.post<ErrorResponse>(this.httpClientDataService.BASE_ADDRESS+'/autenticazione/login.do', param, this.httpClientDataService.httpOptions)
.pipe( .pipe(
......
...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular';
import { BusinesscallPage } from './businesscall.page'; import { BusinesscallPage } from './businesscall.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,7 +21,8 @@ const routes: Routes = [ ...@@ -19,7 +21,8 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes),
TranslateModule
], ],
declarations: [BusinesscallPage] declarations: [BusinesscallPage]
}) })
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<ion-row color="primary" justify-content-center> <ion-row color="primary" justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5"> <ion-col align-self-center size-md="6" size-lg="5">
<ion-toolbar class="business-toolbar"> <ion-toolbar class="business-toolbar">
<ion-buttons (click)="back()" slot="start" title="Torna alla login"> <ion-buttons (click)="back()" slot="start" title="{{ 'back_login' | translate }}">
<ion-icon name="arrow-round-back" color="#2b94d1" class="back" tappable></ion-icon> <ion-icon name="arrow-round-back" color="#2b94d1" class="back" tappable></ion-icon>
<!--<ion-icon name="arrow-dropleft-circle" color="#2b94d1" class="back"></ion-icon>--> <!--<ion-icon name="arrow-dropleft-circle" color="#2b94d1" class="back"></ion-icon>-->
</ion-buttons> </ion-buttons>
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</ion-row> </ion-row>
</ion-grid> </ion-grid>
<div class="messaggio"> <div class="messaggio">
Prenota subito la tua<br /><span class="blu">Business Call</span> {{ 'prenota' | translate }}<br /><span class="blu">{{ 'business_call' | translate }}</span>
</div> </div>
<form #form="ngForm" (ngSubmit)="sendMail(form)"> <form #form="ngForm" (ngSubmit)="sendMail(form)">
<ion-grid> <ion-grid>
...@@ -29,49 +29,49 @@ ...@@ -29,49 +29,49 @@
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12"> <ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<div class="form"> <div class="form">
<ion-item class="input-business"> <ion-item class="input-business">
<ion-input name="nome" type="text" placeholder="Nome*" [(ngModel)]="nome" required></ion-input> <ion-input name="nome" type="text" placeholder="{{ 'nome' | translate }} *" [(ngModel)]="nome" required></ion-input>
</ion-item> </ion-item>
<ion-item class="input-business"> <ion-item class="input-business">
<ion-input name="cognome" type="text" placeholder="Cognome*" [(ngModel)]="cognome" required></ion-input> <ion-input name="cognome" type="text" placeholder="{{ 'cognome' | translate }} *" [(ngModel)]="cognome" required></ion-input>
</ion-item> </ion-item>
<ion-item class="input-business"> <ion-item class="input-business">
<ion-input name="cellulare" type="text" placeholder="cellulare*" [(ngModel)]="cellulare" required></ion-input> <ion-input name="cellulare" type="text" placeholder="{{ 'cellulare' | translate }} *" [(ngModel)]="cellulare" required></ion-input>
</ion-item> </ion-item>
<ion-item class="input-business"> <ion-item class="input-business">
<ion-input name="email" type="text" placeholder="Indirizzo email *" [(ngModel)]="email" required></ion-input> <ion-input name="email" type="text" placeholder="{{ 'indirizzo_email' | translate }} *" [(ngModel)]="email" required></ion-input>
</ion-item> </ion-item>
<ion-item class="input-business"> <ion-item class="input-business">
<ion-input name="lingua" type="text" placeholder="Seleziona lingua" [(ngModel)]="lingua"></ion-input> <ion-input name="lingua" type="text" placeholder="{{ 'lingua' | translate }}" [(ngModel)]="lingua"></ion-input>
</ion-item> </ion-item>
<ion-item class="item-no-border testo-form"> <ion-item class="item-no-border testo-form">
<ion-label class="testo-form" text-wrap> <ion-label class="testo-form" text-wrap>
Aggiungi, se desideri, del testo libero {{ 'testo_libero' | translate }}
</ion-label> </ion-label>
</ion-item> </ion-item>
<ion-textarea name="testo" placeholder="" [(ngModel)]="testo" (ionInput)="autosize()" id="textarea"></ion-textarea> <ion-textarea name="testo" placeholder="" [(ngModel)]="testo" (ionInput)="autosize()" id="textarea"></ion-textarea>
<ion-item class="input-check item-no-border" text-wrap> <ion-item class="input-check item-no-border" text-wrap>
<ion-row> <ion-row style="width: 100%">
<ion-col size="2" no-padding no-margin> <ion-col size="2" no-padding no-margin>
<ion-item no-padding no-margin no-lines class="item-no-border">
<ion-checkbox name="privacy" [(ngModel)]="privacy" class="check"> </ion-checkbox>
</ion-item>
</ion-col>
<ion-col size="10" no-padding no-margin>
<ion-item no-padding no-margin no-lines class="item-no-border"> <ion-item no-padding no-margin no-lines class="item-no-border">
<ion-label class="text-check" text-wrap>Ho preso visione del documento sulla <a (click)="gotoPrivacy();" tappable>privacy policy</a></ion-label> <ion-checkbox name="privacy" [(ngModel)]="privacy" class="check"> </ion-checkbox>
</ion-item> </ion-item>
</ion-col> </ion-col>
</ion-row> <ion-col size="10" no-padding no-margin>
<ion-item no-padding no-margin no-lines class="item-no-border">
<ion-label class="text-check" text-wrap>{{ 'preso_visione' | translate }} <a (click)="gotoPrivacy();" tappable>{{ 'privacy' | translate }}</a></ion-label>
</ion-item>
</ion-col>
</ion-row>
</ion-item> </ion-item>
</div> </div>
<div class="accedi"> <div class="accedi">
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">INVIA</ion-button> <ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">{{ 'inviaM' | translate }}</ion-button>
</div> </div>
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row color="primary" justify-content-center> <ion-row color="primary" justify-content-center>
<div class="require"> <div class="require">
Tutti i campi seguiti da * sono obbligatori {{ 'campi_obbligatori' | translate }}
</div> </div>
<!--<div text-center> <!--<div text-center>
<a (click)='reset()'>Pulisci Form</a> <a (click)='reset()'>Pulisci Form</a>
......
...@@ -2,6 +2,8 @@ import { Component, OnInit, ElementRef } from '@angular/core'; ...@@ -2,6 +2,8 @@ import { Component, OnInit, ElementRef } from '@angular/core';
import { EmailComposer } from '@ionic-native/email-composer/ngx'; import { EmailComposer } from '@ionic-native/email-composer/ngx';
import { UtilService } from '../../service/util.service'; import { UtilService } from '../../service/util.service';
import { Router } from "@angular/router"; import { Router } from "@angular/router";
import { Events } from '@ionic/angular';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'app-businesscall', selector: 'app-businesscall',
...@@ -10,7 +12,20 @@ import { Router } from "@angular/router"; ...@@ -10,7 +12,20 @@ import { Router } from "@angular/router";
}) })
export class BusinesscallPage implements OnInit { export class BusinesscallPage implements OnInit {
constructor(private emailComposer: EmailComposer, private router: Router, private utilService: UtilService, public element:ElementRef) { } constructor(
private emailComposer: EmailComposer,
private router: Router,
private utilService: UtilService,
public element:ElementRef,
public events: Events,
public translate: TranslateService) {
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
}
ngOnInit() { ngOnInit() {
} }
......
...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular';
import { DocumentiPage } from './documenti.page'; import { DocumentiPage } from './documenti.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,7 +21,8 @@ const routes: Routes = [ ...@@ -19,7 +21,8 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes),
TranslateModule
], ],
declarations: [DocumentiPage] declarations: [DocumentiPage]
}) })
......
<ion-header class="header-subpage" no-border> <ion-header class="header-subpage" no-border>
<ion-toolbar> <ion-toolbar>
<ion-title class="titolo-sezione-head">i miei documenti</ion-title> <ion-title class="titolo-sezione-head">{{ 'titolo_documenti' | translate }}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
...@@ -10,15 +10,15 @@ ...@@ -10,15 +10,15 @@
<ion-grid> <ion-grid>
<ion-row class="search-date"> <ion-row class="search-date">
<div *ngIf="platform.is('desktop')"> <div *ngIf="platform.is('desktop')">
<strong>Cerca</strong> da <input type="date" name="calendar" [(ngModel)]="date1" title="Seleziona una data"> a <input type="date" name="calendar" [(ngModel)]="date2" title="Seleziona la data"> <strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} <input type="date" name="calendar" [(ngModel)]="date1" title="{{ 'seleziona_data' | translate }}"> {{ 'a' | translate }} <input type="date" name="calendar" [(ngModel)]="date2" title="{{ 'seleziona_data' | translate }}">
</div> </div>
<div class="float-date" *ngIf="!platform.is('desktop')"> <div class="float-date" *ngIf="!platform.is('desktop')">
<span class="date-text"><strong>Cerca</strong> da </span> <span class="date-text"><strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} </span>
<ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon> <ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon>
<div class="element-date item-no-border date-text"> <div class="element-date item-no-border date-text">
{{date1}} {{date1}}
</div> </div>
<span class="date-text">a</span> <span class="date-text">{{ 'a' | translate }}</span>
<ion-icon floating class="element-date date-icon" name="calendar" (click)="setDateA()"></ion-icon> <ion-icon floating class="element-date date-icon" name="calendar" (click)="setDateA()"></ion-icon>
<div floating class="element-date item-no-border date-text"> <div floating class="element-date item-no-border date-text">
{{date2}} {{date2}}
...@@ -26,12 +26,12 @@ ...@@ -26,12 +26,12 @@
</div> </div>
</ion-row> </ion-row>
<ion-row class="search-date"> <ion-row class="search-date">
<div><strong>Cerca</strong> titolo <input type="text" name="calendar" [(ngModel)]="titolo" title="Seleziona una data"> <span class="riga"><strong>{{ 'cerca' | translate }}</strong> {{ 'titolo' | translate }} <input type="text" name="calendar" [(ngModel)]="titolo" title="{{ 'ricerca_titolo' | translate }}">
<ion-button (click)="cercaDocumenti()" class="search-arrow" title="Cerca documenti"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward" title="Cerca documenti"></ion-icon></ion-button></div> <ion-button (click)="cercaDocumenti()" class="search-arrow" title="{{ 'cerca_documenti' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward" title="{{ 'cerca_documenti' | translate }}"></ion-icon></ion-button></span>
</ion-row> </ion-row>
<ion-row class="search-date" id="buttonsDoc" style="display:none"> <ion-row class="search-date" id="buttonsDoc" style="display:none">
<div><span class="condividi-text">Condividi documenti</span> <div><span class="condividi-text">{{ 'condividi' | translate }}</span>
<ion-button (click)="condividiDocumenti()" class="search-arrow" title="Condividi documenti"><ion-icon class="button-icon" slot="icon-only" name="share-alt" title="Condividi documenti"></ion-icon></ion-button></div> <ion-button (click)="condividiDocumenti()" class="search-arrow" title="{{ 'condividi_doc' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="share" title="{{ 'condividi_doc' | translate }}"></ion-icon></ion-button></div>
</ion-row> </ion-row>
<ion-row class="search-date-border"> <ion-row class="search-date-border">
</ion-row> </ion-row>
...@@ -90,13 +90,13 @@ ...@@ -90,13 +90,13 @@
{{documento.data}} {{documento.data}}
</div> </div>
</div> </div>
<ion-item class="row-download item-no-border"> <div class="row-download item-no-border">
<a *ngIf="platform.is('desktop')" href="{{documento.url}}" target="_blank" download tappable title="Scarica Documento"> <a *ngIf="platform.is('desktop')" href="{{documento.url}}" target="_blank" download tappable title="{{ 'scarica_doc' | translate }}">
<ion-icon name="cloud-download" title="Scarica documento"></ion-icon> <ion-icon name="cloud-download" title="{{ 'scarica_doc' | translate }}"></ion-icon>
</a> </a>
<!--<a *ngIf="platform.is('desktop')" href="{{documento.url}}" target="_blank" download>Clicca per scaricare il documento</a>--> <!--<a *ngIf="platform.is('desktop')" href="{{documento.url}}" target="_blank" download>Clicca per scaricare il documento</a>-->
<ion-icon name="share-alt" *ngIf="!platform.is('desktop')" (click)="getDocumento(documento.idDocumento, documento.nomeFile);" target="_blank" download tappable title="Condividi Documento">Clicca per condividere il documento</ion-icon> <ion-icon name="share-alt" *ngIf="!platform.is('desktop')" (click)="getDocumento(documento.idDocumento, documento.nomeFile);" target="_blank" download tappable title="{{ 'condividi_documento' | translate }}"></ion-icon>
</ion-item> </div>
</div> </div>
<div class="clr"></div> <div class="clr"></div>
</ion-list> </ion-list>
......
...@@ -10,6 +10,7 @@ import { ErrorResponse } from '../../auth/interface/error-response'; ...@@ -10,6 +10,7 @@ import { ErrorResponse } from '../../auth/interface/error-response';
import { DocumentiRequest } from '../../interface/documenti-request'; import { DocumentiRequest } from '../../interface/documenti-request';
import { DatePicker } from '@ionic-native/date-picker/ngx'; import { DatePicker } from '@ionic-native/date-picker/ngx';
import { Platform, Events } from '@ionic/angular'; import { Platform, Events } from '@ionic/angular';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'app-documenti', selector: 'app-documenti',
...@@ -26,7 +27,8 @@ export class DocumentiPage implements OnInit { ...@@ -26,7 +27,8 @@ export class DocumentiPage implements OnInit {
private datePicker: DatePicker, private datePicker: DatePicker,
public platform: Platform, public platform: Platform,
public events: Events, public events: Events,
public httpClientDataService: HttpClientDataService public httpClientDataService: HttpClientDataService,
public translate: TranslateService
) { ) {
this.documenti = { this.documenti = {
cliente: null, cliente: null,
...@@ -41,6 +43,10 @@ export class DocumentiPage implements OnInit { ...@@ -41,6 +43,10 @@ export class DocumentiPage implements OnInit {
this.events.subscribe('functionCall:clienteCambiato', eventData => { this.events.subscribe('functionCall:clienteCambiato', eventData => {
this.chiediDocumenti("initial"); this.chiediDocumenti("initial");
}); });
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
} }
setDateDa() setDateDa()
......
...@@ -7,12 +7,15 @@ import { HomePageRoutingModule } from './home.router.module'; ...@@ -7,12 +7,15 @@ import { HomePageRoutingModule } from './home.router.module';
import { HomePage } from './home.page'; import { HomePage } from './home.page';
import { TranslateModule } from '@ngx-translate/core';
@NgModule({ @NgModule({
imports: [ imports: [
IonicModule, IonicModule,
CommonModule, CommonModule,
FormsModule, FormsModule,
HomePageRoutingModule HomePageRoutingModule,
TranslateModule
], ],
declarations: [HomePage] declarations: [HomePage]
}) })
......
...@@ -3,13 +3,13 @@ ...@@ -3,13 +3,13 @@
<ion-row justify-content-center> <ion-row justify-content-center>
<ion-col align-self-center size-lg="7"> <ion-col align-self-center size-lg="7">
<ion-toolbar class="header"> <ion-toolbar class="header">
<ion-buttons (click)="openSideBar()" slot="start" title="Apri il menu"> <ion-buttons (click)="openSideBar()" slot="start" title="{{'apri_menu' | translate}}">
<ion-icon name="menu" color="light" class="menu-show" tappable></ion-icon> <ion-icon name="menu" color="light" class="menu-show" tappable></ion-icon>
</ion-buttons> </ion-buttons>
<ion-title class="logo-piccolo"> <ion-title class="logo-piccolo">
<img src="assets/icon/2p2-logo-medium.svg"> <img src="assets/icon/2p2-logo-medium.svg">
</ion-title> </ion-title>
<ion-buttons (click)="logout()" slot="end" title="Logout"> <ion-buttons (click)="logout()" slot="end" title="{{'uscita' | translate}}">
<ion-icon name="exit" color="light" class="exit" tappable></ion-icon> <ion-icon name="exit" color="light" class="exit" tappable></ion-icon>
</ion-buttons> </ion-buttons>
</ion-toolbar> </ion-toolbar>
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
<ion-menu side="start" menu-id="mainmenu" content-id="content" class="menu"> <ion-menu side="start" menu-id="mainmenu" content-id="content" class="menu">
<ion-header no-border class="header"> <ion-header no-border class="header">
<ion-toolbar class="menu-toolbar"> <ion-toolbar class="menu-toolbar">
<ion-item class="menu-title item-no-border">Main Menu</ion-item> <ion-item class="menu-title item-no-border">{{ 'menu_principale' | translate }}</ion-item>
<ion-buttons (click)="closeSideMenu()" slot="end" title="Chiudi Menu"> <ion-buttons (click)="closeSideMenu()" slot="end" title="Chiudi Menu">
<ion-icon name="close-circle-outline" color="light" class="exit" tappable></ion-icon> <ion-icon name="close-circle-outline" color="light" class="exit" tappable></ion-icon>
</ion-buttons> </ion-buttons>
...@@ -77,29 +77,35 @@ ...@@ -77,29 +77,35 @@
</ion-header> </ion-header>
<ion-content class="menu-content"> <ion-content class="menu-content">
<ion-item class="item-border-grey"> <ion-item class="item-border-grey">
<ion-label class="label-border">Azienda Selezionata:</ion-label> <ion-label class="label-border">{{ 'azienda_selezionata' | translate }}</ion-label>
<ion-select value="clienteSel" [(ngModel)]="clienteSel" (ionChange)="cambiaCliente()" interface="popover" [placeholder]="clienteSelezionato ? clienteSelezionato.denominazione : 'Tap to select..'" title="Seleziona un cliente"> <ion-select value="clienteSel" [(ngModel)]="clienteSel" (ionChange)="cambiaCliente()" interface="popover" [placeholder]="clienteSelezionato ? clienteSelezionato.denominazione : 'Tap to select..'" title="Seleziona un cliente">
<ion-select-option *ngFor="let cliente of clienti; let i=index;" value="{{cliente.id}}">{{cliente.denominazione}}</ion-select-option> <ion-select-option *ngFor="let cliente of clienti; let i=index;" value="{{cliente.id}}">{{cliente.denominazione}}</ion-select-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
<ion-item class="item-border-grey">
<ion-label class="label-border">{{ 'lingua_selezionata' | translate }}</ion-label>
<ion-select value="linguaSel" [(ngModel)]="linguaSel" (ionChange)="cambiaLingua()" interface="popover" title="{{ 'seleziona_lingua' | translate }}">
<ion-select-option *ngFor="let lingua of lingue; let i=index;" value="{{lingua.key}}">{{lingua.value}}</ion-select-option>
</ion-select>
</ion-item>
<ion-list> <ion-list>
<div> <div>
<ion-item (click)="apriPagina('home')" tappable class="menu-item">SCHERMATA INIZIALE</ion-item> <ion-item (click)="apriPagina('home')" tappable class="menu-item">{{ 'main_page' | translate }}</ion-item>
</div> </div>
<div> <div>
<ion-item (click)="apriPagina('documenti')" tappable class="menu-item">I MIEI DOCUMENTI</ion-item> <ion-item (click)="apriPagina('documenti')" tappable class="menu-item">{{ 'menu_documenti' | translate }}</ion-item>
</div> </div>
<div> <div>
<ion-item (click)="apriPagina('interviste')" tappable class="menu-item">DOMANDA / RISPOSTA</ion-item> <ion-item (click)="apriPagina('interviste')" tappable class="menu-item">{{ 'menu_interviste' | translate }}</ion-item>
</div> </div>
<div> <div>
<ion-item (click)="apriPagina('pareri')" tappable class="menu-item">VOGLIO UN PARERE</ion-item> <ion-item (click)="apriPagina('pareri')" tappable class="menu-item">{{ 'menu_pareri' | translate }}</ion-item>
</div> </div>
<div> <div>
<ion-item (click)="apriPagina('segreteria')" tappable class="menu-item">LA SEGRETERIA</ion-item> <ion-item (click)="apriPagina('segreteria')" tappable class="menu-item">{{ 'menu_segreteria' | translate }}</ion-item>
</div> </div>
<div> <div>
<ion-item (click)="apriPagina('change-password')" tappable class="menu-item">CAMBIO PASSWORD</ion-item> <ion-item (click)="apriPagina('change-password')" tappable class="menu-item">{{ 'menu_change' | translate }}</ion-item>
</div> </div>
</ion-list> </ion-list>
</ion-content> </ion-content>
......
...@@ -4,6 +4,8 @@ import { Router } from "@angular/router"; ...@@ -4,6 +4,8 @@ import { Router } from "@angular/router";
import { Events, MenuController } from '@ionic/angular'; import { Events, MenuController } from '@ionic/angular';
import { AuthService } from '../../auth/service/auth.service'; import { AuthService } from '../../auth/service/auth.service';
import { UtilService } from '../../service/util.service'; import { UtilService } from '../../service/util.service';
import { Pair } from 'src/app/interface/pair';
import { TranslateService } from '@ngx-translate/core';
...@@ -13,7 +15,7 @@ import { UtilService } from '../../service/util.service'; ...@@ -13,7 +15,7 @@ import { UtilService } from '../../service/util.service';
styleUrls: ['home.page.scss'] styleUrls: ['home.page.scss']
}) })
export class HomePage { export class HomePage {
constructor(private authService: AuthService, private router: Router, public events: Events, public menuCtrl: MenuController, private utilService: UtilService) { constructor(private authService: AuthService, private router: Router, public events: Events, public menuCtrl: MenuController, private utilService: UtilService, public translate: TranslateService) {
this.clienti = []; this.clienti = [];
this.clienteSelezionato = { this.clienteSelezionato = {
denominazione: null, denominazione: null,
...@@ -35,11 +37,25 @@ export class HomePage { ...@@ -35,11 +37,25 @@ export class HomePage {
else this.loadClienti(); else this.loadClienti();
} }
}); });
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
this.lingue = utilService.getLanguageList();
if(utilService.getLingua() == "") {
this.linguaSel = this.lingue[0].key;
utilService.setLingua(this.linguaSel);
utilService.translate.setDefaultLang(this.linguaSel);
utilService.translate.use(this.linguaSel);
}
else this.linguaSel = utilService.getLingua();
translate = utilService.translate;
} }
clienti: Cliente[]; clienti: Cliente[];
clienteSel; clienteSel;
clienteSelezionato: Cliente; clienteSelezionato: Cliente;
linguaSel: string;
lingue : Array<Pair>;
async loadClienti() async loadClienti()
{ {
...@@ -58,6 +74,14 @@ export class HomePage { ...@@ -58,6 +74,14 @@ export class HomePage {
this.events.publish('functionCall:clienteCambiato', null); this.events.publish('functionCall:clienteCambiato', null);
} }
cambiaLingua()
{
this.utilService.setLingua(this.linguaSel);
this.utilService.translate.setDefaultLang(this.linguaSel);
this.utilService.translate.use(this.linguaSel);
this.events.publish('functionCall:linguaCambiata', null);
}
logout(){ logout(){
this.authService.logout(); this.authService.logout();
this.router.navigateByUrl('login'); this.router.navigateByUrl('login');
......
...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular';
import { IndexPage } from './index.page'; import { IndexPage } from './index.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,7 +21,8 @@ const routes: Routes = [ ...@@ -19,7 +21,8 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes),
TranslateModule
], ],
declarations: [IndexPage] declarations: [IndexPage]
}) })
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<img src="assets/img/consulto-documenti.svg" (click)="apriPagina('documenti')" tappable/> <img src="assets/img/consulto-documenti.svg" (click)="apriPagina('documenti')" tappable/>
</div> </div>
<div tappable class="section-title" (click)="apriPagina('documenti')"> <div tappable class="section-title" (click)="apriPagina('documenti')">
I miei documenti {{ 'documenti' | translate }}
</div> </div>
</div> </div>
<div class="box" tappable> <div class="box" tappable>
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<img src="assets/img/chiedo-parere.svg" (click)="apriPagina('pareri')" tappable/> <img src="assets/img/chiedo-parere.svg" (click)="apriPagina('pareri')" tappable/>
</div> </div>
<div class="section-title" (click)="apriPagina('pareri')" tappable> <div class="section-title" (click)="apriPagina('pareri')" tappable>
Voglio un parere {{ 'pareri' | translate }}
</div> </div>
</div> </div>
<div class="box" tappable> <div class="box" tappable>
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<img src="assets/img/domande-risposte.svg" (click)="apriPagina('interviste')" tappable/> <img src="assets/img/domande-risposte.svg" (click)="apriPagina('interviste')" tappable/>
</div> </div>
<div class="section-title" (click)="apriPagina('interviste')" tappable> <div class="section-title" (click)="apriPagina('interviste')" tappable>
Domanda / Risposta {{ 'interviste' | translate }}
</div> </div>
</div> </div>
<div class="box" tappable> <div class="box" tappable>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<img src="assets/img/segreteria.svg" (click)="apriPagina('segreteria')" tappable/> <img src="assets/img/segreteria.svg" (click)="apriPagina('segreteria')" tappable/>
</div> </div>
<div class="section-title" (click)="apriPagina('segreteria')" tappable> <div class="section-title" (click)="apriPagina('segreteria')" tappable>
La segreteria {{ 'segreteria' | translate }}
</div> </div>
</div> </div>
<!-- <!--
......
...@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core';
import { Router } from "@angular/router"; import { Router } from "@angular/router";
import { Events } from '@ionic/angular'; import { Events } from '@ionic/angular';
import { UtilService } from '../../service/util.service'; import { UtilService } from '../../service/util.service';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'app-index', selector: 'app-index',
...@@ -10,8 +11,12 @@ import { UtilService } from '../../service/util.service'; ...@@ -10,8 +11,12 @@ import { UtilService } from '../../service/util.service';
}) })
export class IndexPage implements OnInit { export class IndexPage implements OnInit {
constructor(private router: Router, public events: Events, private utilService: UtilService) { constructor(private router: Router, public events: Events, private utilService: UtilService, public translate: TranslateService) {
this.events.publish('functionCall:startup', null); this.events.publish('functionCall:startup', null);
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
} }
apriPagina(pagina:string) apriPagina(pagina:string)
......
...@@ -7,6 +7,7 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,7 @@ import { IonicModule } from '@ionic/angular';
import { IntervistePage } from './interviste.page'; import { IntervistePage } from './interviste.page';
import {ModalQuestionComponent} from '../../components/modal-question/modal-question.component'; import {ModalQuestionComponent} from '../../components/modal-question/modal-question.component';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
...@@ -20,7 +21,8 @@ const routes: Routes = [ ...@@ -20,7 +21,8 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes),
TranslateModule
], ],
declarations: [IntervistePage, ModalQuestionComponent], declarations: [IntervistePage, ModalQuestionComponent],
entryComponents: [ModalQuestionComponent] entryComponents: [ModalQuestionComponent]
......
<ion-header class="header-subpage" no-border> <ion-header class="header-subpage" no-border>
<ion-toolbar> <ion-toolbar>
<ion-title class="titolo-sezione-head">domanda / risposta</ion-title> <ion-title class="titolo-sezione-head">{{ 'interviste_titolo' | translate }}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
...@@ -28,61 +28,79 @@ ...@@ -28,61 +28,79 @@
<ion-grid> <ion-grid>
<ion-row class="search-date"> <ion-row class="search-date">
<div *ngIf="platform.is('desktop')"> <div *ngIf="platform.is('desktop')">
<strong>Cerca</strong> da <input type="date" name="calendar" [(ngModel)]="date1" title="Seleziona una data"> a <input type="date" name="calendar" [(ngModel)]="date2" title="Seleziona una data"> <strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} <input type="date" name="calendar" [(ngModel)]="date1" title="{{ 'seleziona_data' | translate }}"> {{ 'a' | translate }} <input type="date" name="calendar" [(ngModel)]="date2" title="{{ 'seleziona_data' | translate }}">
</div> </div>
<div class="float-date" *ngIf="!platform.is('desktop')"> <div class="float-date" *ngIf="!platform.is('desktop')">
<span class="date-text"><strong>Cerca</strong> da </span> <span class="date-text"><strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} </span>
<ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon> <ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon>
<div class="element-date item-no-border date-text"> <div class="element-date item-no-border date-text">
{{date1}} {{date1}}
</div> </div>
<span class="date-text">a</span> <span class="date-text">{{ 'a' | translate }}</span>
<ion-icon floating class="element-date date-icon" name="calendar" (click)="setDateA()"></ion-icon> <ion-icon floating class="element-date date-icon" name="calendar" (click)="setDateA()"></ion-icon>
<div floating class="element-date item-no-border date-text"> <div floating class="element-date item-no-border date-text">
{{date2}} {{date2}}
</div> </div>
</div> </div>
<div><input type="text" name="calendar" [(ngModel)]="titolo" placeholder="Cerca titolo" title="{{ 'cerca' | translate }}" class="cerca-titolo"></div>
</ion-row> </ion-row>
<ion-row class="date-div"> <ion-row class="date-div">
<div class="search-date "> <div class="search-date float-date riga">
<div class="float-date"> <ion-checkbox name="privacy" [(ngModel)]="archiviati" class="check"> </ion-checkbox>
<ion-item class="item-no-border"> <ion-label><span class="text">{{ 'visualizza_archiviati' | translate }}</span></ion-label>
<ion-checkbox name="privacy" [(ngModel)]="archiviati" class="check"> </ion-checkbox> <ion-button (click)="caricaRichieste()" class="search-arrow" title="{{ 'cerca' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward" title="{{ 'cerca' | translate }}"></ion-icon></ion-button>
<ion-label>Visualizza Archiviati</ion-label>
</ion-item>
<ion-item class="item-no-border">
<ion-button (click)="caricaRichieste()" class="search-arrow"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward"></ion-icon></ion-button>
</ion-item>
</div>
<div class="clr"></div> <div class="clr"></div>
<ion-item class="item-no-border" id="buttonsInterviste" style="display:none"> <span class="item-no-border riga" id="buttonsInterviste" style="display:none">
<div *ngIf="!archiviati"> <div *ngIf="!archiviati" class="text">
Archivia Domande/Risposte {{ 'archivia_interviste' | translate }}
<ion-button (click)="archiviaInterviste(true)" class="search-arrow" title="Archivia Pareri"><ion-icon class="button-icon" slot="icon-only" name="archive" title="Archivia Pareri"></ion-icon></ion-button> <ion-button (click)="archiviaInterviste(true)" class="search-arrow" title="{{ 'archivia_interviste' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="archive" title="{{ 'archivia_interviste' | translate }}"></ion-icon></ion-button>
</div> </div>
<div *ngIf="archiviati"> <div *ngIf="archiviati" class="text">
Togli Domande/Risposte dall'archivio {{ 'undo_archivio_interviste' | translate }}
<ion-button (click)="archiviaInterviste(false)" class="search-arrow" title="Riattiva Pareri"><ion-icon class="button-icon" slot="icon-only" name="undo" title="Riattiva documenti"></ion-icon></ion-button> <ion-button (click)="archiviaInterviste(false)" class="search-arrow" title="{{ 'riattiva_interviste' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="undo" title="{{ 'riattiva_interviste' | translate }}"></ion-icon></ion-button>
</div> </div>
</ion-item> </span>
</div> </div>
</ion-row> </ion-row>
<ion-list *ngFor="let topic of topics; trackBy: trackByDoc" class="chat-list"> <span class="row-results">
<ion-checkbox name="privacy" [(ngModel)]="topic.checked" class="check" (click)="checkSelected(topic.idRichiesta)"> </ion-checkbox> <ion-list *ngFor="let topic of topics; trackBy: trackByDoc" class="chat-list table-row">
<!--<ion-checkbox name="privacy" [(ngModel)]="topic.checked" class="check" (click)="checkSelected(topic.idRichiesta)"> </ion-checkbox>
<div class="row-chat-list"> <div class="row-chat-list">
<div class="data" text-wrap> <div class="data" text-wrap>
{{topic.data}} {{topic.data}}
<a class="select" (click)="apriTopic(topic.idRichiesta)" tappable title="Visualizza Dettagli"> <a class="select" (click)="apriTopic(topic.idRichiesta)" tappable title="{{ 'visualizza_dettagli' | translate }}">
<ion-icon name="arrow-round-forward"></ion-icon> <ion-icon name="arrow-round-forward"></ion-icon>
</a> </a>
<a class="select" (click)="loadTopics('after')" tappable title="Aggiorna domande/risposte"> <a class="select" (click)="loadTopics('after')" tappable title="{{ 'aggiorna' | translate }}">
<ion-icon name="refresh-circle"></ion-icon>
</a>
<div text-wrap>{{topic.titolo}}</div>
</div>
</div>-->
<div class="row-download-special">
<div class="richieste-button group-icon2">
<a class="select" (click)="loadTopics('after')" tappable title="{{ 'aggiorna' | translate }}">
<ion-icon name="refresh-circle"></ion-icon> <ion-icon name="refresh-circle"></ion-icon>
</a> </a>
<ion-label>{{ 'refresh' | translate }}</ion-label>
</div>
<div class="richieste-button group-icon2">
<a class="select" (click)="apriTopic(topic.idRichiesta)" tappable title="{{ 'visualizza_dettagli' | translate }}">
<ion-icon name="arrow-round-forward"></ion-icon>
</a>
<ion-label>{{ 'apri' | translate }}</ion-label>
</div>
</div>
<ion-checkbox name="privacy" [(ngModel)]="topic.checked" class="check" (click)="checkSelected(topic.idRichiesta)"> </ion-checkbox>
<div class="row-chat-list">
<div class="data" text-wrap>
{{topic.data}}
<div text-wrap>{{topic.titolo}}</div> <div text-wrap>{{topic.titolo}}</div>
</div> </div>
</div> </div>
</ion-list> </ion-list>
</span>
<!--<div class="foo-button" center> <!--<div class="foo-button" center>
<div class="round-btn"> <div class="round-btn">
<a (click)="createNuovoParere()" tappable> <a (click)="createNuovoParere()" tappable>
...@@ -97,15 +115,15 @@ ...@@ -97,15 +115,15 @@
<ion-grid> <ion-grid>
<ion-row class="search-date"> <ion-row class="search-date">
<div *ngIf="platform.is('desktop')"> <div *ngIf="platform.is('desktop')">
<strong>Cerca</strong> da <input type="date" name="calendar" [(ngModel)]="date1" title="Seleziona una data"> a <input type="date" name="calendar" [(ngModel)]="date2" title="Seleziona una data"> <ion-button (click)="caricaTopic()" class="search-arrow" title="Cerca interventi"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward"></ion-icon></ion-button> <strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} <input type="date" name="calendar" [(ngModel)]="date1" title="{{ 'seleziona_data' | translate }}"> {{ 'a' | translate }} <input type="date" name="calendar" [(ngModel)]="date2" title="{{ 'seleziona_data' | translate }}"> <ion-button (click)="caricaTopic()" class="search-arrow" title="Cerca interventi"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward"></ion-icon></ion-button>
</div> </div>
<div class="float-date" *ngIf="!platform.is('desktop')"> <div class="float-date" *ngIf="!platform.is('desktop')">
<span class="date-text"><strong>Cerca</strong> da </span> <span class="date-text"><strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} </span>
<ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon> <ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon>
<div class="element-date item-no-border date-text"> <div class="element-date item-no-border date-text">
{{date1}} {{date1}}
</div> </div>
<span class="date-text">a</span> <span class="date-text">{{ 'a' | translate }}</span>
<ion-icon floating class="element-date date-icon" name="calendar" (click)="setDateA()"></ion-icon> <ion-icon floating class="element-date date-icon" name="calendar" (click)="setDateA()"></ion-icon>
<div floating class="element-date item-no-border date-text"> <div floating class="element-date item-no-border date-text">
{{date2}} {{date2}}
...@@ -115,7 +133,7 @@ ...@@ -115,7 +133,7 @@
</ion-row> </ion-row>
<div class="back"> <div class="back">
<a (click)="apriLista()" tappable> <a (click)="apriLista()" tappable>
<ion-icon name="arrow-round-back" [style.color]="'#2b94d1'" title="Torna alla lista di domande/risposte"></ion-icon> <ion-icon name="arrow-round-back" [style.color]="'#2b94d1'" title="{{ 'back_interviste' | translate }}"></ion-icon>
</a> </a>
</div> </div>
<div class="quesito"> <div class="quesito">
...@@ -128,7 +146,7 @@ ...@@ -128,7 +146,7 @@
<div class="clr"></div> <div class="clr"></div>
<div *ngFor="let intervento of topicAttivo.interventi;"> <div *ngFor="let intervento of topicAttivo.interventi;">
<div class="from-me" *ngIf="intervento.utente == null"> <div class="from-me" *ngIf="intervento.utente == null">
<div class="io">io - {{intervento.data}}</div> <div class="io">{{ 'io' | translate }} - {{intervento.data}}</div>
<p>{{intervento.testo}}</p> <p>{{intervento.testo}}</p>
</div> </div>
<div class="from-them" *ngIf="intervento.utente != null"> <div class="from-them" *ngIf="intervento.utente != null">
...@@ -143,26 +161,26 @@ ...@@ -143,26 +161,26 @@
<div *ngSwitchCase="'new'"> <div *ngSwitchCase="'new'">
<div class="back"> <div class="back">
<a (click)="apriLista()" tappable> <a (click)="apriLista()" tappable>
<ion-icon name="arrow-round-back" [style.color]="'#2b94d1'" title="Torna alla lista di domande/risposte"></ion-icon> <ion-icon name="arrow-round-back" [style.color]="'#2b94d1'" title="{{ 'back_interviste' | translate }}"></ion-icon>
</a> </a>
</div> </div>
<div class="clr"></div> <div class="clr"></div>
<form #form="ngForm" (ngSubmit)="saveNewTopic(form)"> <form #form="ngForm" (ngSubmit)="saveNewTopic(form)">
<div> <div>
<ion-item class="title-question"> <ion-item class="title-question">
<ion-input class="item-no-border" name="title" type="text" placeholder="inserire qui il titolo" ngModel required></ion-input> <ion-input class="item-no-border" name="title" type="text" placeholder="{{ 'inserire_titolo' | translate }}" ngModel required></ion-input>
</ion-item> </ion-item>
</div> </div>
<div> <div>
<ion-item class="question-extended item-no-border"> <ion-item class="question-extended item-no-border">
<ion-textarea name="question" placeholder="inserire qui la domanda" ngModel required></ion-textarea> <ion-textarea name="question" placeholder="{{ 'inserire_domanda' | translate }}" ngModel required></ion-textarea>
</ion-item> </ion-item>
</div> </div>
<div class="send"> <div class="send">
<ion-button type="submit" size="large" [disabled]="form.invalid" expand="block" color="#fcc73d">invia</ion-button> <ion-button type="submit" size="large" [disabled]="form.invalid" expand="block" color="#fcc73d">{{ 'invia' | translate }}</ion-button>
</div> </div>
<div class="undo"> <div class="undo">
<ion-button size="large" expand="block" (click)="apriLista()">annulla</ion-button> <ion-button size="large" expand="block" (click)="apriLista()">{{ 'annulla' | translate }}</ion-button>
</div> </div>
</form> </form>
</div> </div>
...@@ -178,10 +196,10 @@ ...@@ -178,10 +196,10 @@
<ion-row> <ion-row>
<ion-col col-10> <ion-col col-10>
<ion-input class="input-intervento" id= "message" type="text" placeholder="Digita un messaggio" name="message" [(ngModel)]="message"></ion-input> <ion-input class="input-intervento" id= "message" type="text" placeholder="{{ 'digita_msg' | translate }}" name="message" [(ngModel)]="message"></ion-input>
</ion-col> </ion-col>
<ion-col col-2> <ion-col col-2>
<ion-icon name="paper-plane" (click)="aggiungiIntervento(form)" tappable title="Inserisci intervento"></ion-icon> <ion-icon name="paper-plane" (click)="aggiungiIntervento(form)" tappable title="{{ 'inserisci_intervento' | translate }}"></ion-icon>
</ion-col> </ion-col>
</ion-row> </ion-row>
...@@ -189,7 +207,7 @@ ...@@ -189,7 +207,7 @@
</form> </form>
<div class="foo-button" center> <div class="foo-button" center>
<div class="round-btn"> <div class="round-btn">
<a (click)="apriEdit()" tappable title="Aggiungi argomento/intervento"> <a (click)="apriEdit()" tappable title="{{ 'inserisci_argomento' | translate }}">
<ion-icon name="add" [style.color]="'#FFFFFF'"></ion-icon> <ion-icon name="add" [style.color]="'#FFFFFF'"></ion-icon>
</a> </a>
</div> </div>
......
...@@ -11,6 +11,7 @@ import { DatePicker } from '@ionic-native/date-picker/ngx'; ...@@ -11,6 +11,7 @@ import { DatePicker } from '@ionic-native/date-picker/ngx';
import { Platform, Events } from '@ionic/angular'; import { Platform, Events } from '@ionic/angular';
import { ParereService } from 'src/app/service/parere.service'; import { ParereService } from 'src/app/service/parere.service';
import { ArchiviaRichiestaResponse } from 'src/app/interface/archivia-richiesta-response'; import { ArchiviaRichiestaResponse } from 'src/app/interface/archivia-richiesta-response';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'app-interviste', selector: 'app-interviste',
...@@ -30,7 +31,8 @@ export class IntervistePage implements OnInit { ...@@ -30,7 +31,8 @@ export class IntervistePage implements OnInit {
private intervisteService: IntervisteService, private intervisteService: IntervisteService,
public platform: Platform, public platform: Platform,
public events: Events, public events: Events,
public parereService: ParereService public parereService: ParereService,
public translate: TranslateService
) { ) {
this.events.publish('functionCall:startup', null); this.events.publish('functionCall:startup', null);
this.initPage(); this.initPage();
...@@ -38,6 +40,10 @@ export class IntervistePage implements OnInit { ...@@ -38,6 +40,10 @@ export class IntervistePage implements OnInit {
this.events.subscribe('functionCall:clienteCambiato', eventData => { this.events.subscribe('functionCall:clienteCambiato', eventData => {
this.loadTopics("initial"); this.loadTopics("initial");
}); });
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
} }
topicAttivo: Richiesta; topicAttivo: Richiesta;
...@@ -51,6 +57,7 @@ export class IntervistePage implements OnInit { ...@@ -51,6 +57,7 @@ export class IntervistePage implements OnInit {
bottoneVisibile: boolean; bottoneVisibile: boolean;
formInserisciIntervento: boolean; formInserisciIntervento: boolean;
archiviati: boolean; archiviati: boolean;
titolo: string;
initPage() initPage()
{ {
...@@ -78,6 +85,7 @@ export class IntervistePage implements OnInit { ...@@ -78,6 +85,7 @@ export class IntervistePage implements OnInit {
this.archiviati = false; this.archiviati = false;
this.intervisteSelezionate = new Array(); this.intervisteSelezionate = new Array();
this.error = ""; this.error = "";
this.titolo = "";
} }
intervisteSelezionate: Array<number>; intervisteSelezionate: Array<number>;
...@@ -157,6 +165,7 @@ export class IntervistePage implements OnInit { ...@@ -157,6 +165,7 @@ export class IntervistePage implements OnInit {
{ {
this.intervista = "lista"; this.intervista = "lista";
this.mostraBottone(); this.mostraBottone();
this.hideInputIntervento();
} }
nascondiBottone() nascondiBottone()
...@@ -239,11 +248,13 @@ export class IntervistePage implements OnInit { ...@@ -239,11 +248,13 @@ export class IntervistePage implements OnInit {
{ {
var dataA = null; var dataA = null;
var dataDa = null; var dataDa = null;
var titolo = null;
if(this.titolo != null && this.titolo != "") titolo = this.titolo;
if(this.date1 != null && this.date1 != "") dataDa = this.utilService.dateFormatConvert(this.date1); if(this.date1 != null && this.date1 != "") dataDa = this.utilService.dateFormatConvert(this.date1);
if(this.date2 != null && this.date1 != "") dataA = this.utilService.dateFormatConvert(this.date2); if(this.date2 != null && this.date1 != "") dataA = this.utilService.dateFormatConvert(this.date2);
this.utilService.showLoading(); this.utilService.showLoading();
this.idCliente = AuthService.clienteSelezionato.id; this.idCliente = AuthService.clienteSelezionato.id;
this.intervisteService.getListaTopics(AuthService.clienteSelezionato.id, dataDa, dataA, this.archiviati).subscribe((res: RichiesteResponse)=>{ this.intervisteService.getListaTopics(AuthService.clienteSelezionato.id, dataDa, dataA, this.archiviati, titolo).subscribe((res: RichiesteResponse)=>{
this.utilService.closeLoading(); this.utilService.closeLoading();
if(res.error){ if(res.error){
this.utilService.presentAlert("Errore", "", res.error, ["OK"]); this.utilService.presentAlert("Errore", "", res.error, ["OK"]);
...@@ -267,7 +278,7 @@ export class IntervistePage implements OnInit { ...@@ -267,7 +278,7 @@ export class IntervistePage implements OnInit {
{ {
//this.utilService.showLoading(); //this.utilService.showLoading();
this.idCliente = AuthService.clienteSelezionato.id; this.idCliente = AuthService.clienteSelezionato.id;
if(fase == "initial") this.intervisteService.getListaTopics(AuthService.clienteSelezionato.id, null, null, false).subscribe((res: RichiesteResponse)=>{ if(fase == "initial") this.intervisteService.getListaTopics(AuthService.clienteSelezionato.id, null, null, false, null).subscribe((res: RichiesteResponse)=>{
if(res.error){ if(res.error){
this.utilService.presentAlert("Errore", "", res.error, ["OK"]); this.utilService.presentAlert("Errore", "", res.error, ["OK"]);
} }
...@@ -285,7 +296,7 @@ export class IntervistePage implements OnInit { ...@@ -285,7 +296,7 @@ export class IntervistePage implements OnInit {
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]); else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di apertura del Topic", ["OK"]); else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di apertura del Topic", ["OK"]);
}); });
if(fase == "after") this.intervisteService.getListaTopics(AuthService.clienteSelezionato.id, null, null, this.archiviati).subscribe((res: RichiesteResponse)=>{ if(fase == "after") this.intervisteService.getListaTopics(AuthService.clienteSelezionato.id, null, null, this.archiviati, null).subscribe((res: RichiesteResponse)=>{
//this.utilService.closeLoading(); //this.utilService.closeLoading();
if(res.error){ if(res.error){
this.utilService.presentAlert("Errore", "", res.error, ["OK"]); this.utilService.presentAlert("Errore", "", res.error, ["OK"]);
......
...@@ -7,6 +7,7 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,7 @@ import { IonicModule } from '@ionic/angular';
import { ParerePage } from './parere.page'; import { ParerePage } from './parere.page';
import {ParereModalComponent} from '../../components/parere-modal/parere-modal.component'; import {ParereModalComponent} from '../../components/parere-modal/parere-modal.component';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
...@@ -20,7 +21,8 @@ const routes: Routes = [ ...@@ -20,7 +21,8 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes),
TranslateModule
], ],
declarations: [ParerePage, ParereModalComponent], declarations: [ParerePage, ParereModalComponent],
entryComponents: [ParereModalComponent] entryComponents: [ParereModalComponent]
......
<ion-header class="header-subpage" no-border> <ion-header class="header-subpage" no-border>
<ion-toolbar> <ion-toolbar>
<ion-title class="titolo-sezione-head">voglio un parere</ion-title> <ion-title class="titolo-sezione-head">{{ 'parere_titolo' | translate }}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
...@@ -12,42 +12,69 @@ ...@@ -12,42 +12,69 @@
<div *ngSwitchCase="'lista'"> <div *ngSwitchCase="'lista'">
<div class="search-date date-div"> <div class="search-date date-div">
<div class="float-date"> <div class="float-date">
<ion-item class="item-no-border"> <span class="search-date item-no-border">
<div><strong>{{ 'cerca' | translate }}</strong> {{ 'titolo' | translate }} <input type="text" name="calendar" [(ngModel)]="titolo" title="{{ 'ricerca_titolo' | translate }}"></div>
</span>
<div class="clr"></div>
<span class="search-date item-no-border">
<ion-checkbox name="privacy" [(ngModel)]="archiviati" class="check"> </ion-checkbox> <ion-checkbox name="privacy" [(ngModel)]="archiviati" class="check"> </ion-checkbox>
<ion-label>Visualizza Archiviati</ion-label> <ion-label class="text">{{ 'visualizza_archiviati' | translate }}</ion-label>
</ion-item> <ion-button (click)="cercaPareri()" class="search-arrow" title="{{ 'cerca' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward" title="{{ 'cerca' | translate }}"></ion-icon></ion-button>
<ion-item class="item-no-border"> </span>
<ion-button (click)="cercaPareri()" class="search-arrow" title="Cerca pareri"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward" title="Cerca documenti"></ion-icon></ion-button>
</ion-item>
</div> </div>
<div class="clr"></div> <div class="clr"></div>
<ion-item class="item-no-border" id="buttonsPareri" style="display:none"> <span class="item-no-border" id="buttonsPareri" style="display:none">
<div *ngIf="!archiviati"> <div *ngIf="!archiviati" class="text">
Archivia Pareri {{ 'archivia_pareri' | translate }}
<ion-button (click)="archiviaPareri(true)" class="search-arrow" title="Archivia Pareri"><ion-icon class="button-icon" slot="icon-only" name="archive" title="Archivia Pareri"></ion-icon></ion-button> <ion-button (click)="archiviaPareri(true)" class="search-arrow" title="{{ 'archivia_pareri' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="archive" title="{{ 'archivia_pareri' | translate }}"></ion-icon></ion-button>
</div> </div>
<div *ngIf="archiviati"> <div *ngIf="archiviati" class="text">
Togli pareri dall'archivio {{ 'undo_archivio_pareri' | translate }}
<ion-button (click)="archiviaPareri(false)" class="search-arrow" title="Riattiva Pareri"><ion-icon class="button-icon" slot="icon-only" name="undo" title="Riattiva documenti"></ion-icon></ion-button> <ion-button (click)="archiviaPareri(false)" class="search-arrow" title="{{ 'riattiva_pareri' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="undo" title="{{ 'riattiva_pareri' | translate }}"></ion-icon></ion-button>
</div> </div>
</ion-item> </span>
</div> </div>
<div *ngFor="let parere of pareri; trackBy: trackByDoc" class="chat-list"> <!--<div *ngFor="let parere of pareri; trackBy: trackByDoc" class="chat-list">
<ion-checkbox name="privacy" [(ngModel)]="parere.checked" class="check" (click)="checkSelected(parere.idRichiesta)"> </ion-checkbox> <ion-checkbox name="privacy" [(ngModel)]="parere.checked" class="check" (click)="checkSelected(parere.idRichiesta)"> </ion-checkbox>
<div class="row-chat-list"> <div class="row-chat-list">
<div class="data" text-wrap> <div class="data" text-wrap>
{{parere.data}} {{parere.data}}
<a class="select" (click)="apriParere(parere.idRichiesta)" tappable title="Visualizza dettaglio"> <a class="select" (click)="apriParere(parere.idRichiesta)" tappable title="{{ 'visualizza_dettagli' | translate }}">
<ion-icon name="arrow-round-forward"></ion-icon> <ion-icon name="arrow-round-forward"></ion-icon>
</a> </a>
<a class="select" (click)="loadPareri('initial')" tappable title="Aggiorna pareri"> <a class="select" (click)="loadPareri('initial')" tappable title="{{ 'aggiorna' | translate }}">
<ion-icon name="refresh-circle"></ion-icon> <ion-icon name="refresh-circle"></ion-icon>
</a> </a>
<div text-wrap>{{parere.titolo}}</div> <div text-wrap>{{parere.titolo}}</div>
</div> </div>
</div> </div>
</div> </div>-->
<span class="row-results">
<div *ngFor="let parere of pareri; trackBy: trackByDoc" class="chat-list table-row">
<div class="row-download-special">
<div class="richieste-button group-icon2">
<a class="select" (click)="loadPareri('initial')" tappable title="{{ 'aggiorna' | translate }}">
<ion-icon name="refresh-circle"></ion-icon>
</a>
<ion-label>{{ 'refresh' | translate }}</ion-label>
</div>
<div class="richieste-button group-icon2">
<a class="select" (click)="apriParere(parere.idRichiesta)" tappable title="{{ 'visualizza_dettagli' | translate }}">
<ion-icon name="arrow-round-forward"></ion-icon>
</a>
<ion-label>{{ 'apri' | translate }}</ion-label>
</div>
</div>
<ion-checkbox name="privacy" [(ngModel)]="parere.checked" class="check" (click)="checkSelected(parere.idRichiesta)"> </ion-checkbox>
<div class="row-chat-list">
<div class="data" text-wrap>
{{parere.data}}
<div text-wrap>{{parere.titolo}}</div>
</div>
</div>
</div>
</span>
<!--<div class="foo-button" center> <!--<div class="foo-button" center>
<div class="round-btn"> <div class="round-btn">
<a (click)="createNuovoParere()" tappable> <a (click)="createNuovoParere()" tappable>
...@@ -60,17 +87,17 @@ ...@@ -60,17 +87,17 @@
<div *ngSwitchCase="'dettaglio'"> <div *ngSwitchCase="'dettaglio'">
<div class="back"> <div class="back">
<a (click)="apriLista()" tappable> <a (click)="apriLista()" tappable>
<ion-icon name="arrow-round-back" [style.color]="'#2b94d1'" title="Torna alla lista dei pareri"></ion-icon> <ion-icon name="arrow-round-back" [style.color]="'#2b94d1'" title="{{ 'back_pareri' | translate }}"></ion-icon>
</a> </a>
</div> </div>
<div class="quesito"> <div class="quesito">
{{parereAttivo.titolo}} {{parereAttivo.titolo}}
</div> </div>
<div class="from-me"> <div class="from-me">
<div class="io">io - {{parereAttivo.data}}</div> <div class="io">{{ 'io' | translate }} - {{parereAttivo.data}}</div>
<p>{{parereAttivo.testo}}</p> <p>{{parereAttivo.testo}}</p>
<div class="download-doc" *ngIf="parereAttivo.nomeFile != null"> <div class="download-doc" *ngIf="parereAttivo.nomeFile != null">
<div class="image" title="Scarica allegato"> <div class="image" title="{{ 'scarica_allegato' | translate }}">
<a *ngIf="!platform.is('desktop')" (click)="getFile(parereAttivo.idRichiesta, parereAttivo.nomeFile, true);" target="_blank" download><ion-icon name="share-alt" [style.color]="'#e5e5ea'"></ion-icon></a> <a *ngIf="!platform.is('desktop')" (click)="getFile(parereAttivo.idRichiesta, parereAttivo.nomeFile, true);" target="_blank" download><ion-icon name="share-alt" [style.color]="'#e5e5ea'"></ion-icon></a>
<a *ngIf="platform.is('desktop')" href="{{parereAttivo.url}}" target="_blank" download><ion-icon name="cloud-download" [style.color]="'#e5e5ea'"></ion-icon></a> <a *ngIf="platform.is('desktop')" href="{{parereAttivo.url}}" target="_blank" download><ion-icon name="cloud-download" [style.color]="'#e5e5ea'"></ion-icon></a>
</div> </div>
...@@ -82,7 +109,7 @@ ...@@ -82,7 +109,7 @@
<div class="operatore">{{parereAttivo.interventi[0].utente}} - {{parereAttivo.interventi[0].data}}</div> <div class="operatore">{{parereAttivo.interventi[0].utente}} - {{parereAttivo.interventi[0].data}}</div>
<p>{{parereAttivo.interventi[0].testo}}</p> <p>{{parereAttivo.interventi[0].testo}}</p>
<div *ngIf="parereAttivo.interventi[0].nomeFile != null" class="download-doc"> <div *ngIf="parereAttivo.interventi[0].nomeFile != null" class="download-doc">
<div class="image" title="Scarica allegato"> <div class="image" title="{{ 'scarica_allegato' | translate }}">
<a *ngIf="!platform.is('desktop')" (click)="getFile(parereAttivo.interventi[0].idIntervento, parereAttivo.interventi[0].nomeFile, false);" target="_blank" download><ion-icon name="share-alt" [style.color]="'#2b94d1'"></ion-icon></a> <a *ngIf="!platform.is('desktop')" (click)="getFile(parereAttivo.interventi[0].idIntervento, parereAttivo.interventi[0].nomeFile, false);" target="_blank" download><ion-icon name="share-alt" [style.color]="'#2b94d1'"></ion-icon></a>
<a *ngIf="platform.is('desktop')" href="{{parereAttivo.interventi[0].url}}" target="_blank" download><ion-icon name="cloud-download" [style.color]="'#2b94d1'"></ion-icon></a> <a *ngIf="platform.is('desktop')" href="{{parereAttivo.interventi[0].url}}" target="_blank" download><ion-icon name="cloud-download" [style.color]="'#2b94d1'"></ion-icon></a>
</div> </div>
...@@ -94,7 +121,7 @@ ...@@ -94,7 +121,7 @@
<div *ngSwitchCase="'new'"> <div *ngSwitchCase="'new'">
<div class="back"> <div class="back">
<a (click)="apriLista()" tappable title="Torna alla lista dei pareri"> <a (click)="apriLista()" tappable title="{{ 'back_pareri' | translate }}">
<ion-icon name="arrow-round-back" [style.color]="'#2b94d1'"></ion-icon> <ion-icon name="arrow-round-back" [style.color]="'#2b94d1'"></ion-icon>
</a> </a>
</div> </div>
...@@ -102,24 +129,24 @@ ...@@ -102,24 +129,24 @@
<form #form="ngForm" (ngSubmit)="creaParere(form)"> <form #form="ngForm" (ngSubmit)="creaParere(form)">
<div> <div>
<ion-item class="title-question"> <ion-item class="title-question">
<ion-input class="item-no-border" name="title" type="text" placeholder="inserire qui il titolo" ngModel required></ion-input> <ion-input class="item-no-border" name="title" type="text" placeholder="{{ 'inserire_titolo' | translate }}" ngModel required></ion-input>
</ion-item> </ion-item>
</div> </div>
<div> <div>
<ion-item class="question-extended item-no-border"> <ion-item class="question-extended item-no-border">
<ion-textarea name="question" placeholder="inserire qui la richiesta" ngModel required></ion-textarea> <ion-textarea name="question" placeholder="{{ 'inserire_richiesta' | translate }}" ngModel required></ion-textarea>
</ion-item> </ion-item>
</div> </div>
<ion-item class="item-no-border"><h4>Aggiungi Allegato</h4></ion-item> <ion-item class="item-no-border"><h4>{{ 'aggiungi_allegato' | translate }}</h4></ion-item>
<div class="clr"></div> <div class="clr"></div>
<ion-item class="item-no-border"> <ion-item class="item-no-border">
<ion-input id="file" type="file" name="file" ngModel (ionChange)="loadFile();"></ion-input> <ion-input id="file" type="file" name="file" ngModel (ionChange)="loadFile();"></ion-input>
</ion-item> </ion-item>
<div class="send"> <div class="send">
<ion-button type="submit" size="large" [disabled]="form.invalid" expand="block" color="#fcc73d">invia</ion-button> <ion-button type="submit" size="large" [disabled]="form.invalid" expand="block" color="#fcc73d">{{ 'invia' | translate }}</ion-button>
</div> </div>
<div class="undo"> <div class="undo">
<ion-button size="large" expand="block" (click)="apriLista()">annulla</ion-button> <ion-button size="large" expand="block" (click)="apriLista()">{{ 'annulla' | translate }}</ion-button>
</div> </div>
</form> </form>
</div> </div>
...@@ -181,7 +208,7 @@ ...@@ -181,7 +208,7 @@
<ion-footer class="footer-parere" no-border *ngIf="bottoneVisibile"> <ion-footer class="footer-parere" no-border *ngIf="bottoneVisibile">
<div class="foo-button" center> <div class="foo-button" center>
<div class="round-btn"> <div class="round-btn">
<a (click)="createNuovoParere()" tappable title="Richiedi un nuovo parere"> <a (click)="createNuovoParere()" tappable title="{{ 'aggiungi_richiesta' | translate }}">
<ion-icon name="add" [style.color]="'#FFFFFF'"></ion-icon> <ion-icon name="add" [style.color]="'#FFFFFF'"></ion-icon>
</a> </a>
</div> </div>
......
...@@ -13,6 +13,7 @@ import { ErrorResponse } from '../../auth/interface/error-response'; ...@@ -13,6 +13,7 @@ import { ErrorResponse } from '../../auth/interface/error-response';
import { NewRichiestaResponse } from 'src/app/interface/new-richiesta-response'; import { NewRichiestaResponse } from 'src/app/interface/new-richiesta-response';
import { Platform, Events, MenuController } from '@ionic/angular'; import { Platform, Events, MenuController } from '@ionic/angular';
import { DataWithFileUploaded } from './../../interface/data-with-file-uploaded'; import { DataWithFileUploaded } from './../../interface/data-with-file-uploaded';
import { TranslateService } from '@ngx-translate/core';
@Component({ @Component({
selector: 'app-parere', selector: 'app-parere',
...@@ -29,6 +30,7 @@ export class ParerePage implements OnInit { ...@@ -29,6 +30,7 @@ export class ParerePage implements OnInit {
public platform: Platform, public platform: Platform,
public events: Events, public events: Events,
public httpClientDataService: HttpClientDataService, public httpClientDataService: HttpClientDataService,
public translate: TranslateService
) { ) {
this.events.publish('functionCall:startup', null); this.events.publish('functionCall:startup', null);
this.initPage(); this.initPage();
...@@ -36,6 +38,10 @@ export class ParerePage implements OnInit { ...@@ -36,6 +38,10 @@ export class ParerePage implements OnInit {
this.events.subscribe('functionCall:clienteCambiato', eventData => { this.events.subscribe('functionCall:clienteCambiato', eventData => {
this.loadPareri("initial"); this.loadPareri("initial");
}); });
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
} }
initPage() initPage()
...@@ -60,6 +66,7 @@ export class ParerePage implements OnInit { ...@@ -60,6 +66,7 @@ export class ParerePage implements OnInit {
result = {dati: null, file: null}; result = {dati: null, file: null};
this.pareriSelezionati = new Array(); this.pareriSelezionati = new Array();
this.error = ""; this.error = "";
this.titolo = "";
} }
pareri: Richiesta[]; pareri: Richiesta[];
...@@ -69,6 +76,7 @@ export class ParerePage implements OnInit { ...@@ -69,6 +76,7 @@ export class ParerePage implements OnInit {
parere: string; parere: string;
bottoneVisibile: boolean; bottoneVisibile: boolean;
archiviati: boolean; archiviati: boolean;
titolo: string;
cercaPareri() cercaPareri()
{ {
...@@ -83,9 +91,11 @@ export class ParerePage implements OnInit { ...@@ -83,9 +91,11 @@ export class ParerePage implements OnInit {
async loadPareri(fase) async loadPareri(fase)
{ {
var titolo = null;
this.utilService.showLoading(); this.utilService.showLoading();
this.idCliente = AuthService.clienteSelezionato.id; this.idCliente = AuthService.clienteSelezionato.id;
if(fase == "initial") this.parereService.getListaPareri(this.idCliente, this.archiviati).subscribe((res: RichiesteResponse)=>{ if(this.titolo != null && this.titolo != "") titolo = this.titolo;
if(fase == "initial") this.parereService.getListaPareri(this.idCliente, this.archiviati, titolo).subscribe((res: RichiesteResponse)=>{
this.utilService.closeLoading(); this.utilService.closeLoading();
if(res.error){ if(res.error){
this.utilService.presentAlert("Errore", "", res.error, ["OK"]); this.utilService.presentAlert("Errore", "", res.error, ["OK"]);
......
...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular'; ...@@ -7,6 +7,8 @@ import { IonicModule } from '@ionic/angular';
import { SegreteriaPage } from './segreteria.page'; import { SegreteriaPage } from './segreteria.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,7 +21,8 @@ const routes: Routes = [ ...@@ -19,7 +21,8 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes),
TranslateModule
], ],
declarations: [SegreteriaPage] declarations: [SegreteriaPage]
}) })
......
<ion-header class="header-subpage" no-border> <ion-header class="header-subpage" no-border>
<ion-toolbar> <ion-toolbar>
<ion-title class="titolo-sezione-head">la segreteria</ion-title> <ion-title class="titolo-sezione-head">{{ 'segreteria_titolo' | translate }}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
...@@ -26,31 +26,32 @@ ...@@ -26,31 +26,32 @@
</div>--> </div>-->
<div [ngSwitch]="segreteria" ngDefaultControl> <div [ngSwitch]="segreteria" ngDefaultControl>
<ion-item class="selection item-no-border" no-margin no-padding> <ion-item class="selection item-no-border" no-margin style="padding-left: 5px;">
<ion-label>Seleziona la struttura</ion-label> <ion-label>{{ 'seleziona_struttura' | translate }}</ion-label>
<ion-select value="clienteSel" [(ngModel)]="idStrutturaSel" (ionChange)="cambiaStruttura()" no-scroll title="Seleziona una struttura"> <ion-select value="clienteSel" [(ngModel)]="idStrutturaSel" (ionChange)="cambiaStruttura()" no-scroll title="{{ 'seleziona_struttura' | translate }}">
<ion-icon name="arrow-forward"></ion-icon> <ion-icon name="arrow-forward"></ion-icon>
<ion-select-option *ngFor="let struttura of strutture;" value="{{struttura.id}}">{{struttura.denominazione}}</ion-select-option> <ion-select-option *ngFor="let struttura of strutture;" value="{{struttura.id}}">{{struttura.denominazione}}</ion-select-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
<ion-text class="selection-done margin-top"> <ion-text class="selection-done margin-top" style="padding-left: 5px;">
La struttura che hai selezionato è </ion-text> {{ 'struttura_sel' | translate }} </ion-text>
<ion-text class="grigio selection-done" text-wrap> <br/><strong>{{strutturaSel.denominazione}}</strong> <div class="clr"></div>
<ion-text class="grigio selection-done" style="padding-left: 5px;"><strong>{{strutturaSel.denominazione}}</strong>
</ion-text> </ion-text>
<ion-list *ngSwitchCase="'fatture'" ngDefaultControl> <ion-list *ngSwitchCase="'fatture'" ngDefaultControl>
<ion-grid> <ion-grid>
<ion-row class="search-date"> <ion-row class="search-date">
<div *ngIf="platform.is('desktop')"> <div *ngIf="platform.is('desktop')">
<strong>Cerca</strong> da <input type="date" name="calendar" [(ngModel)]="date1" title="Seleziona una data"> a <input type="date" name="calendar" [(ngModel)]="date2" title="Seleziona una data"> <strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} <input type="date" name="calendar" [(ngModel)]="date1" title="{{ 'seleziona_data' | translate }}"> {{ 'a' | translate }} <input type="date" name="calendar" [(ngModel)]="date2" title="{{ 'seleziona_data' | translate }}">
</div> </div>
<div class="float-date" *ngIf="!platform.is('desktop')"> <div class="float-date" *ngIf="!platform.is('desktop')">
<span class="date-text"><strong>Cerca</strong> da </span> <span class="date-text"><strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} </span>
<ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon> <ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon>
<div class="element-date item-no-border date-text"> <div class="element-date item-no-border date-text">
{{date1}} {{date1}}
</div> </div>
<span class="date-text">a</span> <span class="date-text">{{ 'a' | translate }}</span>
<ion-icon floating class="element-date date-icon" name="calendar" (click)="setDateA()"></ion-icon> <ion-icon floating class="element-date date-icon" name="calendar" (click)="setDateA()"></ion-icon>
<div floating class="element-date item-no-border date-text"> <div floating class="element-date item-no-border date-text">
{{date2}} {{date2}}
...@@ -58,15 +59,12 @@ ...@@ -58,15 +59,12 @@
</div> </div>
</ion-row> </ion-row>
<ion-row class="search-date"> <ion-row class="search-date">
<div><strong>Cerca</strong> n° prog. not. <input type="text" name="calendar" [(ngModel)]="nProgNotula" title="Seleziona una data"></div> <div class="riga"><input placeholder="{{ 'cerca_progetto' | translate }}" type="text" name="calendar" [(ngModel)]="nProgNotula" title="{{ 'cerca_progetto' | translate }}" class="cerca-notula"><input placeholder="{{ 'cerca_notula' | translate }}" type="text" name="calendar" [(ngModel)]="nNotula" title="{{ 'cerca_notula' | translate }}" class="cerca-notula">
</ion-row> <ion-button (click)="cercaFatture()" class="search-arrow" title="{{ 'cerca' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward" title="{{ 'cerca' | translate }}"></ion-icon></ion-button></div>
<ion-row class="search-date">
<div><strong>Cerca</strong> n° not. <input type="text" name="calendar" [(ngModel)]="nNotula" title="Seleziona una data">
<ion-button (click)="cercaFatture()" class="search-arrow"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward" title="Cerca fatture"></ion-icon></ion-button></div>
</ion-row> </ion-row>
<ion-row class="search-date" id="buttons" style="display:none"> <ion-row class="search-date" id="buttons" style="display:none">
<div><span class="condividi-text">Condividi documenti</span> <div><span class="condividi-text">{{ 'condividi' | translate }}</span>
<ion-button (click)="condividiFatture()" class="search-arrow" title="Condividi documenti"><ion-icon class="button-icon" slot="icon-only" name="share-alt" title="Condividi documenti"></ion-icon></ion-button></div> <ion-button (click)="condividiFatture()" class="search-arrow" title="{{ 'condividi_fatture' | translate }}"><ion-icon class="button-icon" slot="icon-only" name="share" title="{{ 'condividi_fatture' | translate }}"></ion-icon></ion-button></div>
</ion-row> </ion-row>
<ion-row class="search-date-border"> <ion-row class="search-date-border">
</ion-row> </ion-row>
...@@ -87,25 +85,31 @@ ...@@ -87,25 +85,31 @@
<div class="row-download-special"> <div class="row-download-special">
<div class="group-icon"> <div class="group-icon">
<a *ngIf="platform.is('desktop')" href="{{fattura.urlProgNotula}}" target="_blank" download tappable> <a *ngIf="platform.is('desktop')" href="{{fattura.urlProgNotula}}" target="_blank" download tappable>
<ion-icon name="cloud-download">Progetto</ion-icon> <ion-icon name="cloud-download"></ion-icon>
</a> </a>
<ion-icon name="share-alt" *ngIf="!platform.is('desktop')" (click)="getNotula(fattura.id, fattura.nrProgNotula, true);" target="_blank" download tappable>Progetto</ion-icon> <ion-icon name="share-alt" *ngIf="!platform.is('desktop')" (click)="getNotula(fattura.id, fattura.nrProgNotula, true);" target="_blank" download tappable></ion-icon>
<ion-label>Progetto</ion-label> <ion-label>{{ 'progetto' | translate }}</ion-label>
</div> </div>
<div class="group-icon"> <div class="group-icon">
<a *ngIf="platform.is('desktop') && fattura.nrNotula != null" href="{{fattura.urlNotula}}" target="_blank" download tappable> <a *ngIf="platform.is('desktop') && fattura.nrNotula != null" href="{{fattura.urlNotula}}" target="_blank" download tappable>
<ion-icon name="cloud-download">Notula</ion-icon> <ion-icon name="cloud-download"></ion-icon>
</a> </a>
<ion-icon name="share-alt" *ngIf="!platform.is('desktop') && fattura.nrNotula != null" (click)="getNotula(fattura.id, fattura.nrNotula, false);" target="_blank" download tappable>Notula</ion-icon> <ion-icon name="share-alt" *ngIf="!platform.is('desktop') && fattura.nrNotula != null" (click)="getNotula(fattura.id, fattura.nrNotula, false);" target="_blank" download tappable></ion-icon>
<ion-label *ngIf="fattura.nrNotula != null">Notula</ion-label> <ion-label *ngIf="fattura.nrNotula != null">{{ 'notula' | translate }}</ion-label>
</div> </div>
</div> </div>
<ion-checkbox *ngIf="!platform.is('desktop')" name="privacy" [(ngModel)]="fattura.checked" class="check" (click)="checkSelected(fattura.id)"> </ion-checkbox> <ion-checkbox *ngIf="!platform.is('desktop')" name="privacy" [(ngModel)]="fattura.checked" class="check" (click)="checkSelected(fattura.id)"> </ion-checkbox>
<div class="row-text-special"> <div class="row-text-special">
Progetto Notula n. {{fattura.nrProgNotula}} {{ 'text_progetto' | translate }} {{fattura.nrProgNotula}}
<div class="detail"> <div class="detail">
Data Notula: {{fattura.dataNotula}} - Notula n. {{fattura.nrNotula}} {{ 'text_data_notula' | translate }} {{fattura.dataNotula}}
</div> </div>
<div *ngIf="!platform.is('desktop')" class="detail detail-margin">
{{ 'text_notula' | translate }} {{fattura.nrNotula}}
</div>
<div *ngIf="platform.is('desktop')" class="detail">
{{ 'text_notula' | translate }} {{fattura.nrNotula}}
</div>
</div> </div>
</div> </div>
</ion-list> </ion-list>
...@@ -114,14 +118,14 @@ ...@@ -114,14 +118,14 @@
<ion-list *ngSwitchCase="'estratto'" ngDefaultControl> <ion-list *ngSwitchCase="'estratto'" ngDefaultControl>
<div class="title-infra"> <div class="title-infra">
Estratto conto {{ 'estratto_conto' | translate }}
</div> </div>
</ion-list> </ion-list>
<ion-list *ngSwitchCase="'solleciti'" ngDefaultControl> <ion-list *ngSwitchCase="'solleciti'" ngDefaultControl>
<ion-item> <ion-item>
<h2>Solleciti</h2> <h2>{{ 'solleciti' | translate }}</h2>
</ion-item> </ion-item>
</ion-list> </ion-list>
...@@ -137,19 +141,19 @@ ...@@ -137,19 +141,19 @@
<ion-tab-bar class="footer-tabbar" [(ngModel)]="segreteria" ngDefaultControl> <ion-tab-bar class="footer-tabbar" [(ngModel)]="segreteria" ngDefaultControl>
<ion-tab-button value="preventivi" (click)="redirectTo2p2()"> <ion-tab-button value="preventivi" (click)="redirectTo2p2()">
<ion-icon src="assets/icon/prev-pagam-grigio.svg" class="icon-footer"></ion-icon> <ion-icon src="assets/icon/prev-pagam-grigio.svg" class="icon-footer"></ion-icon>
<ion-label>Prev./Pagam.</ion-label> <ion-label>{{ 'preventivi' | translate }}</ion-label>
</ion-tab-button> </ion-tab-button>
<ion-tab-button value="fatture" (click)="changeSel('fatture')"> <ion-tab-button value="fatture" (click)="changeSel('fatture')">
<ion-icon src="assets/icon/fatture-progetti-bianco.svg" id="icon-fatture" class="icon-footer"></ion-icon> <ion-icon src="assets/icon/fatture-progetti-bianco.svg" id="icon-fatture" class="icon-footer"></ion-icon>
<ion-label id="label-fatture" style="color: white;">Fatture e Progetti</ion-label> <ion-label id="label-fatture" style="color: white;">{{ 'fatture' | translate }}</ion-label>
</ion-tab-button> </ion-tab-button>
<ion-tab-button value="estratto" (click)="downloadEstrattoConto('estratto')"> <ion-tab-button value="estratto" (click)="downloadEstrattoConto('estratto')">
<ion-icon src="assets/icon/estratto-conto-grigio.svg" id="icon-estratto" class="icon-footer"></ion-icon> <ion-icon src="assets/icon/estratto-conto-grigio.svg" id="icon-estratto" class="icon-footer"></ion-icon>
<ion-label id="label-estratto">Estratto Conto</ion-label> <ion-label id="label-estratto">{{ 'estratto_conto' | translate }}</ion-label>
</ion-tab-button> </ion-tab-button>
<ion-tab-button value="solleciti" (click)="changeSel('solleciti')"> <ion-tab-button value="solleciti" (click)="changeSel('solleciti')">
<ion-icon src="assets/icon/solleciti-grigio.svg" id="icon-solleciti" class="icon-footer"></ion-icon> <ion-icon src="assets/icon/solleciti-grigio.svg" id="icon-solleciti" class="icon-footer"></ion-icon>
<ion-label id="label-solleciti">Solleciti</ion-label> <ion-label id="label-solleciti">{{ 'solleciti' | translate }}</ion-label>
</ion-tab-button> </ion-tab-button>
</ion-tab-bar> </ion-tab-bar>
</ion-tabs> </ion-tabs>
......
.header .col {
background-color:lightgrey;
}
.col {
border: solid 1px grey;
border-bottom-style: none;
border-right-style: none;
}
.col:last-child {
border-right: solid 1px grey;
}
.row:last-child .col {
border-bottom: solid 1px grey;
}
.row:nth-child(odd){
background-color: #99ff99;
}
\ No newline at end of file
...@@ -12,7 +12,8 @@ import { SegreteriaService } from './../../service/segreteria.service'; ...@@ -12,7 +12,8 @@ import { SegreteriaService } from './../../service/segreteria.service';
import { ErrorResponse } from '../../auth/interface/error-response'; import { ErrorResponse } from '../../auth/interface/error-response';
import { Platform, Events } from '@ionic/angular'; import { Platform, Events } from '@ionic/angular';
import { DatePicker } from '@ionic-native/date-picker/ngx'; import { DatePicker } from '@ionic-native/date-picker/ngx';
import { BrowserStack } from 'protractor/built/driverProviders'; import { TranslateService } from '@ngx-translate/core';
import { environment } from '../../../environments/environment';
@Component({ @Component({
selector: 'app-segreteria', selector: 'app-segreteria',
...@@ -28,7 +29,8 @@ export class SegreteriaPage implements OnInit { ...@@ -28,7 +29,8 @@ export class SegreteriaPage implements OnInit {
public platform: Platform, public platform: Platform,
private datePicker: DatePicker, private datePicker: DatePicker,
public httpClientDataService: HttpClientDataService, public httpClientDataService: HttpClientDataService,
public events: Events public events: Events,
public translate: TranslateService
) )
{ {
this.events.publish('functionCall:startup', null); this.events.publish('functionCall:startup', null);
...@@ -40,6 +42,10 @@ export class SegreteriaPage implements OnInit { ...@@ -40,6 +42,10 @@ export class SegreteriaPage implements OnInit {
this.events.subscribe('functionCall:clienteCambiato', eventData => { this.events.subscribe('functionCall:clienteCambiato', eventData => {
this.loadData(); this.loadData();
}); });
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
} }
loadData() loadData()
...@@ -58,6 +64,7 @@ export class SegreteriaPage implements OnInit { ...@@ -58,6 +64,7 @@ export class SegreteriaPage implements OnInit {
nProgNotula: string; nProgNotula: string;
nNotula: string; nNotula: string;
fattureSel: Array<Pair>; fattureSel: Array<Pair>;
tipoStruttura: string;
initPage() initPage()
{ {
...@@ -73,6 +80,7 @@ export class SegreteriaPage implements OnInit { ...@@ -73,6 +80,7 @@ export class SegreteriaPage implements OnInit {
this.nProgNotula = ""; this.nProgNotula = "";
this.nNotula = ""; this.nNotula = "";
this.fattureSel = new Array(); this.fattureSel = new Array();
this.tipoStruttura = environment.struttura;
} }
...@@ -264,7 +272,7 @@ export class SegreteriaPage implements OnInit { ...@@ -264,7 +272,7 @@ export class SegreteriaPage implements OnInit {
loadStrutture() loadStrutture()
{ {
//this.utilService.showLoading(); //this.utilService.showLoading();
this.segreteriaService.getStrutture(AuthService.clienteSelezionato.id).subscribe((res: StruttureResponse)=>{ this.segreteriaService.getStrutture(AuthService.clienteSelezionato.id, this.tipoStruttura).subscribe((res: StruttureResponse)=>{
//this.utilService.closeLoading(); //this.utilService.closeLoading();
this.strutture = res.strutture; this.strutture = res.strutture;
if(this.strutture.length > 0) if(this.strutture.length > 0)
......
...@@ -34,7 +34,7 @@ export class IntervisteService { ...@@ -34,7 +34,7 @@ export class IntervisteService {
getTopic(idCliente, idRichiesta, dataDa, dataA): Observable<RichiesteResponse> getTopic(idCliente, idRichiesta, dataDa, dataA): Observable<RichiesteResponse>
{ {
var richiesta = this.creaGetListaRichiesta(idCliente, idRichiesta, null, dataDa, dataA, null); var richiesta = this.creaGetListaRichiesta(idCliente, idRichiesta, null, dataDa, dataA, null, null);
var param = this.encodeBody(richiesta); var param = this.encodeBody(richiesta);
return this.httpClient.post<RichiesteResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/topic.do', param, this.httpClientDataService.httpOptionsJson) return this.httpClient.post<RichiesteResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/topic.do', param, this.httpClientDataService.httpOptionsJson)
.pipe( .pipe(
...@@ -53,11 +53,11 @@ export class IntervisteService { ...@@ -53,11 +53,11 @@ export class IntervisteService {
); );
} }
getListaTopics(idCliente: number, dataDa, dataA, archiviati: boolean): Observable<RichiesteResponse> getListaTopics(idCliente: number, dataDa, dataA, archiviati: boolean, titolo: string): Observable<RichiesteResponse>
{ {
var limite = null; var limite = null;
if(dataDa == null && dataA == null) limite = 10; if(dataDa == null && dataA == null) limite = 10;
var richiesta = this.creaGetListaRichiesta(idCliente, null, limite, dataDa, dataA, archiviati); var richiesta = this.creaGetListaRichiesta(idCliente, null, limite, dataDa, dataA, archiviati, titolo);
var param = this.encodeBody(richiesta); var param = this.encodeBody(richiesta);
return this.httpClient.post<RichiesteResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/richieste.do', param, this.httpClientDataService.httpOptionsJson) return this.httpClient.post<RichiesteResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/richieste.do', param, this.httpClientDataService.httpOptionsJson)
.pipe( .pipe(
...@@ -76,7 +76,7 @@ export class IntervisteService { ...@@ -76,7 +76,7 @@ export class IntervisteService {
); );
} }
creaGetListaRichiesta(id, idRichiesta, limite, dataDa, dataA, archiviati): RichiesteRequest creaGetListaRichiesta(id, idRichiesta, limite, dataDa, dataA, archiviati, titolo): RichiesteRequest
{ {
var request:RichiesteRequest; var request:RichiesteRequest;
var pair:Pair; var pair:Pair;
...@@ -111,6 +111,16 @@ export class IntervisteService { ...@@ -111,6 +111,16 @@ export class IntervisteService {
pairs.push(pair); pairs.push(pair);
} }
if(titolo != null)
{
pair = {
key: "titolo",
value: titolo,
type: "string"
}
pairs.push(pair);
}
pair = { pair = {
key: "tipo", key: "tipo",
value: "DOMANDA", value: "DOMANDA",
......
...@@ -34,7 +34,7 @@ export class ParereService { ...@@ -34,7 +34,7 @@ export class ParereService {
}; };
} }
creaRichiesta(id, limite, dataDa, dataA, archiviati): RichiesteRequest creaRichiesta(id, limite, dataDa, dataA, archiviati, titolo): RichiesteRequest
{ {
var request:RichiesteRequest; var request:RichiesteRequest;
var pair:Pair; var pair:Pair;
...@@ -69,6 +69,16 @@ export class ParereService { ...@@ -69,6 +69,16 @@ export class ParereService {
pairs.push(pair); pairs.push(pair);
} }
if(titolo != null)
{
pair = {
key: "titolo",
value: titolo,
type: "string"
}
pairs.push(pair);
}
pair = { pair = {
key: "tipo", key: "tipo",
value: "PARERE", value: "PARERE",
...@@ -182,9 +192,9 @@ export class ParereService { ...@@ -182,9 +192,9 @@ export class ParereService {
); );
} }
getListaPareri(idCliente: string, archiviati: boolean): Observable<RichiesteResponse> getListaPareri(idCliente: string, archiviati: boolean, titolo: string): Observable<RichiesteResponse>
{ {
var richiesta = this.creaRichiesta(idCliente, 10, null, null, archiviati); var richiesta = this.creaRichiesta(idCliente, 10, null, null, archiviati, titolo);
var param = this.encodeBody(richiesta); var param = this.encodeBody(richiesta);
return this.httpClient.post<RichiesteResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/richieste.do', param, this.httpClientDataService.httpOptionsJson) return this.httpClient.post<RichiesteResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/richieste.do', param, this.httpClientDataService.httpOptionsJson)
.pipe( .pipe(
......
...@@ -126,9 +126,9 @@ export class SegreteriaService { ...@@ -126,9 +126,9 @@ export class SegreteriaService {
); );
} }
getStrutture(idUser) getStrutture(idUser, tipoStruttura)
{ {
var param = UtilService.encodeBody({idcliente: idUser}); var param = UtilService.encodeBody({idcliente: idUser, tipostruttura: tipoStruttura});
return this.httpClient.post<StruttureResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/strutture.do', param, this.httpClientDataService.httpOptions) return this.httpClient.post<StruttureResponse>(this.httpClientDataService.BASE_ADDRESS+'/intranet/strutture.do', param, this.httpClientDataService.httpOptions)
.pipe( .pipe(
catchError(this.handleError), catchError(this.handleError),
......
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { Pair } from './../interface/pair'; import { Pair } from './../interface/pair';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { LoadingController, AlertController, Platform } from '@ionic/angular'; import { LoadingController, AlertController, Platform, Events } from '@ionic/angular';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { File} from '@ionic-native/file/ngx'; import { File} from '@ionic-native/file/ngx';
import { FileOpener } from '@ionic-native/file-opener/ngx'; import { FileOpener } from '@ionic-native/file-opener/ngx';
import { Router } from "@angular/router"; import { Router } from "@angular/router";
import { SocialSharing } from '@ionic-native/social-sharing/ngx'; import { SocialSharing } from '@ionic-native/social-sharing/ngx';
import { TranslateService } from '@ngx-translate/core';
import { Storage } from '@ionic/storage';
const delay = ms => new Promise(res => setTimeout(res, ms)); const delay = ms => new Promise(res => setTimeout(res, ms));
...@@ -28,13 +29,17 @@ export class UtilService { ...@@ -28,13 +29,17 @@ export class UtilService {
private fileOpener: FileOpener, private fileOpener: FileOpener,
private router: Router, private router: Router,
public platform: Platform, public platform: Platform,
private socialSharing: SocialSharing private socialSharing: SocialSharing,
private storage: Storage,
public translate: TranslateService,
public events: Events
) { ) {
this.loaders = new Array(); this.loaders = new Array();
this.loader = this.loadingCtrl.create({ this.loader = this.loadingCtrl.create({
message: "Please wait...", message: "Please wait...",
}); });
this.loaders.push(this.loader); this.loaders.push(this.loader);
this.languageSelected = "";
} }
async presentAlert(headerPar, subtitlePar, messagePar, buttonsPar) { async presentAlert(headerPar, subtitlePar, messagePar, buttonsPar) {
...@@ -50,6 +55,33 @@ export class UtilService { ...@@ -50,6 +55,33 @@ export class UtilService {
loader; loader;
loaders: Array<any>; loaders: Array<any>;
private languageSelected:string;
loadLingua()
{
this.storage.get("lingua").then((data)=>{
if(data != null)
{
this.languageSelected = data;
this.translate.setDefaultLang(data);
this.translate.use(data);
this.events.publish('functionCall:linguaCambiata', null);
}
});
}
setLingua(lingua: string)
{
this.languageSelected = lingua;
this.storage.set("lingua",lingua).then((successData)=>{
console.log("Salvata lingua: "+lingua);
});
}
getLingua():string
{
return this.languageSelected;
}
async showLoading() { async showLoading() {
this.loader = await this.loadingCtrl.create({ this.loader = await this.loadingCtrl.create({
...@@ -109,6 +141,18 @@ export class UtilService { ...@@ -109,6 +141,18 @@ export class UtilService {
return date; return date;
} }
getLanguageList() : Array<Pair>
{
var langs = new Array<Pair>();
let lang : Pair = {
'key' :'it',
'value': 'italiano',
'type': ''
}
langs.push(lang);
return langs;
}
static getMIMEtype(extn){ static getMIMEtype(extn){
let ext=extn.toLowerCase(); let ext=extn.toLowerCase();
let MIMETypes={ let MIMETypes={
......
{
"azienda_selezionata":"Azienda Selezionata:",
"menu_principale":"Main Menu",
"lingua_selezionata":"Lingua Selezionata:",
"seleziona_lingua":"Seleziona una lingua",
"main_page":"SCHERMATA INIZIALE",
"menu_documenti":"I MIEI DOCUMENTI",
"menu_interviste":"DOMANDA / RISPOSTA",
"menu_pareri":"VOGLIO UN PARERE",
"menu_segreteria":"LA SEGRETERIA",
"menu_change":"CAMBIO PASSWORD",
"documenti":"I miei documenti",
"pareri":"Voglio un parere",
"interviste":"Domanda / Risposta",
"segreteria":"La segreteria",
"uscita":"Uscita",
"apri_menu":"Apri il menu",
"titolo_documenti":"i miei documenti",
"cerca":"Cerca",
"da":"da",
"a":"a",
"seleziona_data":"Seleziona una data",
"titolo":"titolo",
"ricerca_titolo":"Ricerca per titolo",
"cerca_documenti":"Cerca documenti",
"condividi":"Condividi",
"condividi_doc":"Condividi documenti",
"condividi_fatture":"Condividi fatture",
"scarica_doc":"Scarica documento",
"condividi_documento":"Condividi documento",
"interviste_titolo":"domanda / risposta",
"visualizza_archiviati":"Visualizza archiviati",
"archivia_interviste":"Archivia Domande/Risposte",
"undo_archivio_interviste":"Togli Domande/Risposte dall'archivio",
"riattiva_interviste":"Riattiva Domande/Risposte",
"visualizza_dettagli":"Visualizza dettagli",
"aggiorna":"Aggiorna",
"back_interviste":"Torna alla lista di domande/risposte",
"io":"io",
"inserire_titolo":"inserire qui il titolo",
"inserire_domanda":"inserire qui la domanda",
"inserire_richiesta":"inserire qui la richiesta",
"aggiungi_allegato":"Aggiungi Allegato",
"invia":"invia",
"annulla":"annulla",
"digita_msg":"Digita un messaggio",
"inserisci_intervento":"Inserisci intervento",
"inserisci_argomento":"Aggiungi argomento/intervento",
"parere_titolo":"voglio un parere",
"archivia_pareri":"Archivia Pareri",
"undo_archivio_pareri":"Togli Pareri dall'archivio",
"riattiva_pareri":"Riattiva Pareri",
"back_pareri":"Torna alla lista dei pareri",
"scarica_allegato":"Scarica allegato",
"aggiungi_richiesta":"Richiedi un nuovo parere",
"segreteria_titolo":"la segreteria",
"seleziona_struttura":"Seleziona una struttura",
"struttura_sel":"La struttura che hai selezionato è",
"cerca_progetto":"Cerca n° progetto notula",
"cerca_notula":"Cerca n° notula",
"progetto":"Progetto",
"notula":"Notula",
"text_progetto":"Progetto Notula n.",
"text_notula":"Notula n.",
"text_data_notula":"Data Notula:",
"estratto_conto":"Estratto conto",
"solleciti":"Solleciti",
"preventivi":"Prev./Pagam.",
"fatture":"Fatture e Progetti",
"change_password":"Cambia Password",
"old_pwd":"vecchia password",
"new_pwd":"nuova password",
"repeat_new_pwd":"ripeti nuova password",
"back_login":"Torna alla login",
"reset_pwd":"Reset Password",
"email":"email",
"prenota":"Prenota subito la tua",
"business_call":"Business Call",
"nome":"Nome",
"cognome":"Cognome",
"cellulare":"Cellulare",
"indirizzo_email":"Indirizzo email",
"lingua":"Lingua",
"testo_libero":"Aggiungi, se desideri, del testo libero",
"preso_visione":"Ho preso visione del documento sulla",
"privacy":"privacy policy",
"inviaM":"INVIA",
"campi_obbligatori":"Tutti i campi seguiti da * sono obbligatori",
"username":"Inserisci il tuo username",
"password":"Password",
"accedi":"ACCEDI",
"lost_password":"Hai perso la password?",
"hai_account":"Non hai ancora un account?",
"prenota_subito":"Prenota subito",
"tua":"la tua",
"consulenti":"I nostro consulenti pianificheranno una Business Call",
"gratuita":"gratuita",
"su_misura":"su misura per te e la tua azienda",
"prenota_app":"PRENOTA IL TUO APPUNTAMENTO!",
"refresh":"Aggiorna",
"apri":"Apri"
}
\ No newline at end of file
...@@ -2,5 +2,6 @@ export const environment = { ...@@ -2,5 +2,6 @@ export const environment = {
production: true, production: true,
BASE_ADDRESS: 'http://5.8.104.230:8080/stman', BASE_ADDRESS: 'http://5.8.104.230:8080/stman',
P2PTokenUrl: "https://www.2p2.it/auth-request", P2PTokenUrl: "https://www.2p2.it/auth-request",
P2PSingleSignOnUrl: "https://www.2p2.it/?token=" P2PSingleSignOnUrl: "https://www.2p2.it/?token=",
struttura:'2p2'
}; };
...@@ -7,7 +7,8 @@ export const environment = { ...@@ -7,7 +7,8 @@ export const environment = {
BASE_ADDRESS: 'http://aimsviluppo.aimconsulting.it:8085/stman', BASE_ADDRESS: 'http://aimsviluppo.aimconsulting.it:8085/stman',
//BASE_ADDRESS: 'http://localhost:8080/stman', //BASE_ADDRESS: 'http://localhost:8080/stman',
P2PTokenUrl: "https://www.2p2.it/auth-request", P2PTokenUrl: "https://www.2p2.it/auth-request",
P2PSingleSignOnUrl: "https://www.2p2.it/?token=" P2PSingleSignOnUrl: "https://www.2p2.it/?token=",
struttura:'2p2'
}; };
......
...@@ -362,6 +362,8 @@ strong { ...@@ -362,6 +362,8 @@ strong {
.button-icon .button-icon
{ {
color: #000000; color: #000000;
width: 24px;
height: 24px;
} }
.button-date .button-date
...@@ -483,6 +485,7 @@ strong { ...@@ -483,6 +485,7 @@ strong {
} }
.contenitore-home { .contenitore-home {
font-family: 'futura-pt', sans-serif;
@media (max-width: 991px) { @media (max-width: 991px) {
max-width: 95%; max-width: 95%;
} }
...@@ -505,13 +508,16 @@ strong { ...@@ -505,13 +508,16 @@ strong {
margin-left: 20px; margin-left: 20px;
} }
.box { .box {
@media (min-width: 360px) { @media (min-width: 380px) {
width: 140px; width: 148px;
} }
@media (max-width: 360px) { @media (max-width: 349px) {
width: 120px; width: 120px;
} }
margin: 5px 10px 5px 5px; @media (max-width: 379px) and (min-width: 350px) {
width: 134px;
}
margin: 5px 17px 5px 5px;
border: 1px solid $grigio-lite; border: 1px solid $grigio-lite;
-webkit-box-shadow: 0px 3px 4px 0px rgba(184,184,184,1); -webkit-box-shadow: 0px 3px 4px 0px rgba(184,184,184,1);
-moz-box-shadow: 0px 3px 4px 0px rgba(184,184,184,1); -moz-box-shadow: 0px 3px 4px 0px rgba(184,184,184,1);
...@@ -541,6 +547,8 @@ strong { ...@@ -541,6 +547,8 @@ strong {
padding: 15px 5px; padding: 15px 5px;
min-height: 42px; min-height: 42px;
height: 84px; height: 84px;
font-family: 'futura-pt', sans-serif;
color: $grigio;
} }
} }
} }
...@@ -555,6 +563,7 @@ strong { ...@@ -555,6 +563,7 @@ strong {
{ {
--border-color: transparent!important; --border-color: transparent!important;
color: $bianco; color: $bianco;
font-family: 'futura-pt', sans-serif;
} }
.item-border-grey .item-border-grey
...@@ -562,6 +571,7 @@ strong { ...@@ -562,6 +571,7 @@ strong {
//height: 50px; //height: 50px;
//font-size: 12px; //font-size: 12px;
color: $bianco; color: $bianco;
font-family: 'futura-pt', sans-serif;
//margin-right: auto; //margin-right: auto;
} }
...@@ -600,12 +610,20 @@ ion-menu{ ...@@ -600,12 +610,20 @@ ion-menu{
font-weight: bold; font-weight: bold;
text-align:left; text-align:left;
color: $bianco; color: $bianco;
font-family: 'futura-pt', sans-serif;
}
.label-border
{
font-family: 'futura-pt', sans-serif;
--ion-font-family: 'futura-pt', sans-serif;
} }
.row-results { .row-results {
padding: 10px 0px; padding: 10px 0px;
margin: 5px 0px; margin: 5px 0px;
border-bottom: 1px solid $grigio-lite; border-bottom: 1px solid $grigio-lite;
font-family: 'futura-pt', sans-serif;
//overflow: hidden; //overflow: hidden;
.check { .check {
float: left; float: left;
...@@ -626,12 +644,32 @@ ion-menu{ ...@@ -626,12 +644,32 @@ ion-menu{
ion-icon { ion-icon {
color: #2b94d1; color: #2b94d1;
width: 30px; width: 30px;
height: 30px;
} }
} }
.row-download-special { .row-download-special {
float: right; float: right;
overflow: hidden; overflow: hidden;
font-family: 'futura-pt', sans-serif;
.group-icon2
{
text-align: center;
display: inline-block;
margin-right: 5px;
ion-label {
font-size: 14px;
}
ion-icon {
margin-top: 7px;
height: 25px;
color:#515151;
--color: #515151;
width: 45px;
display: block;
}
}
.group-icon { .group-icon {
text-align: center; text-align: center;
display: inline-block; display: inline-block;
...@@ -652,6 +690,9 @@ ion-menu{ ...@@ -652,6 +690,9 @@ ion-menu{
.detail { .detail {
font-size: 12px; font-size: 12px;
} }
.detail-margin {
margin-left: 33px;
}
} }
} }
} }
...@@ -1000,18 +1041,40 @@ ion-menu{ ...@@ -1000,18 +1041,40 @@ ion-menu{
.search-date { .search-date {
font-size: 13px; font-size: 13px;
padding-bottom: 15px; padding-bottom: 10px;
margin-bottom: 5px; margin-bottom: 5px;
width: 100%;
font-family: 'futura-pt', sans-serif;
.riga{
width: 100%;
}
.text{
font-size: 15px;
}
.check { .check {
float: left; float: left;
margin-right: 10px; margin-right: 10px;
} }
.cerca-notula
{
margin-right: 10px;
width: 150px;
}
.cerca-titolo
{
margin-left: 10px;
width: 150px;
@media (max-width: 500px)
{
margin-left: 0px;
}
}
input[type=input] { input[type=input] {
font-size: 15px; font-size: 15px;
display: inline-block; display: inline-block;
border: none; border: none;
border-bottom: 1px solid $grigio-superlite; border-bottom: 1px solid $grigio-superlite;
width: 87px; width: 50px;
} }
.search-arrow { .search-arrow {
margin-left: 10px; margin-left: 10px;
...@@ -1021,6 +1084,9 @@ ion-menu{ ...@@ -1021,6 +1084,9 @@ ion-menu{
border: 0px; border: 0px;
height: 24px; height: 24px;
width: 41px; width: 41px;
float: right;
font-size: 0px;
--border-radius:0px;
} }
.condividi-text{ .condividi-text{
font-size: 18px; font-size: 18px;
...@@ -1034,6 +1100,10 @@ ion-menu{ ...@@ -1034,6 +1100,10 @@ ion-menu{
{ {
margin-block-start: 7px; margin-block-start: 7px;
} }
.float-date
{
margin-bottom: 5px;
}
} }
.input-intervento .input-intervento
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment