Commit a02ef258 by Matteo

Funziona sotto android

parent 971cd80e
<?xml version='1.0' encoding='utf-8'?>
<widget id="it.aimconsulting.intranet" version="0.0.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<widget id="it.aimconsulting.intranet" version="0.0.9" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>2P2 App</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>
......
import { AppPage } from './app.po';
describe('new App', () => {
let page: AppPage;
beforeEach(() => {
page = new AppPage();
});
it('should display welcome message', () => {
page.navigateTo();
expect(page.getPageTitle()).toContain('Tab One');
});
});
import { AppPage } from './app.po';
describe('new App', () => {
let page: AppPage;
beforeEach(() => {
page = new AppPage();
});
it('should display welcome message', () => {
page.navigateTo();
expect(page.getPageTitle()).toContain('Tab One');
});
});
import { browser, by, element } from 'protractor';
export class AppPage {
navigateTo() {
return browser.get('/');
}
getPageTitle() {
return element(by.css('ion-title')).getText();
}
}
import { browser, by, element } from 'protractor';
export class AppPage {
navigateTo() {
return browser.get('/');
}
getPageTitle() {
return element(by.css('ion-title')).getText();
}
}
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"jasminewd2",
"node"
]
}
}
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"jasminewd2",
"node"
]
}
}
These are Cordova resources. You can replace icon.png and splash.png and run
`ionic cordova resources` to generate custom icons and splash screens for your
app. See `ionic cordova resources --help` for details.
Cordova reference documentation:
- Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html
- Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/
These are Cordova resources. You can replace icon.png and splash.png and run
`ionic cordova resources` to generate custom icons and splash screens for your
app. See `ionic cordova resources --help` for details.
Cordova reference documentation:
- Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html
- Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/
{
"name": "2P2 App",
"integrations": {
"cordova": {}
},
"type": "angular"
}
{
"name": "2P2 App",
"integrations": {
"cordova": {}
},
"type": "angular"
}
{
"name": "proxy-example",
"app_id": "",
"proxies": [
{
"path": "/stman",
"proxyUrl": "http://localhost:8080/stman"
}
]
{
"name": "proxy-example",
"app_id": "",
"proxies": [
{
"path": "/stman",
"proxyUrl": "http://localhost:8080/stman"
},
{
"path": "/watch",
"proxyUrl": "www.youtube.com/watch"
}
]
}
\ No newline at end of file
<ion-app>
<!--<ion-toolbar color="dark">
<ion-buttons (click)="openSideBar()">
<ion-icon src="../assets/img/uscita.svg" style="zoom:4.0;"></ion-icon>
</ion-buttons>
<ion-title>
<img src="../assets/img/logo.png">
</ion-title>
<ion-buttons (click)="logout()" slot="end">
<ion-icon src="../assets/img/uscita.svg" style="zoom:4.0;"></ion-icon>
</ion-buttons>
</ion-toolbar>
<ion-item>
<ion-label>Clicca per selezionare un nuovo Cliente</ion-label>
<ion-select value="clienteSel" [(ngModel)]="clienteSel" (ionChange)="cambiaCliente()">
<ion-select-option *ngFor="let cliente of clienti;" value="{{cliente.id}}">{{cliente.denominazione}}</ion-select-option>
</ion-select>
</ion-item>
<ion-item>
<p>Il Cliente Selezionato è {{clienteSelezionato.denominazione}}</p>
</ion-item>-->
<ion-router-outlet>
<ion-content>
<ion-menu side="start" menu-id="mainmenu2" content-id="content">
<ion-header>
<ion-toolbar color="primary">
<ion-title>Menu Principale</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<div>
<ion-item (click)="apriPagina('home')">Home</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('documenti')">Documenti</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('interviste')">Domande/Risposte</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('pareri')">Pareri</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('segreteria')">Segreteria</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('change-password')">Cambia Password</ion-item>
</div>
</ion-list>
</ion-content>
</ion-menu>
<ion-content id="content2"></ion-content>
<div id="modal"></div>
<div id="content"></div>
</ion-content>
</ion-router-outlet>
</ion-app>
<ion-app>
<!--<ion-toolbar color="dark">
<ion-buttons (click)="openSideBar()">
<ion-icon src="../assets/img/uscita.svg" style="zoom:4.0;"></ion-icon>
</ion-buttons>
<ion-title>
<img src="../assets/img/logo.png">
</ion-title>
<ion-buttons (click)="logout()" slot="end">
<ion-icon src="../assets/img/uscita.svg" style="zoom:4.0;"></ion-icon>
</ion-buttons>
</ion-toolbar>
<ion-item>
<ion-label>Clicca per selezionare un nuovo Cliente</ion-label>
<ion-select value="clienteSel" [(ngModel)]="clienteSel" (ionChange)="cambiaCliente()">
<ion-select-option *ngFor="let cliente of clienti;" value="{{cliente.id}}">{{cliente.denominazione}}</ion-select-option>
</ion-select>
</ion-item>
<ion-item>
<p>Il Cliente Selezionato è {{clienteSelezionato.denominazione}}</p>
</ion-item>-->
<ion-router-outlet>
<ion-content>
<ion-menu side="start" menu-id="mainmenu2" content-id="content">
<ion-header>
<ion-toolbar color="primary">
<ion-title>Menu Principale</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<div>
<ion-item (click)="apriPagina('home')">Home</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('documenti')">Documenti</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('interviste')">Domande/Risposte</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('pareri')">Pareri</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('segreteria')">Segreteria</ion-item>
</div>
<div>
<ion-item (click)="apriPagina('change-password')">Cambia Password</ion-item>
</div>
</ion-list>
</ion-content>
</ion-menu>
<ion-content id="content2"></ion-content>
<div id="modal"></div>
<div id="content"></div>
</ion-content>
</ion-router-outlet>
</ion-app>
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { TestBed, async } from '@angular/core/testing';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
let statusBarSpy, splashScreenSpy, platformReadySpy, platformSpy;
beforeEach(async(() => {
statusBarSpy = jasmine.createSpyObj('StatusBar', ['styleDefault']);
splashScreenSpy = jasmine.createSpyObj('SplashScreen', ['hide']);
platformReadySpy = Promise.resolve();
platformSpy = jasmine.createSpyObj('Platform', { ready: platformReadySpy });
TestBed.configureTestingModule({
declarations: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [
{ provide: StatusBar, useValue: statusBarSpy },
{ provide: SplashScreen, useValue: splashScreenSpy },
{ provide: Platform, useValue: platformSpy },
],
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
});
it('should initialize the app', async () => {
TestBed.createComponent(AppComponent);
expect(platformSpy.ready).toHaveBeenCalled();
await platformReadySpy;
expect(statusBarSpy.styleDefault).toHaveBeenCalled();
expect(splashScreenSpy.hide).toHaveBeenCalled();
});
// TODO: add more tests!
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { TestBed, async } from '@angular/core/testing';
import { Platform } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
let statusBarSpy, splashScreenSpy, platformReadySpy, platformSpy;
beforeEach(async(() => {
statusBarSpy = jasmine.createSpyObj('StatusBar', ['styleDefault']);
splashScreenSpy = jasmine.createSpyObj('SplashScreen', ['hide']);
platformReadySpy = Promise.resolve();
platformSpy = jasmine.createSpyObj('Platform', { ready: platformReadySpy });
TestBed.configureTestingModule({
declarations: [AppComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [
{ provide: StatusBar, useValue: statusBarSpy },
{ provide: SplashScreen, useValue: splashScreenSpy },
{ provide: Platform, useValue: platformSpy },
],
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
});
it('should initialize the app', async () => {
TestBed.createComponent(AppComponent);
expect(platformSpy.ready).toHaveBeenCalled();
await platformReadySpy;
expect(statusBarSpy.styleDefault).toHaveBeenCalled();
expect(splashScreenSpy.hide).toHaveBeenCalled();
});
// TODO: add more tests!
});
import { Component } from '@angular/core';
import { Platform, MenuController } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AuthService } from './auth/service/auth.service';
import { Router } from '@angular/router';
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
import { UtilService } from './service/util.service';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html'
})
export class AppComponent {
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private router: Router,
private authService: AuthService,
private utilService: UtilService,
private androidPermissions: AndroidPermissions,
public menuCtrl: MenuController
) {
this.initializeApp();
}
async initializeApp() {
this.utilService.loadLingua();
this.utilService.initConfig(false, 'notifiche');
}
async logout(){
await this.authService.logout();
this.router.navigateByUrl('login');
}
apriPagina(pagina:string)
{
switch(pagina)
{
case "home":
{
this.router.navigateByUrl('index');
break;
}
case "documenti":
{
this.router.navigateByUrl('documenti');
break;
}
case "interviste":
{
this.router.navigateByUrl('interviste');
break;
}
case "pareri":
{
this.router.navigateByUrl('pareri');
break;
}
case "segreteria":
{
this.router.navigateByUrl('segreteria');
break;
}
case "change-password":
{
this.router.navigateByUrl('change-pwd');
break;
}
}
}
openSideBar()
{
this.menuCtrl.open('mainmenu');
}
closeSideMenu() {
this.menuCtrl.close();
}
}
import { Component } from '@angular/core';
import { Platform, MenuController } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AuthService } from './auth/service/auth.service';
import { Router } from '@angular/router';
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
import { UtilService } from './service/util.service';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html'
})
export class AppComponent {
constructor(
private platform: Platform,
private splashScreen: SplashScreen,
private statusBar: StatusBar,
private router: Router,
private authService: AuthService,
private utilService: UtilService,
private androidPermissions: AndroidPermissions,
public menuCtrl: MenuController
) {
this.initializeApp();
}
async initializeApp() {
this.utilService.loadLingua();
this.utilService.initConfig(false, 'notifiche');
}
async logout(){
await this.authService.logout();
this.router.navigateByUrl('login');
}
apriPagina(pagina:string)
{
switch(pagina)
{
case "home":
{
this.router.navigateByUrl('index');
break;
}
case "documenti":
{
this.router.navigateByUrl('documenti');
break;
}
case "interviste":
{
this.router.navigateByUrl('interviste');
break;
}
case "pareri":
{
this.router.navigateByUrl('pareri');
break;
}
case "segreteria":
{
this.router.navigateByUrl('segreteria');
break;
}
case "change-password":
{
this.router.navigateByUrl('change-pwd');
break;
}
}
}
openSideBar()
{
this.menuCtrl.open('mainmenu');
}
closeSideMenu() {
this.menuCtrl.close();
}
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { IonicStorageModule } from '@ionic/storage';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { DatePicker } from '@ionic-native/date-picker/ngx';
import { File } from '@ionic-native/file/ngx';
import { FileOpener } from '@ionic-native/file-opener/ngx';
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
import { EmailComposer } from '@ionic-native/email-composer/ngx';
import { InAppBrowser } from '@ionic-native/in-app-browser/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';
import { Push } from '@ionic-native/push/ngx';
export function createTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
IonicStorageModule.forRoot(),
FormsModule,
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: createTranslateLoader,
deps: [HttpClient]
}
})
],
providers: [
StatusBar,
SplashScreen,
DatePicker,
File,
FileOpener,
AndroidPermissions,
EmailComposer,
InAppBrowser,
SocialSharing,
Push,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
bootstrap: [AppComponent]
})
export class AppModule {}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { IonicStorageModule } from '@ionic/storage';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { DatePicker } from '@ionic-native/date-picker/ngx';
import { File } from '@ionic-native/file/ngx';
import { FileOpener } from '@ionic-native/file-opener/ngx';
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
import { EmailComposer } from '@ionic-native/email-composer/ngx';
import { InAppBrowser } from '@ionic-native/in-app-browser/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';
import { Push } from '@ionic-native/push/ngx';
export function createTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
IonicStorageModule.forRoot(),
FormsModule,
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: createTranslateLoader,
deps: [HttpClient]
}
})
],
providers: [
StatusBar,
SplashScreen,
DatePicker,
File,
FileOpener,
AndroidPermissions,
EmailComposer,
InAppBrowser,
SocialSharing,
Push,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
bootstrap: [AppComponent]
})
export class AppModule {}
import { Cliente } from './cliente';
export interface AuthResponse {
id: number;
errorMsg: string;
error: boolean;
nome: string;
clienti: Cliente[];
cliente: boolean;
}
import { Cliente } from './cliente';
export interface AuthResponse {
id: number;
errorMsg: string;
error: boolean;
nome: string;
clienti: Cliente[];
cliente: boolean;
}
export interface Cliente {
id: number;
denominazione: string;
}
export interface Cliente {
id: number;
denominazione: string;
}
export interface ErrorResponse {
error: boolean,
errorMsg: string
}
/*export class ErrorResponse{
public object: {};
constructor(
public error: boolean,
public errorMsg: string
) {
this.object = {
error: this.error,
errorMsg: this.errorMsg,
};
}
}*/
export interface ErrorResponse {
error: boolean,
errorMsg: string
}
/*export class ErrorResponse{
public object: {};
constructor(
public error: boolean,
public errorMsg: string
) {
this.object = {
error: this.error,
errorMsg: this.errorMsg,
};
}
}*/
export interface User {
email: string;
password: string;
}
export interface User {
email: string;
password: string;
}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ChangePwdPage } from './change-pwd.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: ChangePwdPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
ReactiveFormsModule,
TranslateModule
],
declarations: [ChangePwdPage]
})
export class ChangePwdPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ChangePwdPage } from './change-pwd.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: ChangePwdPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
ReactiveFormsModule,
TranslateModule
],
declarations: [ChangePwdPage]
})
export class ChangePwdPageModule {}
<!--<ion-header class="header-subpage" no-border>
<ion-toolbar>
<ion-title class="titolo-sezione-head">{{ 'change_password' | translate }}</ion-title>
</ion-toolbar>
</ion-header>-->
<ion-content>
<ion-grid class="transparent bc-grid">
<ion-row class="transparent">
<ion-col align-self-end size-md="6" size-lg="6" size-xs="12" class="transparent">
<div class="body-form body-img12">
<ion-row justify-content-center *ngIf="platform.is('desktop')">
<ion-col>
<ion-buttons class="back-button-desktop-cp" (click)="back()" title="{{ 'back_login' | translate }}">
<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-buttons>
</ion-col>
<ion-col>
<!--<div class="change-title bc-title">
{{ 'change_password' | translate }}
</div>-->
<div class="documenti-title">
<ion-title>{{ 'change_password' | translate }}</ion-title>
</div>
</ion-col>
<ion-col></ion-col>
</ion-row>
<form #form="ngForm" (ngSubmit)="change(form)" [formGroup]="matching_passwords_group">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col>
<div padding>
<ion-item>
<ion-input formControlName="oldpassword" type="password" placeholder="{{ 'old_pwd' | translate }}" ngModel required></ion-input>
</ion-item>
<ion-item>
<ion-input formControlName="newpassword" type="password" placeholder="{{ 'new_pwd' | translate }}" ngModel required></ion-input>
</ion-item>
<ion-item>
<ion-input formControlName="newpasswordbis" type="password" placeholder="{{ 'repeat_new_pwd' | translate }}" ngModel required></ion-input>
</ion-item>
</div>
<div padding>
<ion-button type="submit" [disabled]="form.invalid" class="bc-invia">{{ 'change_password' | translate }}</ion-button>
</div>
</ion-col>
</ion-row>
<ion-row color="primary" justify-content-center>
<div class="validation-errors" justify-content-center>
<ng-container *ngFor="let validation of validation_messages.newpassword">
<div class="error-message" *ngIf="matching_passwords_group.get('newpassword').hasError(validation.type) && (matching_passwords_group.get('newpassword').dirty
|| matching_passwords_group.get('newpassword').touched)">
{{ validation.message }}
</div>
</ng-container>
<ng-container *ngFor="let validation of validation_messages.newpasswordbis">
<div class="error-message" *ngIf="matching_passwords_group.get('newpasswordbis').hasError(validation.type) && (matching_passwords_group.get('newpasswordbis').dirty
|| matching_passwords_group.get('newpasswordbis').touched)">
{{ validation.message }}
</div>
</ng-container>
<ng-container *ngFor="let validation of validation_messages.newpasswordbis">
<div class="error-message" *ngIf="matching_passwords_group.hasError('areEqual')">
{{ validation.message }}
</div>
</ng-container>
</div>
</ion-row>
</ion-grid>
</form>
</div>
</ion-col>
<ion-col align-self-end size-md="6" size-lg="6" size-xs="12">
<div class="body-blue2"></div>
<div class="body-img22"></div>
</ion-col>
</ion-row>
</ion-grid>
<!--<ion-header class="header-subpage" no-border>
<ion-toolbar>
<ion-title class="titolo-sezione-head">{{ 'change_password' | translate }}</ion-title>
</ion-toolbar>
</ion-header>-->
<ion-content>
<ion-grid class="transparent bc-grid">
<ion-row class="transparent">
<ion-col align-self-end size-md="6" size-lg="6" size-xs="12" class="transparent">
<div class="body-form body-img12">
<ion-row justify-content-center *ngIf="platform.is('desktop')">
<ion-col>
<ion-buttons class="back-button-desktop-cp" (click)="back()" title="{{ 'back_login' | translate }}">
<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-buttons>
</ion-col>
<ion-col>
<!--<div class="change-title bc-title">
{{ 'change_password' | translate }}
</div>-->
<div class="documenti-title">
<ion-title>{{ 'change_password' | translate }}</ion-title>
</div>
</ion-col>
<ion-col></ion-col>
</ion-row>
<form #form="ngForm" (ngSubmit)="change(form)" [formGroup]="matching_passwords_group">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col>
<div padding>
<ion-item>
<ion-input formControlName="oldpassword" type="password" placeholder="{{ 'old_pwd' | translate }}" ngModel required></ion-input>
</ion-item>
<ion-item>
<ion-input formControlName="newpassword" type="password" placeholder="{{ 'new_pwd' | translate }}" ngModel required></ion-input>
</ion-item>
<ion-item>
<ion-input formControlName="newpasswordbis" type="password" placeholder="{{ 'repeat_new_pwd' | translate }}" ngModel required></ion-input>
</ion-item>
</div>
<div padding>
<ion-button type="submit" [disabled]="form.invalid" class="bc-invia">{{ 'change_password' | translate }}</ion-button>
</div>
</ion-col>
</ion-row>
<ion-row color="primary" justify-content-center>
<div class="validation-errors" justify-content-center>
<ng-container *ngFor="let validation of validation_messages.newpassword">
<div class="error-message" *ngIf="matching_passwords_group.get('newpassword').hasError(validation.type) && (matching_passwords_group.get('newpassword').dirty
|| matching_passwords_group.get('newpassword').touched)">
{{ validation.message }}
</div>
</ng-container>
<ng-container *ngFor="let validation of validation_messages.newpasswordbis">
<div class="error-message" *ngIf="matching_passwords_group.get('newpasswordbis').hasError(validation.type) && (matching_passwords_group.get('newpasswordbis').dirty
|| matching_passwords_group.get('newpasswordbis').touched)">
{{ validation.message }}
</div>
</ng-container>
<ng-container *ngFor="let validation of validation_messages.newpasswordbis">
<div class="error-message" *ngIf="matching_passwords_group.hasError('areEqual')">
{{ validation.message }}
</div>
</ng-container>
</div>
</ion-row>
</ion-grid>
</form>
</div>
</ion-col>
<ion-col align-self-end size-md="6" size-lg="6" size-xs="12">
<div class="body-blue2"></div>
<div class="body-img22"></div>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ChangePwdPage } from './change-pwd.page';
describe('ChangePwdPage', () => {
let component: ChangePwdPage;
let fixture: ComponentFixture<ChangePwdPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ChangePwdPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ChangePwdPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ChangePwdPage } from './change-pwd.page';
describe('ChangePwdPage', () => {
let component: ChangePwdPage;
let fixture: ComponentFixture<ChangePwdPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ChangePwdPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ChangePwdPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { PasswordValidator } from '../../validators/password.validator';
import { Validators, FormControl, FormGroup } from '@angular/forms';
import { Router } from "@angular/router";
import { AuthService } from '../../service/auth.service';
import { ErrorResponse } from '../../interface/error-response';
import { UtilService } from '../../../service/util.service';
import { TranslateService } from '@ngx-translate/core';
import { Platform, Events } from '@ionic/angular';
@Component({
selector: 'app-change-pwd',
templateUrl: './change-pwd.page.html',
styleUrls: ['./change-pwd.page.scss'],
})
export class ChangePwdPage implements OnInit {
constructor(
private authService: AuthService,
private router: Router,
public platform: Platform,
private utilService: UtilService,
public translate: TranslateService,
public events: Events) {
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
}
change(form){
this.utilService.showLoading();
this.authService.getId().then(state => {
this.authService.changePwd(form.value).subscribe((res: ErrorResponse)=>{
this.utilService.closeLoading();
if(res.error){
this.utilService.presentAlert("Errore", "", res.errorMsg, ["OK"]);
}
else
{
this.utilService.presentAlert("Info", "", "La Password è stata cambiata correttamente", ["OK"]);
this.utilService.apriPagina("home");
}
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
var text = "Errore durante la procedura di cambio password";
this.utilService.stampaErrore(text, error);
});
});
}
matching_passwords_group = new FormGroup({
oldpassword: new FormControl('', Validators.required),
newpassword: new FormControl('', Validators.compose([
Validators.minLength(5),
Validators.required,
Validators.pattern('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]+$') //this is for the letters (both uppercase and lowercase) and numbers validation
])),
newpasswordbis: new FormControl('', Validators.compose([
Validators.required
]))
},(formGroup: FormGroup) => {
return PasswordValidator.areEqual(formGroup);
});
validation_messages = {
'newpassword': [
{ type: 'required', message: 'Password è richiesta.' },
{ type: 'minlength', message: 'La lunghezza minima è 5 caratteri' },
{ type: 'pattern', message: 'Deve essere composta da numeri e lettere' }
],
'newpasswordbis': [
{ type: 'areEqual', message: 'La password deve essere uguale a quella nuova' },
{ type: 'required', message: 'Il Repeat Password è richiesto.' }
]
}
back()
{
this.utilService.apriPagina("home");
}
ngOnInit() {
}
}
import { Component, OnInit } from '@angular/core';
import { PasswordValidator } from '../../validators/password.validator';
import { Validators, FormControl, FormGroup } from '@angular/forms';
import { Router } from "@angular/router";
import { AuthService } from '../../service/auth.service';
import { ErrorResponse } from '../../interface/error-response';
import { UtilService } from '../../../service/util.service';
import { TranslateService } from '@ngx-translate/core';
import { Platform, Events } from '@ionic/angular';
@Component({
selector: 'app-change-pwd',
templateUrl: './change-pwd.page.html',
styleUrls: ['./change-pwd.page.scss'],
})
export class ChangePwdPage implements OnInit {
constructor(
private authService: AuthService,
private router: Router,
public platform: Platform,
private utilService: UtilService,
public translate: TranslateService,
public events: Events) {
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
}
change(form){
this.utilService.showLoading();
this.authService.getId().then(state => {
this.authService.changePwd(form.value).subscribe((res: ErrorResponse)=>{
this.utilService.closeLoading();
if(res.error){
this.utilService.presentAlert("Errore", "", res.errorMsg, ["OK"]);
}
else
{
this.utilService.presentAlert("Info", "", "La Password è stata cambiata correttamente", ["OK"]);
this.utilService.apriPagina("home");
}
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
var text = "Errore durante la procedura di cambio password";
this.utilService.stampaErrore(text, error);
});
});
}
matching_passwords_group = new FormGroup({
oldpassword: new FormControl('', Validators.required),
newpassword: new FormControl('', Validators.compose([
Validators.minLength(5),
Validators.required,
Validators.pattern('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]+$') //this is for the letters (both uppercase and lowercase) and numbers validation
])),
newpasswordbis: new FormControl('', Validators.compose([
Validators.required
]))
},(formGroup: FormGroup) => {
return PasswordValidator.areEqual(formGroup);
});
validation_messages = {
'newpassword': [
{ type: 'required', message: 'Password è richiesta.' },
{ type: 'minlength', message: 'La lunghezza minima è 5 caratteri' },
{ type: 'pattern', message: 'Deve essere composta da numeri e lettere' }
],
'newpasswordbis': [
{ type: 'areEqual', message: 'La password deve essere uguale a quella nuova' },
{ type: 'required', message: 'Il Repeat Password è richiesto.' }
]
}
back()
{
this.utilService.apriPagina("home");
}
ngOnInit() {
}
}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { LoginPage } from './login.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: LoginPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [LoginPage]
})
export class LoginPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { LoginPage } from './login.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: LoginPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [LoginPage]
})
export class LoginPageModule {}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { LoginPage } from './login.page';
describe('LoginPage', () => {
let component: LoginPage;
let fixture: ComponentFixture<LoginPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LoginPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(LoginPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { LoginPage } from './login.page';
describe('LoginPage', () => {
let component: LoginPage;
let fixture: ComponentFixture<LoginPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LoginPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(LoginPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
......@@ -60,7 +60,8 @@ export class LoginPage implements OnInit {
}
else
{
this.utilService.pushNotification(AuthService.idReferente);
if(AuthService.idReferente != null) this.utilService.pushNotification(AuthService.idReferente);
else this.utilService.pushNotification(AuthService.idCliente);
UtilService.titoloPagina = '';
this.utilService.redirectToFirstPage('notifiche');
this.events.publish('functionCall:startup', null);
......
......@@ -41,7 +41,8 @@ export class RegistrazionePage implements OnInit {
else
{
this.utilService.presentAlert("Info", "", "Registrazione effettuata con successo", ["OK"]);
this.utilService.pushNotification(AuthService.idReferente);
if(AuthService.idReferente != null) this.utilService.pushNotification(AuthService.idReferente);
else this.utilService.pushNotification(AuthService.idCliente);
UtilService.titoloPagina = '';
this.utilService.redirectToFirstPage('notifiche');
this.events.publish('functionCall:startup', null);
......
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ResetPage } from './reset.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: ResetPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
ReactiveFormsModule,
TranslateModule
],
declarations: [ResetPage]
})
export class ResetPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ResetPage } from './reset.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: ResetPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
ReactiveFormsModule,
TranslateModule
],
declarations: [ResetPage]
})
export class ResetPageModule {}
<ion-header>
<title>2p2</title>
</ion-header>
<ion-content>
<div class="background-blu rp-height" *ngIf="!platform.is('desktop')">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col align-self-center>
<ion-toolbar class="business-toolbar">
<ion-buttons (click)="back()" slot="start" title="{{ 'back_login' | translate }}">
<ion-icon name="arrow-round-back" color="#2b94d1" class="back-white" tappable></ion-icon>
<!--<ion-icon name="arrow-dropleft-circle" color="#2b94d1" class="back"></ion-icon>-->
</ion-buttons>
<img src="assets/img/LogoBianco.svg" class="immagine-piccola">
</ion-toolbar>
</ion-col>
</ion-row>
</ion-grid>
<div class="messaggio-bianco">
{{ 'reset_pwd' | translate }}
</div>
</div>
<ion-grid class="transparent bc-grid">
<ion-row class="transparent">
<ion-col align-self-end size-md="6" size-lg="6" size-xs="12" class="transparent">
<div class="body-form body-img12">
<form #form="ngForm" (ngSubmit)="reset(form)" [formGroup]="matching_email_group">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col align-self-center>
<ion-row *ngIf="platform.is('desktop')">
<ion-buttons (click)="back()" title="{{ 'back_login' | translate }}" class="back-button-desktop back-button-desktop-reset">
<ion-icon name="arrow-round-back" color="#232D4B" class="back" tappable></ion-icon>
</ion-buttons>
<ion-title class="logo-piccolo">
<img src="assets/icon/2p2-logo-color.svg">
</ion-title>
</ion-row>
<div text-center *ngIf="platform.is('desktop')">
<h3>{{ 'reset_pwd' | translate }}</h3>
</div>
<div padding>
<ion-item>
<ion-input formControlName="email" type="email" placeholder="{{ 'email' | translate }}" ngModel required></ion-input>
</ion-item>
</div>
<div padding>
<ion-button type="submit" [disabled]="form.invalid" class="bc-invia">{{ 'reset_pwd' | translate }}</ion-button>
</div>
</ion-col>
</ion-row>
<ion-row color="primary" justify-content-center>
<div class="validation-errors" justify-content-center>
<ng-container *ngFor="let validation of validation_messages.email">
<div class="error-message" *ngIf="matching_email_group.get('email').hasError(validation.type) && (matching_email_group.get('email').dirty
|| matching_email_group.get('email').touched)">
{{ validation.message }}
</div>
</ng-container>
</div>
</ion-row>
</ion-grid>
</form>
</div>
</ion-col>
<ion-col align-self-end size-md="6" size-lg="6" size-xs="12">
<div class="body-blue2"></div>
<div class="body-img22"></div>
</ion-col>
</ion-row>
</ion-grid>
<ion-header>
<title>2p2</title>
</ion-header>
<ion-content>
<div class="background-blu rp-height" *ngIf="!platform.is('desktop')">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col align-self-center>
<ion-toolbar class="business-toolbar">
<ion-buttons (click)="back()" slot="start" title="{{ 'back_login' | translate }}">
<ion-icon name="arrow-round-back" color="#2b94d1" class="back-white" tappable></ion-icon>
<!--<ion-icon name="arrow-dropleft-circle" color="#2b94d1" class="back"></ion-icon>-->
</ion-buttons>
<img src="assets/img/LogoBianco.svg" class="immagine-piccola">
</ion-toolbar>
</ion-col>
</ion-row>
</ion-grid>
<div class="messaggio-bianco">
{{ 'reset_pwd' | translate }}
</div>
</div>
<ion-grid class="transparent bc-grid">
<ion-row class="transparent">
<ion-col align-self-end size-md="6" size-lg="6" size-xs="12" class="transparent">
<div class="body-form body-img12">
<form #form="ngForm" (ngSubmit)="reset(form)" [formGroup]="matching_email_group">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col align-self-center>
<ion-row *ngIf="platform.is('desktop')">
<ion-buttons (click)="back()" title="{{ 'back_login' | translate }}" class="back-button-desktop back-button-desktop-reset">
<ion-icon name="arrow-round-back" color="#232D4B" class="back" tappable></ion-icon>
</ion-buttons>
<ion-title class="logo-piccolo">
<img src="assets/icon/2p2-logo-color.svg">
</ion-title>
</ion-row>
<div text-center *ngIf="platform.is('desktop')">
<h3>{{ 'reset_pwd' | translate }}</h3>
</div>
<div padding>
<ion-item>
<ion-input formControlName="email" type="email" placeholder="{{ 'email' | translate }}" ngModel required></ion-input>
</ion-item>
</div>
<div padding>
<ion-button type="submit" [disabled]="form.invalid" class="bc-invia">{{ 'reset_pwd' | translate }}</ion-button>
</div>
</ion-col>
</ion-row>
<ion-row color="primary" justify-content-center>
<div class="validation-errors" justify-content-center>
<ng-container *ngFor="let validation of validation_messages.email">
<div class="error-message" *ngIf="matching_email_group.get('email').hasError(validation.type) && (matching_email_group.get('email').dirty
|| matching_email_group.get('email').touched)">
{{ validation.message }}
</div>
</ng-container>
</div>
</ion-row>
</ion-grid>
</form>
</div>
</ion-col>
<ion-col align-self-end size-md="6" size-lg="6" size-xs="12">
<div class="body-blue2"></div>
<div class="body-img22"></div>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ResetPage } from './reset.page';
describe('ResetPage', () => {
let component: ResetPage;
let fixture: ComponentFixture<ResetPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ResetPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ResetPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ResetPage } from './reset.page';
describe('ResetPage', () => {
let component: ResetPage;
let fixture: ComponentFixture<ResetPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ResetPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ResetPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { Validators, FormControl, FormGroup } from '@angular/forms';
import { Router } from "@angular/router";
import { AuthService } from '../../service/auth.service';
import { ErrorResponse } from './../../interface/error-response';
import { UtilService } from '../../../service/util.service';
import { Events, Platform } from '@ionic/angular';
import { TranslateService } from '@ngx-translate/core';
@Component({
selector: 'app-reset',
templateUrl: './reset.page.html',
styleUrls: ['./reset.page.scss'],
})
export class ResetPage implements OnInit {
constructor(
private authService: AuthService,
private router: Router,
public events: Events,
public platform: Platform,
private utilService: UtilService,
public translate: TranslateService
) {
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
}
reset(form){
this.utilService.showLoading();
this.authService.reset(form.value).subscribe((res: ErrorResponse)=>{
this.utilService.closeLoading();
if(res.error){
this.utilService.presentAlert("Errore", "", res.errorMsg, ["OK"]);
}
else
{
this.utilService.presentAlert("Info", "", "Una mail è stata spedita all'indirizzo comunicato con una password temporanea.", ["OK"]);
this.router.navigateByUrl('/login');
}
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
var text = "Errore durante la procedura di reset password";
this.utilService.stampaErrore(text, error);
});
}
matching_email_group = new FormGroup({
email: new FormControl('', Validators.compose([
Validators.required,
Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')
]))
});
validation_messages = {
'email': [
{ type: 'required', message: 'Email è richiesta.' },
{ type: 'pattern', message: 'Deve essere composta da numeri e lettere' }
]
}
ngOnInit() {
}
back()
{
this.router.navigateByUrl('/login');
}
}
import { Component, OnInit } from '@angular/core';
import { Validators, FormControl, FormGroup } from '@angular/forms';
import { Router } from "@angular/router";
import { AuthService } from '../../service/auth.service';
import { ErrorResponse } from './../../interface/error-response';
import { UtilService } from '../../../service/util.service';
import { Events, Platform } from '@ionic/angular';
import { TranslateService } from '@ngx-translate/core';
@Component({
selector: 'app-reset',
templateUrl: './reset.page.html',
styleUrls: ['./reset.page.scss'],
})
export class ResetPage implements OnInit {
constructor(
private authService: AuthService,
private router: Router,
public events: Events,
public platform: Platform,
private utilService: UtilService,
public translate: TranslateService
) {
this.events.subscribe('functionCall:linguaCambiata', eventData => {
translate = utilService.translate;
});
translate = utilService.translate;
}
reset(form){
this.utilService.showLoading();
this.authService.reset(form.value).subscribe((res: ErrorResponse)=>{
this.utilService.closeLoading();
if(res.error){
this.utilService.presentAlert("Errore", "", res.errorMsg, ["OK"]);
}
else
{
this.utilService.presentAlert("Info", "", "Una mail è stata spedita all'indirizzo comunicato con una password temporanea.", ["OK"]);
this.router.navigateByUrl('/login');
}
},
(error: ErrorResponse) => {
this.utilService.closeLoading();
var text = "Errore durante la procedura di reset password";
this.utilService.stampaErrore(text, error);
});
}
matching_email_group = new FormGroup({
email: new FormControl('', Validators.compose([
Validators.required,
Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')
]))
});
validation_messages = {
'email': [
{ type: 'required', message: 'Email è richiesta.' },
{ type: 'pattern', message: 'Deve essere composta da numeri e lettere' }
]
}
ngOnInit() {
}
back()
{
this.router.navigateByUrl('/login');
}
}
import { TestBed } from '@angular/core/testing';
import { AuthService } from './auth.service';
describe('AuthService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: AuthService = TestBed.get(AuthService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { AuthService } from './auth.service';
describe('AuthService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: AuthService = TestBed.get(AuthService);
expect(service).toBeTruthy();
});
});
import { AbstractControl, ValidatorFn, FormControl, FormGroup } from '@angular/forms';
export class PasswordValidator {
// Inspired on: http://plnkr.co/edit/Zcbg2T3tOxYmhxs7vaAm?p=preview
static equals = (newpasswordControl: AbstractControl): ValidatorFn => {
let equal: boolean = false;
return (passwordBisControl: AbstractControl): {[key: string]: boolean} => {
if(newpasswordControl.value == passwordBisControl.value) {
return {
equals: true
};
}
else return null;
};
}
static areEqual(formGroup: FormGroup) {
let val;
let valid = true;
for (let key in formGroup.controls) {
if (formGroup.controls.hasOwnProperty(key)) {
if(key == "oldpassword") continue;
let control: FormControl = <FormControl>formGroup.controls[key];
if (val === undefined) {
val = control.value
} else {
if (val !== control.value) {
valid = false;
break;
}
}
}
}
if (!valid) /*{
return null;
return {
areEqual: false
}
}*/
return {
areEqual: true
}
}
import { AbstractControl, ValidatorFn, FormControl, FormGroup } from '@angular/forms';
export class PasswordValidator {
// Inspired on: http://plnkr.co/edit/Zcbg2T3tOxYmhxs7vaAm?p=preview
static equals = (newpasswordControl: AbstractControl): ValidatorFn => {
let equal: boolean = false;
return (passwordBisControl: AbstractControl): {[key: string]: boolean} => {
if(newpasswordControl.value == passwordBisControl.value) {
return {
equals: true
};
}
else return null;
};
}
static areEqual(formGroup: FormGroup) {
let val;
let valid = true;
for (let key in formGroup.controls) {
if (formGroup.controls.hasOwnProperty(key)) {
if(key == "oldpassword") continue;
let control: FormControl = <FormControl>formGroup.controls[key];
if (val === undefined) {
val = control.value
} else {
if (val !== control.value) {
valid = false;
break;
}
}
}
}
if (!valid) /*{
return null;
return {
areEqual: false
}
}*/
return {
areEqual: true
}
}
}
\ No newline at end of file
<div>
<form #form="ngForm" (ngSubmit)="dismiss(form)">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<div text-center>
<h3>Login</h3>
</div>
<div padding>
<ion-item>
<ion-textarea name="question" placeholder="Inserisci una domanda" ngModel required></ion-textarea>
</ion-item>
</div>
<div padding>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">Salva</ion-button>
</div>
<div padding>
<ion-button size="large" expand="block" (click)="close()">Cancel</ion-button>
</div>
</ion-col>
</ion-row>
</ion-grid>
</form>
</div>
<div>
<form #form="ngForm" (ngSubmit)="dismiss(form)">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<div text-center>
<h3>Login</h3>
</div>
<div padding>
<ion-item>
<ion-textarea name="question" placeholder="Inserisci una domanda" ngModel required></ion-textarea>
</ion-item>
</div>
<div padding>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">Salva</ion-button>
</div>
<div padding>
<ion-button size="large" expand="block" (click)="close()">Cancel</ion-button>
</div>
</ion-col>
</ion-row>
</ion-grid>
</form>
</div>
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ModalQuestionComponent } from './modal-question.component';
describe('ModalQuestionComponent', () => {
let component: ModalQuestionComponent;
let fixture: ComponentFixture<ModalQuestionComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ModalQuestionComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ModalQuestionComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ModalQuestionComponent } from './modal-question.component';
describe('ModalQuestionComponent', () => {
let component: ModalQuestionComponent;
let fixture: ComponentFixture<ModalQuestionComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ModalQuestionComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ModalQuestionComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import {ModalController} from '@ionic/angular';
@Component({
selector: 'app-modal-question',
templateUrl: './modal-question.component.html',
styleUrls: ['./modal-question.component.scss'],
})
export class ModalQuestionComponent implements OnInit {
constructor(private modalController: ModalController) { }
async dismiss(form)
{
await this.modalController.dismiss(form.value.question);
}
async close()
{
await this.modalController.dismiss();
}
ngOnInit() {}
}
import { Component, OnInit } from '@angular/core';
import {ModalController} from '@ionic/angular';
@Component({
selector: 'app-modal-question',
templateUrl: './modal-question.component.html',
styleUrls: ['./modal-question.component.scss'],
})
export class ModalQuestionComponent implements OnInit {
constructor(private modalController: ModalController) { }
async dismiss(form)
{
await this.modalController.dismiss(form.value.question);
}
async close()
{
await this.modalController.dismiss();
}
ngOnInit() {}
}
<div>
<form #form="ngForm" (ngSubmit)="dismiss(form)">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<div text-center>
<h3>Crea Parere</h3>
</div>
<div padding>
<ion-item>
<ion-input name="title" type="text" placeholder="Titolo Parere" ngModel required></ion-input>
</ion-item>
</div>
<div padding>
<ion-item>
<ion-textarea name="question" placeholder="Inserisci una domanda" ngModel required></ion-textarea>
</ion-item>
</div>
<ion-item>
<h4>Aggiungi Allegato</h4>
<ion-input id="file" type="file" name="file" ngModel (ionChange)="loadFile();"></ion-input>
</ion-item>
<div padding>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">Salva</ion-button>
</div>
<div padding>
<ion-button size="large" expand="block" (click)="close()">Cancel</ion-button>
</div>
</ion-col>
</ion-row>
</ion-grid>
</form>
<div>
<form #form="ngForm" (ngSubmit)="dismiss(form)">
<ion-grid>
<ion-row color="primary" justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<div text-center>
<h3>Crea Parere</h3>
</div>
<div padding>
<ion-item>
<ion-input name="title" type="text" placeholder="Titolo Parere" ngModel required></ion-input>
</ion-item>
</div>
<div padding>
<ion-item>
<ion-textarea name="question" placeholder="Inserisci una domanda" ngModel required></ion-textarea>
</ion-item>
</div>
<ion-item>
<h4>Aggiungi Allegato</h4>
<ion-input id="file" type="file" name="file" ngModel (ionChange)="loadFile();"></ion-input>
</ion-item>
<div padding>
<ion-button size="large" type="submit" [disabled]="form.invalid" expand="block">Salva</ion-button>
</div>
<div padding>
<ion-button size="large" expand="block" (click)="close()">Cancel</ion-button>
</div>
</ion-col>
</ion-row>
</ion-grid>
</form>
</div>
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ParereModalComponent } from './parere-modal.component';
describe('ParereModalComponent', () => {
let component: ParereModalComponent;
let fixture: ComponentFixture<ParereModalComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ParereModalComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ParereModalComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ParereModalComponent } from './parere-modal.component';
describe('ParereModalComponent', () => {
let component: ParereModalComponent;
let fixture: ComponentFixture<ParereModalComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ParereModalComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ParereModalComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { DataWithFileUploaded } from './../../interface/data-with-file-uploaded';
import { Component, OnInit } from '@angular/core';
import {ModalController} from '@ionic/angular';
@Component({
selector: 'app-parere-modal',
templateUrl: './parere-modal.component.html',
styleUrls: ['./parere-modal.component.scss'],
})
export class ParereModalComponent implements OnInit {
constructor(private modalController: ModalController) {
result = {dati: null, file: null};
}
ngOnInit() {}
loadFile()
{
var element : HTMLInputElement = document.querySelector('input[type=file]');
var file: Blob = element.files[0];
var reader = new FileReader();
reader.onloadend = function () {
result.file = reader.result;
};
/*reader.addEventListener("load", function () {
result.file = reader.result;
}, false);*/
if (file) {
reader.readAsDataURL(file);
}
}
async dismiss(form)
{
result.dati = form.value;
await this.modalController.dismiss(result);
}
async close()
{
await this.modalController.dismiss();
}
fileName;
}
var result: DataWithFileUploaded;
import { DataWithFileUploaded } from './../../interface/data-with-file-uploaded';
import { Component, OnInit } from '@angular/core';
import {ModalController} from '@ionic/angular';
@Component({
selector: 'app-parere-modal',
templateUrl: './parere-modal.component.html',
styleUrls: ['./parere-modal.component.scss'],
})
export class ParereModalComponent implements OnInit {
constructor(private modalController: ModalController) {
result = {dati: null, file: null};
}
ngOnInit() {}
loadFile()
{
var element : HTMLInputElement = document.querySelector('input[type=file]');
var file: Blob = element.files[0];
var reader = new FileReader();
reader.onloadend = function () {
result.file = reader.result;
};
/*reader.addEventListener("load", function () {
result.file = reader.result;
}, false);*/
if (file) {
reader.readAsDataURL(file);
}
}
async dismiss(form)
{
result.dati = form.value;
await this.modalController.dismiss(result);
}
async close()
{
await this.modalController.dismiss();
}
fileName;
}
var result: DataWithFileUploaded;
export interface ArchiviaNotificaRequest {
daArchiviare: boolean,
cliente: number,
listaNotifiche: number[];
}
export interface ArchiviaNotificaRequest {
daArchiviare: boolean,
cliente: number,
listaNotifiche: number[];
}
import { ArchiviaNotificaRequest } from './archivia-notifica-request';
import { Notifica } from './notifica';
export interface ArchiviaNotificaResponse {
notifica: ArchiviaNotificaRequest,
error: string,
notificheNonArchiviate: Notifica[]
}
import { ArchiviaNotificaRequest } from './archivia-notifica-request';
import { Notifica } from './notifica';
export interface ArchiviaNotificaResponse {
notifica: ArchiviaNotificaRequest,
error: string,
notificheNonArchiviate: Notifica[]
}
export interface ArchiviaRichiestaRequest {
daArchiviare: boolean,
cliente: number,
listaRichieste: number[];
}
export interface ArchiviaRichiestaRequest {
daArchiviare: boolean,
cliente: number,
listaRichieste: number[];
}
import { ArchiviaRichiestaRequest } from './archivia-richiesta-request';
import { Richiesta } from './richiesta';
export interface ArchiviaRichiestaResponse {
richiesta: ArchiviaRichiestaRequest,
error: string,
richiesteNonArchiviate: Richiesta[]
}
import { ArchiviaRichiestaRequest } from './archivia-richiesta-request';
import { Richiesta } from './richiesta';
export interface ArchiviaRichiestaResponse {
richiesta: ArchiviaRichiestaRequest,
error: string,
richiesteNonArchiviate: Richiesta[]
}
export interface DataWithFileUploaded {
file;
dati;
}
export interface DataWithFileUploaded {
file;
dati;
}
import { DocumentiRequest } from './documenti-request';
import { Documento } from './documento';
export interface DocumentiResponse {
cliente: DocumentiRequest;
error: string;
documenti: Documento[];
}
import { DocumentiRequest } from './documenti-request';
import { Documento } from './documento';
export interface DocumentiResponse {
cliente: DocumentiRequest;
error: string;
documenti: Documento[];
}
export interface Documento {
idDocumento: number;
titolo: string;
data: string;
url: string;
tipo: string;
nomeFile: string;
checked: boolean;
}
export interface Documento {
idDocumento: number;
titolo: string;
data: string;
url: string;
tipo: string;
nomeFile: string;
checked: boolean;
}
export interface Fattura {
id: number;
dataProgNotula: string;
dataNotula: string;
urlProgNotula: string;
urlNotula: string;
nrProgNotula: string;
nrNotula: string;
checked: boolean;
}
export interface Fattura {
id: number;
dataProgNotula: string;
dataNotula: string;
urlProgNotula: string;
urlNotula: string;
nrProgNotula: string;
nrNotula: string;
checked: boolean;
}
import { Pair } from './pair';
export interface FattureRequest {
cliente: number;
limite: number;
struttura: number;
filtri: Pair[];
}
import { Pair } from './pair';
export interface FattureRequest {
cliente: number;
limite: number;
struttura: number;
filtri: Pair[];
}
import { Fattura } from './fattura';
import { FattureRequest } from './fatture-request';
export interface FattureResponse {
notula: FattureRequest;
error: string;
notule: Fattura[];
}
import { Fattura } from './fattura';
import { FattureRequest } from './fatture-request';
export interface FattureResponse {
notula: FattureRequest;
error: string;
notule: Fattura[];
}
export interface Intervento {
idIntervento: number;
titolo: string;
testo: string;
data: string;
utente: string;
url: string;
nomeFile: string;
}
export interface Intervento {
idIntervento: number;
titolo: string;
testo: string;
data: string;
utente: string;
url: string;
nomeFile: string;
}
export interface NewRichiestaRequest {
cliente: number;
richiesta: number;
titolo: string;
testo: string;
tipo: string;
file: any;
nomeFile: string;
}
export interface NewRichiestaRequest {
cliente: number;
richiesta: number;
titolo: string;
testo: string;
tipo: string;
file: any;
nomeFile: string;
}
import { NewRichiestaRequest } from './new-richiesta-request';
export interface NewRichiestaResponse {
richiesta: NewRichiestaRequest;
error: string;
idRichiesta:number;
}
import { NewRichiestaRequest } from './new-richiesta-request';
export interface NewRichiestaResponse {
richiesta: NewRichiestaRequest;
error: string;
idRichiesta:number;
}
export interface P2pResponse {
token:string;
}
export interface P2pResponse {
token:string;
}
export interface Pair {
key: string;
value: string;
type: string;
}
export interface Pair {
key: string;
value: string;
type: string;
}
export interface ParereResponse {
error:string;
idCliente: number;
autorizzato: boolean;
}
export interface ParereResponse {
error:string;
idCliente: number;
autorizzato: boolean;
}
import { Intervento } from './intervento';
export interface Richiesta {
idRichiesta: number;
titolo: string;
testo: string;
data: string;
url: string;
tipo: string;
interventi: Intervento[];
nomeFile: string;
checked: boolean;
errorText: string;
archiviato: boolean;
}
import { Intervento } from './intervento';
export interface Richiesta {
idRichiesta: number;
titolo: string;
testo: string;
data: string;
url: string;
tipo: string;
interventi: Intervento[];
nomeFile: string;
checked: boolean;
errorText: string;
archiviato: boolean;
}
import { Pair } from './pair';
export interface RichiesteRequest {
cliente: number;
limite: number;
richiesta: number;
filtri: Pair[];
}
import { Pair } from './pair';
export interface RichiesteRequest {
cliente: number;
limite: number;
richiesta: number;
filtri: Pair[];
}
import { RichiesteRequest } from './richieste-request';
import { Richiesta } from './richiesta';
export interface RichiesteResponse {
richiesta: RichiesteRequest;
error: string;
richieste: Richiesta[];
}
import { RichiesteRequest } from './richieste-request';
import { Richiesta } from './richiesta';
export interface RichiesteResponse {
richiesta: RichiesteRequest;
error: string;
richieste: Richiesta[];
}
export interface Struttura {
id: number;
denominazione: string;
}
export interface Struttura {
id: number;
denominazione: string;
}
import { Struttura } from './struttura';
export interface StruttureResponse {
idCliente: number;
error: string;
strutture: Struttura[];
}
import { Struttura } from './struttura';
export interface StruttureResponse {
idCliente: number;
error: string;
strutture: Struttura[];
}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { BiPage } from './bi.page';
const routes: Routes = [
{
path: '',
component: BiPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [BiPage]
})
export class BiPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { BiPage } from './bi.page';
const routes: Routes = [
{
path: '',
component: BiPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [BiPage]
})
export class BiPageModule {}
<ion-header>
<ion-toolbar>
<ion-title>bi</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
</ion-content>
<ion-header>
<ion-toolbar>
<ion-title>bi</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
</ion-content>
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { BiPage } from './bi.page';
describe('BiPage', () => {
let component: BiPage;
let fixture: ComponentFixture<BiPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BiPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(BiPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { BiPage } from './bi.page';
describe('BiPage', () => {
let component: BiPage;
let fixture: ComponentFixture<BiPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BiPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(BiPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { Events } from '@ionic/angular';
import { InAppBrowser, InAppBrowserOptions } from '@ionic-native/in-app-browser/ngx';
@Component({
selector: 'app-bi',
templateUrl: './bi.page.html',
styleUrls: ['./bi.page.scss'],
})
export class BiPage implements OnInit {
options : InAppBrowserOptions = {
location : 'yes',//Or 'no'
hidden : 'no', //Or 'yes'
clearcache : 'yes',
clearsessioncache : 'yes',
zoom : 'yes',//Android only ,shows browser zoom controls
hardwareback : 'yes',
mediaPlaybackRequiresUserAction : 'no',
shouldPauseOnSuspend : 'no', //Android only
closebuttoncaption : 'Close', //iOS only
disallowoverscroll : 'no', //iOS only
toolbar : 'yes', //iOS only
enableViewportScale : 'no', //iOS only
allowInlineMediaPlayback : 'no',//iOS only
presentationstyle : 'pagesheet',//iOS only
//fullscreen : 'yes',//Windows only
};
constructor(public events: Events, private iab: InAppBrowser) {
this.events.publish('functionCall:startup', null);
const browser = this.iab.create('https://ionicframework.com/', "_blank", this.options);
}
ngOnInit() {
}
}
import { Component, OnInit } from '@angular/core';
import { Events } from '@ionic/angular';
import { InAppBrowser, InAppBrowserOptions } from '@ionic-native/in-app-browser/ngx';
@Component({
selector: 'app-bi',
templateUrl: './bi.page.html',
styleUrls: ['./bi.page.scss'],
})
export class BiPage implements OnInit {
options : InAppBrowserOptions = {
location : 'yes',//Or 'no'
hidden : 'no', //Or 'yes'
clearcache : 'yes',
clearsessioncache : 'yes',
zoom : 'yes',//Android only ,shows browser zoom controls
hardwareback : 'yes',
mediaPlaybackRequiresUserAction : 'no',
shouldPauseOnSuspend : 'no', //Android only
closebuttoncaption : 'Close', //iOS only
disallowoverscroll : 'no', //iOS only
toolbar : 'yes', //iOS only
enableViewportScale : 'no', //iOS only
allowInlineMediaPlayback : 'no',//iOS only
presentationstyle : 'pagesheet',//iOS only
//fullscreen : 'yes',//Windows only
};
constructor(public events: Events, private iab: InAppBrowser) {
this.events.publish('functionCall:startup', null);
const browser = this.iab.create('https://ionicframework.com/', "_blank", this.options);
}
ngOnInit() {
}
}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { BusinesscallPage } from './businesscall.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: BusinesscallPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [BusinesscallPage]
})
export class BusinesscallPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { BusinesscallPage } from './businesscall.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: BusinesscallPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [BusinesscallPage]
})
export class BusinesscallPageModule {}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { BusinesscallPage } from './businesscall.page';
describe('BusinesscallPage', () => {
let component: BusinesscallPage;
let fixture: ComponentFixture<BusinesscallPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BusinesscallPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(BusinesscallPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { BusinesscallPage } from './businesscall.page';
describe('BusinesscallPage', () => {
let component: BusinesscallPage;
let fixture: ComponentFixture<BusinesscallPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BusinesscallPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(BusinesscallPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { DocumentiPage } from './documenti.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: DocumentiPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [DocumentiPage]
})
export class DocumentiPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { DocumentiPage } from './documenti.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: DocumentiPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [DocumentiPage]
})
export class DocumentiPageModule {}
.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;
.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
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { DocumentiPage } from './documenti.page';
describe('DocumentiPage', () => {
let component: DocumentiPage;
let fixture: ComponentFixture<DocumentiPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ DocumentiPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DocumentiPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { DocumentiPage } from './documenti.page';
describe('DocumentiPage', () => {
let component: DocumentiPage;
let fixture: ComponentFixture<DocumentiPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ DocumentiPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DocumentiPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { IonicModule } from '@ionic/angular';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HomePageRoutingModule } from './home.router.module';
import { HomePage } from './home.page';
import { TranslateModule } from '@ngx-translate/core';
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
HomePageRoutingModule,
TranslateModule
],
declarations: [HomePage]
})
export class HomePageModule {}
import { IonicModule } from '@ionic/angular';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HomePageRoutingModule } from './home.router.module';
import { HomePage } from './home.page';
import { TranslateModule } from '@ngx-translate/core';
@NgModule({
imports: [
IonicModule,
CommonModule,
FormsModule,
HomePageRoutingModule,
TranslateModule
],
declarations: [HomePage]
})
export class HomePageModule {}
ion-title{
position: absolute;
top: 0;
left: 0;
padding: 0 90px 1px;
width: 100%;
height: 100%;
}
ion-tab-bar{
@media (min-width: 1080px) {
justify-content: left;
}
}
.tabbar {
@media (max-width: 1080px) {
display: flex;
overflow-x: scroll;
min-height: 80px;
.tabbutton {
display: inline-block !important;
min-width: 100px !important;
width: auto !important;
}
}
}
ion-title{
position: absolute;
top: 0;
left: 0;
padding: 0 90px 1px;
width: 100%;
height: 100%;
}
ion-tab-bar{
@media (min-width: 1080px) {
justify-content: left;
}
}
.tabbar {
@media (max-width: 1080px) {
display: flex;
overflow-x: scroll;
min-height: 80px;
.tabbutton {
display: inline-block !important;
min-width: 100px !important;
width: auto !important;
}
}
}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { HomePage } from './home.page';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [HomePage],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { HomePage } from './home.page';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [HomePage],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { IndexPage } from './index.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: IndexPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [IndexPage]
})
export class IndexPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { IndexPage } from './index.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: IndexPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [IndexPage]
})
export class IndexPageModule {}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IndexPage } from './index.page';
describe('IndexPage', () => {
let component: IndexPage;
let fixture: ComponentFixture<IndexPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ IndexPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(IndexPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IndexPage } from './index.page';
describe('IndexPage', () => {
let component: IndexPage;
let fixture: ComponentFixture<IndexPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ IndexPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(IndexPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { IntervistePage } from './interviste.page';
import {ModalQuestionComponent} from '../../components/modal-question/modal-question.component';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: IntervistePage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [IntervistePage, ModalQuestionComponent],
entryComponents: [ModalQuestionComponent]
})
export class IntervistePageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { IntervistePage } from './interviste.page';
import {ModalQuestionComponent} from '../../components/modal-question/modal-question.component';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: IntervistePage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [IntervistePage, ModalQuestionComponent],
entryComponents: [ModalQuestionComponent]
})
export class IntervistePageModule {}
.my-custom-menu {
--width: 500px;
}
ion-content {
//background: url(../assets/imgs/chat-back.png) no-repeat center center fixed;
background-size: cover;
height: 100%;
overflow: hidden;
.item-md, .item-ios {
background: none;
}
}
ion-footer {
background: white;
ion-icon {
padding: 10px;
font-size: 20px;
color: green;
}
}
.message {
width: 60%;
}
.chat-status {
min-height: 49px;
.chat-date {
display: block;
font-size: 10px;
font-style: italic;
color: #fff;
text-shadow: 0px -1px 0px #222, 0px 1px 0px #aaa;
height: 15px;
left: 10%;
right:10%;
}
.chat-content-center {
padding: 5px 10px;
background-color: #e1e1f7;
border-radius: 6px;
font-size: 12px;
color: #555;
height: 34px;
left: 10%;
right:10%;
}
}
.chat-message {
width: 80%;
min-height: 40px;
.right-bubble {
position: relative;
background: #dcf8c6;
border-top-left-radius: .4em;
border-bottom-left-radius: .4em;
border-bottom-right-radius: .4em;
padding: 5px 10px 10px;
left: 15%;
span.msg-name {
font-size: 12px;
font-weight: bold;
color: green;
}
span.msg-date {
font-size: 10px;
}
}
.right-bubble:after {
content: '';
position: absolute;
right: 0;
top: 0;
width: 0;
height: 0;
border: 27px solid transparent;
border-left-color: #dcf8c6;
border-right: 0;
border-top: 0;
margin-top: -13.5px;
margin-right: -27px;
}
.left-bubble {
position: relative;
background: #7117d8;
border-top-right-radius: .4em;
border-bottom-left-radius: .4em;
border-bottom-right-radius: .4em;
padding: 5px 10px 10px;
left: 5%;
span.msg-name {
font-size: 12px;
font-weight: bold;
color: blue;
}
span.msg-date {
font-size: 10px;
}
}
.left-bubble:after {
content: '';
position: absolute;
left: 0;
top: 0;
width: 0;
height: 0;
border: 27px solid transparent;
border-right-color: #7117d8;
border-left: 0;
border-top: 0;
margin-top: -13.5px;
margin-left: -27px;
}
.my-custom-menu {
--width: 500px;
}
ion-content {
//background: url(../assets/imgs/chat-back.png) no-repeat center center fixed;
background-size: cover;
height: 100%;
overflow: hidden;
.item-md, .item-ios {
background: none;
}
}
ion-footer {
background: white;
ion-icon {
padding: 10px;
font-size: 20px;
color: green;
}
}
.message {
width: 60%;
}
.chat-status {
min-height: 49px;
.chat-date {
display: block;
font-size: 10px;
font-style: italic;
color: #fff;
text-shadow: 0px -1px 0px #222, 0px 1px 0px #aaa;
height: 15px;
left: 10%;
right:10%;
}
.chat-content-center {
padding: 5px 10px;
background-color: #e1e1f7;
border-radius: 6px;
font-size: 12px;
color: #555;
height: 34px;
left: 10%;
right:10%;
}
}
.chat-message {
width: 80%;
min-height: 40px;
.right-bubble {
position: relative;
background: #dcf8c6;
border-top-left-radius: .4em;
border-bottom-left-radius: .4em;
border-bottom-right-radius: .4em;
padding: 5px 10px 10px;
left: 15%;
span.msg-name {
font-size: 12px;
font-weight: bold;
color: green;
}
span.msg-date {
font-size: 10px;
}
}
.right-bubble:after {
content: '';
position: absolute;
right: 0;
top: 0;
width: 0;
height: 0;
border: 27px solid transparent;
border-left-color: #dcf8c6;
border-right: 0;
border-top: 0;
margin-top: -13.5px;
margin-right: -27px;
}
.left-bubble {
position: relative;
background: #7117d8;
border-top-right-radius: .4em;
border-bottom-left-radius: .4em;
border-bottom-right-radius: .4em;
padding: 5px 10px 10px;
left: 5%;
span.msg-name {
font-size: 12px;
font-weight: bold;
color: blue;
}
span.msg-date {
font-size: 10px;
}
}
.left-bubble:after {
content: '';
position: absolute;
left: 0;
top: 0;
width: 0;
height: 0;
border: 27px solid transparent;
border-right-color: #7117d8;
border-left: 0;
border-top: 0;
margin-top: -13.5px;
margin-left: -27px;
}
}
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IntervistePage } from './interviste.page';
describe('IntervistePage', () => {
let component: IntervistePage;
let fixture: ComponentFixture<IntervistePage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ IntervistePage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(IntervistePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IntervistePage } from './interviste.page';
describe('IntervistePage', () => {
let component: IntervistePage;
let fixture: ComponentFixture<IntervistePage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ IntervistePage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(IntervistePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ParerePage } from './parere.page';
import {ParereModalComponent} from '../../components/parere-modal/parere-modal.component';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: ParerePage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [ParerePage, ParereModalComponent],
entryComponents: [ParereModalComponent]
})
export class ParerePageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ParerePage } from './parere.page';
import {ParereModalComponent} from '../../components/parere-modal/parere-modal.component';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: ParerePage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [ParerePage, ParereModalComponent],
entryComponents: [ParereModalComponent]
})
export class ParerePageModule {}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ParerePage } from './parere.page';
describe('ParerePage', () => {
let component: ParerePage;
let fixture: ComponentFixture<ParerePage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ParerePage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ParerePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ParerePage } from './parere.page';
describe('ParerePage', () => {
let component: ParerePage;
let fixture: ComponentFixture<ParerePage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ParerePage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ParerePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { PrivacyPage } from './privacy.page';
const routes: Routes = [
{
path: '',
component: PrivacyPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [PrivacyPage]
})
export class PrivacyPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { PrivacyPage } from './privacy.page';
const routes: Routes = [
{
path: '',
component: PrivacyPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [PrivacyPage]
})
export class PrivacyPageModule {}
a{
color: #3697d1;
}
ion-content{
height: 100%;
font-family: "futura-pt",sans-serif;
font-style: normal;
font-weight: 400;
-webkit-font-smoothing: antialiased;
color: #515151;
font-size: 17px;
}
h1, h2, h3, h4, h5, strong, b{
font-family: "futura-pt-bold",sans-serif;
font-style: normal;
font-weight: 700;
color: rgb(81, 81, 81);
}
.titleh2{
font-size: 30px;
margin-top: 20px;
}
section{
width: 100%;
float: left;
padding: 30px 0;
/* padding-bottom:0px; */
}
section h1{
margin-top: 0;
}
section h2{
margin-top: 0;
font-size: 28px;
}
section.gray{
background: #eee;
}
section h2 img{
height: 47px;
width: auto;
position: relative;
top: -3px;
}
hr.hr{
border: 0;
height: 4px;
background: #f8c24f;
margin: 30px 0;
}
html{
background: #fff !important;
}
hr{
clear: both;
width: 100%;
display: block;
}
.single-product .tab-content .tab-pane .row:last-child .wrapponj .wrappino, .single-product .spessoinsieme .row:last-child .wrapponj .wrappino {
border-bottom: 0px !important;
}
.row.ruote {
margin-top: 20px;
}
.row.is-flex {
display: flex;
flex-wrap: wrap;
}
.row.is-flex > [class*='col-'] {
display: flex;
flex-direction: column;
}
/*
* And with max cross-browser enabled.
* Nobody should ever write this by hand.
* Use a preprocesser with autoprefixing.
*/
.row.is-flex {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.row.is-flex > [class*='col-'] {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.row.spaz-tr {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-wrap: wrap;
}
.row.spaz-tr > [class*='col-'] {
display: flex;
flex-direction: column;
}
.centralzone li, .contentpost li {
padding-left: 24px;
position: relative;
margin-bottom: 8px;
}
.centralzone ul, .contentpost ul {
list-style: none;
padding: 0;
margin: 0;
margin-top:10px;
}
.centralzone li:before, .contentpost li:before {
content: "";
background-color: #3697D2;
width: 8px;
height: 8px;
position: absolute;
top: 9px;
left: 8px;
}
.centralzone h2 {
text-transform: uppercase;
border-bottom:1px solid #ddd;
}
.page .proposte {
width: 150px;
display: block;
margin:auto;
}
.page .spaceagg {
margin-top:40px;
a{
color: #3697d1;
}
ion-content{
height: 100%;
font-family: "futura-pt",sans-serif;
font-style: normal;
font-weight: 400;
-webkit-font-smoothing: antialiased;
color: #515151;
font-size: 17px;
}
h1, h2, h3, h4, h5, strong, b{
font-family: "futura-pt-bold",sans-serif;
font-style: normal;
font-weight: 700;
color: rgb(81, 81, 81);
}
.titleh2{
font-size: 30px;
margin-top: 20px;
}
section{
width: 100%;
float: left;
padding: 30px 0;
/* padding-bottom:0px; */
}
section h1{
margin-top: 0;
}
section h2{
margin-top: 0;
font-size: 28px;
}
section.gray{
background: #eee;
}
section h2 img{
height: 47px;
width: auto;
position: relative;
top: -3px;
}
hr.hr{
border: 0;
height: 4px;
background: #f8c24f;
margin: 30px 0;
}
html{
background: #fff !important;
}
hr{
clear: both;
width: 100%;
display: block;
}
.single-product .tab-content .tab-pane .row:last-child .wrapponj .wrappino, .single-product .spessoinsieme .row:last-child .wrapponj .wrappino {
border-bottom: 0px !important;
}
.row.ruote {
margin-top: 20px;
}
.row.is-flex {
display: flex;
flex-wrap: wrap;
}
.row.is-flex > [class*='col-'] {
display: flex;
flex-direction: column;
}
/*
* And with max cross-browser enabled.
* Nobody should ever write this by hand.
* Use a preprocesser with autoprefixing.
*/
.row.is-flex {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.row.is-flex > [class*='col-'] {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.row.spaz-tr {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
flex-wrap: wrap;
}
.row.spaz-tr > [class*='col-'] {
display: flex;
flex-direction: column;
}
.centralzone li, .contentpost li {
padding-left: 24px;
position: relative;
margin-bottom: 8px;
}
.centralzone ul, .contentpost ul {
list-style: none;
padding: 0;
margin: 0;
margin-top:10px;
}
.centralzone li:before, .contentpost li:before {
content: "";
background-color: #3697D2;
width: 8px;
height: 8px;
position: absolute;
top: 9px;
left: 8px;
}
.centralzone h2 {
text-transform: uppercase;
border-bottom:1px solid #ddd;
}
.page .proposte {
width: 150px;
display: block;
margin:auto;
}
.page .spaceagg {
margin-top:40px;
}
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { PrivacyPage } from './privacy.page';
describe('PrivacyPage', () => {
let component: PrivacyPage;
let fixture: ComponentFixture<PrivacyPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ PrivacyPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(PrivacyPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { PrivacyPage } from './privacy.page';
describe('PrivacyPage', () => {
let component: PrivacyPage;
let fixture: ComponentFixture<PrivacyPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ PrivacyPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(PrivacyPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { Router } from "@angular/router";
@Component({
selector: 'app-privacy',
templateUrl: './privacy.page.html',
styleUrls: ['./privacy.page.scss'],
})
export class PrivacyPage implements OnInit {
constructor(private router: Router) { }
back()
{
this.router.navigateByUrl('/businesscall');
}
ngOnInit() {
}
}
import { Component, OnInit } from '@angular/core';
import { Router } from "@angular/router";
@Component({
selector: 'app-privacy',
templateUrl: './privacy.page.html',
styleUrls: ['./privacy.page.scss'],
})
export class PrivacyPage implements OnInit {
constructor(private router: Router) { }
back()
{
this.router.navigateByUrl('/businesscall');
}
ngOnInit() {
}
}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { SegreteriaPage } from './segreteria.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: SegreteriaPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [SegreteriaPage]
})
export class SegreteriaPageModule {}
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { SegreteriaPage } from './segreteria.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [
{
path: '',
component: SegreteriaPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes),
TranslateModule
],
declarations: [SegreteriaPage]
})
export class SegreteriaPageModule {}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SegreteriaPage } from './segreteria.page';
describe('SegreteriaPage', () => {
let component: SegreteriaPage;
let fixture: ComponentFixture<SegreteriaPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ SegreteriaPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SegreteriaPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SegreteriaPage } from './segreteria.page';
describe('SegreteriaPage', () => {
let component: SegreteriaPage;
let fixture: ComponentFixture<SegreteriaPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ SegreteriaPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SegreteriaPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { DocumentiService } from './documenti.service';
describe('DocumentiService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: DocumentiService = TestBed.get(DocumentiService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { DocumentiService } from './documenti.service';
describe('DocumentiService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: DocumentiService = TestBed.get(DocumentiService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { HttpClientDataService } from './http-client-data.service';
describe('HttpClientDataService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: HttpClientDataService = TestBed.get(HttpClientDataService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { HttpClientDataService } from './http-client-data.service';
describe('HttpClientDataService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: HttpClientDataService = TestBed.get(HttpClientDataService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { HttpHeaders} from '@angular/common/http';
import { environment } from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class HttpClientDataService {
constructor() {
this.BASE_ADDRESS = environment.BASE_ADDRESS;
this.P2PSingleSignOnUrl = environment.P2PSingleSignOnUrl;
this.P2PTokenUrl = environment.P2PTokenUrl;
}
BASE_ADDRESS: string = '';
P2PTokenUrl: string = "";
P2PSingleSignOnUrl: string = "";
httpFormData = {
headers: new HttpHeaders({
'Content-Type': 'multipart/form-data'
})
};
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
};
httpOptionsJson = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
}
import { Injectable } from '@angular/core';
import { HttpHeaders} from '@angular/common/http';
import { environment } from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class HttpClientDataService {
constructor() {
this.BASE_ADDRESS = environment.BASE_ADDRESS;
this.P2PSingleSignOnUrl = environment.P2PSingleSignOnUrl;
this.P2PTokenUrl = environment.P2PTokenUrl;
}
BASE_ADDRESS: string = '';
P2PTokenUrl: string = "";
P2PSingleSignOnUrl: string = "";
httpFormData = {
headers: new HttpHeaders({
'Content-Type': 'multipart/form-data'
})
};
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
};
httpOptionsJson = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
}
import { TestBed } from '@angular/core/testing';
import { IntervisteService } from './interviste.service';
describe('IntervisteService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: IntervisteService = TestBed.get(IntervisteService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { IntervisteService } from './interviste.service';
describe('IntervisteService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: IntervisteService = TestBed.get(IntervisteService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { ParereService } from './parere.service';
describe('ParereService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: ParereService = TestBed.get(ParereService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { ParereService } from './parere.service';
describe('ParereService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: ParereService = TestBed.get(ParereService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { SegreteriaService } from './segreteria.service';
describe('SegreteriaService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: SegreteriaService = TestBed.get(SegreteriaService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { SegreteriaService } from './segreteria.service';
describe('SegreteriaService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: SegreteriaService = TestBed.get(SegreteriaService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { UtilService } from './util.service';
describe('UtilService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: UtilService = TestBed.get(UtilService);
expect(service).toBeTruthy();
});
});
import { TestBed } from '@angular/core/testing';
import { UtilService } from './util.service';
describe('UtilService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: UtilService = TestBed.get(UtilService);
expect(service).toBeTruthy();
});
});
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<metadata><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.6.0">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""/>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?></metadata>
<style type="text/css">
.st0{fill:#242D4B;}
</style>
<path class="st0" d="M165.58,136.77V13.71c0-3.36-2.72-6.08-6.08-6.08H45.18c-3.36,0-6.08,2.72-6.08,6.08v10.93
c-1.23-0.07-2.46-0.11-3.71-0.11c-3.36,0-6.08,2.72-6.08,6.08v155.68c0,3.36,2.72,6.08,6.08,6.08h129.22c3.36,0,6.08-2.72,6.08-6.08
v-43.52C170.69,139.74,168.48,137.24,165.58,136.77z M51.25,19.79h102.18v116.9h-5.88c-9.38,0-18.17-2.6-25.68-7.11h17.75
c2.24,0,4.05-1.81,4.05-4.05c0-2.24-1.81-4.05-4.05-4.05h-27.95c-3.15-3.25-5.87-6.93-8.06-10.94h36.01c2.24,0,4.05-1.81,4.05-4.05
c0-2.24-1.81-4.05-4.05-4.05h-39.53c-1.16-3.49-1.95-7.15-2.31-10.94h41.84c2.24,0,4.05-1.81,4.05-4.05s-1.81-4.05-4.05-4.05H97.46
c-0.2-3.74-0.73-7.4-1.56-10.94h43.71c2.24,0,4.05-1.81,4.05-4.05s-1.81-4.05-4.05-4.05H93.39c-1.49-3.84-3.34-7.5-5.52-10.94h51.74
c2.24,0,4.05-1.81,4.05-4.05c0-2.24-1.81-4.05-4.05-4.05H81.73c-8-8.95-18.54-15.57-30.48-18.73V19.79z M158.54,180.21H41.46V37.05
c24.72,3.01,43.93,24.12,43.93,49.64c0,34.27,27.88,62.16,62.16,62.16h10.99L158.54,180.21L158.54,180.21z"/>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 200 200" style="enable-background:new 0 0 200 200;" xml:space="preserve">
<metadata><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.6.0">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""/>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?></metadata>
<style type="text/css">
.st0{fill:#242D4B;}
</style>
<path class="st0" d="M165.58,136.77V13.71c0-3.36-2.72-6.08-6.08-6.08H45.18c-3.36,0-6.08,2.72-6.08,6.08v10.93
c-1.23-0.07-2.46-0.11-3.71-0.11c-3.36,0-6.08,2.72-6.08,6.08v155.68c0,3.36,2.72,6.08,6.08,6.08h129.22c3.36,0,6.08-2.72,6.08-6.08
v-43.52C170.69,139.74,168.48,137.24,165.58,136.77z M51.25,19.79h102.18v116.9h-5.88c-9.38,0-18.17-2.6-25.68-7.11h17.75
c2.24,0,4.05-1.81,4.05-4.05c0-2.24-1.81-4.05-4.05-4.05h-27.95c-3.15-3.25-5.87-6.93-8.06-10.94h36.01c2.24,0,4.05-1.81,4.05-4.05
c0-2.24-1.81-4.05-4.05-4.05h-39.53c-1.16-3.49-1.95-7.15-2.31-10.94h41.84c2.24,0,4.05-1.81,4.05-4.05s-1.81-4.05-4.05-4.05H97.46
c-0.2-3.74-0.73-7.4-1.56-10.94h43.71c2.24,0,4.05-1.81,4.05-4.05s-1.81-4.05-4.05-4.05H93.39c-1.49-3.84-3.34-7.5-5.52-10.94h51.74
c2.24,0,4.05-1.81,4.05-4.05c0-2.24-1.81-4.05-4.05-4.05H81.73c-8-8.95-18.54-15.57-30.48-18.73V19.79z M158.54,180.21H41.46V37.05
c24.72,3.01,43.93,24.12,43.93,49.64c0,34.27,27.88,62.16,62.16,62.16h10.99L158.54,180.21L158.54,180.21z"/>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 97.6 117.5" style="enable-background:new 0 0 97.6 117.5;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<g>
<path class="st0" d="M63.7,8.6H9.5v100.2H88V33L63.7,8.6z M64.6,14.3L82.3,32H64.6V14.3z M12.9,105.5V12h48.4v23.4h23.4v70.2H12.9
z"/>
<path class="st0" d="M26.2,37h15c0.9,0,1.7-0.7,1.7-1.7s-0.7-1.7-1.7-1.7h-15c-0.9,0-1.7,0.7-1.7,1.7S25.3,37,26.2,37z"/>
<path class="st0" d="M26.2,50.4h8.4c0.9,0,1.7-0.7,1.7-1.7c0-0.9-0.7-1.7-1.7-1.7h-8.4c-0.9,0-1.7,0.7-1.7,1.7
C24.6,49.6,25.3,50.4,26.2,50.4z"/>
<path class="st0" d="M51.3,50.4H63c0.9,0,1.7-0.7,1.7-1.7c0-0.9-0.7-1.7-1.7-1.7H51.3c-0.9,0-1.7,0.7-1.7,1.7
C49.6,49.6,50.4,50.4,51.3,50.4z"/>
<path class="st0" d="M41.7,47.5c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2c0.3,0.3,0.8,0.5,1.2,0.5s0.9-0.2,1.2-0.5
c0.3-0.3,0.5-0.7,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2C43.5,46.9,42.4,46.9,41.7,47.5z"/>
<path class="st0" d="M71.3,50.4c0.4,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.8,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2c-0.6-0.6-1.7-0.6-2.4,0
c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2C70.5,50.2,70.9,50.4,71.3,50.4z"/>
<path class="st0" d="M46.3,60.4H34.6c-0.9,0-1.7,0.7-1.7,1.7s0.7,1.7,1.7,1.7h11.7c0.9,0,1.7-0.7,1.7-1.7
C47.9,61.1,47.2,60.4,46.3,60.4z"/>
<path class="st0" d="M26.2,63.7c0.4,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.8,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2c-0.6-0.6-1.7-0.6-2.4,0
c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2C25.4,63.6,25.8,63.7,26.2,63.7z"/>
<path class="st0" d="M31.5,75.7c-3.7,1.9-4.9,5.5-5.3,9.3c-0.7-0.6-1.4-1.2-2.1-1.7c-1.6-1.4-4,1-2.4,2.4c1.6,1.3,3.1,2.6,4.7,3.9
c1.1,0.9,2.8,0.3,2.9-1.2c0.1-3.6,0.3-7.9,3.9-9.8C35.1,77.6,33.4,74.7,31.5,75.7z"/>
<path class="st0" d="M42.6,82.4c-2.3,0.5-4.9,3.5-6.6,0.2c-1-1.9-3.8-0.2-2.9,1.7c0.9,1.8,2.5,3,4.5,3.2c1,0.1,1.9,0,2.8-0.4
c0.7-0.3,3.2-2.2,3.8-1.2c1,1.9,3.9,0.2,2.9-1.7C46.2,82.6,44.4,82,42.6,82.4z"/>
<path class="st0" d="M76.8,66.3c-0.4-0.1-0.6-0.4-0.6-0.6c-0.1-0.2-0.2-0.5,0-0.9c0.8-1.7,0.5-3.7-0.9-5c-1.3-1.3-3.3-1.7-5-0.9
c-0.4,0.2-0.7,0.1-0.9,0c-0.2-0.1-0.5-0.2-0.6-0.6c-0.6-1.8-2.3-2.9-4.2-2.9c-1.9,0-3.5,1.1-4.2,2.9c-0.1,0.4-0.4,0.6-0.6,0.6
c-0.2,0.1-0.5,0.2-0.9,0c-1.7-0.8-3.7-0.5-5,0.9c-1.3,1.3-1.7,3.3-0.9,5c0.2,0.4,0.1,0.7,0,0.9c-0.1,0.2-0.2,0.5-0.6,0.6
c-1.8,0.6-2.9,2.3-2.9,4.2s1.1,3.5,2.9,4.2c0.4,0.1,0.6,0.4,0.6,0.6c0.1,0.2,0.2,0.5,0,0.9c-0.8,1.7-0.5,3.7,0.9,5
c0.6,0.6,1.4,1.1,2.3,1.2v20.6l8.4-8.4l8.4,8.4V82.3c0.8-0.2,1.6-0.6,2.3-1.2c1.3-1.3,1.7-3.3,0.9-5c-0.2-0.4-0.1-0.7,0-0.9
c0.1-0.2,0.2-0.5,0.6-0.6c1.8-0.6,2.9-2.3,2.9-4.2S78.5,66.9,76.8,66.3z M64.6,89.8l-5,5v-13c0,0,0,0,0,0c0.1,0,0.2,0,0.2,0.1
c0.1,0,0.2,0.1,0.3,0.2c0.1,0.1,0.2,0.2,0.3,0.4c0.6,1.8,2.3,2.9,4.2,2.9c1.9,0,3.5-1.1,4.2-2.9c0.1-0.2,0.2-0.3,0.3-0.4
c0.1-0.1,0.2-0.2,0.3-0.2c0.1,0,0.1,0,0.2-0.1c0,0,0,0,0,0v13L64.6,89.8z M75.6,71.4c-1.2,0.4-2.1,1.3-2.6,2.5
c-0.5,1.2-0.4,2.5,0.1,3.6c0.3,0.6,0,1.1-0.2,1.2c-0.1,0.1-0.5,0.4-0.9,0.3l-0.4-0.1c-0.2-0.1-0.3-0.1-0.5-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c-0.1,0-0.3,0-0.4,0
c-0.3,0.1-0.6,0.1-0.9,0.3c0,0,0,0,0,0l0,0c-0.1,0-0.1,0.1-0.2,0.1c-0.2,0.1-0.4,0.2-0.6,0.3c-0.2,0.2-0.4,0.3-0.6,0.5
c0,0-0.1,0-0.1,0.1c-0.4,0.4-0.8,1-1,1.6c-0.2,0.6-0.8,0.7-1,0.7s-0.8-0.1-1-0.7c-0.2-0.6-0.5-1.1-1-1.6c0,0,0,0-0.1,0
c-0.2-0.2-0.4-0.4-0.6-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.1,0-0.1-0.1-0.2-0.1l0,0c0,0,0,0,0,0c0,0-0.1,0-0.1,0
c-0.2-0.1-0.5-0.2-0.7-0.2c-0.2,0-0.4,0-0.6-0.1c-0.1,0-0.2,0-0.2,0c0,0,0,0,0,0c-0.6,0-1.2,0.1-1.7,0.4L57.3,79
c-0.5,0.1-0.8-0.1-1-0.3c-0.2-0.2-0.5-0.6-0.2-1.2c0.5-1.1,0.6-2.4,0.1-3.6c-0.5-1.1-1.4-2-2.6-2.5c-0.6-0.2-0.7-0.8-0.7-1
s0.1-0.8,0.7-1c1.2-0.4,2.1-1.3,2.6-2.5c0.5-1.2,0.4-2.5-0.1-3.6c-0.3-0.6,0-1.1,0.2-1.2c0.2-0.2,0.6-0.5,1.2-0.2
c1.1,0.5,2.4,0.6,3.6,0.1c1.1-0.5,2-1.4,2.5-2.6c0.2-0.6,0.8-0.7,1-0.7s0.8,0.1,1,0.7c0.4,1.2,1.3,2.1,2.5,2.6
c1.1,0.5,2.5,0.4,3.6-0.1c0.6-0.3,1.1,0,1.2,0.2c0.2,0.2,0.5,0.6,0.2,1.2c-0.5,1.1-0.6,2.4-0.1,3.6c0.5,1.1,1.4,2,2.6,2.5
c0.6,0.2,0.7,0.8,0.7,1S76.3,71.2,75.6,71.4z"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 97.6 117.5" style="enable-background:new 0 0 97.6 117.5;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<g>
<path class="st0" d="M63.7,8.6H9.5v100.2H88V33L63.7,8.6z M64.6,14.3L82.3,32H64.6V14.3z M12.9,105.5V12h48.4v23.4h23.4v70.2H12.9
z"/>
<path class="st0" d="M26.2,37h15c0.9,0,1.7-0.7,1.7-1.7s-0.7-1.7-1.7-1.7h-15c-0.9,0-1.7,0.7-1.7,1.7S25.3,37,26.2,37z"/>
<path class="st0" d="M26.2,50.4h8.4c0.9,0,1.7-0.7,1.7-1.7c0-0.9-0.7-1.7-1.7-1.7h-8.4c-0.9,0-1.7,0.7-1.7,1.7
C24.6,49.6,25.3,50.4,26.2,50.4z"/>
<path class="st0" d="M51.3,50.4H63c0.9,0,1.7-0.7,1.7-1.7c0-0.9-0.7-1.7-1.7-1.7H51.3c-0.9,0-1.7,0.7-1.7,1.7
C49.6,49.6,50.4,50.4,51.3,50.4z"/>
<path class="st0" d="M41.7,47.5c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2c0.3,0.3,0.8,0.5,1.2,0.5s0.9-0.2,1.2-0.5
c0.3-0.3,0.5-0.7,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2C43.5,46.9,42.4,46.9,41.7,47.5z"/>
<path class="st0" d="M71.3,50.4c0.4,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.8,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2c-0.6-0.6-1.7-0.6-2.4,0
c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2C70.5,50.2,70.9,50.4,71.3,50.4z"/>
<path class="st0" d="M46.3,60.4H34.6c-0.9,0-1.7,0.7-1.7,1.7s0.7,1.7,1.7,1.7h11.7c0.9,0,1.7-0.7,1.7-1.7
C47.9,61.1,47.2,60.4,46.3,60.4z"/>
<path class="st0" d="M26.2,63.7c0.4,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.8,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2c-0.6-0.6-1.7-0.6-2.4,0
c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2C25.4,63.6,25.8,63.7,26.2,63.7z"/>
<path class="st0" d="M31.5,75.7c-3.7,1.9-4.9,5.5-5.3,9.3c-0.7-0.6-1.4-1.2-2.1-1.7c-1.6-1.4-4,1-2.4,2.4c1.6,1.3,3.1,2.6,4.7,3.9
c1.1,0.9,2.8,0.3,2.9-1.2c0.1-3.6,0.3-7.9,3.9-9.8C35.1,77.6,33.4,74.7,31.5,75.7z"/>
<path class="st0" d="M42.6,82.4c-2.3,0.5-4.9,3.5-6.6,0.2c-1-1.9-3.8-0.2-2.9,1.7c0.9,1.8,2.5,3,4.5,3.2c1,0.1,1.9,0,2.8-0.4
c0.7-0.3,3.2-2.2,3.8-1.2c1,1.9,3.9,0.2,2.9-1.7C46.2,82.6,44.4,82,42.6,82.4z"/>
<path class="st0" d="M76.8,66.3c-0.4-0.1-0.6-0.4-0.6-0.6c-0.1-0.2-0.2-0.5,0-0.9c0.8-1.7,0.5-3.7-0.9-5c-1.3-1.3-3.3-1.7-5-0.9
c-0.4,0.2-0.7,0.1-0.9,0c-0.2-0.1-0.5-0.2-0.6-0.6c-0.6-1.8-2.3-2.9-4.2-2.9c-1.9,0-3.5,1.1-4.2,2.9c-0.1,0.4-0.4,0.6-0.6,0.6
c-0.2,0.1-0.5,0.2-0.9,0c-1.7-0.8-3.7-0.5-5,0.9c-1.3,1.3-1.7,3.3-0.9,5c0.2,0.4,0.1,0.7,0,0.9c-0.1,0.2-0.2,0.5-0.6,0.6
c-1.8,0.6-2.9,2.3-2.9,4.2s1.1,3.5,2.9,4.2c0.4,0.1,0.6,0.4,0.6,0.6c0.1,0.2,0.2,0.5,0,0.9c-0.8,1.7-0.5,3.7,0.9,5
c0.6,0.6,1.4,1.1,2.3,1.2v20.6l8.4-8.4l8.4,8.4V82.3c0.8-0.2,1.6-0.6,2.3-1.2c1.3-1.3,1.7-3.3,0.9-5c-0.2-0.4-0.1-0.7,0-0.9
c0.1-0.2,0.2-0.5,0.6-0.6c1.8-0.6,2.9-2.3,2.9-4.2S78.5,66.9,76.8,66.3z M64.6,89.8l-5,5v-13c0,0,0,0,0,0c0.1,0,0.2,0,0.2,0.1
c0.1,0,0.2,0.1,0.3,0.2c0.1,0.1,0.2,0.2,0.3,0.4c0.6,1.8,2.3,2.9,4.2,2.9c1.9,0,3.5-1.1,4.2-2.9c0.1-0.2,0.2-0.3,0.3-0.4
c0.1-0.1,0.2-0.2,0.3-0.2c0.1,0,0.1,0,0.2-0.1c0,0,0,0,0,0v13L64.6,89.8z M75.6,71.4c-1.2,0.4-2.1,1.3-2.6,2.5
c-0.5,1.2-0.4,2.5,0.1,3.6c0.3,0.6,0,1.1-0.2,1.2c-0.1,0.1-0.5,0.4-0.9,0.3l-0.4-0.1c-0.2-0.1-0.3-0.1-0.5-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c-0.1,0-0.3,0-0.4,0
c-0.3,0.1-0.6,0.1-0.9,0.3c0,0,0,0,0,0l0,0c-0.1,0-0.1,0.1-0.2,0.1c-0.2,0.1-0.4,0.2-0.6,0.3c-0.2,0.2-0.4,0.3-0.6,0.5
c0,0-0.1,0-0.1,0.1c-0.4,0.4-0.8,1-1,1.6c-0.2,0.6-0.8,0.7-1,0.7s-0.8-0.1-1-0.7c-0.2-0.6-0.5-1.1-1-1.6c0,0,0,0-0.1,0
c-0.2-0.2-0.4-0.4-0.6-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.1,0-0.1-0.1-0.2-0.1l0,0c0,0,0,0,0,0c0,0-0.1,0-0.1,0
c-0.2-0.1-0.5-0.2-0.7-0.2c-0.2,0-0.4,0-0.6-0.1c-0.1,0-0.2,0-0.2,0c0,0,0,0,0,0c-0.6,0-1.2,0.1-1.7,0.4L57.3,79
c-0.5,0.1-0.8-0.1-1-0.3c-0.2-0.2-0.5-0.6-0.2-1.2c0.5-1.1,0.6-2.4,0.1-3.6c-0.5-1.1-1.4-2-2.6-2.5c-0.6-0.2-0.7-0.8-0.7-1
s0.1-0.8,0.7-1c1.2-0.4,2.1-1.3,2.6-2.5c0.5-1.2,0.4-2.5-0.1-3.6c-0.3-0.6,0-1.1,0.2-1.2c0.2-0.2,0.6-0.5,1.2-0.2
c1.1,0.5,2.4,0.6,3.6,0.1c1.1-0.5,2-1.4,2.5-2.6c0.2-0.6,0.8-0.7,1-0.7s0.8,0.1,1,0.7c0.4,1.2,1.3,2.1,2.5,2.6
c1.1,0.5,2.5,0.4,3.6-0.1c0.6-0.3,1.1,0,1.2,0.2c0.2,0.2,0.5,0.6,0.2,1.2c-0.5,1.1-0.6,2.4-0.1,3.6c0.5,1.1,1.4,2,2.6,2.5
c0.6,0.2,0.7,0.8,0.7,1S76.3,71.2,75.6,71.4z"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 97.6 117.5" style="enable-background:new 0 0 97.6 117.5;" xml:space="preserve">
<style type="text/css">
.st0{fill:#525252;}
</style>
<g>
<g>
<path class="st0" d="M63.7,8.6H9.5v100.2H88V33L63.7,8.6z M64.6,14.3L82.3,32H64.6V14.3z M12.9,105.5V12h48.4v23.4h23.4v70.2H12.9
z"/>
<path class="st0" d="M26.2,37h15c0.9,0,1.7-0.7,1.7-1.7s-0.7-1.7-1.7-1.7h-15c-0.9,0-1.7,0.7-1.7,1.7S25.3,37,26.2,37z"/>
<path class="st0" d="M26.2,50.4h8.4c0.9,0,1.7-0.7,1.7-1.7c0-0.9-0.7-1.7-1.7-1.7h-8.4c-0.9,0-1.7,0.7-1.7,1.7
C24.6,49.6,25.3,50.4,26.2,50.4z"/>
<path class="st0" d="M51.3,50.4H63c0.9,0,1.7-0.7,1.7-1.7c0-0.9-0.7-1.7-1.7-1.7H51.3c-0.9,0-1.7,0.7-1.7,1.7
C49.6,49.6,50.4,50.4,51.3,50.4z"/>
<path class="st0" d="M41.7,47.5c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2c0.3,0.3,0.8,0.5,1.2,0.5s0.9-0.2,1.2-0.5
c0.3-0.3,0.5-0.7,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2C43.5,46.9,42.4,46.9,41.7,47.5z"/>
<path class="st0" d="M71.3,50.4c0.4,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.8,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2c-0.6-0.6-1.7-0.6-2.4,0
c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2C70.5,50.2,70.9,50.4,71.3,50.4z"/>
<path class="st0" d="M46.3,60.4H34.6c-0.9,0-1.7,0.7-1.7,1.7s0.7,1.7,1.7,1.7h11.7c0.9,0,1.7-0.7,1.7-1.7
C47.9,61.1,47.2,60.4,46.3,60.4z"/>
<path class="st0" d="M26.2,63.7c0.4,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.8,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2c-0.6-0.6-1.7-0.6-2.4,0
c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2C25.4,63.6,25.8,63.7,26.2,63.7z"/>
<path class="st0" d="M31.5,75.7c-3.7,1.9-4.9,5.5-5.3,9.3c-0.7-0.6-1.4-1.2-2.1-1.7c-1.6-1.4-4,1-2.4,2.4c1.6,1.3,3.1,2.6,4.7,3.9
c1.1,0.9,2.8,0.3,2.9-1.2c0.1-3.6,0.3-7.9,3.9-9.8C35.1,77.6,33.4,74.7,31.5,75.7z"/>
<path class="st0" d="M42.6,82.4c-2.3,0.5-4.9,3.5-6.6,0.2c-1-1.9-3.8-0.2-2.9,1.7c0.9,1.8,2.5,3,4.5,3.2c1,0.1,1.9,0,2.8-0.4
c0.7-0.3,3.2-2.2,3.8-1.2c1,1.9,3.9,0.2,2.9-1.7C46.2,82.6,44.4,82,42.6,82.4z"/>
<path class="st0" d="M76.8,66.3c-0.4-0.1-0.6-0.4-0.6-0.6c-0.1-0.2-0.2-0.5,0-0.9c0.8-1.7,0.5-3.7-0.9-5c-1.3-1.3-3.3-1.7-5-0.9
c-0.4,0.2-0.7,0.1-0.9,0c-0.2-0.1-0.5-0.2-0.6-0.6c-0.6-1.8-2.3-2.9-4.2-2.9c-1.9,0-3.5,1.1-4.2,2.9c-0.1,0.4-0.4,0.6-0.6,0.6
c-0.2,0.1-0.5,0.2-0.9,0c-1.7-0.8-3.7-0.5-5,0.9c-1.3,1.3-1.7,3.3-0.9,5c0.2,0.4,0.1,0.7,0,0.9c-0.1,0.2-0.2,0.5-0.6,0.6
c-1.8,0.6-2.9,2.3-2.9,4.2s1.1,3.5,2.9,4.2c0.4,0.1,0.6,0.4,0.6,0.6c0.1,0.2,0.2,0.5,0,0.9c-0.8,1.7-0.5,3.7,0.9,5
c0.6,0.6,1.4,1.1,2.3,1.2v20.6l8.4-8.4l8.4,8.4V82.3c0.8-0.2,1.6-0.6,2.3-1.2c1.3-1.3,1.7-3.3,0.9-5c-0.2-0.4-0.1-0.7,0-0.9
c0.1-0.2,0.2-0.5,0.6-0.6c1.8-0.6,2.9-2.3,2.9-4.2S78.5,66.9,76.8,66.3z M64.6,89.8l-5,5v-13c0,0,0,0,0,0c0.1,0,0.2,0,0.2,0.1
c0.1,0,0.2,0.1,0.3,0.2c0.1,0.1,0.2,0.2,0.3,0.4c0.6,1.8,2.3,2.9,4.2,2.9c1.9,0,3.5-1.1,4.2-2.9c0.1-0.2,0.2-0.3,0.3-0.4
c0.1-0.1,0.2-0.2,0.3-0.2c0.1,0,0.1,0,0.2-0.1c0,0,0,0,0,0v13L64.6,89.8z M75.6,71.4c-1.2,0.4-2.1,1.3-2.6,2.5
c-0.5,1.2-0.4,2.5,0.1,3.6c0.3,0.6,0,1.1-0.2,1.2c-0.1,0.1-0.5,0.4-0.9,0.3l-0.4-0.1c-0.2-0.1-0.3-0.1-0.5-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c-0.1,0-0.3,0-0.4,0
c-0.3,0.1-0.6,0.1-0.9,0.3c0,0,0,0,0,0l0,0c-0.1,0-0.1,0.1-0.2,0.1c-0.2,0.1-0.4,0.2-0.6,0.3c-0.2,0.2-0.4,0.3-0.6,0.5
c0,0-0.1,0-0.1,0.1c-0.4,0.4-0.8,1-1,1.6c-0.2,0.6-0.8,0.7-1,0.7s-0.8-0.1-1-0.7c-0.2-0.6-0.5-1.1-1-1.6c0,0,0,0-0.1,0
c-0.2-0.2-0.4-0.4-0.6-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.1,0-0.1-0.1-0.2-0.1l0,0c0,0,0,0,0,0c0,0-0.1,0-0.1,0
c-0.2-0.1-0.5-0.2-0.7-0.2c-0.2,0-0.4,0-0.6-0.1c-0.1,0-0.2,0-0.2,0c0,0,0,0,0,0c-0.6,0-1.2,0.1-1.7,0.4L57.3,79
c-0.5,0.1-0.8-0.1-1-0.3c-0.2-0.2-0.5-0.6-0.2-1.2c0.5-1.1,0.6-2.4,0.1-3.6c-0.5-1.1-1.4-2-2.6-2.5c-0.6-0.2-0.7-0.8-0.7-1
s0.1-0.8,0.7-1c1.2-0.4,2.1-1.3,2.6-2.5c0.5-1.2,0.4-2.5-0.1-3.6c-0.3-0.6,0-1.1,0.2-1.2c0.2-0.2,0.6-0.5,1.2-0.2
c1.1,0.5,2.4,0.6,3.6,0.1c1.1-0.5,2-1.4,2.5-2.6c0.2-0.6,0.8-0.7,1-0.7s0.8,0.1,1,0.7c0.4,1.2,1.3,2.1,2.5,2.6
c1.1,0.5,2.5,0.4,3.6-0.1c0.6-0.3,1.1,0,1.2,0.2c0.2,0.2,0.5,0.6,0.2,1.2c-0.5,1.1-0.6,2.4-0.1,3.6c0.5,1.1,1.4,2,2.6,2.5
c0.6,0.2,0.7,0.8,0.7,1S76.3,71.2,75.6,71.4z"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 97.6 117.5" style="enable-background:new 0 0 97.6 117.5;" xml:space="preserve">
<style type="text/css">
.st0{fill:#525252;}
</style>
<g>
<g>
<path class="st0" d="M63.7,8.6H9.5v100.2H88V33L63.7,8.6z M64.6,14.3L82.3,32H64.6V14.3z M12.9,105.5V12h48.4v23.4h23.4v70.2H12.9
z"/>
<path class="st0" d="M26.2,37h15c0.9,0,1.7-0.7,1.7-1.7s-0.7-1.7-1.7-1.7h-15c-0.9,0-1.7,0.7-1.7,1.7S25.3,37,26.2,37z"/>
<path class="st0" d="M26.2,50.4h8.4c0.9,0,1.7-0.7,1.7-1.7c0-0.9-0.7-1.7-1.7-1.7h-8.4c-0.9,0-1.7,0.7-1.7,1.7
C24.6,49.6,25.3,50.4,26.2,50.4z"/>
<path class="st0" d="M51.3,50.4H63c0.9,0,1.7-0.7,1.7-1.7c0-0.9-0.7-1.7-1.7-1.7H51.3c-0.9,0-1.7,0.7-1.7,1.7
C49.6,49.6,50.4,50.4,51.3,50.4z"/>
<path class="st0" d="M41.7,47.5c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2c0.3,0.3,0.8,0.5,1.2,0.5s0.9-0.2,1.2-0.5
c0.3-0.3,0.5-0.7,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2C43.5,46.9,42.4,46.9,41.7,47.5z"/>
<path class="st0" d="M71.3,50.4c0.4,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.8,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2c-0.6-0.6-1.7-0.6-2.4,0
c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2C70.5,50.2,70.9,50.4,71.3,50.4z"/>
<path class="st0" d="M46.3,60.4H34.6c-0.9,0-1.7,0.7-1.7,1.7s0.7,1.7,1.7,1.7h11.7c0.9,0,1.7-0.7,1.7-1.7
C47.9,61.1,47.2,60.4,46.3,60.4z"/>
<path class="st0" d="M26.2,63.7c0.4,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.8,0.5-1.2c0-0.4-0.2-0.9-0.5-1.2c-0.6-0.6-1.7-0.6-2.4,0
c-0.3,0.3-0.5,0.7-0.5,1.2c0,0.4,0.2,0.9,0.5,1.2C25.4,63.6,25.8,63.7,26.2,63.7z"/>
<path class="st0" d="M31.5,75.7c-3.7,1.9-4.9,5.5-5.3,9.3c-0.7-0.6-1.4-1.2-2.1-1.7c-1.6-1.4-4,1-2.4,2.4c1.6,1.3,3.1,2.6,4.7,3.9
c1.1,0.9,2.8,0.3,2.9-1.2c0.1-3.6,0.3-7.9,3.9-9.8C35.1,77.6,33.4,74.7,31.5,75.7z"/>
<path class="st0" d="M42.6,82.4c-2.3,0.5-4.9,3.5-6.6,0.2c-1-1.9-3.8-0.2-2.9,1.7c0.9,1.8,2.5,3,4.5,3.2c1,0.1,1.9,0,2.8-0.4
c0.7-0.3,3.2-2.2,3.8-1.2c1,1.9,3.9,0.2,2.9-1.7C46.2,82.6,44.4,82,42.6,82.4z"/>
<path class="st0" d="M76.8,66.3c-0.4-0.1-0.6-0.4-0.6-0.6c-0.1-0.2-0.2-0.5,0-0.9c0.8-1.7,0.5-3.7-0.9-5c-1.3-1.3-3.3-1.7-5-0.9
c-0.4,0.2-0.7,0.1-0.9,0c-0.2-0.1-0.5-0.2-0.6-0.6c-0.6-1.8-2.3-2.9-4.2-2.9c-1.9,0-3.5,1.1-4.2,2.9c-0.1,0.4-0.4,0.6-0.6,0.6
c-0.2,0.1-0.5,0.2-0.9,0c-1.7-0.8-3.7-0.5-5,0.9c-1.3,1.3-1.7,3.3-0.9,5c0.2,0.4,0.1,0.7,0,0.9c-0.1,0.2-0.2,0.5-0.6,0.6
c-1.8,0.6-2.9,2.3-2.9,4.2s1.1,3.5,2.9,4.2c0.4,0.1,0.6,0.4,0.6,0.6c0.1,0.2,0.2,0.5,0,0.9c-0.8,1.7-0.5,3.7,0.9,5
c0.6,0.6,1.4,1.1,2.3,1.2v20.6l8.4-8.4l8.4,8.4V82.3c0.8-0.2,1.6-0.6,2.3-1.2c1.3-1.3,1.7-3.3,0.9-5c-0.2-0.4-0.1-0.7,0-0.9
c0.1-0.2,0.2-0.5,0.6-0.6c1.8-0.6,2.9-2.3,2.9-4.2S78.5,66.9,76.8,66.3z M64.6,89.8l-5,5v-13c0,0,0,0,0,0c0.1,0,0.2,0,0.2,0.1
c0.1,0,0.2,0.1,0.3,0.2c0.1,0.1,0.2,0.2,0.3,0.4c0.6,1.8,2.3,2.9,4.2,2.9c1.9,0,3.5-1.1,4.2-2.9c0.1-0.2,0.2-0.3,0.3-0.4
c0.1-0.1,0.2-0.2,0.3-0.2c0.1,0,0.1,0,0.2-0.1c0,0,0,0,0,0v13L64.6,89.8z M75.6,71.4c-1.2,0.4-2.1,1.3-2.6,2.5
c-0.5,1.2-0.4,2.5,0.1,3.6c0.3,0.6,0,1.1-0.2,1.2c-0.1,0.1-0.5,0.4-0.9,0.3l-0.4-0.1c-0.2-0.1-0.3-0.1-0.5-0.2
c-0.1,0-0.2-0.1-0.3-0.1c-0.2,0-0.3,0-0.5-0.1c-0.1,0-0.3,0-0.4,0c-0.2,0-0.3,0-0.5,0c-0.1,0-0.3,0-0.4,0
c-0.3,0.1-0.6,0.1-0.9,0.3c0,0,0,0,0,0l0,0c-0.1,0-0.1,0.1-0.2,0.1c-0.2,0.1-0.4,0.2-0.6,0.3c-0.2,0.2-0.4,0.3-0.6,0.5
c0,0-0.1,0-0.1,0.1c-0.4,0.4-0.8,1-1,1.6c-0.2,0.6-0.8,0.7-1,0.7s-0.8-0.1-1-0.7c-0.2-0.6-0.5-1.1-1-1.6c0,0,0,0-0.1,0
c-0.2-0.2-0.4-0.4-0.6-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.1,0-0.1-0.1-0.2-0.1l0,0c0,0,0,0,0,0c0,0-0.1,0-0.1,0
c-0.2-0.1-0.5-0.2-0.7-0.2c-0.2,0-0.4,0-0.6-0.1c-0.1,0-0.2,0-0.2,0c0,0,0,0,0,0c-0.6,0-1.2,0.1-1.7,0.4L57.3,79
c-0.5,0.1-0.8-0.1-1-0.3c-0.2-0.2-0.5-0.6-0.2-1.2c0.5-1.1,0.6-2.4,0.1-3.6c-0.5-1.1-1.4-2-2.6-2.5c-0.6-0.2-0.7-0.8-0.7-1
s0.1-0.8,0.7-1c1.2-0.4,2.1-1.3,2.6-2.5c0.5-1.2,0.4-2.5-0.1-3.6c-0.3-0.6,0-1.1,0.2-1.2c0.2-0.2,0.6-0.5,1.2-0.2
c1.1,0.5,2.4,0.6,3.6,0.1c1.1-0.5,2-1.4,2.5-2.6c0.2-0.6,0.8-0.7,1-0.7s0.8,0.1,1,0.7c0.4,1.2,1.3,2.1,2.5,2.6
c1.1,0.5,2.5,0.4,3.6-0.1c0.6-0.3,1.1,0,1.2,0.2c0.2,0.2,0.5,0.6,0.2,1.2c-0.5,1.1-0.6,2.4-0.1,3.6c0.5,1.1,1.4,2,2.6,2.5
c0.6,0.2,0.7,0.8,0.7,1S76.3,71.2,75.6,71.4z"/>
</g>
</g>
</svg>
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