AGGIORNAMENTO SITO

👉🏻 E' possibile ora visualizzare la Posizione Reale d'imbarco di quando si verrà aggiunti alle prossime Navi Definitive.
Le posizioni verranno aggiornate ogni ora in automatico!

👉🏻 Ora gli imbarchi comprendono anche le navi provvisorie, pertanto è possibile annullarli oppure cambiare l'Invitante, dalla lista imbarchi.

 👉🏻 E' ora possibile spostare gli invitati solo se si hanno piu' di 2 invitati per ogni Nave già partita.

👨🏻‍💻 Per i Tutor:
👉🏻- Sostituzioni : Cliccando su "Cerca il Primo Disponibile" vi suggerirà in automatico il primo passeggero disponibile per la sostituzione.

This commit is contained in:
Paolo Arena
2020-05-19 00:18:55 +02:00
parent d2bf9eb202
commit 3fb1de9b70
29 changed files with 430 additions and 269 deletions

View File

@@ -31,6 +31,8 @@ export const shared_consts = {
FILTER_USER_NO_DREAM: 256, FILTER_USER_NO_DREAM: 256,
FILTER_EXTRALIST_DELETED: 512, FILTER_EXTRALIST_DELETED: 512,
FILTER_USER_TELEGRAM_BLOCKED: 1024, FILTER_USER_TELEGRAM_BLOCKED: 1024,
FILTER_ATTIVI: 2048,
FILTER_NASCOSTI: 4096,
Permissions: { Permissions: {
Admin: { Admin: {

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="row justify-between q-pa-xs-sm"> <div class="row justify-between q-pa-xs-sm">
<div style="font-size:1rem; padding-right: 8px;"> <div :style="'font-size:'+ fontsize + ' padding-right: 8px;'">
{{mytext}} {{mytext}}
</div> </div>
<div> <div>

View File

@@ -20,7 +20,7 @@
</div> </div>
<div v-if="myval" class="mlvalue text-h5 text-blue boldhigh text-h5-short"> {{ myval }} {{ textadd }} <div v-if="myval" class="mlvalue text-h5 text-blue boldhigh text-h5-short"> {{ myval }} {{ textadd }}
</div> </div>
<div v-if="isperc" class="cltexth5" :style="'fontsize:' + fontsize"> <div v-if="isperc" class="cltexth5" >
{{ myperc.toFixed(1) }}% {{ myperc.toFixed(1) }}%
</div> </div>
</div> </div>

View File

@@ -7,3 +7,10 @@
min-width: 200px; min-width: 200px;
} }
.tdclass, .trclass{
height: 20px !important;
}
.q-table td {
padding: 0;
}

View File

@@ -52,7 +52,8 @@
<q-btn v-if="mytable" label="" color="primary" @click="refresh" icon="search"></q-btn> <q-btn v-if="mytable" label="" color="primary" @click="refresh" icon="search"></q-btn>
</template> </template>
</q-input> </q-input>
<q-toggle v-if="mytable" v-model="canEdit" :disable="disabilita" :val="lists.MenuAction.CAN_EDIT_TABLE" class="q-mx-sm" <q-toggle v-if="mytable" v-model="canEdit" :disable="disabilita" :val="lists.MenuAction.CAN_EDIT_TABLE"
class="q-mx-sm"
:label="$t('grid.editvalues')" @input="changefuncAct" :label="$t('grid.editvalues')" @input="changefuncAct"
></q-toggle> ></q-toggle>
@@ -101,7 +102,8 @@
</q-inner-loading> </q-inner-loading>
<div class="row"> <div class="row">
<q-toggle v-for="(filter, index) of arrfilters" :key="index" v-model="myfilterand" :val="filter.value" :label="filter.label"></q-toggle> <q-toggle v-for="(filter, index) of arrfilters" :key="index" v-model="myfilterand" :val="filter.value"
:label="filter.label"></q-toggle>
</div> </div>
@@ -109,12 +111,12 @@
<template v-slot:body="props"> <template v-slot:body="props">
<q-tr :props="props"> <q-tr :props="props" class="trclass">
<q-td auto-width> <q-td auto-width class="tdclass">
<q-checkbox dense v-model="props.selected"></q-checkbox> <q-checkbox dense v-model="props.selected"></q-checkbox>
</q-td> </q-td>
<q-td v-for="col in mycolumns" :key="col.name" :props="props" <q-td v-for="col in mycolumns" :key="col.name" :props="props"
v-if="colVisib.includes(col.field + col.subfield)"> v-if="colVisib.includes(col.field + col.subfield)" class="tdclass">
<div :class="getclrow(props.row)"> <div :class="getclrow(props.row)">
<CMyPopupEdit :canEdit="canEdit" <CMyPopupEdit :canEdit="canEdit"
:disable="disabilita" :disable="disabilita"
@@ -130,7 +132,8 @@
</CMyPopupEdit> </CMyPopupEdit>
</div> </div>
</q-td> </q-td>
<q-td v-for="col in mycolumns" :key="col.name" :props="props" v-if="colExtra.includes(col.name)"> <q-td v-for="col in mycolumns" :key="col.name" :props="props" v-if="colExtra.includes(col.name)"
class="tdclass">
<div v-if="col.action && visCol(col)"> <div v-if="col.action && visCol(col)">
<q-btn flat round color="red" :icon="col.icon" size="sm" <q-btn flat round color="red" :icon="col.icon" size="sm"
@click="clickFunz(props.row, col)"></q-btn> @click="clickFunz(props.row, col)"></q-btn>

View File

@@ -1,15 +1,21 @@
.flag_icon{ .flag_icon{
max-height: 40px; max-height: 20px;
} }
.label_count{ .label_count{
font-size: 1.15rem; font-size: 1.00rem;
font-weight: bold; font-weight: bold;
} }
.q-avatar {
.clitemnat{ font-size: 22px;
height: 40px; }
padding: 2px 2px !important;
.q-item {
min-height: 17px;
}
.clitemnat{
height: 15px;
padding: 0px 0px !important;
} }

View File

@@ -7,12 +7,12 @@
enter-active-class="animazione fadeIn" enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"> leave-active-class="animazione fadeOut">
<q-item v-for="(nat, index) in mydata" :key="nat._id" class="clitemnat"> <q-item v-for="(nat, index) in mydata" :key="nat._id" class="clitemnat">
<q-item-section avatar> <q-item-section avatar class="clitemnat">
<q-avatar v-if="tools.geticon(nat._id)" <q-avatar v-if="tools.geticon(nat._id)"
:class="tools.geticon(nat._id)" class="flag_icon"> :class="tools.geticon(nat._id)" class="flag_icon">
</q-avatar> </q-avatar>
<q-avatar v-else color="primary" text-color="white" class="text-center"> <q-avatar v-else color="primary" text-color="white" class="text-center clitemnat">
{{ tools.capitalize(nat._id) }} {{ tools.capitalize(nat._id) }}
</q-avatar> </q-avatar>
</q-item-section> </q-item-section>

View File

@@ -39,7 +39,7 @@
.posizione_imbarco { .posizione_imbarco {
font-weight: bold; font-weight: bold;
font-size: 1rem; font-size: 0.75rem;
color: blue; color: blue;
text-align: -webkit-center; text-align: -webkit-center;
} }

View File

@@ -273,7 +273,7 @@ export default class CMyDashboard extends MixinUsers {
}) })
this.shownuovoviaggio = false this.shownuovoviaggio = false
} }
public addNuovoImbarco() { public addNuovoImbarco() {
this.NuovoImbarco(this.dashboard.myself.username, this.invitante_username) this.NuovoImbarco(this.dashboard.myself.username, this.invitante_username)
} }
@@ -281,78 +281,23 @@ export default class CMyDashboard extends MixinUsers {
public async cancellaImbarco(imbarco) { 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 }, param1: { ind_order: imbarco.ind_order, username: imbarco.username },
param2: { num_tess: imbarco.num_tess } param2: { num_tess: imbarco.num_tess, rec: imbarco }
}) })
} }
public getnuminvitatistr(index, myuser) { public getnuminvperc(index, myrec) {
let inv = myuser.numinvitati
let invattivi = myuser.numinvitatiattivi
const step = (index - 1) * 2 return myrec.invattivi / 2 * 100
inv -= step
invattivi -= step
if (inv < 0)
inv = 0
if (invattivi < 0)
invattivi = 0
if (inv > 2)
inv = 2
if (invattivi > 2)
invattivi = 2
return invattivi + '/' + inv
} }
public getinvit(index, myuser, posiz) { public getcolorinvitati(index, myrec) {
let inv = myuser.numinvitati
let invattivi = myuser.numinvitatiattivi
const step = (posiz.numNaviEntrato + index) * 2 if (myrec.invattivi === 1)
inv -= step
// console.log('inv', inv, 'step = ', step)
invattivi -= step
if (inv < 0)
inv = 0
if (invattivi < 0)
invattivi = 0
if (inv > 2)
inv = 2
if (invattivi > 2)
invattivi = 2
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)
if (ris.invattivi === 1)
return 'blue' return 'blue'
if (ris.invattivi === 2) if (myrec.invattivi === 2)
return 'green' return 'green'
if (ris.inv === 1) if (myrec.inv === 1)
return 'orange' return 'orange'
} }
@@ -361,7 +306,7 @@ export default class CMyDashboard extends MixinUsers {
let str = index + 1 + '°' let str = index + 1 + '°'
if (num_tess % 2 === 0) { if (num_tess % 2 === 0) {
str += ' (Gratis)' str += ' (' + this.$t('dashboard.ritorno') + ')'
} }
return str return str
} }
@@ -409,6 +354,10 @@ export default class CMyDashboard extends MixinUsers {
return presente return presente
} }
public getvalstrinv(posiz) {
return Math.round((posiz.numinvitatiattiviTot - posiz.numNaviEntrato * 2) - (posiz.indimbarco - 1) * 2) + '/' + Math.round((posiz.numinvitatiTot - posiz.numNaviEntrato * 2) - (posiz.indimbarco - 1) * 2)
}
public isprovvisoria(mianave) { public isprovvisoria(mianave) {
if (!!mianave && mianave.nave_partenza) if (!!mianave && mianave.nave_partenza)
return mianave.nave_partenza.provvisoria return mianave.nave_partenza.provvisoria
@@ -461,7 +410,7 @@ export default class CMyDashboard extends MixinUsers {
let colvera = colmin let colvera = colmin
if (rigamin > 3) { if (rigamin > 3) {
for (let index = rigamin; index < riga - 1; index++){ for (let index = rigamin; index < riga - 1; index++) {
colvera = colvera * 2 colvera = colvera * 2
} }
} else { } else {
@@ -474,17 +423,28 @@ export default class CMyDashboard extends MixinUsers {
// console.log('[' + rigamin + '.' + colmin + ']', 'riga', riga, 'col', col, 'colvera', colvera) // console.log('[' + rigamin + '.' + colmin + ']', 'riga', riga, 'col', col, 'colvera', colvera)
if (riga < rigamin)
riga = rigamin
if (riga > rigamin + 6) if (riga > rigamin + 6)
riga = rigamin + 6 riga = rigamin + 6
if (riga < rigamin)
riga = 0
return riga return riga
} }
public getval7(mianave) { public getval7(mianave) {
let val = this.getmyrigaattuale(mianave) let val = this.getmyrigaattuale(mianave)
return val - tools.getRiganave(mianave.riga) + 1 if (val === 0)
return ''
else
return val - tools.getRiganave(mianave.riga) + 1
}
public getcolornave(mianave) {
if (mianave.num_tess % 2 !== 0)
return 'blue'
else
return 'red'
} }
public getcolorbyval(mianave) { public getcolorbyval(mianave) {
@@ -519,4 +479,19 @@ export default class CMyDashboard extends MixinUsers {
return false return false
} }
public getIfregalareInvitati(seluser, showregalainv) {
if (!showregalainv)
return false
let stato = true
if (!!this.dashboard.myself) {
if ((this.dashboard.myself.numNaviEntrato * 2) < this.dashboard.myself.numinvitati)
stato = true
}
return stato
}
} }

View File

@@ -159,20 +159,21 @@
<q-spinner-gears size="50px" color="primary"/> <q-spinner-gears size="50px" color="primary"/>
</div> </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_msg')"
:msgFalse="$t('steps.enter_prog_completa_requisiti')">
</CRequisiti>
</CTitleBanner>
</div>
</div>
<div v-if="!!dashboard && dashboard.myself"> <div v-if="!!dashboard && dashboard.myself && !loading">
<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_msg')"
:msgFalse="$t('steps.enter_prog_completa_requisiti')">
</CRequisiti>
</CTitleBanner>
</div>
</div>
<div v-if="dashboard.myself.qualified"> <div v-if="dashboard.myself.qualified">
<CTitleBanner class="" <CTitleBanner class=""
@@ -185,7 +186,10 @@
<div class="col-3 "> <div class="col-3 ">
{{ $t('dashboard.posizione') }} {{ $t('dashboard.posizione') }}
</div> </div>
<div class="col-5 "> <div class="col-2 ">
{{ $t('dashboard.data') }}
</div>
<div class="col-3 ">
{{ $t('dashboard.invitante') }} {{ $t('dashboard.invitante') }}
</div> </div>
<div class="col-2 "> <div class="col-2 ">
@@ -207,7 +211,10 @@
mioimbarco.posiz.totposiz }} mioimbarco.posiz.totposiz }}
</div> </div>
</div> </div>
<div class="col-5"> <div class="col-2">
<div>{{ tools.getstrshortDate(mioimbarco.date_added) }}</div>
</div>
<div class="col-3">
<div class="posizione_imbarco"> <div class="posizione_imbarco">
<CUserBadge :yourinvite="false" :showsteps="false" :showregalainv="true" <CUserBadge :yourinvite="false" :showsteps="false" :showregalainv="true"
:user="dashboard.arrusers[mioimbarco.invitante_username]" mycolor="orange" :user="dashboard.arrusers[mioimbarco.invitante_username]" mycolor="orange"
@@ -222,11 +229,11 @@
<div class="col-2"> <div class="col-2">
<div class="posizione_imbarco"> <div class="posizione_imbarco">
<CCardState :mytext="$t('pages.statusreg.people')" <CCardState :mytext="$t('pages.statusreg.people')"
:myval="getnuminvattivi(index, dashboard.myself, mioimbarco.posiz)+'/'+getnuminv(index, dashboard.myself, mioimbarco.posiz)" :myval="getvalstrinv(mioimbarco.posiz)"
:myperc="getnuminvperc(index, dashboard.myself, mioimbarco.posiz)" size="50px" :myperc="getnuminvperc(index, mioimbarco.posiz)" size="50px"
size_mob="40px" size_mob="40px"
fontsize="0.75rem" myclass="my-card-small-stat" fontsize="0.85rem" myclass="my-card-small-stat"
:mycolor="getcolorinvitati(index, dashboard.myself, mioimbarco.posiz)"></CCardState> :mycolor="getcolorinvitati(index, mioimbarco.posiz)"></CCardState>
</div> </div>
</div> </div>
@@ -286,7 +293,7 @@
<q-item-section avatar style="width: 70px; font-size: 0.75rem;"> <q-item-section avatar style="width: 70px; font-size: 0.75rem;">
{{ getnumtessstr(1, index) }} {{ getnumtessstr(1, index) }}
- {{ tools.getrigacolstr(mianave)}} - {{ tools.getrigacolstr(mianave)}}
<q-icon color="blue" name="fas fa-ship"></q-icon> <q-icon :color="getcolornave(mianave)" name="fas fa-ship"></q-icon>
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-slider <q-slider
@@ -378,7 +385,7 @@
<q-item> <q-item>
<q-item-section avatar> <q-item-section avatar>
{{tools.getlastnavestr(dashboard.lastnave) }} &nbsp; {{tools.getlastnavestr(dashboard.lastnave) }} &nbsp;
<q-icon color="blue" name="fas fa-ship"></q-icon> <q-icon :color="getcolornave(mianave)" name="fas fa-ship"></q-icon>
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-slider <q-slider
@@ -399,7 +406,7 @@
<q-icon color="blue" name="fas fa-flag-checkered"></q-icon> <q-icon color="blue" name="fas fa-flag-checkered"></q-icon>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item> <q-item v-if="mianave.num_tess % 2 !== 0">
<q-item-section avatar> <q-item-section avatar>
<q-icon :color="colordono(mianave)" inverted size="sm" name="fas fa-gift" <q-icon :color="colordono(mianave)" inverted size="sm" name="fas fa-gift"
class="gift"></q-icon> class="gift"></q-icon>
@@ -419,7 +426,7 @@
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item> <q-item v-if="mianave.num_tess % 2 !== 0">
<q-item-section avatar> <q-item-section avatar>
<q-icon size="sm" name="fas fa-heart" color="red"></q-icon> <q-icon size="sm" name="fas fa-heart" color="red"></q-icon>
</q-item-section> </q-item-section>
@@ -539,7 +546,7 @@
<q-btn flat round color="white" icon="close" v-close-popup></q-btn> <q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-toolbar> </q-toolbar>
<q-card-section class="inset-shadow" style="padding: 4px !important;"> <q-card-section class="inset-shadow" style="padding: 4px !important;">
<CMyRequirement :id_listaingr="id_listaingr" :myseluser="seluser" :showregalainv="showregalainv" <CMyRequirement :id_listaingr="id_listaingr" :myseluser="seluser" :showregalainv="getIfregalareInvitati(seluser, showregalainv)"
:mydashboard="dashboard" :mydownline="downline" :notitle="false" @aggiorna="aggiorna" :mydashboard="dashboard" :mydownline="downline" :notitle="false" @aggiorna="aggiorna"
:ind_order_ingr="ind_order_ingr"> :ind_order_ingr="ind_order_ingr">

