Commit c729968d by Matteo

Ultima release, funzionante su Android

parent 6bcfc6e3
......@@ -49,6 +49,12 @@
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<allow-navigation href="*" />
<config-file parent="NSAppTransportSecurity" platform="ios" target="*-Info.plist">
<dict>
<key>NSAllowsArbitraryLoads</key>
<true />
</dict>
</config-file>
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
<icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
......
......@@ -2,10 +2,10 @@ import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{ path: '', loadChildren: './pages/home/home.module#HomePageModule' },
{ path: '', redirectTo: 'login', pathMatch: 'full' },
{ path: 'home', loadChildren: './pages/home/home.module#HomePageModule' },
{ path: 'login', loadChildren: './auth/pages/login/login.module#LoginPageModule' },
{ path: 'reset', loadChildren: './auth/pages/reset/reset.module#ResetPageModule' },
{ path: 'documenti', loadChildren: './pages/documenti/documenti.module#DocumentiPageModule'},
{ path: 'reset', loadChildren: './auth/pages/reset/reset.module#ResetPageModule' },
{ path: 'businesscall', loadChildren: './pages/businesscall/businesscall.module#BusinesscallPageModule' },
{ path: 'privacy', loadChildren: './pages/privacy/privacy.module#PrivacyPageModule' }
......
......@@ -30,8 +30,8 @@ export class AppComponent {
async initializeApp() {
this.utilService.loadLingua();
var state = await this.authService.syncIsLoggedIn();
if (!state) {
this.router.navigate(['login']);
if (state) {
this.router.navigate(['home']);
}
this.platform.ready().then(() => {
this.statusBar.styleDefault();
......
......@@ -24,7 +24,7 @@
</ion-item>
</div>
<div padding>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">{{ 'change_password' | translate }}</ion-button>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block" class="form-button giallo">{{ 'change_password' | translate }}</ion-button>
</div>
</ion-col>
</ion-row>
......
......@@ -45,9 +45,8 @@ export class ChangePwdPage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di cambio password", ["OK"]);
var text = "Errore durante la procedura di cambio password";
this.utilService.stampaErrore(text, error);
});
});
}
......
......@@ -60,15 +60,14 @@ export class LoginPage implements OnInit {
}
else
{
this.router.navigateByUrl('');
this.router.navigateByUrl('home');
this.events.publish('functionCall:startup', null);
}
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di login", ["OK"]);
var text = "Errore durante la procedura di login";
this.utilService.stampaErrore(text, error);
}
);
}
......
......@@ -30,7 +30,7 @@
</ion-item>
</div>
<div padding>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">{{ 'reset_pwd' | translate }}</ion-button>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block" class="form-button giallo">{{ 'reset_pwd' | translate }}</ion-button>
</div>
</ion-col>
</ion-row>
......
......@@ -38,9 +38,8 @@ export class ResetPage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di reset password", ["OK"]);
var text = "Errore durante la procedura di reset password";
this.utilService.stampaErrore(text, error);
});
}
......
......@@ -6,13 +6,13 @@
<ion-content>
<div class="contenitore-home">
<div class="central-doc">
<div class="central-doc grigio">
<ion-grid>
<ion-row class="search-date">
<div *ngIf="platform.is('desktop')">
<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 class="float-date" *ngIf="!platform.is('desktop')">
<ion-row class="float-date" *ngIf="!platform.is('desktop')">
<span class="date-text"><strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} </span>
<ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon>
<div class="element-date item-no-border date-text">
......@@ -23,10 +23,10 @@
<div floating class="element-date item-no-border date-text">
{{date2}}
</div>
</div>
</ion-row>
</ion-row>
<ion-row class="search-date">
<span class="riga"><strong>{{ 'cerca' | translate }}</strong> {{ 'titolo' | translate }} <input type="text" name="calendar" [(ngModel)]="titolo" title="{{ 'ricerca_titolo' | translate }}">
<span class="riga"><strong>{{ 'cerca' | translate }}</strong> {{ 'titolo' | translate }} <input type="text" name="calendar" [(ngModel)]="titolo" title="{{ 'ricerca_titolo' | translate }}" class="cerca-titolo-doc">
<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 class="search-date" id="buttonsDoc" style="display:none">
......
......@@ -159,9 +159,8 @@ export class DocumentiPage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la richiesta dei documenti", ["OK"]);
var text = "Errore durante la richiesta di documenti";
this.utilService.stampaErrore(text, error);
});
}
......
......@@ -75,15 +75,15 @@
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="menu-content">
<ion-content class="menu-content label-border">
<ion-item class="item-border-grey">
<ion-label class="label-border">{{ 'azienda_selezionata' | translate }}</ion-label>
<ion-label>{{ '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-option *ngFor="let cliente of clienti; let i=index;" value="{{cliente.id}}">{{cliente.denominazione}}</ion-select-option>
</ion-select>
</ion-item>
<ion-item class="item-border-grey">
<ion-label class="label-border">{{ 'lingua_selezionata' | translate }}</ion-label>
<ion-item class="item-border-grey label-border">
<ion-label>{{ '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>
......
......@@ -4,7 +4,7 @@ import { HomePage } from './home.page';
const routes: Routes = [
{
path: 'home',
path: '',
component: HomePage,
children: [
{
......
<ion-content class="nothing">
<div class="contenitore-home">
<div class="central-home">
<div tappable class="box">
<div tappable class="icon" (click)="apriPagina('documenti')">
<img src="assets/img/consulto-documenti.svg" (click)="apriPagina('documenti')" tappable/>
</div>
<div tappable class="section-title" (click)="apriPagina('documenti')">
{{ 'documenti' | translate }}
</div>
</div>
<div class="box" tappable>
<div class="icon" tappable>
<img src="assets/img/chiedo-parere.svg" (click)="apriPagina('pareri')" tappable/>
</div>
<div class="section-title" (click)="apriPagina('pareri')" tappable>
{{ 'pareri' | translate }}
</div>
</div>
<div class="box" tappable>
<div class="icon" tappable>
<img src="assets/img/domande-risposte.svg" (click)="apriPagina('interviste')" tappable/>
</div>
<div class="section-title" (click)="apriPagina('interviste')" tappable>
{{ 'interviste' | translate }}
</div>
</div>
<div class="box" tappable>
<div class="icon" tappable>
<img src="assets/img/segreteria.svg" (click)="apriPagina('segreteria')" tappable/>
<div tappable class="box">
<div tappable class="icon" (click)="apriPagina('documenti')">
<img src="assets/img/consulto-documenti.svg" (click)="apriPagina('documenti')" tappable/>
</div>
<div tappable class="section-title" (click)="apriPagina('documenti')">
{{ 'documenti' | translate }}
</div>
</div>
<div class="section-title" (click)="apriPagina('segreteria')" tappable>
{{ 'segreteria' | translate }}
<div class="dispari box" tappable>
<div class="icon" tappable>
<img src="assets/img/chiedo-parere.svg" (click)="apriPagina('pareri')" tappable/>
</div>
<div class="section-title" (click)="apriPagina('pareri')" tappable>
{{ 'pareri' | translate }}
</div>
</div>
</div>
<!--
<div class="box" tappable>
<div class="icon" tappable>
<img src="../../../assets/img/leggo-news.svg" (click)="apriPagina('news')" tappable/>
<img src="assets/img/domande-risposte.svg" (click)="apriPagina('interviste')" tappable/>
</div>
<div class="section-title" (click)="apriPagina('news')" tappable>
Novità
<div class="section-title" (click)="apriPagina('interviste')" tappable>
{{ 'interviste' | translate }}
</div>
</div>
<div class="box" tappable>
<div class="dispari box" tappable>
<div class="icon" tappable>
<img src="assets/img/verifico-reports.svg" (click)="apriPagina('bi')" tappable/>
<img src="assets/img/segreteria.svg" (click)="apriPagina('segreteria')" tappable/>
</div>
<div class="section-title" (click)="apriPagina('segreteria')" tappable>
{{ 'segreteria' | translate }}
</div>
<div class="section-title" (click)="apriPagina('bi')" tappable>
I miei risultati
</div>
<!--
<div class="box" tappable>
<div class="icon" tappable>
<img src="../../../assets/img/leggo-news.svg" (click)="apriPagina('news')" tappable/>
</div>
<div class="section-title" (click)="apriPagina('news')" tappable>
Novità
</div>
</div>
</div>-->
<div class="box" tappable>
<div class="icon" tappable>
<img src="assets/img/verifico-reports.svg" (click)="apriPagina('bi')" tappable/>
</div>
<div class="section-title" (click)="apriPagina('bi')" tappable>
I miei risultati
</div>
</div>-->
</div>
</div>
</ion-content>
......@@ -27,10 +27,10 @@
<div *ngSwitchCase="'lista'">
<ion-grid>
<ion-row class="search-date">
<div *ngIf="platform.is('desktop')">
<div *ngIf="platform.is('desktop')" class="grigio">
<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 class="float-date" *ngIf="!platform.is('desktop')">
<ion-row class="float-date" *ngIf="!platform.is('desktop')" class="grigio">
<span class="date-text"><strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} </span>
<ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon>
<div class="element-date item-no-border date-text">
......@@ -41,24 +41,27 @@
<div floating class="element-date item-no-border date-text">
{{date2}}
</div>
</ion-row>
<div>
<input *ngIf="!platform.is('desktop')" type="text" name="calendar" [(ngModel)]="titolo" placeholder="Cerca titolo" title="{{ 'cerca' | translate }}" class="cerca-titolo-cel">
<input *ngIf="platform.is('desktop')" type="text" name="calendar" [(ngModel)]="titolo" placeholder="Cerca titolo" title="{{ 'cerca' | translate }}" class="cerca-titolo">
</div>
<div><input type="text" name="calendar" [(ngModel)]="titolo" placeholder="Cerca titolo" title="{{ 'cerca' | translate }}" class="cerca-titolo"></div>
</ion-row>
<ion-row class="date-div">
<div class="search-date float-date riga">
<ion-checkbox name="privacy" [(ngModel)]="archiviati" class="check"> </ion-checkbox>
<ion-label><span class="text">{{ 'visualizza_archiviati' | translate }}</span></ion-label>
<ion-label class="archivio-text"><span class="text">{{ 'visualizza_archiviati' | translate }}</span></ion-label>
<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>
<div class="clr"></div>
<span class="item-no-border riga" id="buttonsInterviste" style="display:none">
<div *ngIf="!archiviati" class="text">
{{ 'archivia_interviste' | translate }}
<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>
<ion-button (click)="archiviaInterviste(true)" class="search-arrow" title="{{ 'archivia_interviste' | translate }}"><ion-icon class="button-icon-archivia" slot="icon-only" name="archive" title="{{ 'archivia_interviste' | translate }}"></ion-icon></ion-button>
</div>
<div *ngIf="archiviati" class="text">
{{ 'undo_archivio_interviste' | translate }}
<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>
<ion-button (click)="archiviaInterviste(false)" class="search-arrow" title="{{ 'riattiva_interviste' | translate }}"><ion-icon class="button-icon-archivia" slot="icon-only" name="undo" title="{{ 'riattiva_interviste' | translate }}"></ion-icon></ion-button>
</div>
</span>
</div>
......@@ -79,7 +82,7 @@
</div>
</div>-->
<div class="row-download-special">
<div class="richieste-button group-icon2">
<div class="richieste-button group-icon3">
<a class="select" (click)="loadTopics('after')" tappable title="{{ 'aggiorna' | translate }}">
<ion-icon name="refresh-circle"></ion-icon>
</a>
......@@ -114,10 +117,10 @@
<div *ngSwitchCase="'dettaglio'">
<ion-grid>
<ion-row class="search-date">
<div *ngIf="platform.is('desktop')">
<div *ngIf="platform.is('desktop')" class="grigio riga">
<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 class="float-date" *ngIf="!platform.is('desktop')">
<ion-row class="float-date" *ngIf="!platform.is('desktop')" class="grigio riga" justify-content-center>
<span class="date-text"><strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} </span>
<ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon>
<div class="element-date item-no-border date-text">
......@@ -129,7 +132,7 @@
{{date2}}
</div>
<ion-button (click)="caricaTopic()" class="search-arrow"><ion-icon class="button-icon" slot="icon-only" name="arrow-round-forward"></ion-icon></ion-button>
</div>
</ion-row>
</ion-row>
<div class="back">
<a (click)="apriLista()" tappable>
......@@ -177,10 +180,10 @@
</ion-item>
</div>
<div class="send">
<ion-button type="submit" size="large" [disabled]="form.invalid" expand="block" color="#fcc73d">{{ 'invia' | translate }}</ion-button>
<ion-button type="submit" size="large" [disabled]="form.invalid" expand="block" color="#fcc73d" class="form-button">{{ 'invia' | translate }}</ion-button>
</div>
<div class="undo">
<ion-button size="large" expand="block" (click)="apriLista()">{{ 'annulla' | translate }}</ion-button>
<ion-button size="large" expand="block" (click)="apriLista()" class="form-button">{{ 'annulla' | translate }}</ion-button>
</div>
</form>
</div>
......@@ -195,11 +198,11 @@
<ion-grid>
<ion-row>
<ion-col col-10>
<ion-col size="10">
<ion-input class="input-intervento" id= "message" type="text" placeholder="{{ 'digita_msg' | translate }}" name="message" [(ngModel)]="message"></ion-input>
</ion-col>
<ion-col col-2>
<ion-icon name="paper-plane" (click)="aggiungiIntervento(form)" tappable title="{{ 'inserisci_intervento' | translate }}"></ion-icon>
<ion-col size="2">
<ion-icon name="paper-plane" (click)="aggiungiIntervento(form)" tappable title="{{ 'inserisci_intervento' | translate }}" [style.color]="'#2b94d1'"></ion-icon>
</ion-col>
</ion-row>
......
......@@ -118,9 +118,8 @@ export class IntervistePage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di creazione nuovo Topic", ["OK"]);
var text = "Errore durante la procedura di creazione nuovo Topic";
this.utilService.stampaErrore(text, error);
});
}
......@@ -213,9 +212,8 @@ export class IntervistePage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante il caricamento del Topic", ["OK"]);
var text = "Errore durante il caricamento del Topic";
this.utilService.stampaErrore(text, error);
});
return true;
}
......@@ -253,6 +251,7 @@ export class IntervistePage implements OnInit {
if(this.date1 != null && this.date1 != "") dataDa = this.utilService.dateFormatConvert(this.date1);
if(this.date2 != null && this.date1 != "") dataA = this.utilService.dateFormatConvert(this.date2);
this.utilService.showLoading();
this.hideButtons();
this.idCliente = AuthService.clienteSelezionato.id;
this.intervisteService.getListaTopics(AuthService.clienteSelezionato.id, dataDa, dataA, this.archiviati, titolo).subscribe((res: RichiesteResponse)=>{
this.utilService.closeLoading();
......@@ -268,9 +267,8 @@ export class IntervistePage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["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"]);
var text = "Errore durante la procedura di apertura del Topic";
this.utilService.stampaErrore(text, error);
});
}
......@@ -292,9 +290,8 @@ export class IntervistePage implements OnInit {
},
(error: ErrorResponse) => {
//this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["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"]);
var text = "Errore durante la procedura di apertura del Topic";
this.utilService.stampaErrore(text, error);
});
if(fase == "after") this.intervisteService.getListaTopics(AuthService.clienteSelezionato.id, null, null, this.archiviati, null).subscribe((res: RichiesteResponse)=>{
//this.utilService.closeLoading();
......@@ -308,7 +305,8 @@ export class IntervistePage implements OnInit {
},
(error: ErrorResponse) => {
//this.utilService.closeLoading();
this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
var text = "Errore durante la richiesta dei Topics";
this.utilService.stampaErrore(text, error);
});
}
......@@ -414,9 +412,8 @@ export class IntervistePage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di aggiunta Intervento", ["OK"]);
var text = "Errore durante la procedura di aggiunta Intervento";
this.utilService.stampaErrore(text, error);
});
return true;
}
......@@ -439,9 +436,8 @@ export class IntervistePage implements OnInit {
},
(error: ErrorResponse) => {
//this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di creazione nuovo topic", ["OK"]);
var text = "Errore durante la procedura di creazione nuovo topic";
this.utilService.stampaErrore(text, error);
});
}
......
......@@ -12,13 +12,13 @@
<div *ngSwitchCase="'lista'">
<div class="search-date date-div">
<div class="float-date">
<span class="search-date item-no-border">
<span class="search-date item-no-border grigio">
<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">
<span class="search-date float-date riga item-no-border">
<ion-checkbox name="privacy" [(ngModel)]="archiviati" class="check"> </ion-checkbox>
<ion-label class="text">{{ 'visualizza_archiviati' | translate }}</ion-label>
<ion-label class="archivio-text"><span class="text">{{ 'visualizza_archiviati' | translate }}</span></ion-label>
<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>
</span>
</div>
......@@ -27,11 +27,11 @@
<span class="item-no-border" id="buttonsPareri" style="display:none">
<div *ngIf="!archiviati" class="text">
{{ 'archivia_pareri' | translate }}
<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>
<ion-button (click)="archiviaPareri(true)" class="search-arrow" title="{{ 'archivia_pareri' | translate }}"><ion-icon class="button-icon-archivia" slot="icon-only" name="archive" title="{{ 'archivia_pareri' | translate }}"></ion-icon></ion-button>
</div>
<div *ngIf="archiviati" class="text">
{{ 'undo_archivio_pareri' | translate }}
<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>
<ion-button (click)="archiviaPareri(false)" class="search-arrow" title="{{ 'riattiva_pareri' | translate }}"><ion-icon class="button-icon-archivia" slot="icon-only" name="undo" title="{{ 'riattiva_pareri' | translate }}"></ion-icon></ion-button>
</div>
</span>
</div>
......@@ -53,7 +53,7 @@
<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">
<div class="richieste-button group-icon3">
<a class="select" (click)="loadPareri('initial')" tappable title="{{ 'aggiorna' | translate }}">
<ion-icon name="refresh-circle"></ion-icon>
</a>
......@@ -137,16 +137,16 @@
<ion-textarea name="question" placeholder="{{ 'inserire_richiesta' | translate }}" ngModel required></ion-textarea>
</ion-item>
</div>
<ion-item class="item-no-border"><h4>{{ 'aggiungi_allegato' | translate }}</h4></ion-item>
<ion-item class="item-no-border"><h6 class="grigio font">{{ 'aggiungi_allegato' | translate }}</h6></ion-item>
<div class="clr"></div>
<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();" class="font"></ion-input>
</ion-item>
<div class="send">
<ion-button type="submit" size="large" [disabled]="form.invalid" expand="block" color="#fcc73d">{{ 'invia' | translate }}</ion-button>
<ion-button type="submit" size="large" [disabled]="form.invalid" expand="block" color="#fcc73d" class="form-button">{{ 'invia' | translate }}</ion-button>
</div>
<div class="undo">
<ion-button size="large" expand="block" (click)="apriLista()">{{ 'annulla' | translate }}</ion-button>
<ion-button size="large" expand="block" (click)="apriLista()" class="form-button">{{ 'annulla' | translate }}</ion-button>
</div>
</form>
</div>
......
......@@ -91,6 +91,7 @@ export class ParerePage implements OnInit {
async loadPareri(fase)
{
this.hideButtons();
var titolo = null;
this.utilService.showLoading();
this.idCliente = AuthService.clienteSelezionato.id;
......@@ -108,9 +109,8 @@ export class ParerePage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di richiesta Topic", ["OK"]);
var text = "Errore durante la procedura di richiesta Topic";
this.utilService.stampaErrore(text, error);
});
}
......@@ -155,9 +155,8 @@ export class ParerePage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di creazione nuovo Topic", ["OK"]);
var text = "Errore durante la procedura di creazione nuovo Topic";
this.utilService.stampaErrore(text, error);
});
}
......@@ -184,9 +183,8 @@ export class ParerePage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di creazione nuovo Topic", ["OK"]);
var text = "Errore durante la procedura di creazione nuovo Topic";
this.utilService.stampaErrore(text, error);
});
/* <input type="file" name="file" (change)="upload($event)" />
......@@ -245,9 +243,8 @@ upload(str:any)
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la richiesta di limite Pareri superato", ["OK"]);
var text = "Errore durante la richiesta di limite Pareri superato";
this.utilService.stampaErrore(text, error);
});
return true;
}
......@@ -313,7 +310,7 @@ upload(str:any)
hideButtons()
{
var buttons = document.getElementById('buttonsPareri');
buttons.setAttribute("style", "display:none");
if(buttons != null) buttons.setAttribute("style", "display:none");
}
pareriSelezionati: Array<number>;
......@@ -346,9 +343,8 @@ upload(str:any)
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la procedura di creazione nuovo Topic", ["OK"]);
var text = "Errore durante l'archiviazione del parere";
this.utilService.stampaErrore(text, error);
});
}
......
......@@ -26,26 +26,26 @@
</div>-->
<div [ngSwitch]="segreteria" ngDefaultControl>
<ion-item class="selection item-no-border" no-margin style="padding-left: 5px;">
<ion-row class="selection item-no-border" no-margin>
<ion-label>{{ 'seleziona_struttura' | translate }}</ion-label>
<ion-select value="clienteSel" [(ngModel)]="idStrutturaSel" (ionChange)="cambiaStruttura()" no-scroll title="{{ 'seleziona_struttura' | translate }}">
<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>
</ion-item>
</ion-row>
<ion-text class="selection-done margin-top" style="padding-left: 5px;">
{{ 'struttura_sel' | translate }} </ion-text>
<div class="clr"></div>
<ion-text class="grigio selection-done" style="padding-left: 5px;"><strong>{{strutturaSel.denominazione}}</strong>
</ion-text>
<p class="grigio selection-done" style="padding-left: 5px;"><strong>{{strutturaSel.denominazione}}</strong>
</p>
<ion-list *ngSwitchCase="'fatture'" ngDefaultControl>
<ion-grid>
<ion-row class="search-date">
<div *ngIf="platform.is('desktop')">
<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 *ngIf="platform.is('desktop')" class="grigio">
<strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} <input type="date" name="calendar" [(ngModel)]="date1" title="{{ 'seleziona_data' | translate }}" class="grigio"> {{ 'a' | translate }} <input type="date" name="calendar" [(ngModel)]="date2" title="{{ 'seleziona_data' | translate }}" class="grigio">
</div>
<div class="float-date" *ngIf="!platform.is('desktop')">
<ion-row class="float-date" *ngIf="!platform.is('desktop')" class="grigio">
<span class="date-text"><strong>{{ 'cerca' | translate }}</strong> {{ 'da' | translate }} </span>
<ion-icon class="element-date date-icon" name="calendar" (click)="setDateDa()"></ion-icon>
<div class="element-date item-no-border date-text">
......@@ -56,7 +56,7 @@
<div floating class="element-date item-no-border date-text">
{{date2}}
</div>
</div>
</ion-row>
</ion-row>
<ion-row class="search-date">
<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">
......@@ -119,8 +119,7 @@
<ion-list *ngSwitchCase="'estratto'" ngDefaultControl>
<div class="title-infra">
{{ 'estratto_conto' | translate }}
</div>
</div>
</ion-list>
<ion-list *ngSwitchCase="'solleciti'" ngDefaultControl>
......@@ -140,19 +139,19 @@
<ion-tabs class="footer-toolbar">
<ion-tab-bar class="footer-tabbar" [(ngModel)]="segreteria" ngDefaultControl>
<ion-tab-button value="preventivi" (click)="redirectTo2p2()">
<ion-icon src="assets/icon/prev-pagam-grigio.svg" class="icon-footer"></ion-icon>
<img src="assets/icon/prev-pagam-grigio.svg" class="icon-footer">
<ion-label>{{ 'preventivi' | translate }}</ion-label>
</ion-tab-button>
<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>
<img src="assets/icon/fatture-progetti-bianco.svg" id="icon-fatture" class="icon-footer">
<ion-label id="label-fatture" style="color: white;">{{ 'fatture' | translate }}</ion-label>
</ion-tab-button>
<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>
<img src="assets/icon/estratto-conto-grigio.svg" id="icon-estratto" class="icon-footer">
<ion-label id="label-estratto">{{ 'estratto_conto' | translate }}</ion-label>
</ion-tab-button>
<ion-tab-button value="solleciti" (click)="changeSel('solleciti')">
<ion-icon src="assets/icon/solleciti-grigio.svg" id="icon-solleciti" class="icon-footer"></ion-icon>
<img src="assets/icon/solleciti-grigio.svg" id="icon-solleciti" class="icon-footer">
<ion-label id="label-solleciti">{{ 'solleciti' | translate }}</ion-label>
</ion-tab-button>
</ion-tab-bar>
......
......@@ -252,9 +252,8 @@ export class SegreteriaPage implements OnInit {
window.open(this.httpClientDataService.P2PSingleSignOnUrl+token, "_system");
},
(error: ErrorResponse) => {
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante l'sso verso 2P2", ["OK"]);
var text = "Errore durante l'sso verso 2P2";
this.utilService.stampaErrore(text, error);
});
}
......@@ -284,9 +283,8 @@ export class SegreteriaPage implements OnInit {
},
(error: ErrorResponse) => {
//this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante la richiesta lista strutture", ["OK"]);
var text = "Errore durante la richiesta lista strutture";
this.utilService.stampaErrore(text, error);
});
}
......@@ -322,9 +320,8 @@ export class SegreteriaPage implements OnInit {
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
if(error != null && error.errorMsg != null) this.utilService.presentAlert("Errore", "", error.errorMsg, ["OK"]);
else if(error!=null) this.utilService.presentAlert("Errore", "", error, ["OK"]);
else this.utilService.presentAlert("Errore", "", "Errore durante richiesta delle fatture", ["OK"]);
var text = "Errore durante richiesta delle fatture";
this.utilService.stampaErrore(text, error);
});
}
......
......@@ -199,8 +199,6 @@ export class IntervisteService {
}
})
);
return null;
}
creaIntervento(id, message, idTopic): NewRichiestaRequest
......
......@@ -179,9 +179,12 @@ export class UtilService {
}
fileScaricati: Array<string>;
count: number;
total: number;
shareDocumenti(fileSel : Array<Pair>)
{
this.count = 0;
this.fileScaricati = new Array();
this.showLoading();
/*var i = 0;
......@@ -204,19 +207,27 @@ export class UtilService {
});
i++;
}*/
this.total = fileSel.length;
fileSel.forEach(this.saveFile, this);
setTimeout(() => {
if(this.count == this.total) this.share();
else setTimeout(() => {
this.share()
}, 10000*fileSel.length);
}, 1000);
}
share(){
this.closeLoading();
this.socialSharing.share(null, null, this.fileScaricati, null).then(() => {
console.log("File condiviso con successo!");
}).catch((e) => {
this.presentAlert("Avviso", "", 'Errore durante la condivisione del file:' + e, ["OK"]);
});
if(this.count != this.total) setTimeout(() => {
this.share()
}, 1000);
else{
this.closeLoading();
this.socialSharing.share(null, null, this.fileScaricati, null).then(() => {
console.log("File condiviso con successo!");
}).catch((e) => {
this.presentAlert("Avviso", "", 'Errore durante la condivisione dei file', ["OK"]);
console.log('Errore durante la condivisione dei file:' + e);
});
}
}
async saveFile(fileInfo: Pair, index)
......@@ -229,29 +240,12 @@ export class UtilService {
(data) => { // Success
this.file.writeFile(path, nomeFile, data, { replace: true }).then((fileEntry: FileEntry) => {
this.fileScaricati.push(fileEntry.toURL());
this.count++;
},
(error) =>{
this.count++;
console.log(error);
}
);
});
}
shareDocumentoBis(fileUrl: string, nomeFile: string)
{
var path = "";
path = this.file.externalDataDirectory;
nomeFile = nomeFile.replace(/\//g, "-");
this.showLoading();
this.download(fileUrl)
.subscribe(
(data) => { // Success
this.file.writeFile(path, nomeFile, data, { replace: true }).then((fileEntry: FileEntry) => {
console.log("File created!");
this.fileScaricati.push(fileEntry.toURL());
},
(error) =>{
console.error(error);
this.presentAlert("Avviso", "", 'Errore durante il salvataggio del file:' + nomeFile, ["OK"]);
}
);
});
......@@ -272,7 +266,8 @@ export class UtilService {
this.socialSharing.share(null, null, fileEntry.toURL(), null).then(() => {
console.log("File condiviso con successo!");
}).catch((e) => {
this.presentAlert("Avviso", "", 'Errore durante la condivisione del file:' + e, ["OK"]);
this.presentAlert("Avviso", "", 'Errore durante la condivisione del file', ["OK"]);
console.error(e);
});
},
(error) =>{
......@@ -303,7 +298,7 @@ export class UtilService {
console.log('File is opened');
})
.catch(e => {
this.presentAlert("Avviso", "", 'Apertura in errore:' + e, ["OK"]);
this.presentAlert("Avviso", "", 'Apertura file in errore', ["OK"]);
console.log('Error openening file', e);
});
......@@ -315,6 +310,15 @@ export class UtilService {
});
}
stampaErrore(text: string, error)
{
var text = "Errore durante richiesta delle fatture";
if(error != null && error.errorMsg != null) console.log(text+": "+error.errorMsg);
else if(error!=null) console.log(text+": "+error);
else console.log(text);
this.presentAlert("Errore", "", text, ["OK"]);
}
download(url)
{
return this.httpClient.get(url, {responseType: "blob"});
......
......@@ -103,6 +103,10 @@ strong {
background-color: transparent;
}
.giallo {
--ion-color-primary: #fcc73d;
}
.contenitore {
margin:auto;
display:block;
......@@ -361,11 +365,18 @@ strong {
.button-icon
{
color: #000000;
color:rgb(81, 81, 81);
width: 24px;
height: 24px;
}
.button-icon-archivia
{
color: rgb(81, 81, 81);
width: 18px;
height: 18px;
}
.button-date
{
border: 0px !important;
......@@ -517,7 +528,7 @@ strong {
@media (max-width: 379px) and (min-width: 350px) {
width: 134px;
}
margin: 5px 17px 5px 5px;
margin: 5px 15px 5px 5px;
border: 1px solid $grigio-lite;
-webkit-box-shadow: 0px 3px 4px 0px rgba(184,184,184,1);
-moz-box-shadow: 0px 3px 4px 0px rgba(184,184,184,1);
......@@ -546,11 +557,25 @@ strong {
font-size: 16px;
padding: 15px 5px;
min-height: 42px;
height: 84px;
height: 65px;
font-family: 'futura-pt', sans-serif;
color: $grigio;
}
}
.dispari
{
@media (max-width: 319px) {
float: left;
}
@media (max-width: 550px) {
float: right;
margin-right: 10px;
}
@media (min-width: 720px)
{
float:left;
}
}
}
}
......@@ -580,6 +605,8 @@ strong {
font-weight: bold;
font-size: 20px;
font-family: 'futura-pt', sans-serif;
padding-left: 15px;
padding-right: 15px;
@media (min-width: 1080px) {
margin-top: 10px;
}
......@@ -670,6 +697,24 @@ ion-menu{
}
}
.group-icon3
{
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: 100%;
display: block;
}
}
.group-icon {
text-align: center;
display: inline-block;
......@@ -751,6 +796,15 @@ ion-menu{
color:rgb(81, 81, 81);
}
.selection {
ion-label {
margin-top: 2px;
padding-left: 5px;
margin-right: 5px;
}
ion-select {
padding-left: 5px;
padding-top: 2px;
}
font-size:18px;
font-family: 'futura-pt', sans-serif;
--ion-font-family: 'futura-pt', sans-serif;
......@@ -769,6 +823,7 @@ ion-menu{
width: 80%;
font-size: 20px;
font-family: 'futura-pt', sans-serif;
margin: 2px;
}
.download-icon {
......@@ -780,6 +835,10 @@ ion-menu{
color:rgb(81, 81, 81);
}
.celeste {
color: $celeste;
}
.margin-top {
margin-top: 10px;
}
......@@ -969,7 +1028,7 @@ ion-menu{
margin-top: 10px;
background-color: $giallo;
--backgroud: $giallo;
color: #000000;
color: $grigio;
//padding: 10px 0px;
width: 100%;
font-size: 18px;
......@@ -982,7 +1041,7 @@ ion-menu{
ion-button {
margin-top: 10px;
--background: #e5e5ea;
color: #000000;
color: $grigio;
//padding: 10px 0px;
width: 100%;
font-size: 18px;
......@@ -1023,6 +1082,15 @@ ion-menu{
}
}
.font{
font-family: 'futura-pt', sans-serif;
}
.archivio-text
{
margin-top: 3px;
}
.footer-parere {
height: 90px;
@media (max-width: 991px) {
......@@ -1039,9 +1107,18 @@ ion-menu{
border-bottom: 1px solid $grigio-superlite;
}
.form-button {
--border-radius:0px;
--box-shadow: 0;
}
.cerca-titolo-doc{
width: 60%;
}
.search-date {
font-size: 13px;
padding-bottom: 10px;
padding-bottom: 5px;
margin-bottom: 5px;
width: 100%;
font-family: 'futura-pt', sans-serif;
......@@ -1054,11 +1131,12 @@ ion-menu{
.check {
float: left;
margin-right: 10px;
margin-top: 4px;
}
.cerca-notula
{
margin-right: 10px;
width: 150px;
width: 110px;
}
.cerca-titolo
{
......@@ -1069,6 +1147,16 @@ ion-menu{
margin-left: 0px;
}
}
.cerca-titolo-cel
{
margin-left: 10px;
width: 150px;
margin-top: 5px;
@media (max-width: 500px)
{
margin-left: 0px;
}
}
input[type=input] {
font-size: 15px;
display: inline-block;
......@@ -1087,6 +1175,7 @@ ion-menu{
float: right;
font-size: 0px;
--border-radius:0px;
--box-shadow: 0;
}
.condividi-text{
font-size: 18px;
......@@ -1109,6 +1198,7 @@ ion-menu{
.input-intervento
{
border-bottom: 1px solid $grigio-superlite;
width: 90%;
}
.date-div
......
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