Lista Doni Navi

This commit is contained in:
Paolo Arena
2020-03-25 09:26:08 +01:00
parent e0f61836ff
commit c25d103a0c
14 changed files with 1022 additions and 580 deletions

View File

@@ -35,6 +35,10 @@
border-radius: 16px;
}
.cont_donatore {
justify-content: space-between;
}
.you {
background-color: yellow;
}
@@ -56,7 +60,7 @@
}
.extra{
opacity: 0.6;
opacity: 1;
}
.passo{
@@ -106,3 +110,7 @@
.ricevuti{
color: green;
}
.title-nave {
color: blue;
}

View File

@@ -150,7 +150,7 @@ export default class CMyNave extends MixinNave {
for (const rec of this.nave.listadonatoridelsognatore) {
index++
arr.push({ index, ...rec})
arr.push({ index, ...rec })
}
}
}
@@ -348,6 +348,20 @@ export default class CMyNave extends MixinNave {
return !!this.iodonatore
}
public sonoSecondaTessituraDonatore() {
const mediatore = this.getmediatore()
for (const rec of this.nave.rec.donatore.arrdonatori) {
if (!!rec) {
if (mediatore) {
if ((mediatore.ind_order === rec.ind_order) && (rec.num_tess === 2))
return true
}
}
}
return false
}
public sonoSognatore() {
return !!this.iosognatore
}
@@ -426,6 +440,10 @@ export default class CMyNave extends MixinNave {
}
public geticon(rec) {
if (!rec)
return ''
// console.log('this.rigadoni', this.rigadoni, 'ind', rec.ind)
if (!rec.ind)
return ''
if (this.rigadoni >= this.getrigaNaveByInd(rec.ind)) {
@@ -444,7 +462,8 @@ export default class CMyNave extends MixinNave {
tools.askConfirm(this.$q, msgtitle, msginvia + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.INVIA_MSG_A_DONATORI, 0, {
param1: msgobj,
param2: navemediatore
param2: navemediatore,
param3: tools.TipoMsg.SEND_LINK_CHAT_DONATORI
})
}
@@ -502,6 +521,13 @@ export default class CMyNave extends MixinNave {
return ''
}
public getindex(recdonatore, index) {
if (recdonatore.ind_order === this.nave.rec.donatore.recmediatore.ind_order && (recdonatore.num_tess === 2))
return 'TESS'
return 'D' + (index)
}
public getposizione() {
return this.$t('dashboard.posizione') + ' ' + this.getisProvvisoriaStr() + this.nave.riga + '.' + this.nave.col
}

View File

@@ -111,13 +111,13 @@
</div>
<div class="donatore">DONATORI:</div>
<div v-for="(donatore, index) in nave.rec.mediatore.arrdonatori" :key="index">
<div v-if="donatore" :class="`cont_donatore ` + getclassSelect(donatore)">
D{{index + 1}} - {{ donatore.name }} {{ donatore.surname }} ({{
donatore.username }}) - {{
donatore.riga}}.{{donatore.col}}<br>
<div v-if="donatore" :class="`cont_donatore row ` + getclassSelect(donatore)">
{{ getindex(donatore, index + 1) }} - {{ donatore.name }} {{ donatore.surname }}
({{
donatore.username }}) - {{ donatore.riga}}.{{donatore.col}}
<q-icon v-if="donatore.made_gift" color="green" inverted size="sm"
name="fas fa-gift" class="gift"></q-icon>
</div>
<q-icon v-if="donatore.made_gift" color="green" inverted size="sm"
:name="geticon(rec)" class="gift"></q-icon>
</div>
</div>
</div>
@@ -205,10 +205,18 @@
</div>
<div class="donatore">DONATORI:</div>
<div v-for="(donatore, index) in nave.rec.donatore.arrdonatori" :key="index">
<div v-if="donatore" :class="`cont_donatore ` + getclassSelect(donatore)">
D{{index + 1}} - {{ donatore.name }} {{ donatore.surname }} ({{
donatore.username }}) - {{
donatore.riga}}.{{donatore.col}}<br>
<div v-if="donatore" :class="`cont_donatore row ` + getclassSelect(donatore)">
<div>
{{ getindex(donatore, index + 1) }} - {{ donatore.name }} {{
donatore.surname }} ({{
donatore.username }}) - {{
donatore.riga}}.{{donatore.col}}<br>
</div>
<div>
<q-icon v-if="donatore.made_gift" color="green" inverted size="sm"
name="fas fa-gift" class="gift"></q-icon>
</div>
</div>
</div>
</div>
@@ -228,82 +236,88 @@
</div>
<div v-if="sonoDonatore()">
<div v-html="$t('dashboard.sonosognatore')">
<div v-if="sonoSecondaTessituraDonatore()"
v-html="$t('dashboard.sonodonatore_seconda_tessitura')">
</div>
<div v-if="!FattoDono" class="text-evidente bordo_stondato">
<div>Quando effettuare il Regalo: <strong>{{ getGiornoDelDono() }}</strong><br></div>
<div>
Metodi Disponibili:
<CMyChipList
:type="tools.FieldType.multiselect"
:value="getMetodoPagamentoSognatore()"
:options="db_fieldsTable.getTableJoinByName('paymenttypes')"
:optval="db_fieldsTable.getKeyByTable('paymenttypes')"
:optlab="db_fieldsTable.getLabelByTable('paymenttypes')"
:opticon="db_fieldsTable.getIconByTable('paymenttypes')"></CMyChipList>
<div v-else>
<div v-if="!FattoDono" v-html="$t('dashboard.sonodonatore')">
</div>
<div>
Importo: <strong>33</strong>
</div>
<br>
</div>
<div class="text-evidente bordo_stondato_blu">
<div v-if="GiornoDelDonoArrivato">
<div v-if="!FattoDono">
<div v-if="!FattoDono" class="text-evidente bordo_stondato">
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="!donoinviato">
{{$t('dashboard.clicca_conferma_dono')}}:<br>
<div class="row justify-center q-ma-sm">
<q-btn push
rounded
color="positive"
size="md"
:label="$t('dashboard.ho_effettuato_il_dono')"
icon="fas fa-gift"
@click="HoEffettuatoIlDono">
</q-btn>
</div>
</div>
<div v-else>
<div class="row justify-center q-ma-sm">
<q-chip class="glossy"
text-color="white"
color="positive"
icon="fas fa-gift">
{{ $t('dashboard.ho_effettuato_il_dono') }}
</q-chip>
</div>
</div>
<div>Quando effettuare il Regalo: <strong>{{ getGiornoDelDono() }}</strong><br>
</div>
<div v-if="FattoDono">
<q-chip class="glossy"
color="positive"
text-color="white"
icon="fas fa-gift">
{{ $t('dashboard.dono_ricevuto') }}
</q-chip>
<div>
Metodi Disponibili:
<CMyChipList
:type="tools.FieldType.multiselect"
:value="getMetodoPagamentoSognatore()"
:options="db_fieldsTable.getTableJoinByName('paymenttypes')"
:optval="db_fieldsTable.getKeyByTable('paymenttypes')"
:optlab="db_fieldsTable.getLabelByTable('paymenttypes')"
:opticon="db_fieldsTable.getIconByTable('paymenttypes')"></CMyChipList>
</div>
<div>
Importo: <strong>33</strong>
</div>
<br>
</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="!donoinviato">
{{$t('dashboard.clicca_conferma_dono')}}:<br>
<div class="row justify-center q-ma-sm">
<q-btn push
rounded
color="positive"
size="md"
:label="$t('dashboard.ho_effettuato_il_dono')"
icon="fas fa-gift"
@click="HoEffettuatoIlDono">
</q-btn>
</div>
</div>
<div v-else>
<div class="row justify-center q-ma-sm">
<q-chip class="glossy"
text-color="white"
color="positive"
icon="fas fa-gift">
{{ $t('dashboard.ho_effettuato_il_dono') }}
</q-chip>
</div>
</div>
</div>
<div v-if="FattoDono">
<q-chip class="glossy"
color="positive"
text-color="white"
icon="fas fa-gift">
{{ $t('dashboard.dono_ricevuto') }}
</q-chip>
</div>
</div>
</div>
</div>

View File

@@ -1,392 +1,404 @@
<template>
<div>
<CTitleBanner class="text-center" :title="$t('home.guida_passopasso')" bgcolor="bg-primary" clcolor="text-white"
mystyle="" myclass="myshad" :canopen="true">
<div>
<CTitleBanner class="text-center" :title="$t('home.guida_passopasso')" bgcolor="bg-primary" clcolor="text-white"
mystyle="" myclass="myshad" :canopen="true">
<q-stepper
v-model="step"
vertical
header-nav
done-color="green"
active-color="blue"
inactive-color="grey"
animated
>
<!--
<q-step
id="step1"
:name="1"
:title="emailtext"
icon="mail"
:done="isEmailVerified"
:error="!isEmailVerified"
:error-icon="geterricon(true)"
>
<q-stepper-navigation v-if="isEmailVerified">
<q-btn @click="step = 2" color="primary" :label="$t('dialog.avanti')"></q-btn>
</q-stepper-navigation>
</q-step>
<q-step
id="step2"
:name="2"
:title="telegramtext"
icon="fab fa-telegram"
:done="TelegVerificato"
:error="!TelegVerificato"
:error-icon="geterricon(true)"
>
<q-stepper-navigation>
<q-btn v-if="TelegVerificato" @click="step = 3" color="primary" :label="$t('dialog.avanti')"></q-btn>
<q-btn flat @click="step = 1" color="primary" :label="$t('dialog.indietro')" class="q-ml-sm"></q-btn>
</q-stepper-navigation>
</q-step>
-->
<q-step
v-for="(mystep, index) in arrsteps"
:id="`step`+(index)"
:key="mystep.title"
:name="index"
:title="gettextstep(mystep, index)"
:icon="geticonstep(mystep)"
:done-color="geticoncolor(mystep.title)"
:done="mystep.funccheck(index)"
:error="getiferror(mystep.funccheck_error(index), mystep.funccheck(index))"
:error-icon="geterricon(mystep.funccheck(index), mystep)"
:error-color="geterrcolor(mystep)"
>
<div v-if="mystep.title === 'reg.email'">
<CVerifyEmail>
</CVerifyEmail>
</div>
<div v-else-if="mystep.title === 'reg.telegram'">
<q-chip v-if="TelegVerificato" color="positive" text-color="white" icon="fab fa-telegram">
{{ telegramtext }}
</q-chip>
<q-chip v-else color="negative" text-color="white" icon="email">
{{ telegramtext }}
</q-chip>
<CVerifyTelegram v-if="TelegCode || !TelegVerificato">
</CVerifyTelegram>
<div v-else>
<br>
<q-btn color="primary" icon="fab fa-telegram" :label="$t('components.authentication.telegram.openbot')"
type="a"
:href="getLinkBotTelegram" target="_blank"></q-btn>
<br>
</div>
</div>
<div v-else-if="mystep.title === 'steps.linee_guida'">
<CGuidelines :showconditions="true">
</CGuidelines>
</div>
<div v-else-if="mystep.title === 'steps.video_intro'">
<CVideoPromo :showconditions="true">
</CVideoPromo>
</div>
<div v-else-if="mystep.title === 'steps.paymenttype'">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_paypal')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<CVideo myvideokey="RqsWDlpnN3k">
</CVideo>
<q-btn class="q-ma-md" size="md" type="a" href="https://www.paypal.com/"
target="_blank" rounded color="primary" icon="info" :label="$t('steps.paymenttype_paypal_link')">
</q-btn>
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_paypal_carta_conto')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="true">
<CVideo myvideokey="wRNBmQrsnes">
</CVideo>
</CTitleBanner>
</CTitleBanner>
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_revolut')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<CVideo myvideokey="nST5iHM2LbE">
</CVideo>
<q-btn class="q-ma-md" size="md" type="a" href="https://www.revolut.com/"
target="_blank" rounded color="primary" icon="info"
:label="$t('steps.paymenttype_revolut_link')">
</q-btn>
</CTitleBanner>
<div>
<CRequisiti :statebool="RequisitoPayment" :msgTrue="$t('steps.paymenttype_long2')"
:msgFalse="$t('steps.paymenttype_long2')">
</CRequisiti>
<CMyFieldDb :title="$t('reg.paymenttype')"
table="users"
mykey="profile"
mysubkey="paymenttypes"
:type="tools.FieldType.multiselect"
jointable="paymenttypes">
</CMyFieldDb>
<CMyFieldDb v-if="isselectPaypal" :title="$t('reg.email_paypal')"
table="users"
mykey="profile"
mysubkey="email_paypal"
:type="tools.FieldType.string">
</CMyFieldDb>
</div>
</div>
<div v-else-if="mystep.title === 'steps.dream'">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<q-input v-model="my_dream" :label="$t('steps.dream')+' (min. 10):'"
type="textarea" debounce="1000"
input-class="myinput-area-big"
autogrow
@input="change_mydream"
></q-input>
<!--
<CMyFieldDb :title="$t('reg.my_dream')"
table="users"
mykey="profile"
mysubkey="my_dream"
:type="tools.FieldType.string"
<q-stepper
v-model="step"
vertical
header-nav
done-color="green"
active-color="blue"
inactive-color="grey"
animated
>
<!--
<q-step
id="step1"
:name="1"
:title="emailtext"
icon="mail"
:done="isEmailVerified"
:error="!isEmailVerified"
:error-icon="geterricon(true)"
>
</CMyFieldDb>
-->
</div>
<div v-else-if="mystep.title === 'steps.chat_biblio'">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<br><strong>Entra in Chat BiblioBacheca, cliccando qui:</strong>
<q-stepper-navigation v-if="isEmailVerified">
<q-btn @click="step = 2" color="primary" :label="$t('dialog.avanti')"></q-btn>
</q-stepper-navigation>
<div class="landing__footer-icons row flex-center margin_buttons">
<a v-if="!!TelegramBiblio" :href="TelegramBiblio" target="_blank">
<i aria-hidden="true" class="q-icon fab fa-telegram icon_contact links"></i></a>
</div>
</q-step>
<q-step
id="step2"
:name="2"
:title="telegramtext"
icon="fab fa-telegram"
:done="TelegVerificato"
:error="!TelegVerificato"
:error-icon="geterricon(true)"
>
</div>
<div v-else-if="mystep.title === 'steps.zoom'">
<q-stepper-navigation>
<q-btn v-if="TelegVerificato" @click="step = 3" color="primary" :label="$t('dialog.avanti')"></q-btn>
<q-btn flat @click="step = 1" color="primary" :label="$t('dialog.indietro')" class="q-ml-sm"></q-btn>
</q-stepper-navigation>
</q-step>
-->
<q-step
v-for="(mystep, index) in arrsteps"
:id="`step`+(index)"
:key="mystep.title"
:name="index"
:title="gettextstep(mystep, index)"
:icon="geticonstep(mystep)"
:done-color="geticoncolor(mystep.title)"
:done="mystep.funccheck(index)"
:error="getiferror(mystep.funccheck_error(index), mystep.funccheck(index))"
:error-icon="geterricon(mystep.funccheck(index), mystep)"
:error-color="geterrcolor(mystep)"
>
<div v-if="mystep.title === 'reg.email'">
<CVerifyEmail>
<CRequisiti :statebool="VistoZoom" :msgTrue="$t('steps.zoom_si_partecipato')"
:msgFalse="$t('steps.zoom_no_partecipato')">
</CRequisiti>
</CVerifyEmail>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<CTitleBanner class="q-pa-xs" :title="$t('steps.zoom_what')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<div>
<CVideo myvideokey="2yHhNktRDjg">
</div>
<div v-else-if="mystep.title === 'reg.telegram'">
<q-chip v-if="TelegVerificato" color="positive" text-color="white" icon="fab fa-telegram">
{{ telegramtext }}
</q-chip>
<q-chip v-else color="negative" text-color="white" icon="email">
{{ telegramtext }}
</q-chip>
</CVideo>
<CVerifyTelegram v-if="TelegCode || !TelegVerificato">
<div v-if="toolsext.isLang('it')">
<h3>ISTRUZIONI ZOOM</h3>
</CVerifyTelegram>
<div v-else>
<br>
<q-btn color="primary" icon="fab fa-telegram"
:label="$t('components.authentication.telegram.openbot')"
type="a"
:href="getLinkBotTelegram" target="_blank"></q-btn>
<br>
</div>
<ul style="text-align: left; font-size:0.75rem;">
<li>1. Scarica l'app (<a href="https://play.google.com/store/apps/details?id=us.zoom.videomeetings"
target="_blank">store</a> o <a href="https://zoom.us/support/download"
target="_blank">da PC</a>)
</li>
<li>2. Inserisci il tuo Nome e Cognome per essere riconosciuto</li>
<li>3. Clicca "join meeting"</li>
<li>4. Clicca "call in device" altrimenti non potrai sentire 🔊</li>
<li>5. Clicca il microfono per Attivarlo o Silenziarlo.</li>
</ul>
</div>
<div v-else-if="mystep.title === 'steps.linee_guida'">
<CGuidelines :showconditions="true">
<div class="text-h6"><strong>In più avrai:</strong></div>
<ul style="text-align: left; font-size:0.75rem;">
<li>Tasto per togliere il video (📹) ❌</li>
<li>Tasto 'Share': per condividere contenuti condivisi</li>
<li>Tasto 'Partecipants' in cui sulla sinistra, in basso, troverai la CHAT.</li>
<li>Tasto 'More': troverai Raise Hands per fare le domande.</li>
</ul>
</div>
<div v-else>
<h3>ZOOM INSTRUCTIONS</h3>
</CGuidelines>
</div>
<div v-else-if="mystep.title === 'steps.video_intro'">
<CVideoPromo :showconditions="true">
<ul style="text-align: left; font-size:0.75rem;">
<li>1. Download the app (<a
href="https://play.google.com/store/apps/details?id=us.zoom.videomeetings"
target="_blank">store</a> or <a href="https://zoom.us/support/download"
target="_blank">by PC</a>)
</li>
<li>2. Enter your first and last name to be recognized</li>
<li>3. Click "join meeting"</li>
<li>4. Click "call in device" otherwise you won't be able to hear 🔊</li>
<li>5. Click the microphone to turn it on or mute it</li>
</ul>
</CVideoPromo>
<div class="text-h6"><strong>More you will have:</strong></div>
<ul style="text-align: left; font-size:0.75rem;">
<li>Cancel button to remove the video (📹) </li>
<li>Share' button: to share shared content</li>
<li>Participants' button where on the left, at the bottom, you will find the CHAT.</li>
<li>Button 'More': you'll find Raise Hands to ask questions.</li>
</ul>
</div>
</div>
<div v-else-if="mystep.title === 'steps.paymenttype'">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
</div>
</CTitleBanner>
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_paypal')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
</div>
<div v-else-if="mystep.title === 'steps.sharemovement'">
<CVideo myvideokey="RqsWDlpnN3k">
<!--<CRequisiti :statebool="getnuminvitati() >= 2" :msgTrue="$t('steps.sharemovement_hai_invitato')"
:msgFalse="$t('steps.sharemovement_devi_invitare_almeno_2')">
</CRequisiti>-->
</CVideo>
<q-btn class="q-mb-md" rounded size="md" color="primary" to="/dashboard"
:label="$t('pages.dashboard')"></q-btn>
<q-btn class="q-ma-md" size="md" type="a" href="https://www.paypal.com/"
target="_blank" rounded color="primary" icon="info"
:label="$t('steps.paymenttype_paypal_link')">
</q-btn>
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_paypal_carta_conto')"
bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="true">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<CVideo myvideokey="wRNBmQrsnes">
<div class="row justify-center q-ma-sm">
<q-btn push
rounded
color="primary"
size="md"
:label="$t('pages.invita')"
icon="fas fa-user-plus"
to="/invite">
</q-btn>
</div>
</CVideo>
</CTitleBanner>
</CTitleBanner>
<CCopyBtn :title="$t('reg.reflink')" :texttocopy="getRefLink">
<CTitleBanner class="q-pa-xs" :title="$t('steps.paymenttype_revolut')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
</CCopyBtn>
<CVideo myvideokey="nST5iHM2LbE">
<CCopyBtn :title="$t('reg.linkzoom')" :texttocopy="tools.getLinkZoom()">
</CVideo>
</CCopyBtn>
<q-btn class="q-ma-md" size="md" type="a" href="https://www.revolut.com/"
target="_blank" rounded color="primary" icon="info"
:label="$t('steps.paymenttype_revolut_link')">
</q-btn>
</CTitleBanner>
<div>
<CRequisiti :statebool="RequisitoPayment" :msgTrue="$t('steps.paymenttype_long2')"
:msgFalse="$t('steps.paymenttype_long2')">
</CRequisiti>
<CMyFieldDb :title="$t('reg.paymenttype')"
table="users"
mykey="profile"
mysubkey="paymenttypes"
:type="tools.FieldType.multiselect"
jointable="paymenttypes">
</CMyFieldDb>
<CMyFieldDb v-if="isselectPaypal" :title="$t('reg.email_paypal')"
table="users"
mykey="profile"
mysubkey="email_paypal"
:type="tools.FieldType.string">
</CMyFieldDb>
</div>
<div v-else-if="mystep.title === 'dashboard.inv_attivi'">
</div>
</div>
<div v-else-if="mystep.title === 'steps.dream'">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<q-input v-model="my_dream" :label="$t('steps.dream')+' (min. 10):'"
type="textarea" debounce="1000"
input-class="myinput-area-big"
autogrow
@input="change_mydream"
<CRequisiti v-if="getnuminvitati() > 0" :statebool="getnuminvitati_attivi() >= 2"
:msgTrue="$t('steps.sharemovement_invitati_attivi_si')"
:msgFalse="$t('steps.sharemovement_invitati_attivi_no')">
</CRequisiti>
></q-input>
<q-btn class="q-mb-md" rounded size="md" color="primary" to="/dashboard"
:label="$t('pages.dashboard')"></q-btn>
<!--
<CMyFieldDb :title="$t('reg.my_dream')"
table="users"
mykey="profile"
mysubkey="my_dream"
:type="tools.FieldType.string"
>
</CMyFieldDb>
-->
</div>
<div v-else-if="mystep.title === 'steps.chat_biblio'">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<br><strong>Entra in Chat BiblioBacheca, cliccando qui:</strong>
<div class="landing__footer-icons row flex-center margin_buttons">
<a v-if="!!TelegramBiblio" :href="TelegramBiblio" target="_blank">
<i aria-hidden="true" class="q-icon fab fa-telegram icon_contact links"></i></a>
</div>
</div>
<div v-else-if="mystep.title === 'steps.zoom'">
<CRequisiti :statebool="VistoZoom" :msgTrue="$t('steps.zoom_si_partecipato')"
:msgFalse="$t('steps.zoom_no_partecipato')">
</CRequisiti>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<CTitleBanner class="q-pa-xs" :title="$t('steps.zoom_what')" bgcolor="bg-primary"
clcolor="text-white"
myclass="myshad" canopen="true" :visible="false">
<div>
<CVideo myvideokey="2yHhNktRDjg">
</CVideo>
<div v-if="toolsext.isLang('it')">
<h3>ISTRUZIONI ZOOM</h3>
<ul style="text-align: left; font-size:0.75rem;">
<li>1. Scarica l'app (<a
href="https://play.google.com/store/apps/details?id=us.zoom.videomeetings"
target="_blank">store</a> o <a href="https://zoom.us/support/download"
target="_blank">da PC</a>)
</li>
<li>2. Inserisci il tuo Nome e Cognome per essere riconosciuto</li>
<li>3. Clicca "join meeting"</li>
<li>4. Clicca "call in device" altrimenti non potrai sentire 🔊</li>
<li>5. Clicca il microfono per Attivarlo o Silenziarlo.</li>
</ul>
<div class="text-h6"><strong>In più avrai:</strong></div>
<ul style="text-align: left; font-size:0.75rem;">
<li>Tasto per togliere il video (📹) ❌</li>
<li>Tasto 'Share': per condividere contenuti condivisi</li>
<li>Tasto 'Partecipants' in cui sulla sinistra, in basso, troverai la CHAT.</li>
<li>Tasto 'More': troverai Raise Hands per fare le domande.</li>
</ul>
</div>
<div v-else>
<h3>ZOOM INSTRUCTIONS</h3>
<ul style="text-align: left; font-size:0.75rem;">
<li>1. Download the app (<a
href="https://play.google.com/store/apps/details?id=us.zoom.videomeetings"
target="_blank">store</a> or <a href="https://zoom.us/support/download"
target="_blank">by PC</a>)
</li>
<li>2. Enter your first and last name to be recognized</li>
<li>3. Click "join meeting"</li>
<li>4. Click "call in device" otherwise you won't be able to hear 🔊</li>
<li>5. Click the microphone to turn it on or mute it</li>
</ul>
<div class="text-h6"><strong>More you will have:</strong></div>
<ul style="text-align: left; font-size:0.75rem;">
<li>Cancel button to remove the video (📹) </li>
<li>Share' button: to share shared content</li>
<li>Participants' button where on the left, at the bottom, you will find the
CHAT.
</li>
<li>Button 'More': you'll find Raise Hands to ask questions.</li>
</ul>
</div>
</div>
</CTitleBanner>
</div>
<div v-else-if="mystep.title === 'steps.sharemovement'">
<!--<CRequisiti :statebool="getnuminvitati() >= 2" :msgTrue="$t('steps.sharemovement_hai_invitato')"
:msgFalse="$t('steps.sharemovement_devi_invitare_almeno_2')">
</CRequisiti>-->
<q-btn class="q-mb-md" rounded size="md" color="primary" to="/dashboard"
:label="$t('pages.dashboard')"></q-btn>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<div class="row justify-center q-ma-sm">
<q-btn push
rounded
color="primary"
size="md"
:label="$t('pages.invita')"
icon="fas fa-user-plus"
to="/invite">
</q-btn>
</div>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<CCopyBtn :title="$t('reg.reflink')" :texttocopy="getRefLink">
</div>
<div v-else-if="mystep.title === 'steps.enter_prog'">
</CCopyBtn>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<CCopyBtn :title="$t('reg.linkzoom')" :texttocopy="tools.getLinkZoom()">
<CRequisiti :statebool="CompletatoRequisiti" :msgTrue="$t('steps.enter_prog_requisiti_ok')"
:msgFalse="$t('steps.enter_prog_completa_requisiti')">
</CRequisiti>
</CCopyBtn>
<CRequisiti v-if="Completato9Req" :statebool="Completato9Req" :msgTrue="$t('steps.enter_nave_9req_ok')"
:msgFalse="$t('steps.enter_nave_9req_ko')">
</CRequisiti>
</div>
<div v-else-if="mystep.title === 'dashboard.inv_attivi'">
</div>
<div v-else>
<div v-if="mystep.page">
<CMyInnerPage :path=mystep.page>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
</CMyInnerPage>
</div>
</div>
<CRequisiti v-if="getnuminvitati() > 0" :statebool="getnuminvitati_attivi() >= 2"
:msgTrue="$t('steps.sharemovement_invitati_attivi_si')"
:msgFalse="$t('steps.sharemovement_invitati_attivi_no')">
</CRequisiti>
<q-stepper-navigation>
<q-btn v-if="index < getlaststep" @click="nextstep(index)"
color="primary" :label="$t('dialog.avanti')" class="q-ml-sm"></q-btn>
<q-btn flat @click="step = index - 1" color="primary" :label="$t('dialog.indietro')"
class="q-ml-sm"></q-btn>
</q-stepper-navigation>
</q-step>
<q-btn class="q-mb-md" rounded size="md" color="primary" to="/dashboard"
:label="$t('pages.dashboard')"></q-btn>
<!--<q-step-->
<!--:name="getlaststep"-->
<!--:title="$t('dialog.finish')"-->
<!--icon="check-circle"-->
<!--:done="step > getlaststep"-->
<!--&gt;-->
<!--<q-stepper-navigation>-->
<!--<q-btn flat @click="step = getlaststep - 1" color="primary" :label="$t('dialog.indietro')" class="q-ml-sm"></q-btn>-->
<!--</q-stepper-navigation>-->
<!--</q-step>-->
</q-stepper>
</CTitleBanner>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<q-page-sticky expand position="top" v-if="!stepcompleti">
<q-toolbar class="bg-yellow-7 glossy text-white">
<q-toolbar-title @click="scrolltostep(steptodo)">
<div class="flex flex-center q-mt-xs">
<div class="flex flex-center">
<q-badge color="white" text-color="grey-8" style="opacity: 0.9; font-size: 0.85rem;"
:label="strpercstep"></q-badge>
</div>
<q-linear-progress size="lg" :value="percstep" color="green" class="q-pa-xs q-mb-xs bg-red">
</q-linear-progress>
</div>
<div class="flex flex-center q-mb-xs">
<q-badge color="white" text-color="blue" :label="progressstep" class="wrap"
style="font-size: 0.85rem; height:20px; font-weight: bold;"></q-badge>
</div>
</q-toolbar-title>
<q-btn round dense icon="arrow_forward" color="blue" @click="scrolltostep(steptodo)"></q-btn>
</q-toolbar>
</q-page-sticky>
</div>
<div v-else-if="mystep.title === 'steps.enter_prog'">
</div>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
<CRequisiti :statebool="CompletatoRequisiti" :msgTrue="$t('steps.enter_prog_requisiti_ok')"
:msgFalse="$t('steps.enter_prog_completa_requisiti')">
</CRequisiti>
<CRequisiti v-if="Completato9Req" :statebool="Completato9Req"
:msgTrue="$t('steps.enter_nave_9req_ok')"
:msgFalse="$t('steps.enter_nave_9req_ko')">
</CRequisiti>
<div v-if="CompletatoRequisiti">
<q-btn class="q-mb-md" rounded size="md" color="primary" to="/dashboard"
:label="$t('dashboard.entra_in_lavagna')"></q-btn>
</div>
</div>
<div v-else>
<div v-if="mystep.page">
<CMyInnerPage :path=mystep.page>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr)"></div>
</div>
</CMyInnerPage>
</div>
</div>
<q-stepper-navigation>
<q-btn v-if="index < getlaststep" @click="nextstep(index)"
color="primary" :label="$t('dialog.avanti')" class="q-ml-sm"></q-btn>
<q-btn flat @click="step = index - 1" color="primary" :label="$t('dialog.indietro')"
class="q-ml-sm"></q-btn>
</q-stepper-navigation>
</q-step>
<!--<q-step-->
<!--:name="getlaststep"-->
<!--:title="$t('dialog.finish')"-->
<!--icon="check-circle"-->
<!--:done="step > getlaststep"-->
<!--&gt;-->
<!--<q-stepper-navigation>-->
<!--<q-btn flat @click="step = getlaststep - 1" color="primary" :label="$t('dialog.indietro')" class="q-ml-sm"></q-btn>-->
<!--</q-stepper-navigation>-->
<!--</q-step>-->
</q-stepper>
</CTitleBanner>
<q-page-sticky expand position="top" v-if="!stepcompleti">
<q-toolbar class="bg-yellow-7 glossy text-white">
<q-toolbar-title @click="scrolltostep(steptodo)">
<div class="flex flex-center q-mt-xs">
<div class="flex flex-center">
<q-badge color="white" text-color="grey-8" style="opacity: 0.9; font-size: 0.85rem;"
:label="strpercstep"></q-badge>
</div>
<q-linear-progress size="lg" :value="percstep" color="green" class="q-pa-xs q-mb-xs bg-red">
</q-linear-progress>
</div>
<div class="flex flex-center q-mb-xs">
<q-badge color="white" text-color="blue" :label="progressstep" class="wrap"
style="font-size: 0.85rem; height:20px; font-weight: bold;"></q-badge>
</div>
</q-toolbar-title>
<q-btn round dense icon="arrow_forward" color="blue" @click="scrolltostep(steptodo)"></q-btn>
</q-toolbar>
</q-page-sticky>
</div>
</template>
<script lang="ts" src="./CStatus.ts">
</script>
<style lang="scss">
@import './CStatus.scss';
@import './CStatus.scss';
</style>