View File

@@ -59,6 +59,7 @@ export default class CMyNave extends MixinNave {
public seltesto: string = '' public seltesto: string = ''
public msg_tosend_user: string = '' public msg_tosend_user: string = ''
public username_sostituire: string = '' public username_sostituire: string = ''
public userfreestr: string = ''
public MyPagination: { public MyPagination: {
sortBy: string, sortBy: string,
descending: boolean, descending: boolean,
@@ -897,6 +898,8 @@ export default class CMyNave extends MixinNave {
public clickseluser(rec) { public clickseluser(rec) {
this.seluser = rec this.seluser = rec
this.showmsguser = true this.showmsguser = true
this.username_sostituire = ''
this.userfreestr = ''
} }
public async InviaMsgAUserConfirm(msgobj, navemediatore) { public async InviaMsgAUserConfirm(msgobj, navemediatore) {
@@ -1040,4 +1043,38 @@ export default class CMyNave extends MixinNave {
this.seltesto = await GlobalStore.actions.GetData({ data }) this.seltesto = await GlobalStore.actions.GetData({ data })
} }
public async TrovaUserFree(username) {
this.ChiamaFunz(null, lists.MenuAction.DAMMI_PRIMO_UTENTE_LIBERO, null)
}
public async ChiamaFunz(username, func, data) {
const mydatatosave = {
username,
ind_order: -1,
myfunc: func,
notifBot: null,
data: null
}
if (!!data) {
mydatatosave.data = data
}
this.loading = true
GlobalStore.actions.askFunz({ mydata: mydatatosave }).then((ris) => {
this.loading = false
if (ris) {
if (func === lists.MenuAction.DAMMI_PRIMO_UTENTE_LIBERO) {
this.userfreestr = ris.username + ' (' + ris.name + ' ' + ris.surname + ')'
this.username_sostituire = ris.username
}
}
})
}
} }

View File

@@ -501,8 +501,7 @@
</div> </div>
<div class="q-ma-sm text-center clBorderSteps"> <div class="q-ma-sm text-center clBorderSteps">
<div>TELEGRAM {{$t('ws.sitename')}} BOT {{$t('dialog.sendmsg')}} -> <div>TELEGRAM {{$t('ws.sitename')}} BOT {{$t('dialog.sendmsg')}} ->
{{seluser.name }} {{ {{seluser.name }} {{ seluser.surname }}:
seluser.surname }}:
</div> </div>
<q-input type="textarea" <q-input type="textarea"
autogrow autogrow
@@ -546,10 +545,29 @@
</q-input> </q-input>
<q-toggle v-model="deleteUser" label="Elimina Utente sostituito"></q-toggle> <q-btn rounded color="warning" icon="fab fa-find"
<q-toggle v-model="AddImbarco" label="Aggiungi (senza spostarlo da altre Navi)"></q-toggle> text-color="black"
label="Cerca il primo Disponibile"
@click="TrovaUserFree()"></q-btn>
<div v-if="!!userfreestr">
<q-field
stack-label
dense
>
<template v-slot:control>
<div class="text-center" tabindex="0">{{userfreestr}}</div>
</template>
</q-field>
</div>
<q-toggle v-model="deleteUser" :label="'Elimina ' + seluser.name + ' ' + seluser.surname"></q-toggle>
<q-toggle v-model="AddImbarco" label="Aggiungi Destinatario (senza spostarlo da altre Navi)"></q-toggle>
<q-toggle v-model="notifBot" :label="$t('dashboard.sendnotification')"></q-toggle> <q-toggle v-model="notifBot" :label="$t('dashboard.sendnotification')"></q-toggle>
<q-btn class="q-ma-sm" rounded color="positive" text-color="white" <q-btn class="q-ma-sm" rounded color="positive" text-color="white"
icon="fas fa-gift" icon="fas fa-gift"
label="Sostituisci" label="Sostituisci"

View File

@@ -1,114 +1,126 @@
<template> <template>
<div> <div>
<div v-if="visustat"> <div v-if="visustat">
<CTitleBanner class="q-pa-xs" :title="$t('pages.status')" bgcolor="bg-primary" clcolor="text-white" <CTitleBanner class="q-pa-xs" :title="$t('pages.status')" bgcolor="bg-primary" clcolor="text-white"
mystyle="" myclass="myshad" canopen="true"> mystyle="" myclass="myshad" canopen="true">
<div class="flex flex-center"> <div class="flex flex-center">
<CCardState :mytext="$t('pages.statusreg.reg')" :myval="datastat.num_reg" <CCardState :mytext="$t('pages.statusreg.reg')" :myval="datastat.num_reg"
:myperc="100"></CCardState> :myperc="100"></CCardState>
<CCardState :mytext="$t('pages.statusreg.passeggeri')" <CCardState :mytext="$t('pages.statusreg.passeggeri')"
mycolor="blue" mycolor="blue"
size="150px" size="150px"
size_mob="130px" size_mob="130px"
:myval="datastat.num_passeggeri" :myval="datastat.num_passeggeri"
:myperc="100"></CCardState> :myperc="100"></CCardState>
<!--<CCardState :mytext="$t('statusreg.imbarcati')" <!--<CCardState :mytext="$t('statusreg.imbarcati')"
size="150px" size="150px"
size_mob="130px" size_mob="130px"
mycolor="blue" :myval="datastat.num_imbarcati" mycolor="blue" :myval="datastat.num_imbarcati"
:myperc="100"></CCardState>--> :myperc="100"></CCardState>-->
<!--<CCardState v-if="datastat.num_part_accepted > 1" <!--<CCardState v-if="datastat.num_part_accepted > 1"
:mytext="$t('stat.requisiti')" :isperc="true" :myval="datastat.num_requisiti" :mytext="$t('stat.requisiti')" :isperc="true" :myval="datastat.num_requisiti"
:myperc="calcperc(datastat.num_requisiti, datastat.num_reg) " :myperc="calcperc(datastat.num_requisiti, datastat.num_reg) "
mycolor="blue" mycolor="blue"
:textadd="` / ` + datastat.num_reg"></CCardState>--> :textadd="` / ` + datastat.num_reg"></CCardState>-->
<div class="q-pa-xs" v-if="datastat.num_part_accepted > 1"> <div class="q-pa-xs" v-if="datastat.num_part_accepted > 1">
<CCardStat :mytext="$t('stat.accepted')" :myval="datastat.num_part_accepted"></CCardStat> <CCardStat :mytext="$t('stat.imbarcati_in_attesa')" :myval="datastat.num_imbarcati"></CCardStat>
<CCardStat :mytext="$t('stat.zoom')" :myval="datastat.num_part_zoom"></CCardStat> <CCardStat :mytext="$t('stat.accepted')" :myval="datastat.num_part_accepted"></CCardStat>
<CCardStat :mytext="$t('stat.imbarcati')" :myval="datastat.num_imbarcati"></CCardStat> <CCardStat :mytext="$t('stat.zoom')" :myval="datastat.num_part_zoom"></CCardStat>
<!--<CCardStat :mytext="$t('stat.modalita_pagamento')" <!--<CCardStat :mytext="$t('stat.modalita_pagamento')"
:myval="datastat.num_modalita_pagamento"></CCardStat>--> :myval="datastat.num_modalita_pagamento"></CCardStat>-->
<!--<CCardStat :mytext="$t('stat.requisiti')" :myval="datastat.num_requisiti"></CCardStat>--> <!--<CCardStat :mytext="$t('stat.requisiti')" :myval="datastat.num_requisiti"></CCardStat>-->
<!--<CCardStat :mytext="$t('stat.qualificati')" :myval="datastat.num_qualificati"></CCardStat>--> <!--<CCardStat :mytext="$t('stat.qualificati')" :myval="datastat.num_qualificati"></CCardStat>-->
<!--<CCardStat v-if="emailnonverif" :mytext="$t('stat.email_not_verif')" :myval="emailnonverif" <!--<CCardStat v-if="emailnonverif" :mytext="$t('stat.email_not_verif')" :myval="emailnonverif"
mycol="negative"></CCardStat> mycol="negative"></CCardStat>
<CCardStat v-if="telegnonattivi" :mytext="$t('stat.telegram_non_attivi')" <CCardStat v-if="telegnonattivi" :mytext="$t('stat.telegram_non_attivi')"
:myval="telegnonattivi" :myval="telegnonattivi"
mycol="negative"></CCardStat> mycol="negative"></CCardStat>
<CCardStat v-if="datastat.num_teleg_pending > 0" :mytext="$t('stat.telegram_pendenti')" <CCardStat v-if="datastat.num_teleg_pending > 0" :mytext="$t('stat.telegram_pendenti')"
:myval="datastat.num_teleg_pending" mycol="negative"></CCardStat>--> :myval="datastat.num_teleg_pending" mycol="negative"></CCardStat>-->
</div> </div>
<div class="column animazione"> <div class="column animazione">
<div class="text-center">{{$t('pages.statusreg.newreg')}}</div> <div class="text-center">{{$t('pages.statusreg.newreg')}}</div>
<transition-group name="fade" mode="out-in" <transition-group name="fade" mode="out-in"
appear appear
enter-active-class="animazione fadeIn" enter-active-class="animazione fadeIn"
leave-active-class="animazione fadeOut"> leave-active-class="animazione fadeOut">
<q-item v-for="(user, index) in lastsreg" :key="user.username" class="q-mb-xs animated" <q-item v-for="(user, index) in lastsreg" :key="user.username" class="q-mb-xs animated"
v-ripple> v-ripple>
<q-item-section avatar> <q-item-section avatar>
<q-avatar v-if="tools.geticon(user.profile.nationality)" <q-avatar v-if="tools.geticon(user.profile.nationality)"
:class="tools.geticon(user.profile.nationality)"> :class="tools.geticon(user.profile.nationality)">
</q-avatar> </q-avatar>
<q-avatar v-else color="primary" text-color="white" class="text-center"> <q-avatar v-else color="primary" text-color="white" class="text-center">
{{ tools.capitalize(user.profile.nationality) }} {{ tools.capitalize(user.profile.nationality) }}
</q-avatar> </q-avatar>
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label>{{ user.name }} {{ tools.firstchars_onedot(user.surname, 1) }} <q-item-label>{{ user.name }} {{ tools.firstchars_onedot(user.surname, 1) }}
</q-item-label> </q-item-label>
<q-item-label caption lines="1">{{ user.username }}</q-item-label> <q-item-label caption lines="1">{{ user.username }}</q-item-label>
</q-item-section> </q-item-section>
<q-item-section side> <q-item-section side>
<q-item-label>{{ tools.getstrDateTimeShort(user.date_temp_reg) }}</q-item-label> <q-item-label>{{ tools.getstrDateTimeShort(user.date_temp_reg) }}</q-item-label>
<q-chip outline color="green" text-color="white" icon-right="fas fa-user-plus" <q-chip outline color="green" text-color="white" icon-right="fas fa-user-plus"
size="xs"></q-chip> size="xs"></q-chip>
</q-item-section> </q-item-section>
</q-item> </q-item>
</transition-group> </transition-group>
</div> </div>
<CGeoChart :mydata="datastat.arr_nations"> <CGeoChart :mydata="datastat.arr_nations">
</CGeoChart> </CGeoChart>
<div class="row text-center justify-center"> <div class="row q-pa-sm text-center justify-center">
<CListNationality :mydata="datastat.arr_nations"> <div class="clBorderZoom">
<CListNationality :mydata="datastat.arr_nations">
</CListNationality> </CListNationality>
<CLineChart :mydata="datastat.reg_daily" :title="$t('stat.reg_daily')"> </div>
<div class="clBorderTutor">
<CLineChart :mydata="datastat.reg_daily" :title="$t('stat.reg_daily')">
</CLineChart> </CLineChart>
<CLineChart :mydata="datastat.reg_weekly" :title="$t('stat.reg_weekly')"> <CLineChart :mydata="datastat.reg_weekly" :title="$t('stat.reg_weekly')">
</CLineChart> </CLineChart>
<CLineChart :mydata="datastat.reg_daily" :title="$t('stat.reg_total')" <CLineChart :mydata="datastat.reg_daily" :title="$t('stat.reg_total')"
:offset="datastat.numreg_untilday" :sum="true" :offset="datastat.numreg_untilday" :sum="true"
:mycolors="['#0b0', '#666']"> :mycolors="['#0b0', '#666']">
</CLineChart> </CLineChart>
</div> </div>
</div> <div class="clBorderSteps">
</CTitleBanner> <CLineChart :mydata="datastat.imbarcati_daily" :title="$t('stat.imbarcati')">
</CLineChart>
<CLineChart :mydata="datastat.imbarcati_weekly" :title="$t('stat.imbarcati_weekly')">
</CLineChart>
</div>
</div>
</div> </div>
</CTitleBanner>
</div> </div>
</div>
</template> </template>
<script lang="ts" src="./CStatusReg.ts"> <script lang="ts" src="./CStatusReg.ts">
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import './CStatusReg.scss'; @import './CStatusReg.scss';
</style> </style>

View File

@@ -14,7 +14,7 @@
<q-item-section> <q-item-section>
<q-item-label>{{ user.name }} {{ user.surname }} {{ getindorder(user) }}<br> <q-item-label>{{ user.name }} {{ user.surname }} {{ getindorder(user) }}<br>
<span class="text-grey">({{ getusername(user) }}) {{ getquanti(user)}}</span> <span class="text-grey">({{ getusername(user) }}) <strong>{{ getquanti(user)}}</strong></span>
<br><!--<span v-if="isextralist(user)" class="notreg">{{ $t('dashboard.notreg') }}</span>--> <br><!--<span v-if="isextralist(user)" class="notreg">{{ $t('dashboard.notreg') }}</span>-->
</q-item-label> </q-item-label>
<!--<q-item-label caption lines="1">{{ user.email }}</q-item-label>--> <!--<q-item-label caption lines="1">{{ user.email }}</q-item-label>-->
@@ -24,13 +24,13 @@
<q-item-section side v-if="showsteps"> <q-item-section side v-if="showsteps">
<div class="row q-gutter-xs justify-center items-center"> <div class="row q-gutter-xs justify-center items-center">
<div> <div>
<CCardState :mytext="$t('pages.statusreg.req')" :myval="getnumreq(user)" :myperc="getnumperc(user)" size="50px" size_mob="40px" fontsize="0.75rem" myclass="my-card-small-stat" :mycolor="getcolor(user)"></CCardState> <CCardState :mytext="$t('pages.statusreg.req')" :myval="getnumreq(user)" :myperc="getnumperc(user)" size="50px" size_mob="40px" fontsize="0.85rem" myclass="my-card-small-stat" :mycolor="getcolor(user)"></CCardState>
</div> </div>
<!--<q-icon v-if="!isextralist(user)" size="sm" name="fab fa-telegram" :color="getstatecolor(user)"></q-icon> <!--<q-icon v-if="!isextralist(user)" size="sm" name="fab fa-telegram" :color="getstatecolor(user)"></q-icon>
<q-icon v-if="!isextralist(user)" size="sm" name="fas fa-video" :color="getzoomcolor(user)"></q-icon>--> <q-icon v-if="!isextralist(user)" size="sm" name="fas fa-video" :color="getzoomcolor(user)"></q-icon>-->
<div> <div>
<CCardState :mytext="$t('pages.statusreg.people')" :myval="getnumpeople(user)" :myperc="getnumpercpeople(user)" size="50px" size_mob="40px" fontsize="0.75rem" myclass="my-card-small-stat" :mycolor="getcolorpeople(user)"></CCardState> <CCardState :mytext="$t('pages.statusreg.people')" :myval="getnumpeople(user)" :myperc="getnumpercpeople(user)" size="50px" size_mob="40px" fontsize="0.85rem" myclass="my-card-small-stat" :mycolor="getcolorpeople(user)"></CCardState>
</div> </div>
<div> <div>
<q-btn <q-btn

View File

@@ -21,6 +21,8 @@ export interface INotData {
checkuser?: ICheckUser | any checkuser?: ICheckUser | any
numreg_untilday?: number numreg_untilday?: number
reg_daily?: string reg_daily?: string
imbarcati_daily?: string
imbarcati_weekly?: string
reg_weekly?: string reg_weekly?: string
} }

View File

@@ -75,6 +75,7 @@ export interface IUserFields {
dashboard?: IDashboard dashboard?: IDashboard
mydownline?: IDownline mydownline?: IDownline
qualified?: boolean qualified?: boolean
numNaviEntrato?: number
numinvitati?: number numinvitati?: number
numinvitatiattivi?: number numinvitatiattivi?: number
} }

View File

@@ -18,6 +18,14 @@ export default class UsersList extends Vue {
public mounted() { public mounted() {
if (tools.appid() === '7') if (tools.appid() === '7')
this.arrfilterand = [ this.arrfilterand = [
{
label: 'Attivi',
value: shared_consts.FILTER_ATTIVI
},
{
label: 'Nascosti',
value: shared_consts.FILTER_NASCOSTI
},
{ {
label: 'Non hanno visto Zoom', label: 'Non hanno visto Zoom',
value: shared_consts.FILTER_USER_NO_ZOOM value: shared_consts.FILTER_USER_NO_ZOOM

View File

@@ -192,6 +192,8 @@ const msg_enUs = {
options: 'Options', options: 'Options',
}, },
dashboard: { dashboard: {
data: 'Date',
ritorno: 'Return',
invitante: 'Invitante', invitante: 'Invitante',
num_tessitura: 'Numero di Tessitura:', num_tessitura: 'Numero di Tessitura:',
attenzione: 'Attenzione', attenzione: 'Attenzione',

View File

@@ -192,6 +192,8 @@ const msg_es = {
options: 'Opciones', options: 'Opciones',
}, },
dashboard: { dashboard: {
data: 'Fecha',
ritorno: 'Regreso',
invitante: 'Invitando', invitante: 'Invitando',
num_tessitura: 'Numero di Tessitura:', num_tessitura: 'Numero di Tessitura:',
attenzione: 'Atención', attenzione: 'Atención',

View File

@@ -191,6 +191,8 @@ const msg_fr = {
options: 'Options', options: 'Options',
}, },
dashboard: { dashboard: {
data: 'Données',
ritorno: 'Retour',
invitante: 'Invitation', invitante: 'Invitation',
num_tessitura: 'Numero di Tessitura:', num_tessitura: 'Numero di Tessitura:',
attenzione: 'Attention', attenzione: 'Attention',

View File

@@ -64,7 +64,9 @@ const msg_it = {
write: 'scrive' write: 'scrive'
}, },
stat: { stat: {
imbarcati: 'Imbarcati in Attesa', imbarcati: 'Imbarcati',
imbarcati_weekly: 'Imbarcati Settimanali',
imbarcati_in_attesa: 'Imbarcati in Attesa',
qualificati: 'Qualificati con almeno 2 invitati', qualificati: 'Qualificati con almeno 2 invitati',
requisiti: 'Utenti con i 7 Requisiti', requisiti: 'Utenti con i 7 Requisiti',
zoom: 'Partecipato in Zoom', zoom: 'Partecipato in Zoom',
@@ -215,6 +217,8 @@ const msg_it = {
options: 'Opzioni', options: 'Opzioni',
}, },
dashboard: { dashboard: {
data: 'Data',
ritorno: 'Ritorno',
invitante: 'Invitante', invitante: 'Invitante',
dono_da_effettuare: 'Dono che dovrai effettuare', dono_da_effettuare: 'Dono che dovrai effettuare',
num_tessitura: 'Numero di Tessitura:', num_tessitura: 'Numero di Tessitura:',

View File

@@ -202,6 +202,8 @@ const msg_pt = {
options: 'Opzioni', options: 'Opzioni',
}, },
dashboard: { dashboard: {
data: 'Datum',
ritorno: 'Regresso',
invitante: 'Convidados', invitante: 'Convidados',
num_tessitura: 'Numero di Tessitura:', num_tessitura: 'Numero di Tessitura:',
attenzione: 'Atenção', attenzione: 'Atenção',
@@ -221,17 +223,18 @@ const msg_pt = {
nave_in_chiusura: 'Encerramento Gift Chat', nave_in_chiusura: 'Encerramento Gift Chat',
nave_partita: 'que partiu em', nave_partita: 'que partiu em',
tutor: 'Tutor', tutor: 'Tutor',
sonomediatore: 'Quando diventi Meditore vieni contattato da un <strong>TUTOR</strong>, con lui devi:<br><ol class="lista">' + sonomediatore: 'Quando você se torna um mediador, um <strong>TUTOR</strong> entra em contato com você, e deve:<br>' +
'<li>Aprire la tua <strong>Gift Chat</strong> (tu come proprietario e il Tutor ' + '<ol class="lista"><li>Abrir seu <strong>bate-papo</strong> do presente (você como proprietário e o tutor como administrador) com este nome: <br><strong>{nomenave}</strong></li>' +
'come amministratore) con questo nome:<br><strong>{nomenave}</strong></li>' + '<li>Clique no nome do bate-papo na parte superior - > Editar -> Administradores -> "Adicionar administrador", selecione o Tutor na lista.</li>' +
'<li>Clicca sul nome della chat in alto -> Modifica -> Amministratori -> "Aggiungi Amministratore", seleziona il Tutor nellelenco.</li>' + '<li>Você deve configurar o bate-papo de forma que quem entra depois também veja as postagens anteriores (clique no nome do bate-papo na parte superior, clique em editar' +
'<li>Devi configurare la chat in modo che chi entra vede anche i post precedenti (clicca sul nome della chat in alto, clicca su modifica, ' + ' altere o "histórico de novos membros" de oculto para visível.</li>' +
'cambia la "cronologia per i nuovi membri" da nascosta a visibile.</li>' + '<li>Para encontrar o link Bate-papo Recém-criado: Clique no nome do bate-papo na parte superior, clique no lápis -> "Tipo de grupo" -> "Convidar grupo via link", clique em "Copiar link" e cole-o abaixo' +
'<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>' + ', na caixa "Link do bate-papo para presente"'+
'<li>Invia il Link della Gift Chat a tutti i Donatori, cliccando sul bottone qui sotto.</li></ol>', 'Envie o link do bate-papo para presente a todos os doadores, clicando no botão abaixo.</li></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: '<ol class="lista"><li>Quando você estiver nessa posição, você será convidado (por meio de uma mensagem em <strong>AYNI BOT</strong>) a entrar em um bate-papo de presentes (Telegram) e aqui também encontrará os outros 7 doadores, o mediador, o sonhador e um representante da equipe.</li>'+
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>', '<li>Você terá 4 dias para entrar no bate-papo e, no máximo, 7 dias para fazer seu presente, na forma de pagamento que você encontrará por escrito aqui.<br></ol>',
soydonante_secundo_tejido: '<ol class="lista"><li>Aqui você é Mediador e também Doador, mas sendo o segundo Tecido, você não terá que fazer seu presente novamente<br></ol>',
controlla_donatori: 'Verifique a Lista de Doadores', controlla_donatori: 'Verifique a Lista de Doadores',
link_chat: 'Links de telegramas para o Gift Chat', link_chat: 'Links de telegramas para o Gift Chat',
tragitto: 'Rota', tragitto: 'Rota',

View File

@@ -197,6 +197,8 @@ const msg_si = {
loggati: 'Uporabnik ni prijavljen' loggati: 'Uporabnik ni prijavljen'
}, },
dashboard: { dashboard: {
data: 'Data',
ritorno: 'Vrnitev',
invitante: 'povabljenca', invitante: 'povabljenca',
num_tessitura: 'Numero di Tessitura:', num_tessitura: 'Numero di Tessitura:',
attenzione: 'Pozornosti', attenzione: 'Pozornosti',

View File

@@ -539,7 +539,10 @@ namespace Actions {
// If is not already stored in DB, then show the message to the user. // If is not already stored in DB, then show the message to the user.
if (!state.wasAlreadySubscribed || notreg) { if (!state.wasAlreadySubscribed || notreg) {
options = { options = {
title: tools.translate('notification.title_subscribed', [{strin: 'sitename', strout: translate('ws.sitename')}]), title: tools.translate('notification.title_subscribed', [{
strin: 'sitename',
strout: translate('ws.sitename')
}]),
content: translate('notification.subscribed'), content: translate('notification.subscribed'),
openUrl: '/' openUrl: '/'
} }
@@ -766,6 +769,18 @@ namespace Actions {
}) })
} }
async function askFunz(context, { mydata }) {
// console.log('saveFieldValue', mydata)
return await Api.SendReq(`/askfunz`, 'PATCH', { data: mydata })
.then((ris) => {
return ris.data.out
})
.catch((error) => {
return null
})
}
async function DeleteRec(context, { table, id }) { async function DeleteRec(context, { table, id }) {
console.log('DeleteRec', table, id) console.log('DeleteRec', table, id)
@@ -787,7 +802,7 @@ namespace Actions {
async function DeleteFile(context, { filename }) { async function DeleteFile(context, { filename }) {
console.log('DeleteFile', filename) console.log('DeleteFile', filename)
return await Api.SendReq('/delfile', 'DELETE', {filename}) return await Api.SendReq('/delfile', 'DELETE', { filename })
.then((res) => { .then((res) => {
if (res.status === 200) { if (res.status === 200) {
if (res.data.code === serv_constants.RIS_CODE_OK) { if (res.data.code === serv_constants.RIS_CODE_OK) {
@@ -848,6 +863,7 @@ namespace Actions {
return null return null
}) })
} }
async function GetArrNavi(context) { async function GetArrNavi(context) {
console.log('GetArrNavi') console.log('GetArrNavi')
@@ -1119,6 +1135,7 @@ namespace Actions {
checkUpdates: b.dispatch(checkUpdates), checkUpdates: b.dispatch(checkUpdates),
saveFieldValue: b.dispatch(saveFieldValue), saveFieldValue: b.dispatch(saveFieldValue),
callFunz: b.dispatch(callFunz), callFunz: b.dispatch(callFunz),
askFunz: b.dispatch(askFunz),
sendPushNotif: b.dispatch(sendPushNotif), sendPushNotif: b.dispatch(sendPushNotif),
loadTable: b.dispatch(loadTable), loadTable: b.dispatch(loadTable),
saveTable: b.dispatch(saveTable), saveTable: b.dispatch(saveTable),

View File

@@ -63,6 +63,8 @@ namespace Actions {
state.datastat = res.data.datastat state.datastat = res.data.datastat
state.datastat.arr_nations = JSON.parse(state.datastat.arr_nations) state.datastat.arr_nations = JSON.parse(state.datastat.arr_nations)
state.datastat.reg_daily = JSON.parse(state.datastat.reg_daily) state.datastat.reg_daily = JSON.parse(state.datastat.reg_daily)
state.datastat.imbarcati_daily = JSON.parse(state.datastat.imbarcati_daily)
state.datastat.imbarcati_weekly = JSON.parse(state.datastat.imbarcati_weekly)
state.datastat.reg_weekly = JSON.parse(state.datastat.reg_weekly) state.datastat.reg_weekly = JSON.parse(state.datastat.reg_weekly)
state.datastat.checkuser = JSON.parse(state.datastat.checkuser) state.datastat.checkuser = JSON.parse(state.datastat.checkuser)

View File

@@ -161,6 +161,7 @@ const colpaymenttype = [
const colnavi = [ const colnavi = [
AddCol({ name: '_id', label_trans: 'others.value' }), AddCol({ name: '_id', label_trans: 'others.value' }),
AddCol({ name: 'idListaIngresso', label_trans: 'idListaIngresso' }),
AddCol({ name: 'riga', label_trans: 'reg.riga' }), AddCol({ name: 'riga', label_trans: 'reg.riga' }),
AddCol({ name: 'col', label_trans: 'reg.col' }), AddCol({ name: 'col', label_trans: 'reg.col' }),
AddCol({ name: 'ind_order', label_trans: 'ind_order' }), AddCol({ name: 'ind_order', label_trans: 'ind_order' }),
@@ -175,6 +176,7 @@ const colnavi = [
AddCol({ name: 'date_made_gift', label_trans: 'date_made_gift', fieldtype: tools.FieldType.date }), AddCol({ name: 'date_made_gift', label_trans: 'date_made_gift', fieldtype: tools.FieldType.date }),
// AddCol({ name: 'received_gift', label_trans: 'received_gift', fieldtype: tools.FieldType.boolean }), // 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: 'date_received_gift', label_trans: 'date_received_gift', fieldtype: tools.FieldType.date }),
AddCol({ name: 'offerta_al_fondo', label_trans: 'offerta_al_fondo', fieldtype: tools.FieldType.number }),
AddCol({ name: 'num_tess', label_trans: 'num_tess', fieldtype: tools.FieldType.number }), 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', label_trans: 'note', fieldtype: tools.FieldType.string }),
// AddCol({ name: 'note_interne', label_trans: 'note_interne', fieldtype: tools.FieldType.string }), // AddCol({ name: 'note_interne', label_trans: 'note_interne', fieldtype: tools.FieldType.string }),
@@ -211,6 +213,26 @@ const collistaingresso = [
AddCol(DeleteRec) AddCol(DeleteRec)
] ]
const colgraduatoria = [
AddCol({ name: 'index', label_trans: 'index' }),
AddCol({ name: 'punteggio', label_trans: 'Punt', fieldtype: tools.FieldType.number }),
AddCol({ name: 'ind_order', label_trans: 'ind_order' }),
AddCol({ name: 'num_tess', label_trans: 'num_tess', fieldtype: tools.FieldType.number }),
AddCol({ name: 'username', label_trans: 'reg.username_short' }),
AddCol({ name: 'name', label_trans: 'reg.name' }),
AddCol({ name: 'surname', label_trans: 'reg.surname' }),
AddCol({ name: 'numNaviEntrato', label_trans: 'Navi', fieldtype: tools.FieldType.number }),
AddCol({ name: 'indimbarco', label_trans: 'Imbarco', fieldtype: tools.FieldType.number }),
// AddCol({ name: 'numinvitati', label_trans: 'Inv.', fieldtype: tools.FieldType.number }),
// AddCol({ name: 'numinvitatiattivi', label_trans: 'Att.', fieldtype: tools.FieldType.number }),
AddCol({ name: 'numinvitatiTot', label_trans: 'Inv (Tot)', fieldtype: tools.FieldType.number }),
AddCol({ name: 'numinvitatiattiviTot', label_trans: 'Att. Tot', fieldtype: tools.FieldType.number }),
AddCol({ name: 'invitante_username', label_trans: 'reg.aportador_solidario' }),
AddCol({ name: 'date_added', label_trans: 'date_added', fieldtype: tools.FieldType.date }),
AddCol(DuplicateRec),
AddCol(DeleteRec)
]
const coldisciplines = [ const coldisciplines = [
AddCol({ name: 'typol_code', label_trans: 'disc.typol_code' }), AddCol({ name: 'typol_code', label_trans: 'disc.typol_code' }),
AddCol({ name: 'order', label_trans: 'disc.order', fieldtype: tools.FieldType.number }), AddCol({ name: 'order', label_trans: 'disc.order', fieldtype: tools.FieldType.number }),
@@ -479,7 +501,7 @@ export const fieldsTable = {
colTableUsers: [ 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: 'index', label_trans: 'reg.index', fieldtype: tools.FieldType.number }),
AddCol({ name: 'ind_order', label_trans: 'reg.ind_order' }), // AddCol({ name: 'ind_order', label_trans: 'reg.ind_order' }),
AddCol({ name: 'old_order', label_trans: 'old_order' }), AddCol({ name: 'old_order', label_trans: 'old_order' }),
AddCol({ name: 'sospeso', label_trans: 'reg.sospeso', fieldtype: tools.FieldType.boolean }), AddCol({ name: 'sospeso', label_trans: 'reg.sospeso', fieldtype: tools.FieldType.boolean }),
AddCol({ name: 'deleted', label_trans: 'reg.deleted', fieldtype: tools.FieldType.boolean }), AddCol({ name: 'deleted', label_trans: 'reg.deleted', fieldtype: tools.FieldType.boolean }),
@@ -643,6 +665,13 @@ export const fieldsTable = {
colkey: '_id', colkey: '_id',
collabel: 'ind_order', collabel: 'ind_order',
}, },
{
value: 'graduatorias',
label: 'Graduatoria',
columns: colgraduatoria,
colkey: '_id',
collabel: 'index',
},
{ {
value: 'disciplines', value: 'disciplines',
label: 'Discipline', label: 'Discipline',

View File

@@ -29,6 +29,7 @@ export const lists = {
DONO_RICEVUTO: 370, DONO_RICEVUTO: 370,
AGGIUNGI_NUOVO_IMBARCO: 380, AGGIUNGI_NUOVO_IMBARCO: 380,
CANCELLA_IMBARCO: 385, CANCELLA_IMBARCO: 385,
DAMMI_PRIMO_UTENTE_LIBERO: 390,
CAN_EDIT_TABLE: 400, CAN_EDIT_TABLE: 400,
SHOW_PREV_REC: 401 SHOW_PREV_REC: 401

View File

@@ -91,6 +91,7 @@ export const tools = {
TABUSER: 'users', TABUSER: 'users',
TABNAVI: 'navi', TABNAVI: 'navi',
TABLISTAINGRESSO: 'listaingressos', TABLISTAINGRESSO: 'listaingressos',
TABGRADUATORIA: 'graduatorias',
TABEVENTS: 'myevents', TABEVENTS: 'myevents',
TABEXTRALIST: 'extralist', TABEXTRALIST: 'extralist',
TABNEWSLETTER: 'newstosent', TABNEWSLETTER: 'newstosent',
@@ -1480,7 +1481,7 @@ export const tools = {
table: '', table: '',
fieldsvalue: {}, fieldsvalue: {},
notifBot: {} notifBot: {}
}; }
if (!!par.param1.invitante_username) { if (!!par.param1.invitante_username) {
mydatatosave = { mydatatosave = {
@@ -1548,6 +1549,7 @@ export const tools = {
if (func === lists.MenuAction.CANCELLA_IMBARCO) { if (func === lists.MenuAction.CANCELLA_IMBARCO) {
mydatatosave.ind_order = par.param1.ind_order mydatatosave.ind_order = par.param1.ind_order
mydatatosave.data.id = par.param2.rec._id
} }
if (func === lists.MenuAction.AGGIUNGI_NUOVO_IMBARCO) { if (func === lists.MenuAction.AGGIUNGI_NUOVO_IMBARCO) {
mydatatosave.invitante_username = par.param1.invitante_username mydatatosave.invitante_username = par.param1.invitante_username
@@ -3396,55 +3398,19 @@ export const tools = {
if (langin === '') if (langin === '')
return '' return ''
try { try {
let lang = langin.toUpperCase() const lang = langin.toUpperCase()
if (lang === 'IT')
return 'fa-flag-it' const arrlang = ['IT', 'ES', 'PT', 'BR', 'US', 'GB', 'UK', 'DE', 'FR', 'SI', 'MD',
else if (lang === 'ES') 'NG', 'SK', 'CH', 'CM', 'CO', 'CG', 'PE', 'MS', 'SM', 'HR', 'RO', 'VE', 'CL', 'PL', 'EG', 'AR', 'MX', 'SN', 'PK', 'AT', 'NP',
return 'fa-flag-es' 'CU', 'MA', 'PH', 'BA', 'UA', 'BE', 'NL', 'CI']
else if (lang === 'PT')
return 'fa-flag-pt' const flag = arrlang.find((mylang) => mylang === lang)
else if (lang === 'BR') if (!!flag) {
return 'fa-flag-br' return 'fa-flag-' + flag.toLowerCase()
else if (lang === 'US') }
return 'fa-flag-us'
else if ((lang === 'GB') || (lang === 'UK'))
return 'fa-flag-gb'
else if (lang === 'DE')
return 'fa-flag-de'
else if (lang === 'FR')
return 'fa-flag-fr'
else if (lang === 'SI')
return 'fa-flag-si'
else if (lang === 'MD')
return 'fa-flag-md'
else if (lang === 'NG')
return 'fa-flag-ng'
else if (lang === 'SK')
return 'fa-flag-sk'
else if (lang === 'CH')
return 'fa-flag-ch'
else if (lang === 'CM')
return 'fa-flag-cm'
else if (lang === 'CO')
return 'fa-flag-co'
else if (lang === 'PE')
return 'fa-flag-pe'
else if (lang === 'SM')
return 'fa-flag-sm'
else if (lang === 'HR')
return 'fa-flag-hr'
else if (lang === 'RO')
return 'fa-flag-ro'
else if (lang === 'VE')
return 'fa-flag-ve'
else if (lang === 'CL')
return 'fa-flag-cl'
else if (lang === 'PL')
return 'fa-flag-pl'
else if (lang === 'EG')
return 'fa-flag-eg'
return '' return ''
} catch (e) { } catch (e) {
return '' return ''
} }
@@ -3528,6 +3494,36 @@ export const tools = {
return 'Egypt' return 'Egypt'
} else if (nat === 'BR') { } else if (nat === 'BR') {
return 'Brazil' return 'Brazil'
} else if (nat === 'CG') {
return 'Congo'
} else if (nat === 'AR') {
return 'Argentina'
} else if (nat === 'MX') {
return 'Mexico'
} else if (nat === 'SN') {
return 'Senegal'
} else if (nat === 'PK') {
return 'Pakistan'
} else if (nat === 'AT') {
return 'Austria'
} else if (nat === 'NP') {
return 'Nepal'
} else if (nat === 'CU') {
return 'Cuba'
} else if (nat === 'MA') {
return 'Morocco'
} else if (nat === 'PH') {
return 'Philippines'
} else if (nat === 'BA') {
return 'Bosnia and Herzegovina'
} else if (nat === 'BE') {
return 'Belgium'
} else if (nat === 'NL') {
return 'Netherlands'
} else if (nat === 'MS') {
return 'Montserrat'
} else if (nat === 'CI') {
return 'Cote d\'Ivoire'
} }
}, },

View File

@@ -9,6 +9,13 @@
</CMyFieldDb> </CMyFieldDb>
<br> <br>
<CMyFieldDb title="ABILITA CRONTAB (1 ora)"
mykey="CRONTAB"
:serv="false"
:type="tools.FieldType.boolean">
</CMyFieldDb>
<br>
<div class="row"> <div class="row">
<q-btn label="Crea Utenti Test" color="primary" @click="EseguiFunz('creaUtentiTest')"></q-btn> <q-btn label="Crea Utenti Test" color="primary" @click="EseguiFunz('creaUtentiTest')"></q-btn>
@@ -32,8 +39,6 @@
--> -->
<div class="row"> <div class="row">
<!--<q-btn label="CREA NAVI PERSISTENTI" color="primary" @click="EseguiFunz('CreaNaviPersistenti')"></q-btn>
<br>-->
<!--<q-btn label="CORREGGI NUM_TESS" color="primary" @click="EseguiFunz('Corregginumtess')"></q-btn> <!--<q-btn label="CORREGGI NUM_TESS" color="primary" @click="EseguiFunz('Corregginumtess')"></q-btn>
<br>--> <br>-->
<!--<q-btn label="CORREGGI DATA GIFT CHAT" color="primary" @click="EseguiFunz('CorreggiDataGiftChat')"></q-btn> <!--<q-btn label="CORREGGI DATA GIFT CHAT" color="primary" @click="EseguiFunz('CorreggiDataGiftChat')"></q-btn>
@@ -54,12 +59,24 @@
@click="EseguiFunz('delNaviNoStarted')"></q-btn> @click="EseguiFunz('delNaviNoStarted')"></q-btn>
<br> <br>
</div>--> </div>-->
<div class="row">
<q-btn label="Rigenera (Elim, Genera Graduat, Add Navi Temp" color="positive" size="lg"
@click="EseguiFunz('rigeneraTutto')"></q-btn>
<!--<q-btn label="Crea ListaIngresso" color="positive" @click="EseguiFunz('creaLista')"></q-btn>-->
</div>
<br>
<div class="row"> <div class="row">
<q-btn label="Elimina Navi Provvisorie" color="negative" <q-btn label="Elimina Navi Provvisorie" color="negative"
@click="EseguiFunz('delNaviProvvisorie')"></q-btn> @click="EseguiFunz('delNaviProvvisorie')"></q-btn>
<!--<q-btn label="Crea ListaIngresso" color="positive" @click="EseguiFunz('creaLista')"></q-btn>--> <!--<q-btn label="Crea ListaIngresso" color="positive" @click="EseguiFunz('creaLista')"></q-btn>-->
</div> </div>
<q-btn label="Genera Graduatoria" color="primary"
@click="EseguiFunz('GeneraGraduatoria')"></q-btn>
<br>
<q-btn label="1) Aggiungi in Navi Temporanee" color="primary" @click="EseguiFunz('creaNavi')"></q-btn>
<br>
<div class="q-pa-sm row"> <div class="q-pa-sm row">
<CDateTime <CDateTime
:value.sync="date_start" :value.sync="date_start"
@@ -68,7 +85,9 @@
</CDateTime> </CDateTime>
<q-input v-model="numpersone" type="number" autofocus label="Num Persone to Add" <q-input v-model="numpersone" type="number" autofocus label="Num Persone to Add"
style="width: 100px;"></q-input> style="width: 100px;"></q-input>
<q-btn label="Crea Navi" color="primary" @click="EseguiFunz('creaNavi')"></q-btn> <q-btn label="2) CREA NAVI PERSISTENTI" color="primary" @click="EseguiFunz('CreaNaviPersistenti')"></q-btn>
<br>
</div> </div>
<div v-if="!incaricamento" class="row"> <div v-if="!incaricamento" class="row">
<CMyFieldDb title="Riga" <CMyFieldDb title="Riga"
@@ -117,14 +136,18 @@
<q-btn label="Visualizza Lista Nave" color="primary" @click="EseguiFunz('visuListaNave')"></q-btn> <q-btn label="Visualizza Lista Nave" color="primary" @click="EseguiFunz('visuListaNave')"></q-btn>
</div> </div>
<div class="row"> <!--<div class="row">
<q-btn label="Visualizza ListaIngresso" color="primary" <q-btn label="Visualizza ListaIngresso" color="primary"
@click="EseguiFunz('visuListaIngresso')"></q-btn> @click="EseguiFunz('visuListaIngresso')"></q-btn>
<br> <br>
<q-btn label="Visualizza ListaIngresso Nuovi" color="primary" <q-btn label="Visualizza ListaIngresso Nuovi" color="primary"
@click="EseguiFunz('visuListaIngressoNuovi')"></q-btn> @click="EseguiFunz('visuListaIngressoNuovi')"></q-btn>
<br> <br>
</div> </div>-->
<q-btn label="Aggiorna Indice Graduatoria" color="primary"
@click="EseguiFunz('AggiornaIndiceGraduatoria')"></q-btn>
<br>
<q-btn label="Visu Navi con utenti Eliminati" color="primary" <q-btn label="Visu Navi con utenti Eliminati" color="primary"
@click="EseguiFunz('visuNaviUtentiEliminati')"></q-btn> @click="EseguiFunz('visuNaviUtentiEliminati')"></q-btn>
<br> <br>