Ultimo aggiornamento Nuova versione del Sito !

This commit is contained in:
Paolo Arena
2020-05-14 17:23:03 +02:00
parent 9dffc92d22
commit d2bf9eb202
20 changed files with 740 additions and 513 deletions

View File

@@ -10,7 +10,7 @@ import { CMyFieldDb } from '../CMyFieldDb'
import { CCopyBtn } from '../CCopyBtn'
import { CUserBadge } from '../CUserBadge'
import { CLegenda } from '../CLegenda'
import { IDashboard, IUserProfile } from '../../model'
import { IDashboard, IDownline, IUserProfile } from '../../model'
import { IUserFields } from '../../model/UserStore'
import { CRequisito } from '../CRequisito'
import translate from '../../globalroutines/util'
@@ -52,6 +52,7 @@ export default class CMyDashboard extends MixinUsers {
public shownuovoviaggio: boolean = false
public notifBot: boolean = true
public loading: boolean = false
public loading_invitati: boolean = false
public seluser: IUserFields = null
public aportador_solidario: string = ''
public invitante_username: string = ''
@@ -64,9 +65,6 @@ export default class CMyDashboard extends MixinUsers {
myself: DefaultUser,
aportador: DefaultUser,
numpeople_aportador: 0,
downline: [],
downnotreg: [],
downbyuser: [],
arrimbarchi: [],
arrposizioni: [],
navi_partenza: [],
@@ -74,6 +72,12 @@ export default class CMyDashboard extends MixinUsers {
arrusers: [],
}
public downline: IDownline = {
downline: [],
downnotreg: [],
downbyuser: []
}
@Prop({ required: true }) public username
@Watch('UserStore.state.my.dashboard')
@@ -98,6 +102,15 @@ export default class CMyDashboard extends MixinUsers {
public changetab(val) {
tools.setCookie(tools.TABBED_DASHBOARD, val)
if (this.tab === 'invitati') {
if (this.downline.downline.length <= 0) {
this.loading_invitati = true
UserStore.actions.getDownline({ username: this.myusername }).then((ris) => {
this.downline = ris
this.loading_invitati = false
})
}
}
// console.log('setcook', val)
}
@@ -123,21 +136,36 @@ export default class CMyDashboard extends MixinUsers {
this.loading = true
await UserStore.actions.getDashboard({ username: this.myusername }).then((ris) => {
this.dashboard = ris
UserStore.actions.getDashboard({ username: this.myusername })
.then((ris) => {
this.dashboard = ris
if (!!this.dashboard)
this.invitante_username = this.dashboard.myself.username
if (!!this.dashboard)
this.invitante_username = this.dashboard.myself.username
this.myrigaattuale = this.dashboard.lastnave.riga
this.mycolattuale = this.dashboard.lastnave.col
this.myrigaattuale = this.dashboard.lastnave.riga
this.mycolattuale = this.dashboard.lastnave.col
// console.log('this.invitante_username', this.invitante_username)
this.loading = false
})
this.loading = false
})
.catch((e) => {
this.loading = false
})
if (this.tab === 'invitati') {
this.loading_invitati = true
UserStore.actions.getDownline({ username: this.myusername })
.then((ris2) => {
this.downline = ris2
this.loading_invitati = false
})
.catch((e) => {
this.loading_invitati = false
})
}
this.showuserinfo = false
this.loading = false
}
get getRefLink() {
@@ -145,34 +173,42 @@ export default class CMyDashboard extends MixinUsers {
}
get invitatinotreg() {
if (this.dashboard)
if (this.dashboard.downnotreg)
return this.dashboard.downnotreg.length > 0
if (this.downline)
if (this.downline.downnotreg)
return this.downline.downnotreg.length > 0
return false
}
public selectclick(user, showregalainv, ind_order_ingr, id_listaingr) {
this.showuserinfo = true
this.seluser = user
this.showregalainv = showregalainv
this.ind_order_ingr = ind_order_ingr
this.id_listaingr = id_listaingr
public selectclick(user, showregalainv, ind_order_ingr, id_listaingr, disabled) {
if (!disabled) {
this.showuserinfo = true
this.seluser = user
this.showregalainv = showregalainv
this.ind_order_ingr = ind_order_ingr
this.id_listaingr = id_listaingr
}
}
get Completato7Req() {
// return tools.Is7ReqOk(this.dashboard.myself)
return this.dashboard.myself.qualified
if (!!this.dashboard.myself)
return this.dashboard.myself.qualified
return false
}
get Completato9Req() {
// return tools.Is9ReqOk(this.dashboard.myself)
if (!!this.dashboard)
if (!!this.dashboard.myself)
return this.dashboard.myself.qualified && (this.dashboard.myself.numinvitatiattivi >= 2)
return false
}
public HasNave() {
return this.dashboard.arrposizioni.length > 0
get HasNave() {
if (!!this.dashboard.arrposizioni)
return this.dashboard.arrposizioni.length > 0
else
return false
}
public getnavePartenzaByRigaCol(riga, col) {
@@ -187,10 +223,19 @@ export default class CMyDashboard extends MixinUsers {
}
public datanave(mianave) {
// const mynavepart = this.getnavePartenzaByRigaCol(tools.getRiganave(mianave.riga), tools.getColnave(mianave.col))
if (!!mianave.nave_partenza) {
if (!!mianave.nave_partenza.date_start)
return tools.getstrDate(mianave.nave_partenza.date_start)
}
return ' --/-- '
}
public datagiftchat(mianave) {
// const mynavepart = this.getnavePartenzaByRigaCol(tools.getRiganave(mianave.riga), tools.getColnave(mianave.col))
if (!!mianave.nave_partenza) {
if (!!mianave.nave_partenza.date_gift_chat_open)
return tools.getstrshortDate(mianave.nave_partenza.date_gift_chat_open)
return tools.getstrDate(mianave.nave_partenza.date_gift_chat_open)
}
return ' --/-- '
}
@@ -223,7 +268,7 @@ export default class CMyDashboard extends MixinUsers {
public async NuovoImbarco(username, invitante_username) {
await tools.askConfirm(this.$q, translate('steps.nuovo_imbarco') , translate('dialog.continue') + ' ?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.AGGIUNGI_NUOVO_IMBARCO, 0, {
await tools.askConfirm(this.$q, translate('steps.nuovo_imbarco'), translate('dialog.continue') + ' ?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.AGGIUNGI_NUOVO_IMBARCO, 0, {
param1: { username, invitante_username }
})
this.shownuovoviaggio = false
@@ -234,7 +279,7 @@ export default class CMyDashboard extends MixinUsers {
}
public async cancellaImbarco(imbarco) {
await tools.askConfirm(this.$q, translate('dashboard.attenzione'), translate('steps.vuoi_cancellare_imbarco') , translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.CANCELLA_IMBARCO, 0, {
await tools.askConfirm(this.$q, translate('dashboard.attenzione'), translate('steps.vuoi_cancellare_imbarco'), translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.CANCELLA_IMBARCO, 0, {
param1: { ind_order: imbarco.ind_order, username: imbarco.username },
param2: { num_tess: imbarco.num_tess }
})
@@ -258,7 +303,7 @@ export default class CMyDashboard extends MixinUsers {
if (invattivi > 2)
invattivi = 2
return invattivi + '/' + inv
return invattivi + '/' + inv
}
public getinvit(index, myuser, posiz) {
@@ -281,21 +326,25 @@ export default class CMyDashboard extends MixinUsers {
return { invattivi, inv }
}
public getnuminv(index, myuser, posiz) {
const ris = this.getinvit(index, myuser, posiz)
return ris.inv
}
public getnuminvattivi(index, myuser, posiz) {
const ris = this.getinvit(index, myuser, posiz)
return ris.invattivi
}
public getnuminvperc(index, myuser, posiz) {
const ris = this.getinvit(index, myuser, posiz)
return ris.invattivi / 2 * 100
}
public getcolorinvitati(index, myuser, posiz) {
const ris = this.getinvit(index, myuser, posiz)
@@ -352,7 +401,7 @@ export default class CMyDashboard extends MixinUsers {
}
public imbarchipresenti() {
let presente = false;
let presente = false
for (const rec of this.dashboard.arrimbarchi) {
if (!rec.added)
presente = true
@@ -393,14 +442,37 @@ export default class CMyDashboard extends MixinUsers {
}
get getstrinvitati() {
if (this.dashboard.myself.numinvitati)
return this.dashboard.myself.numinvitati + ` ` + this.$t('dashboard.downline')
else
if (!!this.dashboard && !!this.dashboard.myself)
if (!!this.dashboard.myself.numinvitati)
return this.dashboard.myself.numinvitati + ` ` + this.$t('dashboard.downline')
if (this.loading_invitati)
return ` (...) ` + this.$t('dashboard.downline')
else
return this.$t('dashboard.downline')
}
public getmyrigaattuale(rigamin) {
public getmyrigaattuale(mianave) {
const rigamin = tools.getRiganave(mianave.riga)
const colmin = tools.getColnave(mianave.col)
let riga = this.myrigaattuale
let col = this.mycolattuale
let colvera = colmin
if (rigamin > 3) {
for (let index = rigamin; index < riga - 1; index++){
colvera = colvera * 2
}
} else {
colvera = 7
}
if (col <= colvera) {
riga = riga - 1
}
// console.log('[' + rigamin + '.' + colmin + ']', 'riga', riga, 'col', col, 'colvera', colvera)
if (riga < rigamin)
riga = rigamin
@@ -411,7 +483,7 @@ export default class CMyDashboard extends MixinUsers {
}
public getval7(mianave) {
let val = this.getmyrigaattuale(tools.getRiganave(mianave.riga))
let val = this.getmyrigaattuale(mianave)
return val - tools.getRiganave(mianave.riga) + 1
}
@@ -436,7 +508,15 @@ export default class CMyDashboard extends MixinUsers {
return val
}
gettextcolor(mianave) {
public gettextcolor(mianave) {
return this.getval7(mianave) === 3 ? 'black' : 'white'
}
public getifdisableInvitante(imbarco, index) {
if ((index === 0) && (this.dashboard.arrposizioni.length <= 0)) {
return true
}
return false
}
}

View File

@@ -16,28 +16,34 @@
</q-tabs>
<div v-if="loading" class="q-ma-md text-center" style="height: 100px;">
<q-spinner-gears size="50px" color="primary"/>
</div>
<q-tab-panels v-model="tab" animated>
<q-tab-panel name="requisiti">
<div v-if="!!dashboard.myself.name">
<CMyRequirement :myseluser="dashboard.myself" :mydashboard="dashboard" @aggiorna="aggiorna"
>
</CMyRequirement>
<div v-if="loading" class="q-ma-md text-center" style="height: 50px;">
<q-spinner-gears size="50px" color="primary"/>
</div>
<div v-if="!!dashboard && !!dashboard.myself">
<div v-if="!!dashboard.myself.name">
<CMyRequirement :myseluser="dashboard.myself" :mydashboard="dashboard" :mydownline="downline"
@aggiorna="aggiorna"
>
</CMyRequirement>
</div>
</div>
</q-tab-panel>
<q-tab-panel name="invitati">
<CTitleBanner class="shadow-2" :title="$t('reg.aportador_solidario')" bgcolor="bg-accent"
clcolor="text-white"
mystyle=" " myclass="myshad" :canopen="true">
<CUserBadge v-if="!!dashboard.aportador" :user="dashboard.aportador" :index="0"
:showregalainv="false"
:numpeople="dashboard.numpeople_aportador"
mycolor="accent" @myclick="selectclick">
</CUserBadge>
@@ -52,34 +58,33 @@
<CUserBadge v-if="!!dashboard.myself" :user="dashboard.myself" :index="0"
:showregalainv="false"
:numpeople="dashboard.downline.length"
@myclick="selectclick"
mycolor="blue">
</CUserBadge>
</CTitleBanner>
</q-tab-panel>
<q-tab-panel name="invitati">
<CTitleBanner class="shadow-2 rounded-borders" :title="getstrinvitati" bgcolor="bg-positive"
clcolor="text-white"
mystyle=" " myclass="myshad" :canopen="true">
<q-list bordered v-if="!!dashboard.downline && dashboard.downline.length > 0" class="rounded-borders">
<div v-for="(user, index) in dashboard.downline" :key="index">
<div v-if="loading_invitati" class="q-ma-md text-center" style="height: 50px;">
<q-spinner-hourglass size="50px" color="primary"/>
</div>
<q-list bordered v-if="!!downline.downline && downline.downline.length > 0" class="rounded-borders">
<div v-for="(user, index) in downline.downline" :key="index">
<CUserBadge :yourinvite="true" :user="user" mycolor="positive" :index="index"
:showregalainv="false"
:numpeople="dashboard.downbyuser[user.username].length"
@myclick="selectclick"
>
</CUserBadge>
<div v-if="user.username !== dashboard.myself.username">
<div style="margin-left:10px;" v-for="(user2, index2) in dashboard.downbyuser[user.username]"
<div style="margin-left:10px;" v-for="(user2, index2) in downline.downbyuser[user.username]"
:key="index2">
<CUserBadge :yourinvite="false" :user="user2" mycolor="orange" :index="index2"
:showregalainv="false"
:numpeople="dashboard.downbyuser[user2.username].length"
@myclick="selectclick"
>
@@ -89,7 +94,9 @@
</div>
</q-list>
<div v-else class="q-pa-sm text-center">
{{ $t('dashboard.nessun_invitato')}}
<div v-if="!loading_invitati">
{{ $t('dashboard.nessun_invitato')}}
</div>
</div>
</CTitleBanner>
@@ -148,20 +155,24 @@
</q-tab-panel>
<q-tab-panel name="navi">
<div v-if="loading" class="q-ma-md text-center" style="height: 50px;">
<q-spinner-gears size="50px" color="primary"/>
</div>
<div>
<div v-if="!Completato9Req && !HasNave">
<CTitleBanner icon="person" :canopen="true" class="q-pa-xs text-center"
:title="$t('pages.posizione_in_programmazione')" bgcolor="bg-blue"
clcolor="text-white" mystyle=" " myclass="myshad">
<CRequisiti :statebool="Completato7Req"
:msgTrue="$t('steps.enter_prog_requisiti_ok') + $t('steps.enter_prog_requisiti_ok')"
:msgTrue="$t('steps.enter_prog_requisiti_ok') + $t('steps.enter_prog_msg')"
:msgFalse="$t('steps.enter_prog_completa_requisiti')">
</CRequisiti>
</CTitleBanner>
</div>
</div>
<div v-if="!!dashboard">
<div v-if="!!dashboard && dashboard.myself">
<div v-if="dashboard.myself.qualified">
<CTitleBanner class=""
@@ -180,11 +191,8 @@
<div class="col-2 ">
{{ $t('dashboard.downline') }}
</div>
<!--<div class="col-2">
{{ $t('dashboard.dono_da_effettuare') }}
</div>-->
<div class="col-2">
{{ $t('reg.elimina') }}
{{ $t('dialog.delete') }}
</div>
</div>
@@ -206,7 +214,7 @@
:ind_order_ingr="mioimbarco.ind_order"
:id_listaingr="mioimbarco._id"
:index="index"
:numpeople="0"
:mydisabled="getifdisableInvitante(mioimbarco, index)"
@myclick="selectclick">
</CUserBadge>
</div>
@@ -253,7 +261,7 @@
</q-btn>
</div>
<div class="q-pa-xs text-center">
<div v-if="!!dashboard.myself" class="q-pa-xs text-center">
<div v-if="!!dashboard.myself.name">
<div v-if="!HasNave">
@@ -282,7 +290,7 @@
</q-item-section>
<q-item-section>
<q-slider
:value="getmyrigaattuale(tools.getRiganave(mianave.riga))"
:value="getmyrigaattuale(mianave)"
:label-text-color="gettextcolor(mianave)"
:label-value="getval7(mianave) + '/7'"
:color="getcolorbyval(mianave)"
@@ -296,6 +304,9 @@
</q-slider>
</q-item-section>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-flag-checkered"></q-icon>
</q-item-section>
</q-item>
</q-list>
</div>
@@ -306,7 +317,7 @@
<q-card class="my-card-shadow yes_shadow">
<q-img
src="statics/images/nave.jpg"
:src="`statics/images/nave${index+1}.jpg`"
style="width: 100%"
native-context-menu>
<div class="absolute-bottom text-subtitle1 text-center text-sobig">
@@ -317,14 +328,17 @@
<div class="row justify-sm-start items-center rounded-borders">
<div class="row items-center justify-center q-ma-xs" style="width: 100%">
<q-chip class="glossy q-ma-md" :color="getcolorbynave(mianave)" text-color="white"
<q-chip class="glossy q-mx-md" :color="getcolorbynave(mianave)" text-color="white"
icon="fas fa-ship">
&nbsp;
{{ $t('dashboard.nave_in_partenza') + ' ' + datanave(mianave) }}
{{ $t('dashboard.nave_in_partenza') + ' ' + datagiftchat(mianave) }}
</q-chip>
<q-chip v-if="datagiftchat(mianave) !== datanave(mianave)" class="glossy q-mx-md" color="blue" text-color="white"
icon="fas fa-ship">
{{ $t('dashboard.nave_in_chiusura') + ' ' + datanave(mianave) }}
</q-chip>
</div>
<div v-if="isprovvisoria(mianave)">
<div v-if="isprovvisoria(mianave)" class="text-center centermydiv">
<CRequisiti :statebool="true"
:msgTrue="$t('dashboard.nave_provvisoria') + `<br><strong>` + $t('steps.enter_prog_msg') + `</strong>`"
msgFalse="">
@@ -368,7 +382,7 @@
</q-item-section>
<q-item-section>
<q-slider
:value="getmyrigaattuale(tools.getRiganave(mianave.riga))"
:value="getmyrigaattuale(mianave)"
:label-text-color="gettextcolor(mianave)"
:label-value="getval7(mianave) + '/7'"
:color="getcolorbyval(mianave)"
@@ -381,6 +395,9 @@
</q-slider>
</q-item-section>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-flag-checkered"></q-icon>
</q-item-section>
</q-item>
<q-item>
<q-item-section avatar>
@@ -420,6 +437,22 @@
</q-item-label>
</q-item-section>
</q-item>
<q-item v-if="mianave.num_tess % 2 !== 0">
<q-item-section avatar>
<q-icon size="sm" name="fas fa-user" color="blue"></q-icon>
</q-item-section>
<q-item-section>
<q-item-label>
<q-input v-model="mianave.invitante_username" :label="$t('dashboard.invitante')"
rounded outlined
readonly
dense
style="width: 100%; font-size:0.75rem;">
</q-input>
</q-item-label>
</q-item-section>
</q-item>
</q-list>
</div>
</div>
@@ -461,7 +494,7 @@
</q-tab-panels>
</div>
<div v-if="!!dashboard">
<div v-if="!!dashboard.myself">
<div v-if="!!dashboard.myself.name">
<div v-if="dashboard.myself.deleted">
<span style="color: red;"> <h2><strong>UTENTE CANCELLATO (Nascosto: true) !</strong></h2></span>
@@ -507,7 +540,7 @@
</q-toolbar>
<q-card-section class="inset-shadow" style="padding: 4px !important;">
<CMyRequirement :id_listaingr="id_listaingr" :myseluser="seluser" :showregalainv="showregalainv"
:mydashboard="dashboard" :notitle="false" @aggiorna="aggiorna"
:mydashboard="dashboard" :mydownline="downline" :notitle="false" @aggiorna="aggiorna"
:ind_order_ingr="ind_order_ingr">
</CMyRequirement>

View File

@@ -10,7 +10,7 @@ import { CMyFieldDb } from '../CMyFieldDb'
import { CCopyBtn } from '../CCopyBtn'
import { CUserBadge } from '../CUserBadge'
import { CLegenda } from '../CLegenda'
import { IDashboard, IUserProfile } from '../../model'
import { IDashboard, IDownline, IUserProfile } from '../../model'
import { IUserFields } from '../../model/UserStore'
import { CRequisito } from '../CRequisito'
import translate from '../../globalroutines/util'
@@ -31,6 +31,7 @@ export default class CMyRequirement extends MixinUsers {
@Prop({ required: false, default: -1 }) public ind_order_ingr: number
@Prop({ required: false, default: -1 }) public id_listaingr: number
@Prop({ required: true }) public mydashboard
@Prop({ required: true }) public mydownline
@Prop({ required: false, default: false }) public notitle
@Prop({ required: false, default: false }) public showregalainv
public $t
@@ -42,7 +43,10 @@ export default class CMyRequirement extends MixinUsers {
public dashboard: IDashboard = {
myself: DefaultUser,
aportador: DefaultUser,
numpeople_aportador: 0,
numpeople_aportador: 0
}
public downline: IDownline = {
downline: [],
downnotreg: [],
downbyuser: []
@@ -54,6 +58,12 @@ export default class CMyRequirement extends MixinUsers {
this.dashboard = this.mydashboard
}
@Watch('mydownline')
public changedl() {
console.log('changedl')
this.downline = this.mydownline
}
@Watch('myusersel')
public changemyusersel() {
console.log('myseluser')
@@ -211,6 +221,7 @@ export default class CMyRequirement extends MixinUsers {
public created() {
this.dashboard = this.mydashboard
this.downline = this.mydownline
this.seluser = this.myseluser
}
@@ -219,8 +230,14 @@ export default class CMyRequirement extends MixinUsers {
await UserStore.actions.getDashboard({ username: this.dashboard.myself.username }).then((ris) => {
this.dashboard = ris
this.$emit('aggiorna')
UserStore.actions.getDownline({ username: this.dashboard.myself.username }).then((ris2) => {
this.downline = ris2
this.$emit('aggiorna')
})
})
}
public isextralist(user) {
@@ -232,7 +249,7 @@ export default class CMyRequirement extends MixinUsers {
}
public ismydownline(user) {
return this.dashboard.downline.find((rec) => rec.username === user.username)
return this.downline.downline.find((rec) => rec.username === user.username)
}
public async deleteUserFromExtraList(user) {
@@ -305,7 +322,9 @@ export default class CMyRequirement extends MixinUsers {
get allowSubmit() {
let error = this.$v.$error || this.$v.$invalid
error = error || (this.aportador_solidario === this.seluser.aportador_solidario)
if (!this.showregalainv) {
error = error || (this.aportador_solidario === this.seluser.aportador_solidario)
}
return !error

View File

@@ -1,6 +1,6 @@
<template>
<div class="q-ma-sm">
<div :class="getcl" style="margin-left: auto; margin-right: auto;">
<div :class="getcl + ' text-center'" style="margin-left: auto; margin-right: auto;">
<div v-if="statebool" v-html="msgTrue"></div>
<div v-else v-html="msgFalse"></div>
</div>

View File

@@ -250,8 +250,8 @@ export default class CStatus extends MixinBase {
funcko() {
return ''
},
},
{
}
/*{
title: 'steps.collaborate',
descr: 'steps.collaborate_long',
page: '/collaborate',
@@ -318,7 +318,7 @@ export default class CStatus extends MixinBase {
funcko() {
return ''
},
},
},*/
]
public setstep() {

View File

@@ -1,395 +1,398 @@
<template>
<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', {botname: $t('ws.botname')})"
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, {sitename: $t('pages.sitename')})"></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, {sitename: $t('pages.sitename')})"></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"
>
</CMyFieldDb>
-->
</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, {sitename: $t('pages.sitename')})"></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 Cloud Meeting</h3>
<ul style="text-align: left; font-size:0.75rem;">
<li>1. Scarica l'app per: (<a
href="https://play.google.com/store/apps/details?id=us.zoom.videomeetings"
target="_blank">Android</a> o per
<a href="https://apps.apple.com/us/app/zoom-cloud-meetings/id546505307" target="_blank">iPhone</a>
o per
<a href="https://zoom.us/support/download" target="_blank">PC Desktop</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, {sitename: $t('pages.sitename')})"></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>
<CCopyBtn :title="$t('reg.reflink')" :texttocopy="getRefLink">
</CCopyBtn>
<CCopyBtn :title="$t('reg.linkzoom')" :texttocopy="tools.getLinkZoom()">
</CCopyBtn>
</div>
<div v-else-if="mystep.title === 'dashboard.inv_attivi'">
<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-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, {sitename: $t('pages.sitename')})"></div>
</div>
</div>
<div v-else-if="mystep.title === 'steps.enter_prog'">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr, {sitename: $t('pages.sitename')})"></div>
</div>
<CRequisiti :statebool="CompletatoRequisiti" :msgTrue="$t('steps.enter_prog_requisiti_ok') + $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', {sitename: $t('pages.sitename')})"
: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, {sitename: $t('pages.sitename')})"></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>
<div v-if="CompletatoRequisiti" class="centermydiv">
<q-btn class="q-mb-md" rounded size="md" color="primary" to="/dashboard"
:label="$t('dashboard.entra_in_lavagna')"></q-btn>
</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', {botname: $t('ws.botname')})"
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, {sitename: $t('ws.sitename')})"></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, {sitename: $t('ws.sitename')})"></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"
>
</CMyFieldDb>
-->
</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, {sitename: $t('ws.sitename')})"></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 Cloud Meeting</h3>
<ul style="text-align: left; font-size:0.75rem;">
<li>1. Scarica l'app per: (<a
href="https://play.google.com/store/apps/details?id=us.zoom.videomeetings"
target="_blank">Android</a> o per
<a href="https://apps.apple.com/us/app/zoom-cloud-meetings/id546505307" target="_blank">iPhone</a>
o per
<a href="https://zoom.us/support/download" target="_blank">PC Desktop</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, {sitename: $t('ws.sitename')})"></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>
<CCopyBtn :title="$t('reg.reflink')" :texttocopy="getRefLink">
</CCopyBtn>
<CCopyBtn :title="$t('reg.linkzoom')" :texttocopy="tools.getLinkZoom()">
</CCopyBtn>
</div>
<div v-else-if="mystep.title === 'dashboard.inv_attivi'">
<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-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, {sitename: $t('ws.sitename')})"></div>
</div>
</div>
<div v-else-if="mystep.title === 'steps.enter_prog'">
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr, {sitename: $t('ws.sitename')})"></div>
</div>
<div v-if="CompletatoRequisiti && !Completato9Req">
<CRequisiti :statebool="CompletatoRequisiti" :msgTrue="$t('steps.enter_prog_requisiti_ok')"
:msgFalse="$t('steps.enter_prog_completa_requisiti')">
</CRequisiti>
</div>
<br>
<CRequisiti v-if="Completato9Req" :statebool="Completato9Req"
:msgTrue="$t('steps.enter_nave_9req_ok', {sitename: $t('ws.sitename')})"
:msgFalse="$t('steps.enter_nave_9req_ko')">
</CRequisiti>
</div>
<div v-else>
<div v-if="mystep.page">
<CMyInnerPage :path=mystep.page>
<div v-if="mystep.descr">
<div v-html="$t(mystep.descr, {sitename: $t('ws.sitename')})"></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

@@ -21,8 +21,8 @@ export default class CUserBadge extends MixinBase {
@Prop({ required: true }) public index: number
@Prop({ required: false, default: false }) public yourinvite: boolean
@Prop({ required: true }) public user: IUserFields
@Prop({ required: true }) public numpeople: number
@Prop({ required: true }) public mycolor: string
@Prop({ required: false, default: false }) public mydisabled: string
@Prop({ required: false, default: true }) public showsteps: boolean
@Prop({ required: false, default: true }) public showregalainv: boolean
@Prop({ required: false, default: -1 }) public ind_order_ingr: number
@@ -51,11 +51,17 @@ export default class CUserBadge extends MixinBase {
}
public getindorder(user) {
/*if (!!user.username)
return ' (' + user.ind_order + ')'
else
return ''
*/
if (!!user.index)
return ' (n°' + user.index + ')'
return ''
}
public getquanti(user) {
if (!!user.quanti) {
if (user.quanti > 1) {
return ' (' + user.quanti + ' ' + this.$t('reg.volte') + ')'
}
}
return ''
}
@@ -98,7 +104,7 @@ export default class CUserBadge extends MixinBase {
}
public execclick(user) {
this.$emit('myclick', user, this.showregalainv, this.ind_order_ingr, this.id_listaingr)
this.$emit('myclick', user, this.showregalainv, this.ind_order_ingr, this.id_listaingr, this.mydisabled)
}
public getnumreq(user) {
@@ -126,7 +132,7 @@ export default class CUserBadge extends MixinBase {
return (user.numinvitati / 2) * 100
}
public getcolorpeople(user){
public getcolorpeople(user) {
if (user.numinvitati === 1)
return 'blue'
else if (user.numinvitati === 2)

View File

@@ -1,5 +1,5 @@
<template>
<div v-if="!!user">
<div v-if="!!user" :disabled="mydisabled">
<q-item class="q-my-sm q-pa-sm myuserbadge shadow-5" clickable v-ripple @click="execclick(user)">
<q-item-section avatar v-if="showsteps">
<div class="row" style="margin-left: 4px;">
@@ -14,7 +14,7 @@
<q-item-section>
<q-item-label>{{ user.name }} {{ user.surname }} {{ getindorder(user) }}<br>
<span class="text-grey">({{ getusername(user) }})</span>
<span class="text-grey">({{ getusername(user) }}) {{ getquanti(user)}}</span>
<br><!--<span v-if="isextralist(user)" class="notreg">{{ $t('dashboard.notreg') }}</span>-->
</q-item-label>
<!--<q-item-label caption lines="1">{{ user.email }}</q-item-label>-->

View File

@@ -35,9 +35,6 @@ export interface IDashboard {
myself?: IUserFields
aportador?: IUserFields,
numpeople_aportador?: number
downline: any[],
downnotreg: any[],
downbyuser: any[]
arrimbarchi?: any[]
arrposizioni?: any[]
navi_partenza?: any[]
@@ -45,6 +42,12 @@ export interface IDashboard {
arrusers?: any[]
}
export interface IDownline {
downline: any[],
downnotreg: any[],
downbyuser: any[]
}
export interface ICalcStat {
numinvitati?: number
numinvitati_attivi?: number
@@ -70,6 +73,7 @@ export interface IUserFields {
downline?: IUserFields[]
calcstat?: ICalcStat
dashboard?: IDashboard
mydownline?: IDownline
qualified?: boolean
numinvitati?: number
numinvitatiattivi?: number

View File

@@ -5,6 +5,7 @@ const msg_de = {
a: 'to',
},
home: {
guida: 'Guide',
guida_passopasso: 'Step By Step Guide'
},
grid: {
@@ -41,6 +42,7 @@ const msg_de = {
write: 'write'
},
dialog: {
continue: 'Continue',
close: 'Close',
copyclipboard: 'Copied to clipboard',
ok: 'Ok',
@@ -122,6 +124,8 @@ const msg_de = {
downline: 'People you\'ve invited',
},
reg: {
volte: 'time',
volta: 'times',
verified_email: 'Email Verified',
reg_lista_prec: 'Please enter the First Name, Last Name and mobile phone number you left in the past when you signed up for the Chat! <br>This way the system will recognize you and keep the position of the list',
nuove_registrazioni: 'If this is a NEW registration, you must contact the person who INVITED you, who will leave you the CORRECT LINK to do the Registration under him/her',

View File

@@ -5,6 +5,7 @@ const msg_enUs = {
a: 'to',
},
home: {
guida: 'Guide',
guida_passopasso: 'Step By Step Guide'
},
grid: {
@@ -26,6 +27,7 @@ const msg_enUs = {
usereventlist: 'Users Booking',
userlist: 'Users List',
tableslist: 'List of tables',
navi: 'Navi',
newsletter: 'Newsletter',
pages: 'Pages',
media: 'Medias',
@@ -92,6 +94,7 @@ const msg_enUs = {
enter_prog_completa_requisiti: 'Complete all the requirements to enter the boarding list.',
enter_prog_requisiti_ok: 'You have completed all 7 requirements to enter the boarding list.<br>',
enter_prog_msg: 'You will receive a message in the next few days as soon as your ship is ready!',
enter_prog_msg_2: '',
enter_nave_9req_ok: 'CONGRATULATIONS! You have completed ALL 9 steps guide! Thank you for helping {sitename} to Expand! <br>You will be able to leave very soon with your Journey, making your gift and continuing towards the Dreamer.',
enter_nave_9req_ko: 'Remember that you can help the Movement grow and expand by sharing our journey with everyone!',
enter_prog: 'I\'m going in Programming',
@@ -109,6 +112,7 @@ const msg_enUs = {
},
dialog: {
continue: 'Continue',
close: 'Close',
copyclipboard: 'Copied to clipboard',
ok: 'Ok',
@@ -188,6 +192,7 @@ const msg_enUs = {
options: 'Options',
},
dashboard: {
invitante: 'Invitante',
num_tessitura: 'Numero di Tessitura:',
attenzione: 'Attenzione',
downline: 'Guests',
@@ -203,6 +208,7 @@ const msg_enUs = {
nessun_invitato: 'No_invited',
legenda_title: 'Click on the name of the guest to see the status of his Requirements.',
nave_in_partenza: 'on Departure on',
nave_in_chiusura: 'Closing Gift Chat',
nave_partita: 'departed on',
tutor: 'Tutor',
sonomediatore: 'When you become a Medalist you are contacted by a <strong>TUTOR</strong>, with him you must:<br><ol class="list">' +
@@ -213,7 +219,7 @@ const msg_enUs = {
'<li>To find the <strong>link to the newly created Chat</strong>: Click on the Chat name at the top, click on the Pencil -> "Group Type" -> "invite to group via link", click on "copy link" and paste it in the <strong>"Link Gift Chat"</strong></li>" + box below.' +
'<li>Send the Gift Chat Link to all Donors by clicking on the button below.</li></ol>.',
sonodonatore: '<ol class="list"><li>When you are in this position, you will be invited to enter a <strong>Gift Chat</strong> (Telegram) and here you will also find the other 7 Donors, the Mediator, the Dreamer and a Staff representative.' +
'<li>You will make your gift <strong>EXACTLY on the days indicated</strong> and in the payment method that you will find written here.<br></ol>.',
'<li>You will have <strong>4 days</strong> to enter the chat and maximum 7 days to make your Gift, in the payment method that you will find written here.<br></ol>.',
sonodonatore_seconda_tessitura: '<ol class="lista"><li>Here you are Mediator and also Donor, but being the second Weaving, you won\'t need to make your gift again.<br></ol>',
controlla_donatori: 'Check Donor List',
link_chat: 'Gift Chat Telegram links',
@@ -262,9 +268,12 @@ const msg_enUs = {
doni_inviati_da_confermare: 'Gifts Sent (to be confirmed)',
doni_mancanti: 'Missing Gifts',
temporanea: 'Temporary',
nave_provvisoria: 'You have been assigned a <strong>TEMPORARY SHIP</strong>.<br>It is normal that you will see a change the departure date, due to the updating of the passenger ranking.',
ritessitura: 'RETEXTURE',
},
reg: {
volta: 'time',
volte: 'times',
registered: 'Registrato',
contacted: 'Contattato',
name_complete: 'Nome Completo',
@@ -281,6 +290,7 @@ const msg_enUs = {
you: 'You',
cancella_invitato: 'Delete Invited',
regala_invitato: 'Give invited',
regala_invitante: 'Give inviting',
messaggio_invito: 'Invitation Message',
messaggio_invito_msg: 'Send this message to all those to whom you want to share this Movement !',
videointro: 'Introductory Video',

View File

@@ -5,6 +5,7 @@ const msg_es = {
a: 'al',
},
home: {
guida: 'Guía',
guida_passopasso: 'Guía paso a paso'
},
grid: {
@@ -26,6 +27,7 @@ const msg_es = {
usereventlist: 'Reserva Usuarios',
userlist: 'Lista de usuarios',
tableslist: 'Listado de tablas',
navi: 'Naves',
newsletter: 'Newsletter',
pages: 'Páginas',
media: 'Medios',
@@ -77,7 +79,7 @@ const msg_es = {
entra_zoom: "Enter Zoom",
linee_guida: "Acepto las directrices",
video_intro: "Veo los videos",
zoom: "Hago un zoom de al menos 1 Zoom",
zoom: "Hacer 1 zoom de bienvenida (mira la home para fechas)",
zoom_si_partecipato: "Vous avez participé à au moins 1 Zoom",
zoom_partecipa: "Participó al menos 1 Zoom",
zoom_no_partecipato: "Aún no ha participado en un Zoom (es un requisito para entrar)",
@@ -93,6 +95,7 @@ const msg_es = {
enter_prog_completa_requisiti: 'Complete todos los requisitos para entrar en la lista de embarque.',
enter_prog_requisiti_ok: 'Ha completado los 7 requisitos para entrar en la lista de embarque.<br>',
enter_prog_msg: '¡Recibirá un mensaje en los próximos días tan pronto como su nave esté lista!',
enter_prog_msg_2: '',
enter_nave_9req_ok: '¡FELICIDADES! ¡Has completado los 9 pasos de la Guía! ¡Gracias por ayudar a {sitename} a expandirse! <br>Podrás salir muy pronto con tu viaje, haciendo tu regalo y continuando hacia el Soñador.',
enter_nave_9req_ko: 'Recuerda que puedes ayudar a que el Movimiento crezca y se expanda compartiendo nuestro viaje con todos!',
enter_prog: 'Voy a entrar en Lista Programación',
@@ -109,6 +112,7 @@ const msg_es = {
ricevo_dono_long: '¡Hurra! <br> <fuerte> ¡Este movimiento es real y posible si lo hacemos funcionar todos juntos!',
},
dialog: {
continue: 'Continuar',
close: 'Cerrar',
copyclipboard: 'Copiado al portapapeles',
ok: 'Vale',
@@ -188,6 +192,7 @@ const msg_es = {
options: 'Opciones',
},
dashboard: {
invitante: 'Invitando',
num_tessitura: 'Numero di Tessitura:',
attenzione: 'Atención',
downline: 'Invitados',
@@ -200,9 +205,10 @@ const msg_es = {
ricevuto_dono: '😍🎊 Usted recibió una invitación de regalo de {invitato} de {mittente} !',
ricevuto_dono_invitante: '😍🎊 Usted recibió un invitando como regalo de {mittente} !',
nessun_invitante: 'No invitando',
nessun_invitato: 'No_invitado',
nessun_invitato: 'No invitado',
legenda_title: 'Haga clic en el nombre del huésped para ver el estado de sus requisitos',
nave_in_partenza: 'que Sale el',
nave_in_chiusura: 'Cierre Gift Chat',
nave_partita: 'partió en',
tutor: 'Tutor',
traduttrici: 'Traduttrici',
@@ -215,7 +221,7 @@ const msg_es = {
'<li>Para encontrar el <strong>link de la Chat recién creada</strong>: haz clic en el nombre de la chat en la parte de arriba, haz clic sobre el Lápiz-> "Tipo de Grupo" -> "invita al grupo tràmite link", haz clic en "copiar link" y pégalo aquí abajo, sobre la casilla <strong>"Link Gift Chat"</strong></li>' +
'<li>Envía el Link de la Gift Chat a todos los Donadores, haciendo clic en el botón aquí abajo.</li></ol>',
sonodonatore: '<ol class="lista"><li>Cuando estás en esta posición, vendrás invitado a entrar en una <strong>Gift Chat</strong> (Telegram) y aqui encontrarás también los otros 7 Donadores, el Mediador, il Soñador y un representante del Staff.</li>' +
'<li> Realizarás tu regalo <strong>EXACTAMENTE el día indicado</strong> y en la modalidad de pago que encontrarás escrita aquí. <br></ol>',
'<li> Tendrás <strong>4 días</strong> para entrar en el chat y un máximo de 7 días para hacer tu regalo, en la modalidad de pago que encontrarás escrita aquí. <br></ol>',
sonodonatore_seconda_tessitura: '<ol class="lista"><li>Aqui tu eres Mediador y también Donador, pero siendo tu segundo Tejido, no será necesario efectuar nuevamente tu regalo<br></ol>',
controlla_donatori: 'Revise la lista de donantes',
link_chat: 'Enlaces del Gift Chat Telegram',
@@ -264,9 +270,12 @@ const msg_es = {
doni_inviati_da_confermare: 'Regalos enviados (a confirmar)',
doni_mancanti: 'Regalos que faltan',
temporanea: 'Temporal',
nave_provvisoria: 'Se le ha asignado un <strong>NAVE TEMPORAL</strong>.<br>Es normal que vea un cambio en la fecha de salida, debido a la actualización del ranking de pasajeros.',
ritessitura: 'RETEJIDA',
},
reg: {
volta: 'vez',
volte: 'veces',
registered: 'Registrado',
contacted: 'Contacto',
name_complete: 'Nombre Completo',
@@ -283,6 +292,7 @@ const msg_es = {
you: 'Tu',
cancella_invitato: 'Eliminar Invitado',
regala_invitato: 'Dar Invitado',
regala_invitante: 'Dar Invitando',
messaggio_invito: 'Mensaje de invitación',
messaggio_invito_msg: 'Copie el mensaje que aparece a continuación y compártalo con todos aquellos con los que desee compartir este Movimiento !',
videointro: 'Video Introduttivo',
@@ -290,7 +300,7 @@ const msg_es = {
invitante_regalato: 'Invitando Regalato',
legenda: 'Legenda',
aportador_solidario: 'Aportador Solidario',
username_regala_invitato: 'Username del Destinatario del regalo',
username_regala_invitato: 'Nombre de usuario del destinatario del regalo',
aportador_solidario_nome_completo: 'A.S. Nombre',
aportador_solidario_ind_order: 'A.S.Ind',
reflink: 'Enlaces para compartir con tus amigos:',

View File

@@ -5,6 +5,7 @@ const msg_fr = {
a: 'au',
},
home: {
guida: 'Guide',
guida_passopasso: 'Guide pas-à-pas'
},
grid: {
@@ -26,6 +27,7 @@ const msg_fr = {
usereventlist: 'Réservation Utilisateur',
userlist: 'Liste d\'utilisateurs',
tableslist: 'Liste des tables',
navi: 'Navires',
newsletter: 'Newsletter',
pages: 'Pages',
media: 'Médias',
@@ -93,6 +95,7 @@ const msg_fr = {
enter_prog_completa_requisiti: 'Remplissez toutes les conditions pour figurer sur la liste d\'embarquement.',
enter_prog_requisiti_ok: 'Vous avez rempli les 7 conditions pour figurer sur la liste d\'embarquement.<br>',
enter_prog_msg: 'Vous recevrez un message dans les prochains jours dès que votre bateau sera prêt !',
enter_prog_msg_2: '',
enter_nave_9req_ok: 'FÉLICITATIONS ! Vous avez suivi les 9 étapes du guide ! Merci d\'avoir aidé {sitename} à se développer ! <br> Vous pourrez bientôt partir avec votre Voyage, en faisant votre don et en continuant vers le Rêveur.',
enter_nave_9req_ko: 'N\'oubliez pas que vous pouvez aider le Mouvement à grandir et à s\'étendre en partageant notre voyage avec tout le monde !',
enter_prog: 'Je vais dans la Liste des Programmation',
@@ -109,6 +112,7 @@ const msg_fr = {
ricevo_dono_long: 'Hourra ! !!! <br><strong> CE MOUVEMENT EST RÉEL ET POSSIBLE SI NOUS TRAVAILLONS TOUS ENSEMBLE !',
},
dialog: {
continue: 'Continuer',
close: 'Fermer',
copyclipboard: 'Copié dans le presse-papiers',
ok: 'Bien',
@@ -187,6 +191,7 @@ const msg_fr = {
options: 'Options',
},
dashboard: {
invitante: 'Invitation',
num_tessitura: 'Numero di Tessitura:',
attenzione: 'Attention',
downline: 'invités',
@@ -202,6 +207,7 @@ const msg_fr = {
nessun_invitato: 'Non_invité',
legenda_title: 'Cliquez sur le nom de l\'invité pour voir l\'état de ses besoins',
nave_in_partenza: 'part le',
nave_in_chiusura: 'Clôture Gift Chat',
nave_partita: 'parti sur',
tutor: 'Tuteur',
sonomediatore: 'Quand vous devenez Médiateur vous êtes contacté par un <strong>TUTEUR</strong>, avec lui vous devez:<br><ol class="lista">' +
@@ -213,7 +219,7 @@ const msg_fr = {
'<li>Pour trouver le <strong>link du Chat à peine crée</strong>: cliquez sur le nom du chat en haut, cliquez sur le Crayon -> "Type de Groupe" -> "invitez dans le groupe à travers le link", cliquez sur "copiez link" et collez-le ci-dessous, dans la case <strong>"Link Gift Chat"</strong></li>' +
'<li>Envoyez le Link de la Gift Chat à tous les Donateurs, en cliquant sur le boutton ci-dessous .</li></ol>',
sonodonatore: '<ol class="lista"><li>Quand vous êtes dans cette position, vous serez invité à entrer dans un <strong>Gift Chat</strong> (Telegram) et là vous y trouverez également les autres 7 Donateurs,le Médiateur, le Rêveur et un représentant du Staff.</li>' +
'<li>Vous éffectuerez votre don <strong>EXACTEMENT le jour indiqué</strong> et dans la modalité de paiement que vous trouverez écrit ici.<br></ol>',
'<li>Vous aurez <strong>4 jours</strong> pour entrer dans le chat et 7 jours maximum pour faire votre cadeau, dans la modalité de paiement que vous trouverez écrit ici.<br></ol>',
sonodonatore_seconda_tessitura: '<ol class="liste"><li>Ici vous êtes Médiateur et également Donateur, mais étant le deuxième Tissage, vous naurez pas besoin déffectuer de nouveau votre don<br></ol>',
controlla_donatori: 'Vérifiez la liste des donateurs',
link_chat: 'Link de Gift Chat Telegram',
@@ -262,9 +268,12 @@ const msg_fr = {
doni_inviati_da_confermare: 'Regalo envoyés (à confirmer)',
doni_mancanti: 'Regalo manquants',
temporanea: 'Temporaire',
nave_provvisoria: 'On vous a attribué une <strong>NAVE TEMPORAIRE</strong>.<br>Il est normal que vous constatiez un changement de date de départ, en raison de la mise à jour du classement des passagers.',
ritessitura: 'ÉCRITURE',
},
reg: {
volta: 'fois',
volte: 'fois',
registered: 'Registrato',
contacted: 'Contattato',
name_complete: 'Nome Completo',
@@ -281,6 +290,7 @@ const msg_fr = {
you: "Vous",
cancella_invitato: "Supprimer invité",
regala_invitato: "Invited_gift",
regala_invitante: 'présente invitant',
messaggio_invito: "Message d'invitation",
messaggio_invito_msg: "Envoyez ce message à tous ceux à qui vous voulez partager ce Mouvement !",
videointro: "Vidéo d'introduction",
@@ -288,7 +298,7 @@ const msg_fr = {
invitante_regalato: 'Cadeau Invitè',
legenda: "Légende",
aportador_solidario: "Qui vous a invité",
username_regala_invitato: 'Username del Destinatario del regalo',
username_regala_invitato: 'Nom d\'utilisateur du destinataire du cadeau',
aportador_solidario_nome_completo: 'A.S. Nom',
aportador_solidario_ind_order: 'A.S.Ind',
reflink: 'Des liens à partager avec vos invités :',

View File

@@ -5,6 +5,7 @@ const msg_it = {
a: 'al',
},
home: {
guida: 'Guida',
guida_passopasso: 'Guida Passo Passo'
},
grid: {
@@ -105,7 +106,7 @@ const msg_it = {
zoom_si_partecipato: 'Hai partecipato ad almeno 1 Zoom',
zoom_partecipa: 'Partecipato ad almeno 1 Zoom',
zoom_no_partecipato: 'Attualmente non hai ancora partecipato ad uno Zoom (è un requisito per poter entrare)',
zoom_long: 'Si richiede di partecipare ad almeno 1 Zoom, ma è consigliato prendere parte al movimento in maniera più attiva.<br><br><strong>Partecipando agli Zoom lo Staff registrerà le presenze e verrai così abilitato.</strong>',
zoom_long: 'Si richiede di partecipare ad almeno 1 Zoom, ma se sentirai che questi icontri sono anche un modo per condividere e stare in compagnia, allora potrai partecipare tutte le volte che lo desideri.<br><br><strong><br>Partecipando agli Zoom di Benvenuto lo Staff registrerà la vostra presenza <strong>ENTRO 24 ORE</strong>.</strong>',
zoom_what: 'Tutorial come installare Zoom Cloud Meeting',
// sharemovement_devi_invitare_almeno_2: 'Ancora non hai invitato 2 persone',
// sharemovement_hai_invitato: 'Hai invitato almeno 2 persone',
@@ -230,7 +231,8 @@ const msg_it = {
nessun_invitante: 'Nessun Invitante',
nessun_invitato: 'Nessun Invitato',
legenda_title: 'Clicca sul nome dell\'invitato per vedere lo stato dei suoi Requisiti.',
nave_in_partenza: 'in Partenza il',
nave_in_partenza: 'Apertura Gift Chat',
nave_in_chiusura: 'Chiusura Gift Chat',
nave_partita: 'Partita il',
tutor: 'Tutor',
traduttrici: 'Traduttrici',
@@ -242,8 +244,8 @@ 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>',
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: '<ol class="lista"><li>Quando sei in questa posizione, verrai invitato (tramite un messaggio su <strong>AYNI BOT</strong>) 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>Avrai tempo 4 giorni per entrare nella chat e massimo 7 gg per fare il tuo Dono, 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>',
controlla_donatori: 'Controlla Lista Donatori',
link_chat: 'Link della Gift Chat Telegram',
@@ -292,10 +294,12 @@ const msg_it = {
doni_inviati_da_confermare: 'Doni Inviati (da confermare)',
doni_mancanti: 'Doni Mancanti',
temporanea: 'Temporanea',
nave_provvisoria: 'Ti è stata assegnata una <strong>Nave Temporanea</strong>.<br>E\' normale che vedrai variare la data di partenza, dovuto all\'aggiornamento della graduatoria dei passeggeri.',
nave_provvisoria: 'Ti è stata assegnata una <strong>Nave TEMPORANEA</strong>.<br>E\'normale che vedrai variare la data di partenza, dovuto all\'aggiornamento della graduatoria dei passeggeri.',
ritessitura: 'RITESSITURA',
},
reg: {
volta: 'volta',
volte: 'volte',
registered: 'Registrato',
contacted: 'Contattato',
name_complete: 'Nome Completo',
@@ -366,7 +370,6 @@ const msg_it = {
sospeso: 'Sospeso',
username: 'Username (Pseudonimo)',
username_short: 'Username',
username_main: 'Username Base',
name: 'Nome',
surname: 'Cognome',
username_login: 'Username o email',

View File

@@ -5,6 +5,7 @@ const msg_pt = {
a: 'do',
},
home: {
guida: 'Guia',
guida_passopasso: 'Guia Passo a Passo'
},
grid: {
@@ -35,6 +36,7 @@ const msg_pt = {
extralist: 'Lista Extra',
dbop: 'Db Operations',
tableslist: 'Lista Tabelle',
navi: 'Navios',
newsletter: 'Newsletter',
pages: 'Pagine',
media: 'Media',
@@ -103,6 +105,7 @@ const msg_pt = {
enter_prog_completa_requisiti: 'Preencher todos os requisitos para entrar na lista de embarque.',
enter_prog_requisiti_ok: 'O usuário completou todos os 7 requisitos para entrar na lista de embarque.<br>',
enter_prog_msg: 'Você receberá uma mensagem nos próximos dias, assim que o seu navio estiver pronto!',
enter_prog_msg_2: '',
enter_nave_9req_ok: 'PARABÉNS! Você completou TODOS os 9 passos do Guia! Obrigado por ajudar a {sitename} a Expandir! <br>Você poderá partir muito em breve com a sua Jornada, fazendo o seu presente e continuando para o Sonhador.',
enter_nave_9req_ko: 'Lembre-se que você pode ajudar o Movimento a crescer e expandir, compartilhando nossa jornada com todos!',
enter_prog: 'Vou em Lista Programação',
@@ -119,6 +122,7 @@ const msg_pt = {
ricevo_dono_long: 'Viva!!!! <br><strong> ESTE MOVIMENTO É REAL E POSSÍVEL SE FABRICARMOS TODOS JUNTOS!!</strong>',
},
dialog: {
continue: 'Continuar',
close: 'Fechar',
copyclipboard: 'Copiado para a prancheta',
ok: 'Ok',
@@ -198,6 +202,7 @@ const msg_pt = {
options: 'Opzioni',
},
dashboard: {
invitante: 'Convidados',
num_tessitura: 'Numero di Tessitura:',
attenzione: 'Atenção',
downline: 'Convidados',
@@ -212,7 +217,8 @@ const msg_pt = {
nessun_invitante: 'Sem Convite',
nessun_invitato: 'Sem Convidados',
legenda_title: 'Clique no nome do convidado para ver o status de seus Requisitos',
nave_in_partenza: 'in Partenza il',
nave_in_partenza: 'em Partida em',
nave_in_chiusura: 'Encerramento Gift Chat',
nave_partita: 'que partiu em',
tutor: 'Tutor',
sonomediatore: 'Quando diventi Meditore vieni contattato da un <strong>TUTOR</strong>, con lui devi:<br><ol class="lista">' +
@@ -223,8 +229,8 @@ const msg_pt = {
'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>',
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: '<ol class="lista"><li>Quando sei in questa posizione, verrai invitato (tramite un messaggio su <strong>AYNI BOT</strong>) 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>Avrai tempo 4 giorni per entrare nella chat e massimo 7 gg per fare il tuo Dono, 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>',
controlla_donatori: 'Verifique a Lista de Doadores',
link_chat: 'Links de telegramas para o Gift Chat',
@@ -273,9 +279,12 @@ const msg_pt = {
doni_inviati_da_confermare: 'Presentes enviados (a serem confirmados)',
doni_mancanti: 'Presentes em falta',
temporanea: 'Temporário',
nave_provvisoria: 'Foi-lhe atribuído um <strong>NAVIO TEMPORÁRIO</strong>.<br>É normal que veja uma alteração na data de partida, devido à actualização da classificação dos passageiros',
ritessitura: 'ESCRITENDO',
},
reg: {
volta: 'vez',
volte: 'vezes',
registered: 'Registrato',
contacted: 'Contattato',
name_complete: 'Nome Completo',
@@ -290,6 +299,7 @@ const msg_pt = {
you: 'Tu',
cancella_invitato: 'Eliminar Convidado',
regala_invitato: 'Presente Convidado',
regala_invitante: 'Presente Convite',
messaggio_invito: 'Mensagem de Convite',
messaggio_invito_msg: 'Envie esta mensagem a todos aqueles para quem você quer compartilhar este Movimento !',
videointro: 'Vídeo Introdutório',
@@ -297,7 +307,7 @@ const msg_pt = {
invitante_regalato: 'Convite Convidado',
legenda: 'Lenda',
aportador_solidario: 'Quem o convidou',
username_regala_invitato: 'Username del Destinatario del regalo',
username_regala_invitato: 'Nome de utilizador do destinatário do presente',
aportador_solidario_nome_completo: 'Nominativo Invitante',
aportador_solidario_nome_completo_orig: 'Invitante Originario',
aportador_solidario_ind_order: 'Num Invitante',

View File

@@ -5,6 +5,7 @@ const msg_si = {
a: 'a',
},
home: {
guida: 'Vodnik',
guida_passopasso: 'Vodnik po korakih'
},
grid: {
@@ -36,7 +37,7 @@ const msg_si = {
extralist: 'Dodatni seznam',
dbop: 'Operacije Db',
tableslist: 'Seznam tabel',
navi: 'Ladje"',
navi: 'Ladje',
listadoni_navi: 'Seznam daril ladjic',
newsletter: 'Novosti',
pages: 'Strani',
@@ -108,6 +109,7 @@ const msg_si = {
enter_prog_completa_requisiti: 'Izpolnite vse potrebne zahteve, da lahko vstopite na seznam za vstop.',
enter_prog_requisiti_ok: 'Izpolnili ste vseh 7 zahtev za vpis na vstopni seznam. <br>',
enter_prog_msg: 'V naslednjih dneh boste takoj, ko bo vaša ladja pripravljena, prejeli sporočilo!',
enter_prog_msg_2: '',
enter_nave_9req_ok: 'ČESTITKE! Izpolnili ste VSE 9 korakov! Hvala, ker ste pomagali {sitename} pri razširitvi! <br> Zelo kmalu boste lahko odšli na potovanje, si priskrbeli darilo in nadaljevali proti sanjaču ',
enter_nave_9req_ko: 'Ne pozabite, da lahko pomagate rasti in razširiti gibanje, tako da svoje potovanje delite z drugimi!',
enter_prog: 'Vpišem se na Seznam vkrcavanja',
@@ -195,6 +197,7 @@ const msg_si = {
loggati: 'Uporabnik ni prijavljen'
},
dashboard: {
invitante: 'povabljenca',
num_tessitura: 'Numero di Tessitura:',
attenzione: 'Pozornosti',
downline: 'povabljen',
@@ -205,11 +208,12 @@ const msg_si = {
telefono_wa: 'Pišite na Whatsapp',
sendnotification: 'Obvestilo pošljite prejemniku na Telegram BOT',
ricevuto_dono: '😍🎊 Prejeli ste darilo {invitato} kot darilo od {mittente} !',
ricevuto_dono_invitante: '😍🎊 Prejeli ste povabljenega kot darilo od {mittente} !',
ricevuto_dono_invitante: '😍🎊 Prejeli ste povabljenca kot darilo od {mittente} !',
nessun_invitante: 'Nobenega povabljenega',
nessun_invitato: 'Ni gostov',
legenda_title: 'Kliknite na povabljeno ime, da si ogledate stanje njihovih zahtev.',
nave_in_partenza: 'ladja v odhodu',
nave_in_chiusura: 'Zapiranje Gift- Darilni klepet',
nave_partita: 'levo naprej',
tutor: 'Tutor',
sonomediatore: 'Ko postaneš Mediator te kontaktira en <strong>TUTOR</strong>, z njim moraš:<br><ol class="lista">' +
@@ -221,11 +225,11 @@ const msg_si = {
'<li>Da najdeš <strong>link pravkar ustvarjenega klepeta </strong>: klikni na ime klepeta na vrhu, klikni na svinčnik -> "Vrsta Skupine" -> "z linkom povabi v skupino", klikni na"kopiraj link" in prilepi tu spodaj, v okvir<strong>"Link Gift Klepet"</strong></li>' +
'<li>Pošlji Link Gift Klepeta vsem Donatorjem, tako, da klikneš na spodnji gumb.</li></ol>',
sonodonatore: '<ol class="lista"><li>Ko si na tej poziciji, boš povabljen, da vstopiš v <strong>Gift Klepet</strong> (Telegram) in tam boš našel še ostalih 7 Donatorjev, Mediatorja, Sanjača in enega predstavnika Tima.</li>' +
'<li>Izpeljal boš svoje vplačilo- donacijo<strong> TOČNO na že določen datum </strong>z načinom vplačila, ki ga imaš napisanega tu.<br></ol>',
'<li>Imel boš 4 dni časa za vstop v klepet in maksimalno 7 dni za izpeljati vplačilo, ki ga imaš napisanega tu.<br></ol>',
sonodonatore_seconda_tessitura: '<ol class="lista"><li>Tu si istočasno Mediator in Donator. Ker je to tvoj avtomatičen vpis, ti ni sedaj potrebno vplačati!<br></ol>',
controlla_donatori: 'Preverite seznam donatorjev',
link_chat: 'Povezava telegrama darilnega klepeta',
tragitto: 'Način',
tragitto: 'Potovanje',
nave: 'Ladja',
data_partenza: 'Datum<br>odhoda',
doni_inviati: 'Darila<br>poslana',
@@ -270,9 +274,12 @@ const msg_si = {
doni_inviati_da_confermare: 'Poslana Darila (za potrditev)',
doni_mancanti: 'Manjkajoča Darila',
temporanea: 'Začasna',
nave_provvisoria: 'Dodeljena ti je bila <strong>ZAČASNA ladja</strong>.<br>Normalno je, da boš zaradi posodobitve seznama potnikov videli spremenjen datum odhoda.',
ritessitura: 'Avtomatičen Vpis',
},
reg: {
volta: 'krat',
volte: 'krat',
registered: 'Registriran',
contacted: 'Obveščen',
name_complete: 'Popolno ime',
@@ -293,6 +300,7 @@ const msg_si = {
cancellami_2: 'ZADNJE OBVESTILO! Bi rad Definitivno izstopil iz {sitename} ?',
account_cancellato: 'Tvoj profil je pravilno izbrisan',
regala_invitato: 'Podari povabljenca',
regala_invitante: 'Podari Povabljenega',
messaggio_invito: 'Povabilno sporočilo',
messaggio_invito_msg: 'Pošlji sporočilo vsem, s katerimi želiš deliti to Gibanje!',
videointro: 'Predstavitveni Video',

View File

@@ -45,7 +45,8 @@ export const DefaultUser: IUserFields = {
},
downline: [],
calcstat: DefaultCalc,
dashboard: null
dashboard: null,
mydownline: null
}
export const DefaultProfile: IUserProfile = {
@@ -963,6 +964,26 @@ namespace Actions {
}).catch((error) => {
return {
aportador: {},
}
})
}
async function getDownline(context, paramquery) {
if (paramquery === null)
paramquery = state.lastparamquery
else
state.lastparamquery = paramquery
return await Api.SendReq('/dashboard/downline', 'POST', paramquery)
.then((res) => {
if (res.status === 200) {
state.my.mydownline = res.data.downline
return state.my.mydownline
}
}).catch((error) => {
return {
downline: []
}
})
@@ -1000,6 +1021,7 @@ namespace Actions {
newsletterload: b.dispatch(newsletterload),
newsletter_setactivate: b.dispatch(newsletter_setactivate),
getDashboard: b.dispatch(getDashboard),
getDownline: b.dispatch(getDownline)
}
}

View File

@@ -186,8 +186,8 @@ const colnavepersistente = [
AddCol({ name: '_id', label_trans: 'others.value' }),
AddCol({ name: 'riga', label_trans: 'reg.riga' }),
AddCol({ name: 'col', label_trans: 'reg.col' }),
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: 'date_gift_chat_open', label_trans: 'dashboard.nave_in_partenza', fieldtype: tools.FieldType.date }),
AddCol({ name: 'date_start', label_trans: 'dashboard.nave_in_chiusura', fieldtype: tools.FieldType.date }),
AddCol({ name: 'link_chat', label_trans: 'reg.link_chat' }),
AddCol({ name: 'provvisoria', label_trans: 'reg.provvisoria', fieldtype: tools.FieldType.boolean }),
AddCol({ name: 'note_bot', label_trans: 'note_bot', fieldtype: tools.FieldType.string }),
@@ -477,14 +477,13 @@ export const fieldsTable = {
// IColGridTable
colTableUsers: [
AddCol({ name: '_id', label_trans: 'reg.id' }),
// AddCol({ name: '_id', label_trans: 'reg.id' }),
AddCol({ name: 'index', label_trans: 'reg.index', fieldtype: tools.FieldType.number }),
AddCol({ name: 'ind_order', label_trans: 'reg.ind_order' }),
AddCol({ name: 'old_order', label_trans: 'old_order' }),
AddCol({ name: 'sospeso', label_trans: 'reg.sospeso', fieldtype: tools.FieldType.boolean }),
AddCol({ name: 'deleted', label_trans: 'reg.deleted', fieldtype: tools.FieldType.boolean }),
AddCol({ name: 'username', label_trans: 'reg.username_short' }),
AddCol({ name: 'username_main', label_trans: 'reg.username_main' }),
AddCol({ name: 'name', label_trans: 'reg.name' }),
AddCol({ name: 'surname', label_trans: 'reg.surname' }),
AddCol({ name: 'email', label_trans: 'reg.email' }),

View File

@@ -53,6 +53,7 @@ export interface INotify {
export const tools = {
CAN_EDIT: 'q-ce',
TABBED_DASHBOARD: 't-db',
TABBED_HOME: 't-home',
TABBED_NAVE: 't-nave',
getprefCountries: ['it', 'si', 'us', 'es', 'pt', 'uk', 'fr', 'de', 'ch', 'br', 'sk'],
@@ -2312,7 +2313,7 @@ export const tools = {
it: ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'],
enUs: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
fr: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
es: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'iernes', 'Sábado'],
es: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
pt: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
de: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
si: ['Nedelja', 'Ponedeljek', 'Torek', 'Sreda', 'četrtek', 'Petek', 'Sobota'],

View File

@@ -128,6 +128,11 @@
<q-btn label="Visu Navi con utenti Eliminati" color="primary"
@click="EseguiFunz('visuNaviUtentiEliminati')"></q-btn>
<br>
<div class="row">
<q-btn label="0) ELIMINA VECCHI LISTEINGRESSO !" color="negative"
@click="EseguiFunz('eliminaListeIngressoNascoste')"></q-btn>
<br>
</div>
<div class="row">
<q-btn label="1) CONVERTI TUTTA LA STRUTTURA NEL NUOVO SISTEMA !" color="negative"
@click="EseguiFunz('creaTessituraeConv')"></q-btn>
@@ -138,13 +143,13 @@
@click="EseguiFunz('convNaviTessinListaIngressoRec')"></q-btn>
<br>
</div>
<br>
<div class="row">
<q-btn label="3) ELIMINA VECCHI LISTEINGRESSO !" color="negative"
@click="EseguiFunz('eliminaListeIngressoNascoste')"></q-btn>
<q-btn label="3) Rendi Visibile i Record Nascosti di ListaINGRESSO" color="negative"
@click="EseguiFunz('RendiVisibileIrecordNascosti')"></q-btn>
<br>
</div>
<br>
<br>
<!--<div class="row">
<q-btn label="CHECK SE INSERIRE UTENTI IN Nave" color="primary"
@click="EseguiFunz('checkInserimentiUtentiInNave')"></q-btn>