Aggiornamento Traduzioni ...

This commit is contained in:
Paolo Arena
2020-03-31 20:34:49 +02:00
parent 411acf2f70
commit e513118cbc
28 changed files with 3362 additions and 979 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -67,6 +67,9 @@
font-weight: bold;
width: 100px;
}
.passoint{
width: 90px;
}
.gift{
margin: 4px;
@@ -89,6 +92,21 @@
color: blue;
}
.titlenave{
width: 55px;
text-align: center;
}
.datanave{
width: 80px;
text-align: center;
}
.datanave_int{
width: 60px;
text-align: center;
}
.dati {
color: blue;
font-size: 1.25rem;

View File

@@ -167,6 +167,9 @@ export default class CMyNave extends MixinNave {
}
public getNavePartByInd(ind) {
this.getrigaNaveByInd(ind)
if (!!this.navi_partenza[ind])
return tools.getstrshortDate(this.navi_partenza[ind].date_start)
else
@@ -407,10 +410,19 @@ export default class CMyNave extends MixinNave {
}
public gettitlenave(ind) {
let ris = ''
if (ind === 1)
return this.getRiganave(this.nave.riga) + '.' + this.getColnave(this.nave.col)
else
return (this.getrigaNaveByInd(ind)) + '.x'
else {
ris = (this.getrigaNaveByInd(ind)) + '.' + this.getcolNaveByInd(ind)
}
let add = ''
// for (let index = 0; index < (4 - ris.length); index++) {
// add += '&nbsp;'
// }
ris = add + ris
return ris
}
public getdatanave(rec) {
@@ -425,13 +437,37 @@ export default class CMyNave extends MixinNave {
}
}
return this.getNavePartByInd(rec.ind)
const riga = this.getrigaNaveByInd(rec.ind)
const col = this.getcolNaveByInd(rec.ind)
const mynavepart = this.getnavePartenzaByRigaCol(riga, col)
if (!!mynavepart) {
if (!!mynavepart.date_start)
return tools.getstrshortDate(mynavepart.date_start)
}
return ' --/-- '
// return this.getNavePartByInd(rec.ind)
}
public getnavePartenzaByRigaCol(riga, col) {
for (const mynave of this.navi_partenza) {
if (!!mynave) {
if ((mynave.riga === riga) && (mynave.col === col)) {
return mynave
}
}
}
return null
}
public getrigaNaveByInd(ind) {
return this.getRiganave(this.nave.riga + ind - 1)
}
public getcolNaveByInd(ind) {
const miacol = this.nave.col * Math.pow(2, ind - 1)
return this.getColnave(miacol)
}
public NaveeseguitabyInd(riga) {
return (this.riga >= riga)
}
@@ -451,14 +487,23 @@ export default class CMyNave extends MixinNave {
// console.log('this.rigadoni', this.rigadoni, 'ind', rec.ind)
if (!rec.ind)
return ''
const riga = this.getrigaNaveByInd(rec.ind)
const col = this.getcolNaveByInd(rec.ind)
const mynavepart = this.getnavePartenzaByRigaCol(riga, col)
if (!!mynavepart) {
if (mynavepart.DoniConfermati > 0) {
return 'fas fa-gift'
}
}
if (this.rigadoni >= this.getrigaNaveByInd(rec.ind)) {
return 'fas fa-gift'
// return 'fas fa-gift'
}
}
public async InviaMsgANave(msgobj, navemediatore) {
let msgtitle = translate('dashboard.invia_link_chat')
let msgtitle = translate('dashboard.controlla_donatori')
let msginvia = msgtitle
if (msgobj.inviareale) {
msgtitle = translate('dashboard.invia_link_chat')
@@ -506,11 +551,11 @@ export default class CMyNave extends MixinNave {
}
public gettitlemediatore() {
return this.getdatastr(this.partenza_primo_donatore()) + ' ' + 'NAVE' + ' ' + this.mediatore.riga + '.' + this.mediatore.col + ' ' + '🎁' + 'AYNI'
return this.getdatastr(this.partenza_primo_donatore()) + ' ' + this.$t('dashboard.nave') + ' ' + this.getisProvvisoriaMediatoreStr() + this.mediatore.riga + '.' + this.mediatore.col + ' ' + '🎁' + 'AYNI'
}
public gettitledonatore() {
return this.getdatastr(this.donatore_navepers.date_start) + ' ' + 'NAVE' + ' ' + this.donatore_navepers.riga + '.' + this.donatore_navepers.col + ' ' + '🎁' + 'AYNI'
return this.getdatastr(this.donatore_navepers.date_start) + ' ' + this.$t('dashboard.nave') + ' ' + this.getisProvvisoriaStr() + this.donatore_navepers.riga + '.' + this.donatore_navepers.col + ' ' + '🎁' + 'AYNI'
}
public gettesto() {
@@ -518,17 +563,46 @@ export default class CMyNave extends MixinNave {
}
public getisProvvisoriaStr() {
let istemp = false
if (!!this.donatore_navepers) {
if (this.donatore_navepers.provvisoria) {
return ' Temporanea '
istemp = true
}
} else {
istemp = true
}
if (istemp) {
return ' ' + this.$t('dashboard.temporanea') + ' '
}
return ''
}
public getisProvvisoriaMediatoreStr() {
let istemp = false
if (!!this.mediatore_navepers) {
if (this.mediatore_navepers.provvisoria) {
istemp = true
}
} else {
istemp = true
}
if (istemp) {
return ' ' + this.$t('dashboard.temporanea') + ' '
}
return ''
}
public isDefinitivaMediatore() {
if (!!this.mediatore_navepers)
return (!this.mediatore_navepers.provvisoria)
return false
}
public getindex(recdonatore, index) {
if (recdonatore.ind_order === this.nave.rec.donatore.recmediatore.ind_order && (recdonatore.num_tess === 2))
return 'TESS'
return this.$t('dashboard.ritessitura')
return 'D' + (index)
}

View File

@@ -21,8 +21,8 @@
align="justify"
narrow-indicator
>
<q-tab name="tragitto" label="Tragitto"></q-tab>
<q-tab name="mediatore" label="Mediatore"></q-tab>
<q-tab name="tragitto" :label="$t('dashboard.tragitto')"></q-tab>
<q-tab name="mediatore" :label="$t('dashboard.mediatore')"></q-tab>
</q-tabs>
@@ -31,14 +31,14 @@
<q-chip class="glossy q-ma-sm" color="orange" text-color="white" icon="star">
{{getposizione()}}
</q-chip>
<div class="row justify-between">
<div class="row justify-between no-wrap">
<div class="cont_pos_intest">N</div>
<div class="cont_intestaz q-mx-sm"> Nome<br>dei Passaggi</div>
<div class="cont_intestaz q-mx-sm passoint" v-html="$t('dashboard.nome_dei_passaggi')"></div>
<div class="cont_intestaz">Nave</div>
<div class="cont_intestaz">Data<br>Partenza</div>
<div class="cont_intestaz_small">Doni<br>Inviati</div>
<div class="cont_intestaz titlenave">{{$t('dashboard.nave')}}</div>
<div class="cont_intestaz datanave_int" v-html="$t('dashboard.data_partenza')"></div>
<div class="cont_intestaz_small" v-html="$t('dashboard.doni_inviati')"></div>
</div>
<div v-for="rec in tragitto" :key="rec.ind">
@@ -53,12 +53,12 @@
</q-chip>
</div>
</div>
<div class="">
<div class="titlenave">
<q-chip class="glossy" :color="rec.color" text-color="white">
{{ gettitlenave(rec.ind) }}
<div class="" v-html="gettitlenave(rec.ind)"></div>
</q-chip>
</div>
<div class="">
<div class="datanave">
<q-chip class="glossy" :color="rec.color" text-color="white">
{{ getdatanave(rec) }}
</q-chip>
@@ -74,7 +74,7 @@
<div class="row justify-center q-gutter-md">
<div v-if="nave.rec.mediatore.recsognatori">
<div class="sognatore">SOGNATORI:</div>
<div class="sognatore">{{$t('dashboard.sognatori')}}:</div>
<div v-for="(sognatore, index) in nave.rec.mediatore.recsognatori" :key="10+index">
<div v-if="sognatore" :class="`cont_sognatore ` + getclassSelect(sognatore)">
A{{3 - index}} - {{ sognatore.name }} {{ sognatore.surname }}
@@ -82,7 +82,7 @@
</div>
</div>
<div class="">
<div class="mediatore">MEDIATORE:</div>
<div class="mediatore text-uppercase">{{$t('dashboard.mediatore')}}:</div>
<div :class="`cont_mediatore ` + getclassSelect(nave.rec.mediatore.recmediatore)">
{{ nave.rec.mediatore.recmediatore.name }} {{
nave.rec.mediatore.recmediatore.surname }} ({{
@@ -90,7 +90,7 @@
</div>
</div>
<div class="">
<div class="intermedio3">INTERMEDIO3:</div>
<div class="intermedio3">{{$t('dashboard.intermedio')}}3:</div>
<div v-for="(terra, index) in nave.rec.mediatore.arrterra" :key="index">
<div v-if="terra" :class="`cont_donatore ` + getclassSelect(terra)">
B{{index + 1}} - {{ terra.name }} {{ terra.surname }} ({{ terra.username }})
@@ -100,7 +100,7 @@
</div>
</div>
<div class="">
<div class="intermedio2">INTERMEDIO2:</div>
<div class="intermedio2">{{$t('dashboard.intermedio')}}2:</div>
<div v-for="(aria, index) in nave.rec.mediatore.arraria" :key="index">
<div v-if="aria" :class="`cont_donatore ` + getclassSelect(aria)">
C{{index + 1}} - {{ aria.name }} {{ aria.surname }} ({{ aria.username }}) -
@@ -109,7 +109,7 @@
</div>
</div>
</div>
<div class="donatore">DONATORI:</div>
<div class="donatore text-uppercase">{{$t('dashboard.donatori')}}:</div>
<div v-for="(donatore, index) in nave.rec.mediatore.arrdonatori" :key="index">
<div v-if="donatore" :class="`cont_donatore row ` + getclassSelect(donatore)">
{{ getindex(donatore, index + 1) }} - {{ donatore.name }} {{ donatore.surname }}
@@ -122,27 +122,30 @@
</div>
</div>
<div class="q-my-md">
<div v-if="isDefinitivaMediatore()" class="q-my-md">
<div class="text-left" v-html="gettesto()"></div>
<q-input v-model="link_chat" :label="$t('dashboard.link_chat')"
debounce="1000"
input-class="myinput-area"
@input="change_link_chat">
<div>
<q-input v-model="link_chat" :label="$t('dashboard.link_chat')"
debounce="1000"
input-class="myinput-area"
@input="change_link_chat">
</q-input>
</q-input>
<div class="row justify-center centermydiv q-gutter-sm" style="max-width: 420px;">
<!--<q-btn rounded text-color="secondary" icon="fab fa-telegram"
:label="$t('dashboard.controlla_donatori')"
@click="InviaLinkChatADonatori(false)"></q-btn>-->
<div class="row justify-center centermydiv q-gutter-sm" style="max-width: 420px;">
<q-btn rounded text-color="secondary" icon="fab fa-telegram"
:label="$t('dashboard.controlla_donatori')"
@click="InviaLinkChatADonatori(false)"></q-btn>
<q-btn rounded text-color="primary" icon="fab fa-telegram"
:disable="!linkchatesiste"
:label="$t('dashboard.invia_link_chat')"
@click="InviaLinkChatADonatori(true)"></q-btn>
<q-btn rounded text-color="primary" icon="fab fa-telegram"
:disable="!linkchatesiste"
:label="$t('dashboard.invia_link_chat')"
@click="InviaLinkChatADonatori(true)"></q-btn>
</div>
</div>
</div>
</q-tab-panel>
@@ -157,8 +160,8 @@
narrow-indicator
>
<q-tab name="donatore" label="Donatore"></q-tab>
<q-tab name="sognatore" label="Sognatore"></q-tab>
<q-tab name="donatore" :label="$t('dashboard.donatore')"></q-tab>
<q-tab name="sognatore" :label="$t('dashboard.sognatore')"></q-tab>
</q-tabs>
<q-tab-panels v-model="cosa2" animated>
<q-tab-panel name="donatore">
@@ -168,7 +171,7 @@
<div class="">
<div class="row justify-center q-gutter-md">
<div v-if="nave.rec.donatore.recsognatori">
<div class="sognatore">SOGNATORI:</div>
<div class="sognatore">{{$t('dashboard.sognatori')}}:</div>
<div v-for="(sognatore, index) in nave.rec.donatore.recsognatori" :key="10+index">
<div v-if="sognatore" :class="`cont_sognatore ` + getclassSelect(sognatore)">
A{{3 - index}} - {{ sognatore.name }} {{ sognatore.surname }}
@@ -176,7 +179,7 @@
</div>
</div>
<div class="">
<div class="mediatore">MEDIATORE:</div>
<div class="mediatore text-uppercase">{{$t('dashboard.mediatore')}}:</div>
<div :class="`cont_mediatore ` + getclassSelect(nave.rec.donatore.recmediatore)">
{{ nave.rec.donatore.recmediatore.name }} {{
nave.rec.donatore.recmediatore.surname }} ({{
@@ -184,7 +187,7 @@
</div>
</div>
<div class="">
<div class="intermedio3">INTERMEDIO3:</div>
<div class="intermedio3">{{$t('dashboard.intermedio')}}3:</div>
<div v-for="(terra, index) in nave.rec.donatore.arrterra" :key="index">
<div v-if="terra" :class="`cont_donatore ` + getclassSelect(terra)">
B{{index + 1}} - {{ terra.name }} {{ terra.surname }} ({{ terra.username
@@ -194,7 +197,7 @@
</div>
</div>
<div class="">
<div class="intermedio2">INTERMEDIO2:</div>
<div class="intermedio2">{{$t('dashboard.intermedio')}}2:</div>
<div v-for="(aria, index) in nave.rec.donatore.arraria" :key="index">
<div v-if="aria" :class="`cont_donatore ` + getclassSelect(aria)">
C{{index + 1}} - {{ aria.name }} {{ aria.surname }} ({{ aria.username
@@ -203,7 +206,7 @@
</div>
</div>
</div>
<div class="donatore">DONATORI:</div>
<div class="donatore text-uppercase">{{$t('dashboard.donatori')}}:</div>
<div v-for="(donatore, index) in nave.rec.donatore.arrdonatori" :key="index">
<div v-if="donatore" :class="`cont_donatore row ` + getclassSelect(donatore)">
<div>
@@ -224,7 +227,7 @@
</div>
<div class="q-ma-md q-butter-sm" v-if="!!linkchatopen">
Per entrare nella Gift Chat, clicca qui:<br>
{{$t('dashboard.gift_chat')}}:<br>
<div class="q-ma-md">
<q-btn rounded color="primary" icon="fab fa-telegram"
:label="$t('dashboard.entra_in_gift_chat')"
@@ -245,10 +248,10 @@
<div v-if="!FattoDono" class="text-evidente bordo_stondato">
<div>Quando effettuare il Regalo: <strong>{{ getGiornoDelDono() }}</strong><br>
<div>{{$t('dashboard.quando_eff_il_tuo_dono')}}: <strong>{{ getGiornoDelDono() }}</strong><br>
</div>
<div>
Metodi Disponibili:
{{$t('dashboard.metodi_disponibili')}}:
<CMyChipList
:type="tools.FieldType.multiselect"
@@ -260,30 +263,26 @@
</div>
<div>
Importo: <strong>33</strong>
{{$t('dashboard.importo')}}: <strong>33</strong>
</div>
<br>
<CTitleBanner class="q-pa-xs"
:title="$t('dashboard.come_inviare_regalo_con_paypal')"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<CVideo myvideokey="5rp_XEV6Mzg">
</CVideo>
</CTitleBanner>
</div>
<div class="text-evidente bordo_stondato_blu">
<div v-if="GiornoDelDonoArrivato">
<div v-if="!FattoDono">
E' arrivato il momento di Effettuare il proprio Dono!<br>
Inviare tramite PayPal a: <strong>{{ getemailPagamentoSognatore()
}}</strong><br>
(Scegliere l'opzione "Invia ad Amici")<br>
<CTitleBanner class="q-pa-xs"
:title="$t('dashboard.come_inviare_regalo_con_paypal')"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<CVideo myvideokey="5rp_XEV6Mzg">
</CVideo>
</CTitleBanner>
<div v-if="!FattoDono" v-html="$t('dashboard.effettua_il_dono', {email: getemailPagamentoSognatore() })">
<div v-if="!donoinviato">
{{$t('dashboard.clicca_conferma_dono')}}:<br>
@@ -329,30 +328,30 @@
<div class="text-evidente bordo_stondato justify-between q-pa-xs-sm">
<div class="">
<div>
Doni Ricevuti:
{{$t('dashboard.doni_ricevuti')}}:
</div>
<div class="ricevuti dati">{{getDoniConfermati()}}</div>
</div>
<div class="">
<div class="inviati">
Doni Inviati (da confermare):
{{$t('dashboard.doni_inviati_da_confermare')}}:
</div>
<div class="inviati dati">{{getDoniAttesaDiConferma()}}</div>
</div>
<div class="">
<div class="">
Doni Mancanti:
{{$t('dashboard.doni_mancanti')}}:
</div>
<div class="mancanti dati">{{getDoniMancanti()}}</div>
</div>
</div>
<q-table
dense
color="primary"
title="Donatori"
:title="$t('dashboard.donatori')"
:data="arrdonatori"
:columns="coldonatori"
:nodataLabel="$t('grid.nodata')"
:Pagination.sync="MyPagination"
row-key="index">
<template v-slot:body="props">

View File

@@ -556,7 +556,7 @@ export default class CStatus extends MixinBase {
}
get strpercstep() {
return this.$t('steps.completed') + ' ' + (this.getstep) + ' ' + this.$t('steps.passi_su') + ' ' + this.NUMSTEP_OBBLIGATORI
return this.$t('steps.completed') + ' ' + this.$t('steps.passi_su', {passo: this.getstep, totpassi: this.NUMSTEP_OBBLIGATORI })
}
get stepcompleti() {

View File

@@ -8,7 +8,7 @@
clcolor="text-white"
myclass="myshad" canopen="true" :visible="true">
<CVideo myvideokey="85zU-2A-Rxs">
<CVideo myvideokey="ybrjGr52jOI">
</CVideo>
</CTitleBanner>
@@ -16,10 +16,12 @@
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<CVideo myvideokey="3JDRkN9z_rM">
<CVideo myvideokey="u90hVKBRD6w">
</CVideo>
</CTitleBanner>
<!--
<CTitleBanner class="q-pa-xs" :title="$t('steps.video_intro_3')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
@@ -37,6 +39,7 @@
</CVideo>
</CTitleBanner>
-->
<div v-if="showconditions">
<q-checkbox

View File

@@ -133,6 +133,11 @@ export default class Header extends Vue {
this.setshortlang(mylangtopass)
this.setLangAtt(mylangtopass)
UserStore.actions.setLangServer()
// Update Server
}
@Watch('GlobalStore.state.stateConnection', { immediate: true, deep: true })
@@ -237,8 +242,7 @@ export default class Header extends Vue {
})
})
// this.$q.lang.set(mylang)
GlobalStore.actions.addDynamicPages()
}
public beforeMount() {

View File

@@ -221,7 +221,7 @@
<p>Dernière mise à jour : {{lastdataupdate}}</p>
</div>
<div v-else>
<div v-else-if="toolsext.isLang('es')">
<p class="text-subtitle1">Política de privacidad de {{url}}</p>
<p class="text-subtitle1">Información sobre el procesamiento de datos personales de conformidad con el art.
13 del Reglamento (UE) n. 2016/679</p>
@@ -349,6 +349,130 @@
            <p>Última actualización: {{lastdataupdate}} </p>
</div>
<div v-else>
<p class="text-subtitle1">Privacy Policy {{url}}</p>
<p class="text-subtitle1">Information on the processing of personal data in accordance with art. 13 of the
Regulation
(EU) No 2016/679</p>
<p>In accordance with art. 13 of Regulation (EU) no. 2016/679, also called General Data Protection
Regulation
(hereinafter the "GDPR"), {{SiteName}}} informs you that your personal data (hereinafter the "Data"),
will be treated in compliance with the provisions of the GDPR and any applicable legislation in reference to
to the processing of personal data in accordance with the information below.</p>
<p><span class="text-subtitle2">1. Data Controller</span><br/>
{{ownerDataName}}</p>
<p><span class="boldhigh">Data processing and data protection officer:</span><br/>
{{managerDate}}
</p>
<p class="text-subtitle2">2. Data Categories</p>
<p>Data processed by the Data Controller includes: {{includeData}}.</p>.
<p class="text-subtitle2">3. Purpose and legal basis of the processing. Legitimate interest.</p>
<p>Data will be processed for the fulfilment of informative, commercial and administrative purposes to
legal obligations, pursuant to Article 6, paragraph 1, letters b) and c) of the GDPR, as well as the pursuit of the
legitimate
interest of the Holder, in art. 6, paragraph 1, letter f of the GDPR, with reference to:
compliance with internal administrative procedures and fulfillment of legal obligations or regulations in force in
{{country}}
the sending of communications of an informative, commercial and promotional nature.</p>
<p>In any case, the processing of your Data carried out on the basis of your legitimate interest of
In addition to the provisions of art. 6, paragraph 1, letter f of the GDPR, the Owner is also in
compliance
to the provisions of recital 47 and Opinion No 6/2014 Article 29 Data Protection Working
Party, par. III.3.1.</p>
<p class="text-subtitle2">4. Treatment modalities.</p>
<p>Your Data are collected and recorded in a lawful and correct manner for the above purposes
indicated and are also processed with the aid of electronic and automated tools, including by means of
insertion and
the organisation into databases, in accordance with the provisions of the GDPR on measures of
security, and, in any case, in such a way as to guarantee the security and confidentiality of the Data itself.</p>
<p class="text-subtitle2">5. Recipients or categories of recipients.</p>
<p>Data may be made accessible, brought to the knowledge of or communicated to the following subjects, the
who will be appointed by the Owner, as the case may be, as responsible - whose list is available
at the registered office of the Owner - or persons in charge:
employees and/or collaborators in any capacity of the Owner;
public or private subjects, natural or legal persons, of which the Holder avails himself for the
carrying out the activities instrumental to the achievement of the above mentioned purpose or to which the Owner is
bound to
communicate the Data by virtue of legal or contractual obligations.</p>
<p>In any case, the Data will not be disseminated.</p>
<p class="text-subtitle2">6. Place</p>
<p>Data are processed at the Owner's operating offices and in any other place where the parties
involved in the treatment are localized. For further information, please contact the Data Controller at the following contact details
reported in
opening.</p>
<p class="text-subtitle2">7. Conservation period.</p>
<p>Data will be kept for a period of time not exceeding 10 (ten) years for the following purposes
administrative and, in any case, for the time strictly necessary for the pursuit of the legitimate interest of the
Owner.</p>
<p class="text-subtitle2">8. Access rights, deletion, restriction and portability.</p>
<p>The Owner informs you that you are entitled to the rights set out in articles 15 to 20 of the GDPR. By way of
example, by sending a specific request to the email address {{owneremail}}, you can:
obtain confirmation whether or not personal data concerning you is being processed;
if a processing operation is in progress, obtain access to the data and information relating to the
processing and request a copy of the data;
obtain rectification of inaccurate data and integration of incomplete personal data;
<p class="text-subtitle2">8. Access rights, deletion, restriction and portability.</p>
<p>The Owner informs you that you are entitled to the rights set out in articles 15 to 20 of the GDPR. By way of
example, by sending a specific request to the email address {{owneremail}}, you can:
obtain confirmation whether or not personal data concerning you is being processed;
if a processing operation is in progress, obtain access to the data and information relating to the
processing and request a copy of the data;
obtain rectification of inaccurate data and integration of incomplete personal data;
to obtain, if one of the conditions provided for in art. 17 of the GDPR is met, the cancellation of the
Data concerning you; to obtain, in the cases provided for by art. 18 of the GDPR, the limitation of the treatment of your personal data.
Data that La
regard; receive the Data concerning you in a structured format, in common use and readable by
device
automatic and request their transmission to another owner, if technically feasible.</p>
<p class="text-subtitle2">9. Right of opposition.</p>
<p>In accordance with Art. 21 of the GDPR, you also have the right to object at any time to the
processing of its own Data carried out for the pursuit of the legitimate interest of the Data Controller by writing
at the email address
{{owneremail}} In case of opposition, the Data will no longer be processed, provided that you do not
there are legitimate grounds for processing, which override the interests, rights and interests of the data subject.
freedom of the persons concerned, or for the establishment, exercise or defence of a right in headquarters
judicial.</p>
<p class="text-subtitle2">Data Protection Officer</p>.
<p>The data controller has appointed a data protection officer who is contactable at the
following mailbox {{owneremail}}.</p>
<p class="text-subtitle2">10. Right to lodge a complaint with the Guarantor.</p>
<p>The Owner also informs you that you can lodge a complaint with the Guarantor for the Protection of Personal Data in the
if it considers that its rights under GDPR or any other law have been infringed
applicable legislation, according to the modalities indicated on the website of the Data Protection Supervisor
Personal accessible at the address: <a href="http://www.garanteprivacy.it" target="_blank">www.garanteprivacy.it</a>.
</p>
<p>Last Update: {{lastdataupdate}}</p>
</div>
</q-page>