- Nella Lavagna, cliccando sul nome dell'invitato, compaiono le sue informazioni sugli step rimasti, in dettaglio.
- Ogni utente puo' cosi scegliere di regalare un proprio invitato, cliccando sull'invitato, scrivendo l'username del destinatario e premendo il bottone 'Regala Invitato'. Al destinatario gli arriverà un messaggio sul Bot Telegram che indica che gli è stato regalato un'invitato.
This commit is contained in:
@@ -16,7 +16,7 @@ import { CalendarStore } from '../../store/Modules'
|
||||
components: { CMyTeacher }
|
||||
})
|
||||
|
||||
export default class CCardDiscipline extends Vue {
|
||||
export default class CCardDiscipline extends MixinBase {
|
||||
@Prop({ required: true }) public discipline: IDiscipline
|
||||
@Prop({ required: false, default: '' }) public mystyle: string
|
||||
@Prop({ required: false, default: false }) public autoplay: boolean
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
<template>
|
||||
<div class="q-ma-sm column cursor-pointer" @click="copytoclip">
|
||||
<q-field outlined bottom-slots :label="title" stack-label class="text-center">
|
||||
<template v-slot:prepend v-if="!tools.isMobile()">
|
||||
<q-btn round dense flat icon="far fa-copy" />
|
||||
</template>
|
||||
<div class="q-ma-sm">
|
||||
<div class="column cursor-pointer" @click="copytoclip">
|
||||
<q-field outlined :label="title" stack-label class="text-center cursor-pointer">
|
||||
<template v-slot:prepend v-if="!tools.isMobile()">
|
||||
<q-btn round dense flat icon="far fa-copy"/>
|
||||
</template>
|
||||
|
||||
<template v-slot:control>
|
||||
<div class="self-center full-width no-outline text-center wrapword text-h5" tabindex="0">{{texttocopy}}</div>
|
||||
</template>
|
||||
</q-field>
|
||||
<template v-slot:control>
|
||||
<div class="self-center full-width no-outline text-center wrapword text-h5" tabindex="0">{{texttocopy}}</div>
|
||||
</template>
|
||||
</q-field>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -129,6 +129,14 @@ export default class CEventsCalendar extends MixinEvents {
|
||||
public draggedEvent = null
|
||||
public ignoreNextSwipe = false
|
||||
|
||||
get mythis() {
|
||||
return this
|
||||
}
|
||||
|
||||
set mythis(aa) {
|
||||
|
||||
}
|
||||
|
||||
public resources = [
|
||||
{
|
||||
label: 'John'
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
</div>
|
||||
<div v-if="myevent.dateTimeStart" class="cal__when">
|
||||
<span class="cal__where-title">{{$t('cal.when')}}:
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis(), myevent, true)"></span>
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis, myevent, true)"></span>
|
||||
</span>
|
||||
</div>
|
||||
<p v-if="myevent.linkpdf" style="margin-top: 10px; text-align: center">
|
||||
@@ -295,7 +295,7 @@
|
||||
</q-chip>
|
||||
<div v-if="myevent.dateTimeStart" class="cal__when">
|
||||
<span class="cal__where-title">{{$t('cal.when')}}:
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis(), myevent, true)"></span>
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis, myevent, true)"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="q-pa-xs">
|
||||
@@ -339,7 +339,7 @@
|
||||
<q-card-actions align="right">
|
||||
<q-btn v-if="bookEventpage.state === EState.Modifying" flat :label="$t('cal.cancelbooking')"
|
||||
color="negative"
|
||||
@click="tools.CancelBookingEvent(mythis(), myevent, bookEventForm._id, true)"></q-btn>
|
||||
@click="tools.CancelBookingEvent(mythis, myevent, bookEventForm._id, true)"></q-btn>
|
||||
<q-btn v-if="checkseinviaMsg" flat :label="$t('dialog.sendonlymsg')" color="primary"
|
||||
@click="sendMsg(myevent)"></q-btn>
|
||||
<q-btn v-else flat :label="getTitleBtnBooking" color="primary" @click="saveBookEvent(myevent)"
|
||||
@@ -376,7 +376,7 @@
|
||||
</q-chip>
|
||||
<div v-if="myevent.dateTimeStart" class="cal__when">
|
||||
<span class="cal__where-title">{{$t('cal.when')}}:
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis(), myevent, true)"></span>
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis, myevent, true)"></span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="q-pa-xs">
|
||||
@@ -631,7 +631,7 @@
|
||||
</div>
|
||||
|
||||
<div class="listaev__date listaev__align_center_mobile">
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis(), event, true)"></span>
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis, event, true)"></span>
|
||||
</div>
|
||||
|
||||
<div class="listaev__align_center_mobile">
|
||||
|
||||
@@ -18,14 +18,31 @@ export default class CGallery extends MixinBase {
|
||||
@Prop({ required: true }) public edit: boolean
|
||||
@Prop({ required: true }) public gall: IGallery
|
||||
@Prop({ required: true }) public listimages: IImgGallery[]
|
||||
public mygall: IGallery = {}
|
||||
public mylistimages: IImgGallery[] = []
|
||||
|
||||
@Watch('gall')
|
||||
public gallchanged() {
|
||||
this.mygall = this.gall
|
||||
}
|
||||
|
||||
@Watch('listimages')
|
||||
public listimageschanged() {
|
||||
this.mylistimages = this.listimages
|
||||
}
|
||||
|
||||
public created() {
|
||||
this.mygall = this.gall
|
||||
this.mylistimages = this.listimages
|
||||
}
|
||||
|
||||
get tools() {
|
||||
return tools
|
||||
}
|
||||
|
||||
get getlistimages() {
|
||||
if (this.listimages)
|
||||
return this.listimages.sort((a, b) => a.order - b.order)
|
||||
if (this.mylistimages)
|
||||
return this.mylistimages.slice().sort((a, b) => a.order - b.order)
|
||||
else
|
||||
return null
|
||||
}
|
||||
@@ -77,13 +94,13 @@ export default class CGallery extends MixinBase {
|
||||
return
|
||||
}
|
||||
|
||||
const myindex = this.listimages.findIndex((rec) => rec._id === draggedId)
|
||||
const myrec: IImgGallery = this.listimages[myindex]
|
||||
const myindex = this.mylistimages.findIndex((rec) => rec._id === draggedId)
|
||||
const myrec: IImgGallery = this.mylistimages[myindex]
|
||||
|
||||
let myrecprec: IImgGallery = null
|
||||
let myrecout: IImgGallery = null
|
||||
const myindexout = this.listimages.findIndex((rec) => rec._id === dragout)
|
||||
myrecout = this.listimages[myindexout]
|
||||
const myindexout = this.mylistimages.findIndex((rec) => rec._id === dragout)
|
||||
myrecout = this.mylistimages[myindexout]
|
||||
let myindexprec = myindexout - 1
|
||||
|
||||
if (myindexprec < 0)
|
||||
@@ -135,7 +152,7 @@ export default class CGallery extends MixinBase {
|
||||
|
||||
get getlastord() {
|
||||
let myord = 0
|
||||
for (const file of this.listimages) {
|
||||
for (const file of this.mylistimages) {
|
||||
if (file.order > myord)
|
||||
myord = file.order
|
||||
}
|
||||
@@ -146,29 +163,29 @@ export default class CGallery extends MixinBase {
|
||||
public uploaded(info) {
|
||||
console.log(info)
|
||||
for (const file of info.files) {
|
||||
this.listimages.push({ imagefile: file.name, order: this.getlastord })
|
||||
this.mylistimages.push({ imagefile: file.name, order: this.getlastord })
|
||||
}
|
||||
|
||||
this.save()
|
||||
}
|
||||
|
||||
public deleted(rec) {
|
||||
console.table(this.listimages)
|
||||
// console.table(this.mylistimages)
|
||||
|
||||
const index = this.listimages.findIndex((elem) => elem.imagefile === rec.imagefile)
|
||||
const index = this.mylistimages.findIndex((elem) => elem.imagefile === rec.imagefile)
|
||||
if (index > -1) {
|
||||
this.listimages.splice(index, 1)
|
||||
this.mylistimages.splice(index, 1)
|
||||
}
|
||||
|
||||
// this.listimages = this.listimages.pop((elem) => elem.imagefile !== rec.imagefile)
|
||||
// this.mylistimages = this.mylistimages.pop((elem) => elem.imagefile !== rec.imagefile)
|
||||
|
||||
console.table(this.listimages)
|
||||
// console.table(this.mylistimages)
|
||||
|
||||
this.save()
|
||||
}
|
||||
|
||||
public getfullname(rec) {
|
||||
return 'statics/upload/' + this.gall.directory + `/` + rec.imagefile
|
||||
return 'statics/upload/' + this.mygall.directory + `/` + rec.imagefile
|
||||
}
|
||||
|
||||
public copytoclipboard(rec) {
|
||||
@@ -187,7 +204,7 @@ export default class CGallery extends MixinBase {
|
||||
}
|
||||
|
||||
public save() {
|
||||
this.$emit('showandsave', this.listimages)
|
||||
this.$emit('showandsave', this.mylistimages)
|
||||
}
|
||||
|
||||
public getsrcimg(mygallery) {
|
||||
@@ -195,7 +212,7 @@ export default class CGallery extends MixinBase {
|
||||
if (tools.getextfile(mygallery.imagefile) === 'pdf')
|
||||
return 'statics/images/images/pdf.jpg'
|
||||
else
|
||||
return 'statics/upload/' + this.gall.directory + `/` + mygallery.imagefile
|
||||
return 'statics/upload/' + this.mygall.directory + `/` + mygallery.imagefile
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import Vue from 'vue'
|
||||
import { Component, Prop } from 'vue-property-decorator'
|
||||
import { Component, Prop, Watch } from 'vue-property-decorator'
|
||||
|
||||
import { GlobalStore, UserStore } from '../../store/Modules/index'
|
||||
import { tools } from '../../store/Modules/tools'
|
||||
|
||||
import { shared_consts } from '../../common/shared_vuejs'
|
||||
import { ICategory, IColGridTable, ITableRec } from '../../model'
|
||||
import { ICategory, IColGridTable, IFilter, ITableRec } from '../../model'
|
||||
import { CTodo } from '../todos/CTodo'
|
||||
import { SingleProject } from '../projects/SingleProject'
|
||||
import { lists } from '../../store/Modules/lists'
|
||||
@@ -26,6 +26,7 @@ export default class CGridTableRec extends Vue {
|
||||
@Prop({ required: false, default: '' }) public nodataLabel: string
|
||||
@Prop({ required: false, default: '' }) public noresultLabel: string
|
||||
@Prop({ required: false, default: null }) public tablesList: ITableRec[]
|
||||
@Prop({ required: false, default: null }) public arrfilters: IFilter[]
|
||||
|
||||
public mytable: string
|
||||
public mytitle: string
|
||||
@@ -55,6 +56,7 @@ export default class CGridTableRec extends Vue {
|
||||
|
||||
public separator: 'horizontal'
|
||||
public myfilter = undefined
|
||||
public myfilterand = []
|
||||
public rowsel: any
|
||||
public dark: boolean = true
|
||||
public canEdit: boolean = false
|
||||
@@ -190,6 +192,7 @@ export default class CGridTableRec extends Vue {
|
||||
// console.log('onRequest', 'myfilter = ', this.myfilter)
|
||||
const { page, rowsPerPage, rowsNumber, sortBy, descending } = props.pagination
|
||||
const myfilter = this.myfilter
|
||||
const myfilterand = this.myfilterand
|
||||
|
||||
if (!this.mytable)
|
||||
return
|
||||
@@ -212,7 +215,7 @@ export default class CGridTableRec extends Vue {
|
||||
this.serverData = []
|
||||
|
||||
// fetch data from "server"
|
||||
this.fetchFromServer(startRow, endRow, myfilter, sortBy, descending).then((ris) => {
|
||||
this.fetchFromServer(startRow, endRow, myfilter, myfilterand, sortBy, descending).then((ris) => {
|
||||
|
||||
this.pagination.rowsNumber = this.getRowsNumberCount(myfilter)
|
||||
|
||||
@@ -244,7 +247,7 @@ export default class CGridTableRec extends Vue {
|
||||
|
||||
// emulate ajax call
|
||||
// SELECT * FROM ... WHERE...LIMIT...
|
||||
public async fetchFromServer(startRow, endRow, myfilter, sortBy, descending) {
|
||||
public async fetchFromServer(startRow, endRow, myfilter, myfilterand, sortBy, descending) {
|
||||
|
||||
let myobj = null
|
||||
if (sortBy) {
|
||||
@@ -260,6 +263,7 @@ export default class CGridTableRec extends Vue {
|
||||
startRow,
|
||||
endRow,
|
||||
filter: myfilter,
|
||||
filterand: myfilterand,
|
||||
sortBy: myobj,
|
||||
descending
|
||||
}
|
||||
@@ -565,4 +569,9 @@ export default class CGridTableRec extends Vue {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
@Watch('myfilterand')
|
||||
public changemyfilterand() {
|
||||
this.refresh()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
>
|
||||
|
||||
<template v-slot:header="props">
|
||||
|
||||
<q-tr :props="props">
|
||||
<q-th>
|
||||
|
||||
@@ -99,6 +100,11 @@
|
||||
<q-spinner-tail size="2em" color="primary"/>
|
||||
</q-inner-loading>
|
||||
|
||||
<div class="row">
|
||||
<q-toggle v-for="(filter, index) of arrfilters" :key="index" v-model="myfilterand" :val="filter.value" :label="filter.label"></q-toggle>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<template v-slot:body="props">
|
||||
|
||||
0
src/components/CLegenda/CLegenda.scss
Normal file
0
src/components/CLegenda/CLegenda.scss
Normal file
15
src/components/CLegenda/CLegenda.ts
Normal file
15
src/components/CLegenda/CLegenda.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import Vue from 'vue'
|
||||
import { Component, Prop, Watch } from 'vue-property-decorator'
|
||||
|
||||
import { tools } from '../../store/Modules/tools'
|
||||
import { toolsext } from '@src/store/Modules/toolsext'
|
||||
import MixinBase from '@src/mixins/mixin-base'
|
||||
|
||||
@Component({
|
||||
|
||||
})
|
||||
|
||||
export default class CLegenda extends MixinBase {
|
||||
@Prop({ required: true }) public icon: string
|
||||
@Prop({ required: true }) public text: string
|
||||
}
|
||||
15
src/components/CLegenda/CLegenda.vue
Normal file
15
src/components/CLegenda/CLegenda.vue
Normal file
@@ -0,0 +1,15 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="row q-ml-sm q-pa-xs items-center">
|
||||
<q-icon size="sm" :name="icon" color="green"></q-icon>
|
||||
<q-chip dense color="blue" text-color="white" class="q-ml-md">{{text}}</q-chip>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CLegenda.ts">
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './CLegenda.scss';
|
||||
</style>
|
||||
1
src/components/CLegenda/index.ts
Normal file
1
src/components/CLegenda/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export {default as CLegenda} from './CLegenda.vue'
|
||||
@@ -25,6 +25,10 @@ export default class CLineChart extends Vue {
|
||||
return this
|
||||
}
|
||||
|
||||
set mythis(my) {
|
||||
//
|
||||
}
|
||||
|
||||
public mounted() {
|
||||
this.mydatafixed = {}
|
||||
|
||||
|
||||
12
src/components/CMyDashboard/CMyDashboard-validate.ts
Normal file
12
src/components/CMyDashboard/CMyDashboard-validate.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { ISignupOptions } from 'model'
|
||||
import { email, minLength, required, sameAs } from 'vuelidate/lib/validators'
|
||||
// import { ValidationRuleset } from 'vuelidate'
|
||||
import { complexity, registeredemail, registereduser, aportadorexist } from '../../validation'
|
||||
|
||||
export const validations = {
|
||||
|
||||
aportador_solidario: {
|
||||
aportadorexist,
|
||||
required
|
||||
}
|
||||
}
|
||||
@@ -9,19 +9,110 @@ import { CTitleBanner } from '../CTitleBanner'
|
||||
import { CMyFieldDb } from '../CMyFieldDb'
|
||||
import { CCopyBtn } from '../CCopyBtn'
|
||||
import { CUserBadge } from '../CUserBadge'
|
||||
import { CLegenda } from '../CLegenda'
|
||||
import { IDashboard, 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 { validations } from './CMyDashboard-validate'
|
||||
import { validationMixin } from 'vuelidate'
|
||||
|
||||
@Component({
|
||||
components: { CProfile, CTitleBanner, CMyFieldDb, CCopyBtn, CUserBadge }
|
||||
mixins: [validationMixin],
|
||||
validations,
|
||||
components: { CProfile, CTitleBanner, CMyFieldDb, CCopyBtn, CUserBadge, CLegenda, CRequisito }
|
||||
})
|
||||
|
||||
export default class CMyDashboard extends MixinUsers {
|
||||
@Prop({ required: true }) public username
|
||||
|
||||
public $v
|
||||
public $q
|
||||
public dashboard = { aportador: DefaultUser, numpeople_aportador: 0, downline: [], downbyuser: [] }
|
||||
public myusername: string = ''
|
||||
public showuserinfo: boolean = false
|
||||
public notifBot: boolean = true
|
||||
public seluser: IUserFields = null
|
||||
public aportador_solidario: string = ''
|
||||
public dashboard: IDashboard = {
|
||||
myself: DefaultUser,
|
||||
aportador: DefaultUser,
|
||||
numpeople_aportador: 0,
|
||||
downline: [],
|
||||
downnotreg: [],
|
||||
downbyuser: []
|
||||
}
|
||||
|
||||
public mythis() {
|
||||
@Prop({ required: true }) public username
|
||||
|
||||
|
||||
public arrrequisiti = [
|
||||
{
|
||||
icon: 'email',
|
||||
textlang: 'reg.verified_email',
|
||||
isok(user) {
|
||||
if (user)
|
||||
return user.verified_email
|
||||
else
|
||||
return false
|
||||
},
|
||||
info: '',
|
||||
},
|
||||
{
|
||||
icon: 'fab fa-telegram',
|
||||
textlang: 'reg.telegram',
|
||||
isok(user) {
|
||||
if (user)
|
||||
if (user.profile)
|
||||
return user.profile.teleg_id > 0
|
||||
|
||||
return false
|
||||
},
|
||||
info: '',
|
||||
},
|
||||
{
|
||||
icon: 'fas fa-video',
|
||||
textlang: 'steps.zoom_partecipa',
|
||||
isok(user) {
|
||||
if (user)
|
||||
if (user.profile)
|
||||
return user.profile.saw_zoom_presentation
|
||||
return false
|
||||
},
|
||||
info: '',
|
||||
},
|
||||
{
|
||||
icon: 'fas fa-heart',
|
||||
textlang: 'steps.dream',
|
||||
isok(user) {
|
||||
if (user)
|
||||
if (user.profile.my_dream)
|
||||
return user.profile.my_dream.length > 20
|
||||
else
|
||||
return false
|
||||
},
|
||||
info: '',
|
||||
},
|
||||
{
|
||||
icon: 'far fa-credit-card',
|
||||
textlang: 'steps.paymenttype',
|
||||
isok(user) {
|
||||
if (user)
|
||||
if (user.profile.paymenttypes)
|
||||
return user.profile.paymenttypes.length > 20
|
||||
else
|
||||
return false
|
||||
},
|
||||
info: '',
|
||||
},
|
||||
]
|
||||
|
||||
@Watch('UserStore.state.my.dashboard')
|
||||
public changedash() {
|
||||
console.log('changedash')
|
||||
this.dashboard = UserStore.state.my.dashboard
|
||||
}
|
||||
|
||||
get mythis() {
|
||||
return this
|
||||
}
|
||||
|
||||
@@ -34,40 +125,106 @@ export default class CMyDashboard extends MixinUsers {
|
||||
this.update_username()
|
||||
|
||||
}
|
||||
public update_username() {
|
||||
|
||||
public async update_username() {
|
||||
// console.log('update_username')
|
||||
if (this.username === '')
|
||||
this.username = this.getMyUsername()
|
||||
this.myusername = this.getMyUsername()
|
||||
else
|
||||
this.myusername = this.username
|
||||
|
||||
UserStore.actions.getDashboard({ username: this.username }).then((ris) => {
|
||||
// console.log('getDashboard', ris)
|
||||
if (ris.aportador === undefined) {
|
||||
this.dashboard.aportador = DefaultUser
|
||||
} else {
|
||||
this.dashboard.aportador = ris.aportador
|
||||
}
|
||||
if (ris.numpeople_aportador === undefined) {
|
||||
this.dashboard.numpeople_aportador = 0
|
||||
} else {
|
||||
this.dashboard.numpeople_aportador = ris.numpeople_aportador
|
||||
}
|
||||
if (ris.downline === undefined) {
|
||||
this.dashboard.downline = []
|
||||
} else {
|
||||
this.dashboard.downline = ris.downline
|
||||
}
|
||||
|
||||
if (ris.downbyuser === undefined) {
|
||||
this.dashboard.downbyuser = []
|
||||
} else {
|
||||
this.dashboard.downbyuser = ris.downbyuser
|
||||
}
|
||||
|
||||
// console.log('this.dashboard', this.dashboard)
|
||||
await UserStore.actions.getDashboard({ username: this.myusername }).then((ris) => {
|
||||
this.dashboard = UserStore.state.my.dashboard
|
||||
})
|
||||
}
|
||||
|
||||
get getRefLink() {
|
||||
return UserStore.getters.getRefLink(this.username)
|
||||
return UserStore.getters.getRefLink(this.myusername)
|
||||
}
|
||||
|
||||
get invitatinotreg() {
|
||||
if (this.dashboard)
|
||||
if (this.dashboard.downnotreg)
|
||||
return this.dashboard.downnotreg.length > 0
|
||||
return false
|
||||
}
|
||||
|
||||
public selectclick(user) {
|
||||
this.showuserinfo = true
|
||||
this.seluser = user
|
||||
}
|
||||
|
||||
public isextralist(user) {
|
||||
return !!user.cell_complete
|
||||
}
|
||||
|
||||
public ismyinvited_notreg(user) {
|
||||
return this.dashboard.downnotreg.find((rec) => rec.ind_order === user.ind_order)
|
||||
}
|
||||
|
||||
public ismydownline(user) {
|
||||
return this.dashboard.downline.find((rec) => rec.username === user.username)
|
||||
}
|
||||
|
||||
public async deleteUserFromExtraList(user) {
|
||||
|
||||
await tools.askConfirm(this.$q, translate('reg.cancella_invitato'), translate('reg.cancella_invitato') + ' ' + user.name + ' ' + user.surname + '?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.DELETE_EXTRALIST, 0, {
|
||||
param1: user,
|
||||
param2: true
|
||||
})
|
||||
}
|
||||
|
||||
public async RegalaInvitato(user, aportador_solidario, notifBottxt) {
|
||||
let notiftxt = ''
|
||||
if (this.notifBot)
|
||||
notiftxt = notifBottxt
|
||||
|
||||
await tools.askConfirm(this.$q, translate('reg.regala_invitato'), translate('reg.regala_invitato') + ' ' + user.name + ' ' + user.surname + ' a ' + aportador_solidario + ' ?', translate('dialog.yes'), translate('dialog.no'), this, '', lists.MenuAction.REGALA_INVITATO, 0, {
|
||||
param1: user,
|
||||
param2: aportador_solidario,
|
||||
param3: notiftxt
|
||||
})
|
||||
}
|
||||
|
||||
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 === 'aportador_solidario') {
|
||||
// console.log(item);
|
||||
if (!item.aportadorexist) {
|
||||
// console.log('!item.aportadorexist !')
|
||||
return this.$t('reg.err.aportador_regalare_not_exist')
|
||||
}
|
||||
}
|
||||
|
||||
return ''
|
||||
} catch (error) {
|
||||
// console.log("ERR : " + error);
|
||||
}
|
||||
}
|
||||
|
||||
get allowSubmit() {
|
||||
let error = this.$v.$error || this.$v.$invalid
|
||||
|
||||
error = error || (this.aportador_solidario === this.seluser.aportador_solidario)
|
||||
|
||||
return !error
|
||||
|
||||
}
|
||||
|
||||
get getnotifBotTxt() {
|
||||
return this.$t('dashboard.ricevuto_dono', {
|
||||
invitato: this.seluser.name + ' ' + this.seluser.surname,
|
||||
mittente: this.dashboard.myself.username
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
<template>
|
||||
<div class="q-ma-xs q-gutter-xs q-pa-xs" v-if="username !== ''">
|
||||
<CTitleBanner class="q-pa-xs" :title="$t('pages.dashboard') +` (`+ username + `)`" bgcolor="bg-info" clcolor="text-white"
|
||||
<div class="q-ma-xs q-gutter-xs q-pa-xs" v-if="myusername !== ''">
|
||||
<CTitleBanner class="q-pa-xs" :title="$t('pages.dashboard')" bgcolor="bg-info" clcolor="text-white"
|
||||
mystyle=" " myclass="myshad">
|
||||
|
||||
<CCopyBtn :title="$t('reg.reflink')" :texttocopy="getRefLink">
|
||||
|
||||
</CCopyBtn>
|
||||
|
||||
<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.name" :user="dashboard.aportador" :index="0" :numpeople="dashboard.numpeople_aportador"
|
||||
mycolor="accent">
|
||||
<CUserBadge v-if="!!dashboard.aportador" :user="dashboard.aportador" :index="0"
|
||||
:numpeople="dashboard.numpeople_aportador"
|
||||
mycolor="accent" @myclick="selectclick">
|
||||
|
||||
</CUserBadge>
|
||||
<div v-else class="q-pa-sm text-center">
|
||||
@@ -20,17 +18,35 @@
|
||||
</div>
|
||||
</CTitleBanner>
|
||||
|
||||
<CTitleBanner class="shadow-2" :title="$t('reg.you')" bgcolor="bg-blue"
|
||||
clcolor="text-white"
|
||||
mystyle=" " myclass="myshad" :canopen="true">
|
||||
|
||||
<CUserBadge v-if="!!dashboard.myself" :user="dashboard.myself" :index="0"
|
||||
:numpeople="dashboard.downline.length"
|
||||
@myclick="selectclick"
|
||||
mycolor="blue">
|
||||
|
||||
</CUserBadge>
|
||||
</CTitleBanner>
|
||||
|
||||
<CTitleBanner class="shadow-2 rounded-borders" :title="$t('dashboard.downline')" 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">
|
||||
<CUserBadge :yourinvite="true" :user="user" mycolor="primary" :index="index" :numpeople="dashboard.downbyuser[user.username].length">
|
||||
<CUserBadge :yourinvite="true" :user="user" mycolor="positive" :index="index"
|
||||
:numpeople="dashboard.downbyuser[user.username].length"
|
||||
@myclick="selectclick"
|
||||
>
|
||||
|
||||
</CUserBadge>
|
||||
<div style="margin-left:10px;" v-for="(user2, index2) in dashboard.downbyuser[user.username]" :key="index2">
|
||||
<CUserBadge :yourinvite="false" :user="user2" mycolor="orange" :index="index2" :numpeople="dashboard.downbyuser[user2.username].length">
|
||||
<CUserBadge :yourinvite="false" :user="user2" mycolor="orange" :index="index2"
|
||||
:numpeople="dashboard.downbyuser[user2.username].length"
|
||||
@myclick="selectclick"
|
||||
>
|
||||
|
||||
</CUserBadge>
|
||||
</div>
|
||||
@@ -41,6 +57,21 @@
|
||||
</div>
|
||||
</CTitleBanner>
|
||||
|
||||
<CTitleBanner v-if="invitatinotreg" class="shadow-2 rounded-borders" :title="$t('dashboard.downnotreg')"
|
||||
bgcolor="bg-grey"
|
||||
clcolor="text-white"
|
||||
mystyle=" " myclass="myshad" :canopen="true">
|
||||
|
||||
<q-list bordered v-if="!!dashboard.downnotreg" class="rounded-borders">
|
||||
<div v-for="(user, index) in dashboard.downnotreg" :key="index">
|
||||
<CUserBadge :yourinvite="true" :user="user" mycolor="grey" :index="index" :numpeople="user.num_invitati"
|
||||
@myclick="selectclick">
|
||||
|
||||
</CUserBadge>
|
||||
</div>
|
||||
</q-list>
|
||||
</CTitleBanner>
|
||||
|
||||
</CTitleBanner>
|
||||
|
||||
<!--
|
||||
@@ -60,6 +91,103 @@
|
||||
</div>
|
||||
</CTitleBanner>
|
||||
-->
|
||||
|
||||
<CCopyBtn :title="$t('reg.reflink')" :texttocopy="getRefLink">
|
||||
|
||||
</CCopyBtn>
|
||||
|
||||
<CTitleBanner class="shadow-2 rounded-borders" :title="$t('reg.legenda')"
|
||||
bgcolor="bg-primary"
|
||||
clcolor="text-white"
|
||||
mystyle=" " myclass="myshad" :canopen="true">
|
||||
<q-list bordered class="rounded-borders row justify-between">
|
||||
<CLegenda icon="fab fa-telegram" :text="`Telegram ` + $t('pages.statusreg.verified')"></CLegenda>
|
||||
<CLegenda icon="fas fa-video" :text="$t('pages.statusreg.seezoom')"></CLegenda>
|
||||
<CLegenda icon="fas fa-user-friends" :text="$t('dashboard.numinvitati')"></CLegenda>
|
||||
<CLegenda icon="fab fa-whatsapp" :text="$t('dashboard.telefono_wa')"></CLegenda>
|
||||
|
||||
</q-list>
|
||||
</CTitleBanner>
|
||||
<br>
|
||||
|
||||
<q-dialog v-model="showuserinfo">
|
||||
<q-card v-if="seluser" :style="`min-width: `+ tools.myheight_dialog() + `px;`">
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar-title>
|
||||
Info:
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
</q-toolbar>
|
||||
<q-card-section class="inset-shadow">
|
||||
<CTitleBanner class="shadow-2 rounded-borders" :title="seluser.name + ` ` + seluser.surname"
|
||||
bgcolor="bg-primary"
|
||||
clcolor="text-white"
|
||||
mystyle=" " myclass="myshad" :canopen="true">
|
||||
|
||||
|
||||
<div v-if="!ismyinvited_notreg(seluser)" class="text-center">
|
||||
|
||||
<div v-if="!isextralist(seluser)">
|
||||
<div v-for="req of arrrequisiti">
|
||||
<CRequisito :icon="req.icon" :text="$t(req.textlang)" :isok="req.isok(seluser)"
|
||||
:info="req.info"></CRequisito>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div v-if="ismydownline(seluser)">
|
||||
<CTitleBanner class="shadow-2 rounded-borders" :title="$t('reg.regala_invitato')"
|
||||
bgcolor="bg-positive"
|
||||
clcolor="text-white"
|
||||
:visible="false"
|
||||
mystyle=" " myclass="myshad" :canopen="true">
|
||||
|
||||
<div class="column q-gutter-sm justify-center text-center">
|
||||
<q-input
|
||||
bg-color="lightblue"
|
||||
v-model="aportador_solidario"
|
||||
rounded outlined
|
||||
@blur="$v.aportador_solidario.$touch"
|
||||
:error="$v.aportador_solidario.$error"
|
||||
:error-message="errorMsg('aportador_solidario', $v.aportador_solidario)"
|
||||
maxlength="20"
|
||||
debounce="1000"
|
||||
|
||||
:label="$t('reg.username_regala_invitato')">
|
||||
|
||||
<template v-slot:prepend>
|
||||
<q-icon name="person"/>
|
||||
</template>
|
||||
|
||||
</q-input>
|
||||
|
||||
<q-toggle v-model="notifBot" :label="$t('dashboard.sendnotification')"/>
|
||||
|
||||
<q-btn class="q-ma-sm" rounded color="positive" text-color="white" icon="fas fa-gift" :label="$t('reg.regala_invitato')"
|
||||
:disabled='!allowSubmit'
|
||||
@click="RegalaInvitato(seluser, aportador_solidario, getnotifBotTxt)"></q-btn>
|
||||
</div>
|
||||
</CTitleBanner>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div v-else>
|
||||
<div class="column justify-center q-gutter-sm q-pa-sm">
|
||||
|
||||
<CRequisito icon="fas fa-user" text="dashboard.notreg" :isok="false"
|
||||
info=""></CRequisito>
|
||||
|
||||
<q-btn rounded text-color="red" icon="delete" :label="$t('reg.cancella_invitato')"
|
||||
@click="deleteUserFromExtraList(seluser)"></q-btn>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</CTitleBanner>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -30,6 +30,14 @@ export default class CMySingleEvent extends MixinEvents {
|
||||
public $t
|
||||
public selected: boolean = false
|
||||
|
||||
get mythis() {
|
||||
return this
|
||||
}
|
||||
|
||||
set mythis(aa) {
|
||||
|
||||
}
|
||||
|
||||
public selectEvent(eventparam: IEvents) {
|
||||
this.selected = !this.selected
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
</div>
|
||||
|
||||
<div class="listaev__date listaev__align_center_mobile">
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis(), myevent, true)"></span>
|
||||
<span v-html="tools.getstrDateTimeEvent(mythis, myevent, true)"></span>
|
||||
</div>
|
||||
|
||||
<div class="listaev__align_center_mobile">
|
||||
|
||||
@@ -9,10 +9,13 @@ import { CTitleBanner } from '@components'
|
||||
import { CCardState } from '../CCardState'
|
||||
import { UserStore } from '../../store/Modules'
|
||||
import { GlobalStore } from '../../store'
|
||||
import { CCopyBtn } from '../CCopyBtn'
|
||||
|
||||
import { date } from 'quasar'
|
||||
|
||||
@Component({
|
||||
name: 'CStatusReg',
|
||||
components: { CTitleBanner, CCardState }
|
||||
components: { CTitleBanner, CCardState, CCopyBtn }
|
||||
})
|
||||
|
||||
export default class CNextZoom extends MixinBase {
|
||||
@@ -27,4 +30,18 @@ export default class CNextZoom extends MixinBase {
|
||||
return tools.getstrTime(this.listacalzoom[0].date_start)
|
||||
}
|
||||
}
|
||||
|
||||
get showzoom() {
|
||||
if (GlobalStore.state.calzoom.length > 0) {
|
||||
const mydate = GlobalStore.state.calzoom.slice(-1)[0].date_start
|
||||
const mydate_end = GlobalStore.state.calzoom.slice(-1)[0].date_end
|
||||
const datenow = tools.getDateNow()
|
||||
console.log('date.getDateDiff(datenow, mydate, \'minutes\')', date.getDateDiff(datenow, mydate, 'minutes'))
|
||||
// if begin is in the past, take the day now
|
||||
if ((date.getDateDiff(datenow, mydate, 'minutes') > -10) && (date.getDateDiff(datenow, mydate_end, 'minutes') < 0)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,12 +7,16 @@
|
||||
|
||||
<div class="flex flex-center">
|
||||
|
||||
<div class="column animazione">
|
||||
<div class="row animazione justify-center q-gutter-md">
|
||||
<q-btn v-if="showzoom" size="md" type="a" :href="tools.getLinkZoom()"
|
||||
target="_blank" rounded color="white" text-color="primary" icon="fas fa-video" :label="$t('steps.entra_zoom')">
|
||||
</q-btn>
|
||||
|
||||
<transition-group name="fade" mode="out-in"
|
||||
appear
|
||||
enter-active-class="animazione fadeIn"
|
||||
leave-active-class="animazione fadeOut">
|
||||
<q-item v-for="(confer, index) in listacalzoom" :key="confer._id" class="q-mb-xs animated" v-ripple>
|
||||
<q-item v-for="(confer, index) in listacalzoom" :key="confer._id" class="q-mb-xs animated clBorderZoom q-pa-sm" v-ripple>
|
||||
|
||||
<q-item-section avatar>
|
||||
<q-avatar v-if="tools.geticon(confer.lang)" :class="tools.geticon(confer.lang)" size="xs">
|
||||
|
||||
@@ -15,7 +15,6 @@ import MixinBase from '../../mixins/mixin-base'
|
||||
})
|
||||
|
||||
export default class CProfile extends MixinBase {
|
||||
@Prop({ required: true }) public mythis: any
|
||||
public $v
|
||||
public $t: any
|
||||
|
||||
|
||||
16
src/components/CRequisito/CRequisito.scss
Normal file
16
src/components/CRequisito/CRequisito.scss
Normal file
@@ -0,0 +1,16 @@
|
||||
.req_icon{
|
||||
flex: 0 0 40px;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.req_text{
|
||||
flex: 1 1;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.response {
|
||||
flex: 0 0 40px;
|
||||
font-weight: bold;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
29
src/components/CRequisito/CRequisito.ts
Normal file
29
src/components/CRequisito/CRequisito.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import Vue from 'vue'
|
||||
import { Component, Prop, Watch } from 'vue-property-decorator'
|
||||
|
||||
import { tools } from '../../store/Modules/tools'
|
||||
import { toolsext } from '@src/store/Modules/toolsext'
|
||||
import MixinBase from '@src/mixins/mixin-base'
|
||||
|
||||
@Component({
|
||||
|
||||
})
|
||||
|
||||
export default class CRequisito extends MixinBase {
|
||||
@Prop({ required: true }) public icon: string
|
||||
@Prop({ required: true }) public text: string
|
||||
@Prop({ required: true }) public isok: boolean
|
||||
@Prop({ required: true }) public info: string
|
||||
|
||||
get checkifok() {
|
||||
return this.isok ? 'green' : 'red'
|
||||
}
|
||||
|
||||
get getris() {
|
||||
return (this.isok) ? this.$t('dialog.yes') : this.$t('dialog.no')
|
||||
}
|
||||
|
||||
get iconris() {
|
||||
return (this.isok) ? 'fas fa-check' : 'fas fa-exclamation-triangle'
|
||||
}
|
||||
}
|
||||
14
src/components/CRequisito/CRequisito.vue
Normal file
14
src/components/CRequisito/CRequisito.vue
Normal file
@@ -0,0 +1,14 @@
|
||||
<template>
|
||||
<div class="row no-wrap clBorderSmall">
|
||||
<q-icon size="sm" :name="icon" color="blue" class="column req_icon"></q-icon>
|
||||
<q-chip dense color="white" text-color="blue" class="q-ml-md column req_text">{{text}}</q-chip>
|
||||
<q-icon size="sm" :name="iconris" :color="checkifok" class="column req_icon"></q-icon>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CRequisito.ts">
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './CRequisito.scss';
|
||||
</style>
|
||||
1
src/components/CRequisito/index.ts
Normal file
1
src/components/CRequisito/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export {default as CRequisito} from './CRequisito.vue'
|
||||
@@ -25,7 +25,6 @@ import { static_data } from '../../db/static_data'
|
||||
})
|
||||
|
||||
export default class CSignIn extends Vue {
|
||||
@Prop({ required: true }) public mythis: any
|
||||
public $v
|
||||
public loading: boolean
|
||||
public $t: any
|
||||
|
||||
@@ -14,7 +14,6 @@ import { CCopyBtn } from '../CCopyBtn'
|
||||
import { CVideo } from '../CVideo'
|
||||
import { CRequisiti } from '../CRequisiti'
|
||||
|
||||
|
||||
@Component({
|
||||
components: { CTitleBanner, CMyFieldDb, CMyInnerPage, CVerifyTelegram, CVerifyEmail, CCopyBtn, CVideo, CRequisiti }
|
||||
})
|
||||
@@ -241,7 +240,7 @@ export default class CStatus extends MixinBase {
|
||||
public getnuminvitati_attivi() {
|
||||
if (UserStore.state.my)
|
||||
if (UserStore.state.my.calcstat)
|
||||
console.log('numinvitati', UserStore.state.my.calcstat)
|
||||
// console.log('numinvitati', UserStore.state.my.calcstat)
|
||||
return UserStore.state.my.calcstat.numinvitati_attivi
|
||||
|
||||
return 0
|
||||
|
||||
@@ -213,6 +213,10 @@
|
||||
|
||||
</CCopyBtn>
|
||||
|
||||
<CCopyBtn :title="$t('reg.linkzoom')" :texttocopy="tools.getLinkZoom()">
|
||||
|
||||
</CCopyBtn>
|
||||
|
||||
<q-btn class="q-mb-md" rounded size="md" color="primary" to="/dashboard"
|
||||
:label="$t('pages.dashboard')"></q-btn>
|
||||
|
||||
|
||||
@@ -5,3 +5,7 @@
|
||||
border-radius: 1rem;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.notreg {
|
||||
color: red;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,12 @@ export default class CUserBadge extends MixinBase {
|
||||
public $t: any
|
||||
|
||||
public getletter(user) {
|
||||
return user.name[0].toUpperCase()
|
||||
if (!user)
|
||||
return ''
|
||||
if (!!user.name[0])
|
||||
return user.name[0].toUpperCase()
|
||||
else
|
||||
return ''
|
||||
}
|
||||
|
||||
public getnumber(user, index) {
|
||||
@@ -32,11 +37,21 @@ export default class CUserBadge extends MixinBase {
|
||||
}
|
||||
|
||||
public getstatecolor(user) {
|
||||
return (user.profile.teleg_id) ? 'green' : 'gray'
|
||||
if (user.profile)
|
||||
return (user.profile.teleg_id) ? 'green' : 'grey'
|
||||
else
|
||||
return 'grey'
|
||||
}
|
||||
|
||||
public getindorder(user) {
|
||||
if (!!user.ind_order)
|
||||
return ' (' + user.ind_order + ')'
|
||||
else
|
||||
return ''
|
||||
}
|
||||
|
||||
public getmoneycolor(user) {
|
||||
return (user.made_gift) ? 'green' : 'gray'
|
||||
return (user.made_gift) ? 'green' : 'grey'
|
||||
}
|
||||
|
||||
get madegift() {
|
||||
@@ -44,15 +59,37 @@ export default class CUserBadge extends MixinBase {
|
||||
}
|
||||
|
||||
public getzoomcolor(user) {
|
||||
return (user.profile.saw_zoom_presentation) ? 'green' : 'gray'
|
||||
if (user.profile)
|
||||
return (user.profile.saw_zoom_presentation) ? 'green' : 'grey'
|
||||
else
|
||||
return 'grey'
|
||||
}
|
||||
|
||||
public get2peoplecolor() {
|
||||
return (this.getnumpeople() >= 2) ? 'green' : 'gray'
|
||||
public get2peoplecolor(user) {
|
||||
if (this.isextralist(user))
|
||||
return 'grey'
|
||||
else
|
||||
return (this.getnumpeople() >= 2) ? 'green' : 'grey'
|
||||
}
|
||||
|
||||
public isextralist(user) {
|
||||
return !!user.cell_complete
|
||||
}
|
||||
|
||||
public getnumpeople() {
|
||||
return this.numpeople
|
||||
}
|
||||
|
||||
public getusername(user) {
|
||||
if (this.isextralist(user)) {
|
||||
return user.cell_complete
|
||||
} else {
|
||||
return user.username
|
||||
}
|
||||
}
|
||||
|
||||
public execclick(user) {
|
||||
this.$emit('myclick', user)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div>
|
||||
<q-item class="q-my-sm q-pa-sm myuserbadge shadow-5" clickable v-ripple>
|
||||
<div v-if="!!user">
|
||||
<q-item class="q-my-sm q-pa-sm myuserbadge shadow-5" clickable v-ripple @click="execclick(user)">
|
||||
<q-item-section avatar>
|
||||
<div class="row" style="margin-left: 4px;">
|
||||
<q-avatar v-if="yourinvite" :text-color="mycolor" size="md">
|
||||
@@ -13,23 +13,31 @@
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section>
|
||||
<q-item-label>{{ user.name }} {{ user.surname }}<br>
|
||||
<span class="text-grey">({{ user.username }})</span>
|
||||
<q-item-label>{{ user.name }} {{ user.surname }} {{ getindorder(user) }}<br>
|
||||
<span class="text-grey">({{ getusername(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>-->
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section side>
|
||||
<div class="row q-gutter-xs justify-center items-center">
|
||||
<q-icon size="xs" name="fab fa-telegram" :color="getstatecolor(user)"></q-icon>
|
||||
<q-icon size="xs" name="fas fa-video" :color="getzoomcolor(user)"></q-icon>
|
||||
<q-btn v-if="isextralist(user)" fab-mini
|
||||
icon="fab fa-whatsapp"
|
||||
color="green" type="a"
|
||||
size="sm"
|
||||
:href="tools.getHttpForWhatsapp(user.cell_complete)" target="__blank">
|
||||
</q-btn>
|
||||
<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-avatar :text-color="mycolor" size="md">
|
||||
{{ getnumpeople() }}
|
||||
</q-avatar>
|
||||
<q-icon size="xs" name="fas fa-user-friends" :color="get2peoplecolor()"></q-icon>
|
||||
<q-icon size="xs" name="fas fa-user-friends" :color="get2peoplecolor(user)"></q-icon>
|
||||
</div>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<div class="subtitle_small text-blue" v-html="getvideotit"></div>
|
||||
<div class="">
|
||||
<iframe
|
||||
:width="tools.getwidthscale(mythis(), getValDb('YT_W', false), 800)"
|
||||
:height="tools.getheightbywidth(mythis(), getValDb('YT_W', false), getValDb('YT_H', false), 800)"
|
||||
:width="tools.getwidthscale(mythis, getValDb('YT_W', false), 800)"
|
||||
:height="tools.getheightbywidth(mythis, getValDb('YT_W', false), getValDb('YT_H', false), 800)"
|
||||
:src="tools.getvideobyidyoutube(myvideokey)"
|
||||
frameborder="0"
|
||||
allowfullscreen
|
||||
|
||||
@@ -361,7 +361,7 @@ export default class Header extends Vue {
|
||||
tools.showNotif(this.$q, this.$t(msgcode))
|
||||
}
|
||||
|
||||
public mythis() {
|
||||
get mythis() {
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
@@ -51,3 +51,5 @@ export * from './CVerifyEmail'
|
||||
export * from './CLineChart'
|
||||
export * from './CUserBadge'
|
||||
export * from './CMyDashboard'
|
||||
export * from './CLegenda'
|
||||
export * from './CRequisito'
|
||||
|
||||
Reference in New Issue
Block a user