Files
freeplanet/src/components/CMyDashboard/CMyDashboard.ts

498 lines
12 KiB
TypeScript
Raw Normal View History

import { Component, Prop, Watch } from 'vue-property-decorator'
import { UserStore } from '../../store/Modules'
import { DefaultUser } from '@src/store/Modules/UserStore'
import MixinUsers from '../../mixins/mixin-users'
import { CProfile } from '../CProfile'
import { CTitleBanner } from '../CTitleBanner'
import { CMyFieldDb } from '../CMyFieldDb'
import { CCopyBtn } from '../CCopyBtn'
import { CUserBadge } from '../CUserBadge'
import { CLegenda } from '../CLegenda'
import { IDashboard, IDownline, IUserProfile } from '../../model'
import { IUserFields } from '../../model/UserStore'
import { CRequisito } from '../CRequisito'
import translate from '../../globalroutines/util'
import { tools } from '../../store/Modules/tools'
import { lists } from '../../store/Modules/lists'
import { shared_consts } from '../../common/shared_vuejs'
import { CMyRequirement } from '../CMyRequirement'
import { CRequisiti } from '../CRequisiti'
import { CCardState } from '../CCardState'
import { CMyNave } from '../CMyNave'
2020-05-10 21:06:42 +02:00
import { validations } from './CMyDashboard-validate'
import { validationMixin } from 'vuelidate'
@Component({
2020-05-10 21:06:42 +02:00
mixins: [validationMixin],
validations,
components: {
CProfile,
CTitleBanner,
CMyFieldDb,
CCopyBtn,
CUserBadge,
CLegenda,
CRequisito,
CMyRequirement,
CRequisiti,
CCardState,
CMyNave
},
})
export default class CMyDashboard extends MixinUsers {
public $v
public $q
public myusername: string = ''
2020-05-10 21:06:42 +02:00
public tab: string = 'requisiti'
public tabcosa: string = ''
public showuserinfo: boolean = false
2020-05-10 21:06:42 +02:00
public shownuovoviaggio: boolean = false
public notifBot: boolean = true
2020-05-10 21:06:42 +02:00
public loading: boolean = false
public loading_invitati: boolean = false
public seluser: IUserFields = null
public aportador_solidario: string = ''
2020-05-10 21:06:42 +02:00
public invitante_username: string = ''
public showregalainv: boolean = false
public id_listaingr: number = -1
public ind_order_ingr: number = -1
2020-05-11 22:43:54 +02:00
public myrigaattuale: number = 0
public mycolattuale: number = 0
public dashboard: IDashboard = {
myself: DefaultUser,
aportador: DefaultUser,
numpeople_aportador: 0,
2020-05-10 21:06:42 +02:00
arrimbarchi: [],
arrposizioni: [],
navi_partenza: [],
lastnave: {},
arrusers: [],
}
public downline: IDownline = {
downline: [],
downnotreg: [],
downbyuser: []
}
@Prop({ required: true }) public username
@Watch('UserStore.state.my.dashboard')
public changedash() {
2020-05-11 22:43:54 +02:00
// console.log('changedash')
this.dashboard = UserStore.state.my.dashboard
2020-05-10 21:06:42 +02:00
if (!!this.dashboard)
2020-05-11 22:43:54 +02:00
this.invitante_username = this.dashboard.myself.username
2020-05-10 21:06:42 +02:00
}
get mythis() {
return this
}
public created() {
2020-05-10 21:06:42 +02:00
if (!!tools.getCookie(tools.TABBED_DASHBOARD)) {
this.tab = tools.getCookie(tools.TABBED_DASHBOARD)
}
this.update_username()
}
2020-05-10 21:06:42 +02:00
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
})
}
}
2020-05-11 22:43:54 +02:00
// console.log('setcook', val)
2020-05-10 21:06:42 +02:00
}
@Watch('this.username')
public changeusername() {
this.update_username()
}
2020-05-10 21:06:42 +02:00
public aggiorna() {
this.dashboard = null
this.update_username()
this.showuserinfo = false
}
public async update_username() {
2020-05-11 22:43:54 +02:00
// console.log('update_username')
2020-05-10 21:06:42 +02:00
this.loading = true
if (this.username === '')
this.myusername = this.getMyUsername()
else
this.myusername = this.username
2020-05-10 21:06:42 +02:00
this.loading = true
UserStore.actions.getDashboard({ username: this.myusername })
.then((ris) => {
this.dashboard = ris
if (!!this.dashboard)
this.invitante_username = this.dashboard.myself.username
this.myrigaattuale = this.dashboard.lastnave.riga
this.mycolattuale = this.dashboard.lastnave.col
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
})
2020-05-10 21:06:42 +02:00
}
2020-05-10 21:06:42 +02:00
this.showuserinfo = false
}
get getRefLink() {
return UserStore.getters.getRefLink(this.myusername)
}
get invitatinotreg() {
if (this.downline)
if (this.downline.downnotreg)
return this.downline.downnotreg.length > 0
return false
}
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)
if (!!this.dashboard.myself)
return this.dashboard.myself.qualified
return false
}
2020-05-10 21:06:42 +02:00
get Completato9Req() {
// return tools.Is9ReqOk(this.dashboard.myself)
if (!!this.dashboard.myself)
2020-05-10 21:06:42 +02:00
return this.dashboard.myself.qualified && (this.dashboard.myself.numinvitatiattivi >= 2)
return false
}
get HasNave() {
if (!!this.dashboard.arrposizioni)
return this.dashboard.arrposizioni.length > 0
else
return false
}
2020-05-10 21:06:42 +02:00
public getnavePartenzaByRigaCol(riga, col) {
for (const mynave of this.dashboard.navi_partenza) {
if (!!mynave) {
if ((mynave.riga === riga) && (mynave.col === col)) {
return mynave
}
}
}
return null
}
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) {
2020-05-10 21:06:42 +02:00
// const mynavepart = this.getnavePartenzaByRigaCol(tools.getRiganave(mianave.riga), tools.getColnave(mianave.col))
if (!!mianave.nave_partenza) {
2020-05-11 22:43:54 +02:00
if (!!mianave.nave_partenza.date_gift_chat_open)
return tools.getstrDate(mianave.nave_partenza.date_gift_chat_open)
2020-05-10 21:06:42 +02:00
}
return ' --/-- '
}
public geticon(mianave) {
if (!mianave)
return ''
if (mianave.made_gift) {
return 'fas fa-gift'
}
}
public colordono(mianave) {
if (mianave.made_gift) {
return 'green'
} else {
return 'grey'
}
}
public getposizioneattuale(mianave, totali) {
const mynavedest = tools.getfirstnaveSognatore(mianave.riga, mianave.col)
const ris = tools.getnumnavi_finoa(mianave, mynavedest, this.dashboard.lastnave)
if (totali)
return mianave.riga + '.' + mianave.col + ' ' + ris.contaattuale + '/' + ris.totale
else
return ris.perc
}
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, {
2020-05-10 21:06:42 +02:00
param1: { username, invitante_username }
})
this.shownuovoviaggio = false
}
2020-05-10 21:06:42 +02:00
public addNuovoImbarco() {
this.NuovoImbarco(this.dashboard.myself.username, this.invitante_username)
}
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, {
2020-05-10 21:06:42 +02:00
param1: { ind_order: imbarco.ind_order, username: imbarco.username },
param2: { num_tess: imbarco.num_tess, rec: imbarco }
2020-05-10 21:06:42 +02:00
})
}
public getnuminvperc(index, myrec) {
2020-05-10 21:06:42 +02:00
return myrec.invattivi / 2 * 100
2020-05-10 21:06:42 +02:00
}
public getcolorinvitati(index, myrec) {
if (myrec.invattivi === 1)
2020-05-10 21:06:42 +02:00
return 'blue'
if (myrec.invattivi === 2)
2020-05-10 21:06:42 +02:00
return 'green'
if (myrec.inv === 1)
2020-05-10 21:06:42 +02:00
return 'orange'
}
public getnumtessstr(num_tess, index) {
let str = index + 1 + '°'
if (num_tess % 2 === 0) {
str += ' (' + this.$t('dashboard.ritorno') + ')'
2020-05-10 21:06:42 +02:00
}
return str
}
public errorMsg(cosa: string, item: any) {
try {
if (!item.$error) {
return ''
}
if (item.required !== undefined) {
if (!item.required) {
return this.$t('reg.err.required')
}
} else if (cosa === 'invitante_username') {
// console.log(item);
if (!item.aportadorexist) {
// console.log('!item.aportadorexist !')
return this.$t('reg.err.invitante_username_not_exist')
}
}
return ''
} catch (error) {
// console.log("ERR : " + error);
}
}
get allowSubmit() {
let error = this.$v.$error || this.$v.$invalid
2020-05-11 22:43:54 +02:00
// error = error || (this.invitante_username === this.dashboard.myself.username)
2020-05-10 21:06:42 +02:00
return !error
}
public imbarchipresenti() {
let presente = false
2020-05-10 21:06:42 +02:00
for (const rec of this.dashboard.arrimbarchi) {
if (!rec.added)
presente = true
}
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) {
if (!!mianave && mianave.nave_partenza)
return mianave.nave_partenza.provvisoria
return false
}
public getcolorbynave(mianave) {
2020-05-10 21:06:42 +02:00
if (!!mianave.nave_partenza)
return mianave.nave_partenza.provvisoria ? 'gray' : 'green'
else
return 'green'
}
public change_mynote(mianave) {
const mydata = {
note: mianave.note
}
tools.saveFieldToServer(this, 'navi', mianave._id, mydata)
}
2020-05-11 22:43:54 +02:00
public getNaveSognatoreStr(mianave) {
2020-05-10 21:06:42 +02:00
const mynavedest = tools.getfirstnaveSognatore(mianave.riga, mianave.col)
2020-05-11 22:43:54 +02:00
const ris = mynavedest.riga + '.' + mynavedest.col
// console.log('ris', ris)
return ris
2020-05-10 21:06:42 +02:00
}
public getNaveMediatoreStr(mianave) {
return mianave.riga + '.' + mianave.col
}
get getstrinvitati() {
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(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 + 6)
riga = rigamin + 6
if (riga < rigamin)
riga = 0
return riga
}
public getval7(mianave) {
let val = this.getmyrigaattuale(mianave)
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) {
let val = this.getval7(mianave)
if (val === 7)
return 'purple'
else if (val === 6)
return 'indigo'
else if (val === 5)
return 'blue'
else if (val === 4)
return 'green'
else if (val === 3)
return 'yellow'
else if (val === 2)
return 'orange'
else if (val === 1)
return 'red'
return val
}
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
}
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
}
}