View File

@@ -28,5 +28,4 @@ export default class Allnavi extends MixinBase {
public async mounted() {
this.ris = await GlobalStore.actions.GetArrNavi()
}
}

View File

@@ -9,3 +9,24 @@
.DoniConfermati{
color: green;
}
.cont_donatore {
border: solid 2px #4198ef;
padding: 2px 8px;
margin: 2px 4px;
font-size: 1rem;
border-radius: 16px;
}
.donatore, .mediatore, .sognatore, .title-nave, .intermedio2, .intermedio3 {
padding: 2px 4px;
margin: 2px 4px;
color: white;
font-size: 1rem;
border-radius: 16px;
}
.donatore {
background-color: red;
}

View File

@@ -12,6 +12,7 @@ import { CTitle } from '../../../components/CTitle'
import { CMyPage } from '../../../components/CMyPage'
import MixinBase from '../../../mixins/mixin-base'
import { CMyNave } from '../../../components/CMyNave'
import { lists } from '../../../store/Modules/lists'
const namespace = 'CalendarModule'
@@ -23,15 +24,31 @@ export default class Listadoninavi extends MixinBase {
public $t: any
public $q
public incaricamento: boolean = false
public myloadingload: boolean = false
public loading: boolean = false
public showdonatori: boolean = false
public showmsguser: boolean = false
public arrdoninavi = []
public MyPagination: {
sortBy: string,
descending: boolean,
page: number,
rowsNumber: number, // specifying this determines pagination is server-side
rowsPerPage: number
} = { sortBy: 'index', descending: false, page: 1, rowsNumber: 10, rowsPerPage: 10 }
public selrec = null
public seluser = null
public seldonatore = null
public msg_tosend: string = ''
public msg_tosend_user: string = ''
public pagination = {
sortBy: 'desc',
descending: false,
page: 2,
rowsPerPage: 10
// rowsNumber: xx if getting data from a server
}
public pagination2 = {
sortBy: 'desc',
descending: false,
page: 2,
rowsPerPage: 8
// rowsNumber: xx if getting data from a server
}
public coldoninavi: any[] = [
{
name: 'index',
@@ -42,27 +59,162 @@ export default class Listadoninavi extends MixinBase {
sortable: true
},
{ name: 'rigacol', align: 'center', label: 'Nave', field: 'riga', sortable: true },
{ name: 'date_gift_chat_open', align: 'center', label: '⏰ Gift Chat', field: 'date_gift_chat_open', sortable: true },
{
name: 'date_gift_chat_open',
align: 'center',
label: '⏰ Gift Chat',
field: 'date_gift_chat_open',
sortable: true
},
{ name: 'date_start', align: 'center', label: '⏰ Partenza', field: 'date_start', sortable: true },
{ name: 'mediatore', align: 'center', label: '🌀 Mediatore', field: '', sortable: true },
{ name: 'sognatore', align: 'center', label: 'Sognatore', field: '', sortable: true },
{ name: 'donatori', align: 'center', label: 'Donatori', field: '', sortable: true },
{ name: 'DoniAttesaDiConferma', align: 'center', label: '🎁 Wait', field: 'DoniAttesaDiConferma', sortable: true },
{ name: 'DoniMancanti', align: 'center', label: '🎁 Mancano', field: 'DoniMancanti', sortable: true },
{ name: 'DoniConfermati', align: 'center', label: '🎁 OK', field: 'DoniConfermati', sortable: true },
{ name: 'note', align: 'left', label: 'Note', field: 'note', sortable: true },
{ name: 'note_interne', align: 'left', label: 'Note Interne', field: 'note_interne', sortable: true },
]
public coldonatori: any[] = [
{
name: 'index',
required: true,
label: 'Num',
align: 'left',
field: 'index',
sortable: true
},
{ name: 'rigacol', align: 'center', label: 'Posizione', field: '', sortable: true },
{ name: 'name', align: 'center', label: 'Nome', field: 'name', sortable: true },
{ name: 'num_tess', align: 'center', label: 'Tessitura', field: 'num_tess', sortable: true },
{ name: 'date_made_gift', align: 'center', label: 'Inviato', field: 'date_made_gift', sortable: true },
{ name: 'made_gift', align: 'center', label: 'Dono', field: 'made_gift', sortable: true },
]
public async mounted() {
this.incaricamento = true
this.$q.loading.show({ message: this.$t('otherpages.update') })
this.loading = true
// this.$q.loading.show({ message: this.$t('otherpages.update') })
const ris = await GlobalStore.actions.GetArrDoniNavi()
console.log('ris', ris)
this.arrdoninavi = ris.arrnavi
this.$q.loading.hide()
// this.$q.loading.hide()
this.incaricamento = false
this.loading = false
}
public deveDonare(rec) {
return (rec.ind_order !== this.selrec.donatore.recmediatore.ind_order && rec.num_tess === 2)
}
public clickdonatori(rec) {
this.selrec = rec
this.showdonatori = true
}
public clickseluser(rec) {
this.seluser = rec
this.showmsguser = true
}
public HoRicevutoIlDono(rec) {
this.seldonatore = rec
const msgtitle = this.$t('dashboard.dono_ricevuto_2')
const msginvia = this.$t('dashboard.confermi_dono_ricevuto', {
donatore: rec.name + ' ' + rec.surname
})
tools.askConfirm(this.$q, msgtitle, msginvia + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DONO_RICEVUTO, 0, {
param1: {
_id: rec._id,
made_gift: true
},
param2: '',
param3: ''
})
}
public Chiudi() {
this.showdonatori = false
this.seldonatore = null
}
public ActionAfterYes(action, item, data) {
console.log('ActionAfterYes...')
if (action === lists.MenuAction.DONO_RICEVUTO) {
if (!!this.seldonatore) {
this.seldonatore.made_gift = true
}
}
}
public async InviaMsgANave(msgobj, navemediatore) {
const msgtitle = translate('dialog.sendmsg')
tools.askConfirm(this.$q, msgtitle, msgobj.msgpar1 + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.INVIA_MSG_A_DONATORI, 0, {
param1: msgobj,
param2: navemediatore,
})
}
public async InviaMsgAUserConfirm(msgobj, navemediatore) {
const msgtitle = translate('dialog.sendmsg')
tools.askConfirm(this.$q, msgtitle, msgobj.msgpar1 + ' ' + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.INVIA_MSG_A_SINGOLO, 0, {
param1: msgobj,
param2: navemediatore,
})
}
public InviaMsgADonatori() {
if (!this.msg_tosend)
return
const msgobj = {
tipomsg: tools.TipoMsg.SEND_MSG,
msgpar1: this.msg_tosend,
inviareale: true,
}
const navemediatore = this.selrec.donatore.recmediatore
this.InviaMsgANave(msgobj, navemediatore)
}
public InviaMsgAUser() {
if (!this.msg_tosend_user)
return
const msgobj = {
tipomsg: tools.TipoMsg.SEND_MSG_SINGOLO,
msgpar1: this.msg_tosend_user,
username: this.seluser.username,
inviareale: true,
}
const naveuser = this.seluser
this.InviaMsgAUserConfirm(msgobj, naveuser)
}
public SaveField(rec, myfield) {
if (!!rec) {
const mydata = {}
mydata[myfield] = rec[myfield]
console.log('mydata', mydata, 'id', rec.id)
tools.saveFieldToServer(this, 'navi', rec.id, mydata)
}
}
}

View File

@@ -13,7 +13,8 @@
title="Doni Navi"
:data="arrdoninavi"
:columns="coldoninavi"
:Pagination.sync="MyPagination"
:loading="loading"
:Pagination.sync="pagination"
row-key="index">
<template v-slot:body="props">
<q-tr :props="props">
@@ -23,49 +24,204 @@
<q-td key="rigacol" :props="props">
{{ props.row.riga }}.{{ props.row.col }}
</q-td>
<q-td key="col" :props="props">
{{ props.row.col }}
</q-td>
<q-td key="date_gift_chat_open" :props="props">
<div v-if="!!props.row.rec.mediatore.arrdonatori">
{{ tools.getstrshortDate(props.row.rec.mediatore.arrdonatori[0].date_gift_chat_open)
<div v-if="!!props.row.rec.donatore.arrdonatori">
{{ tools.getstrshortDate(props.row.rec.donatore.arrdonatori[0].date_gift_chat_open)
}}
</div>
<a v-if="!!props.row.rec.mediatore.recmediatore.link_chat" :href="props.row.rec.mediatore.recmediatore.link_chat" target="_blank">Link</a>
<a v-if="!!props.row.rec.donatore.recmediatore.link_chat"
:href="props.row.rec.donatore.recmediatore.link_chat" target="_blank">Link</a>
<div v-if="props.row.rec.donatore.recmediatore.sent_msg_howto_make_gift">(Link Inviato)</div>
</q-td>
<q-td key="date_start" :props="props">
<div v-if="!!props.row.rec.mediatore.arrdonatori">
{{ tools.getstrshortDate(props.row.rec.mediatore.arrdonatori[0].date_start) }}
<div v-if="!!props.row.rec.donatore.arrdonatori">
{{ tools.getstrshortDate(props.row.rec.donatore.arrdonatori[0].date_start) }}
</div>
</q-td>
<q-td key="mediatore" :props="props">
<div v-if="!!props.row.rec.mediatore.recmediatore">
{{ props.row.rec.mediatore.recmediatore.name }} {{
props.row.rec.mediatore.recmediatore.surname }}
</div>
<q-btn v-if="!!props.row.rec.donatore.recmediatore" flat rounded color="blue"
:label="props.row.rec.donatore.recmediatore.name + ` ` + props.row.rec.donatore.recmediatore.surname"
@click="clickseluser(props.row.rec.donatore.recmediatore)">
</q-btn>
</q-td>
<q-td key="sognatore" :props="props">
<div v-if="!!props.row.rec.mediatore.recsognatori[0]">
{{ props.row.rec.mediatore.recsognatori[0].name }} {{
props.row.rec.mediatore.recsognatori[0].surname }}
<q-btn v-if="!!props.row.rec.donatore.recsognatori[0]" flat rounded color="blue"
:label="props.row.rec.donatore.recsognatori[0].name + ` ` + props.row.rec.donatore.recsognatori[0].surname"
@click="clickseluser(props.row.rec.donatore.recsognatori[0])">
</q-btn>
</q-td>
<q-td key="donatori" :props="props">
<q-btn flat rounded color="blue"
:label="$t('dashboard.donatori')"
@click="clickdonatori(props.row.rec)">
</q-btn>
</q-td>
<q-td key="DoniAttesaDiConferma" :props="props">
<div v-if="props.row.DoniAttesaDiConferma > 0" class="DoniAttesaDiConferma">{{
props.row.DoniAttesaDiConferma }}
</div>
</q-td>
<q-td key="DoniAttesaDiConferma" :props="props">
<div v-if="props.row.DoniAttesaDiConferma > 0" class="DoniAttesaDiConferma">{{ props.row.DoniAttesaDiConferma }} </div>
</q-td>
<q-td key="DoniMancanti" :props="props">
<div v-if="props.row.DoniMancanti > 0" class="DoniMancanti">{{ props.row.DoniMancanti }}</div>
<div v-if="props.row.DoniMancanti > 0" class="DoniMancanti">{{ props.row.DoniMancanti
}}
</div>
</q-td>
<q-td key="DoniConfermati" :props="props">
<div v-if="props.row.DoniConfermati > 0" class="DoniConfermati">{{ props.row.DoniConfermati }}</div>
<div v-if="props.row.DoniConfermati > 0" class="DoniConfermati">{{
props.row.DoniConfermati }}
</div>
</q-td>
<q-td key="note" :props="props">
<div class="Note">
<div v-if="props.row.note">{{ props.row.note }}</div>
<div v-else>---</div>
<q-popup-edit v-model="props.row.note" buttons @save="SaveField(props.row, 'note')">
<q-field>
<q-input v-model="props.row.note" />
</q-field>
</q-popup-edit>
</div>
</q-td>
<q-td key="note_interne" :props="props">
<div class="Note">
<div v-if="props.row.note_interne">{{ props.row.note_interne }}</div>
<div v-else>---</div>
<q-popup-edit v-model="props.row.note_interne" buttons @save="SaveField(props.row, 'note_interne')">
<q-field>
<q-input v-model="props.row.note_interne" />
</q-field>
</q-popup-edit>
</div>
</q-td>
</q-tr>
</template>
</q-table>
</CTitleBanner>
<q-dialog v-model="showdonatori">
<q-card v-if="selrec" :style="`min-width: `+ tools.myheight_dialog() + `px;` ">
<q-toolbar class="bg-primary text-white" style="min-height: 30px;">
<q-toolbar-title>
{{$t('dashboard.donatori')}}
</q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup clickable @click="Chiudi"></q-btn>
</q-toolbar>
<q-card-section class="inset-shadow" style="padding: 4px !important;">
<div class="row justify-center q-gutter-md">
<div>
<q-table
dense
color="primary"
title="Donatori"
:data="selrec.donatore.arrdonatori"
:columns="coldonatori"
:Pagination="pagination2"
row-key="index">
<template v-slot:body="props">
<q-tr :props="props">
<q-td key="index" :props="props">
D{{ props.row.index }}
</q-td>
<q-td key="rigacol" :props="props">
{{ props.row.riga }}.{{ props.row.col }}
</q-td>
<q-td key="name" :props="props">
<q-btn flat rounded color="blue"
:label="props.row.name + ` ` + props.row.surname"
@click="clickseluser(props.row)">
</q-btn>
</q-td>
<q-td key="num_tess" :props="props">
{{ props.row.num_tess }}
</q-td>
<q-td key="date_made_gift" :props="props">
{{ tools.getstrshortDateTime(props.row.date_made_gift) }}
</q-td>
<q-td key="made_gift" :props="props">
<div v-if="deveDonare(props.row)">
<div class="row justify-center">
<q-btn v-if="!props.row.made_gift"
push
rounded
color="primary"
size="md"
:label="$t('dashboard.dono_ricevuto_3', {donatore: props.row.name })"
@click="HoRicevutoIlDono(props.row)">
</q-btn>
</div>
<q-icon v-if="props.row.made_gift" color="green" inverted size="sm"
name="fas fa-gift" class="gift"></q-icon>
</div>
<div v-else>
--------
</div>
</q-td>
</q-tr>
</template>
</q-table>
<div class="q-ma-sm text-center">
<div>Invia un Messaggio a tutti questi Donatori:</div>
<q-input type="textarea"
autogrow
v-model="msg_tosend" :label="$t('cal.msgbooking')"
input-class="myinput-area">
</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('dialog.sendmsg')"
@click="InviaMsgADonatori()"></q-btn>
</div>
</div>
</div>
</div>
</q-card-section>
</q-card>
</q-dialog>
<q-dialog v-model="showmsguser">
<q-card v-if="seluser" :style="`min-width: `+ tools.myheight_dialog() + `px;` ">
<q-toolbar class="bg-primary text-white" style="min-height: 30px;">
<q-toolbar-title>
{{$t('dashboard.donatori')}}
</q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup clickable @click="Chiudi"></q-btn>
</q-toolbar>
<q-card-section class="inset-shadow" style="padding: 4px !important;">
<div class="row justify-center q-gutter-md">
<div>
<div class="q-ma-sm text-center">
<div>Invia un Messaggio a {{seluser.name }} {{ seluser.surname }}:</div>
<q-input type="textarea"
autogrow
v-model="msg_tosend_user" :label="$t('cal.msgbooking')"
input-class="myinput-area">
</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('dialog.sendmsg') + ` a ` + seluser.name + ` ` + seluser.surname"
@click="InviaMsgAUser()"></q-btn>
</div>
</div>
</div>
</div>
</q-card-section>
</q-card>
</q-dialog>
</div>
</div>
</template>

View File

@@ -215,8 +215,9 @@ const msg_it = {
'cambia la "cronologia per i nuovi membri" da nascosta a visibile.</li>' +
'<li>Per trovare il <strong>link della Chat appena creata</strong>: clicca sul nome della chat in alto, clicca sulla Matita -> "Tipo di Gruppo" -> "invita nel gruppo tramite link", clicca su "copia link" e incollalo qui sotto, sulla casella <strong>"Link Gift Chat"</strong></li>' +
'<li>Invia il Link della Gift Chat a tutti i Donatori, cliccando sul bottone qui sotto.</li></ol>',
sonosognatore: '<ol class="lista"><li>Quando sei in questa posizione, verrai invitato ad entrare in una <strong>Gift Chat</strong> (Telegram) e qui troverai anche gli altri 7 Donatori, il Mediatore, il Sognatore e un rappresentante dello Staff.</li>' +
sonodonatore: '<ol class="lista"><li>Quando sei in questa posizione, verrai invitato ad entrare in una <strong>Gift Chat</strong> (Telegram) e qui troverai anche gli altri 7 Donatori, il Mediatore, il Sognatore e un rappresentante dello Staff.</li>' +
'<li>Effettuerai il tuo dono <strong>ESATTAMENTE il giorno indicato</strong> e nella modalità di pagamento che troverai scritto qui.<br></ol>',
sonodonatore_seconda_tessitura: '<ol class="lista"><li>Qui tu sei Mediatore e anche Donatore, ma essendo la seconda Tessitura, non avrai bisogno di effettuare nuovamente il tuo dono<br></ol>',
link_chat: 'Link della Gift Chat Telegram',
donatori:'Donatori',
donatore:'Donatore',
@@ -244,6 +245,7 @@ const msg_it = {
confermi_dono_ricevuto_msg: '{sognatore} conferma di aver ricevuto il Dono di 33€ da parte di {donatore}',
msg_bot_conferma: '{donatore} ha confermato di aver inviato il suo Dono di 33€ a {sognatore}',
ricevuto_dono_ok: 'Hai confermato che il dono è stato Ricevuto',
entra_in_lavagna: 'Entra sulla Tua Lavagna per vedere le Navi in Partenza',
},
reg: {
registered: 'Registrato',

View File

@@ -782,14 +782,15 @@ namespace Actions {
})
}
async function InviaMsgADonatori(context, { msgobj, navemediatore }) {
async function InviaMsgADonatori(context, { msgobj, navemediatore, tipomsg }) {
console.log('InviaMsgADonatori', msgobj)
const mydata = {
idapp: process.env.APP_ID,
tipomsg: tools.TipoMsg.SEND_LINK_CHAT_DONATORI,
msgextra: msgobj.msgextra,
msgpar1: msgobj.msgpar1,
username: msgobj.username,
tipomsg,
inviareale: msgobj.inviareale,
navemediatore
}

View File

@@ -167,6 +167,7 @@ const colnavi = [
AddCol({ name: 'ind_order', label_trans: 'ind_order' }),
AddCol({ name: 'parent_id', label_trans: 'parent_id' }),
AddCol({ name: 'date_start', label_trans: 'date_start', fieldtype: tools.FieldType.date }),
AddCol({ name: 'date_gift_chat_open', label_trans: 'date_gift_chat_open', fieldtype: tools.FieldType.date }),
AddCol({ name: 'link_chat', label_trans: 'reg.link_chat' }),
AddCol({ name: 'sent_msg_howto_make_gift', label_trans: 'sent_msg_howto_make_gift', fieldtype: tools.FieldType.boolean }),
AddCol({ name: 'made_gift', label_trans: 'reg.made_gift', fieldtype: tools.FieldType.boolean }),
@@ -175,6 +176,8 @@ const colnavi = [
AddCol({ name: 'received_gift', label_trans: 'received_gift', fieldtype: tools.FieldType.boolean }),
AddCol({ name: 'date_received_gift', label_trans: 'date_received_gift', fieldtype: tools.FieldType.date }),
AddCol({ name: 'num_tess', label_trans: 'num_tess', fieldtype: tools.FieldType.number }),
AddCol({ name: 'note', label_trans: 'note', fieldtype: tools.FieldType.string }),
AddCol({ name: 'note_interne', label_trans: 'note_interne', fieldtype: tools.FieldType.string }),
AddCol(DeleteRec),
AddCol(DuplicateRec)
]

View File

@@ -22,6 +22,7 @@ export const lists = {
DELETE_USERLIST: 335,
REGALA_INVITATO: 340,
INVIA_MSG_A_DONATORI: 350,
INVIA_MSG_A_SINGOLO: 355,
DONO_INVIATO: 360,
DONO_RICEVUTO: 370,

View File

@@ -60,6 +60,8 @@ export const tools = {
TipoMsg: {
SEND_LINK_CHAT_DONATORI: 1,
SEND_MSG: 2,
SEND_MSG_SINGOLO: 3
},
listBestColor: [
@@ -1501,7 +1503,11 @@ export const tools = {
})
} else if (func === lists.MenuAction.INVIA_MSG_A_DONATORI) {
// console.log('param1', par.param1)
GlobalStore.actions.InviaMsgADonatori({ msgobj: par.param1, navemediatore: par.param2 }).then((ris) => {
GlobalStore.actions.InviaMsgADonatori({
msgobj: par.param1,
navemediatore: par.param2,
tipomsg: par.param1.tipomsg
}).then((ris) => {
if (ris) {
if (par.param1.inviareale)
tools.showPositiveNotif(myself.$q, myself.$t('dashboard.msg_donatori_ok'))
@@ -1509,6 +1515,19 @@ export const tools = {
} else
tools.showNegativeNotif(myself.$q, myself.$t('db.recfailed'))
})
} else if (func === lists.MenuAction.INVIA_MSG_A_SINGOLO) {
// console.log('param1', par.param1)
GlobalStore.actions.InviaMsgADonatori({
msgobj: par.param1,
navemediatore: par.param2,
tipomsg: par.param1.tipomsg
})
.then((ris) => {
if (ris) {
tools.showPositiveNotif(myself.$q, myself.$t('cal.sendmsg_sent'))
} else
tools.showNegativeNotif(myself.$q, myself.$t('db.recfailed'))
})
} else if (func === lists.MenuAction.DONO_INVIATO) {
const mydatatosave = {
id: par.param1._id,
@@ -2402,8 +2421,10 @@ export const tools = {
return '337'
} else if (Screen.width < 600) {
return '400'
} else {
} else if (Screen.width < 900) {
return '500'
} else {
return '600'
}
},

View File

@@ -1,123 +1,149 @@
<template>
<div>
<CTitleBanner title="Operazioni su DB:"></CTitleBanner>
<div class="row justify-center q-gutter-sm q-list--bordered center_img" style="max-width: 600px">
<div class="row">
<q-btn label="Passa i codici Telefoni sul campo cell" color="primary"
@click="EseguiFunz('changeCellInt')"></q-btn>
<br></div>
<div class="row">
<q-btn label="Trasforma le email tutte in minuscolo" color="primary"
@click="EseguiFunz('changeEmailLowerCase')"></q-btn>
<br></div>
<div class="row">
<q-btn label="Crea Utenti Test" color="primary" @click="EseguiFunz('creaUtentiTest')"></q-btn><br>
</div>
<div class="row">
<q-btn label="IMPOSTARE A TUTTI PAYPAL" color="primary" @click="EseguiFunz('ImpostaATuttiPaypal')"></q-btn><br>
</div>
<div class="row">
<q-btn label="NUM_TESS A 1" color="primary" @click="EseguiFunz('numtessUno')"></q-btn><br>
</div>
<div class="row">
<q-btn label="Inizializza ListaIngresso" color="negative" @click="EseguiFunz('initListaIngresso')"></q-btn><br>
<q-btn label="Crea ListaIngresso" color="negative" @click="EseguiFunz('creaLista')"></q-btn>
</div>
<!--
<div class="row">
<q-btn label="Elimina Navi" color="negative" @click="EseguiFunz('delNavi')"></q-btn><br>
</div>
-->
<div class="row">
<q-btn label="Elimina Navi non Partite" color="negative" @click="EseguiFunz('delNaviNoStarted')"></q-btn><br>
</div>
<div class="row">
<q-btn label="Elimina Navi Provvisorie" color="negative" @click="EseguiFunz('delNaviProvvisorie')"></q-btn><br>
</div>
<div>
<CDateTime
:value.sync="date_start"
:label="$t('cal.eventstartdatetime')"
:readonly="false">
</CDateTime>
<q-input v-model="numpersone" type="number" autofocus label="Num Persone to Add" style="width: 50px;"></q-input>
<q-btn label="Crea Navi Provvisorie" color="negative" @click="EseguiFunz('creaNaviProvvisorie')"></q-btn>
<q-btn label="Crea Navi Definitive" color="negative" @click="EseguiFunz('creaNaviDefinitive')"></q-btn>
</div>
<div v-if="!incaricamento" class="row">
<CMyFieldDb title="Riga"
mykey="riga"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Col"
mykey="col"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Riga Doni"
mykey="rigadoni"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Col Doni"
mykey="coldoni"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Visu_TEST"
mykey="VISU_TEST"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
<CMyFieldDb title="VISU_NAVE_BOT"
mykey="VISU_NAVE_BOT"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
</div>
<div>
<CTitleBanner title="Operazioni su DB:"></CTitleBanner>
<div class="row justify-center q-gutter-sm q-list--bordered center_img" style="max-width: 600px">
<!--<div class="row">
<q-btn label="Passa i codici Telefoni sul campo cell" color="primary"
@click="EseguiFunz('changeCellInt')"></q-btn>
<br></div>
<div class="row">
<q-btn label="Trasforma le email tutte in minuscolo" color="primary"
@click="EseguiFunz('changeEmailLowerCase')"></q-btn>
<br></div>
<div class="row">
<q-btn label="Crea Utenti Test" color="primary" @click="EseguiFunz('creaUtentiTest')"></q-btn><br>
</div>
<div class="row">
<q-btn label="IMPOSTARE A TUTTI PAYPAL" color="primary" @click="EseguiFunz('ImpostaATuttiPaypal')"></q-btn><br>
</div>
<div class="row">
<q-btn label="NUM_TESS A 1" color="primary" @click="EseguiFunz('numtessUno')"></q-btn><br>
</div>
<div class="row">
<q-btn label="Pulisci chi non è presente in Nave" color="primary" @click="EseguiFunz('pulisciNonPresenzeInNave')"></q-btn><br>
</div>
<div class="row">
<q-btn label="Visualizza Lista Nave" color="primary" @click="EseguiFunz('visuListaNave')"></q-btn><br>
</div>
<div class="row">
<q-btn label="Visualizza ListaIngresso" color="primary" @click="EseguiFunz('visuListaIngresso')"></q-btn><br>
</div>
<div class="row">
<q-btn label="CHECK SE INSERIRE UTENTI IN Nave" color="primary" @click="EseguiFunz('checkInserimentiUtentiInNave')"></q-btn><br>
</div>
-->
<div class="row">
<q-btn label="CORREGGI NUM_TESS" color="primary" @click="EseguiFunz('Corregginumtess')"></q-btn>
<br>
</div>
<div class="row">
<!--<q-btn label="Inizializza ListaIngresso" color="negative"
@click="EseguiFunz('initListaIngresso')"></q-btn>
<br>-->
</div>
<!--
<div class="row">
<q-btn label="Elimina Navi" color="negative" @click="EseguiFunz('delNavi')"></q-btn><br>
</div>
-->
<!--<div class="row">
<q-btn label="Elimina Navi non Partite" color="negative"
@click="EseguiFunz('delNaviNoStarted')"></q-btn>
<br>
</div>-->
<div class="row">
<q-btn label="Elimina Navi Provvisorie" color="negative"
@click="EseguiFunz('delNaviProvvisorie')"></q-btn>
<q-btn label="Crea ListaIngresso" color="positive" @click="EseguiFunz('creaLista')"></q-btn>
</div>
<div class="q-pa-sm">
<CDateTime
:value.sync="date_start"
:label="$t('cal.eventstartdatetime')"
:readonly="false">
</CDateTime>
<q-input v-model="numpersone" type="number" autofocus label="Num Persone to Add"
style="width: 50px;"></q-input>
<q-btn label="Crea Navi Provvisorie" color="primary"
@click="EseguiFunz('creaNaviProvvisorie')"></q-btn>
<br>
<q-btn label="Crea Navi Definitive" color="primary" @click="EseguiFunz('creaNaviDefinitive')"></q-btn>
</div>
<div v-if="!incaricamento" class="row">
<CMyFieldDb title="Riga"
mykey="riga"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Col"
mykey="col"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Riga Doni"
mykey="rigadoni"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Col Doni"
mykey="coldoni"
:serv="false"
:type="tools.FieldType.number">
</CMyFieldDb>
<CMyFieldDb title="Visu_TEST"
mykey="VISU_TEST"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
<CMyFieldDb title="VISU_NAVE_BOT"
mykey="VISU_NAVE_BOT"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
</div>
<div class="row">
<q-btn label="Pulisci chi non è presente in Nave" color="primary"
@click="EseguiFunz('pulisciNonPresenzeInNave')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="Visualizza Lista Nave" color="primary" @click="EseguiFunz('visuListaNave')"></q-btn>
</div>
<div class="row">
<q-btn label="Visualizza ListaIngresso" color="primary"
@click="EseguiFunz('visuListaIngresso')"></q-btn>
<br>
</div>
<!--<div class="row">
<q-btn label="CHECK SE INSERIRE UTENTI IN Nave" color="primary"
@click="EseguiFunz('checkInserimentiUtentiInNave')"></q-btn>
<br>
</div>-->
<div class="row">
<q-input v-model="riga" type="number" autofocus label="Riga" style="width: 50px;"></q-input>
<q-input v-model="col" type="number" autofocus label="Col" style="width: 50px;"></q-input>
<q-btn label="Visualizza Nave da 8" color="primary" @click="EseguiFunz('visuPlacca')"></q-btn>
<br>
<q-btn label="Visualizza Nave" color="primary" @click="EseguiFunz('visuNave')"></q-btn>
<br>
</div>
<div class="row">listadonatoridelsognatore
<q-input v-model="placca" type="textarea" autofocus label="Placca" autogrow
style="width: 500px; height: 400px;"></q-input>
<br>
</div>
</div>
<q-field
stack-label
dense
>
<template v-slot:control>
<div class="self-center full-width no-outline text-center" tabindex="0">{{ris}}</div>
</template>
</q-field>
<div class="row">
<q-input v-model="riga" type="number" autofocus label="Riga" style="width: 50px;"></q-input>
<q-input v-model="col" type="number" autofocus label="Col" style="width: 50px;"></q-input>
<q-btn label="Visualizza Nave da 8" color="primary" @click="EseguiFunz('visuPlacca')"></q-btn><br>
<q-btn label="Visualizza Nave" color="primary" @click="EseguiFunz('visuNave')"></q-btn><br>
</div>
<div class="row">listadonatoridelsognatore
<q-input v-model="placca" type="textarea" autofocus label="Placca" autogrow style="width: 500px; height: 400px;"></q-input>
<br>
</div>
</div>
<q-field
stack-label
dense
>
<template v-slot:control>
<div class="self-center full-width no-outline text-center" tabindex="0">{{ris}}</div>
</template>
</q-field>
</div>
</template>
<script lang="ts" src="./dbop.ts">
</script>
<style lang="scss" scoped>
@import './dbop';
@import './dbop';
</style>