Aggiungere "San Marino" e suoi comuni

Corretto Filtro a mano della ricerca
Creare filtro ricerca per trovare la sottocategoria o categoria -> Skill e SubSkill
This commit is contained in:
paoloar77
2022-02-12 02:19:49 +01:00
parent 7c0c2fef39
commit b21a7d1885
63 changed files with 541 additions and 752 deletions

View File

@@ -16,5 +16,5 @@ export class Patterns {
*
* 8 to 20 characters string with at least one digit, one upper case letter, one lower case letter and one special symbol
*/
public static Password = /^((?=.*[A-Z])(?=.*\d)(?=.*[@#*=])(?!.* ).{8,30})/i
public static Password = /^((?=.*[A-Z])(?=.*\d)(?!.* ).{8,30})/i
}

View File

@@ -84,12 +84,14 @@ export const shared_consts = {
PARAM_SHOW_PROVINCE: 1,
TABLES_ID_NUMBER: ['permissions', 'levels', 'statusSkills', 'sectors', 'catgrps', 'skills', 'subskills', 'cities', 'provinces', 'myskills', 'mygroups'],
TABLES_ID_NUMBER: ['permissions', 'levels', 'adtypes', 'statusSkills', 'sectors', 'catgrps', 'skills', 'subskills', 'cities', 'provinces', 'myskills', 'mygroups'],
TABLES_USER_ID: ['myskills'],
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybots'],
TABLES_FINDER: ['myskills', 'mygroups'],
TABLES_PERM_CHANGE_FOR_USERS: ['myskills'],
TABLES_VISU_LISTA_USER: ['myskills', 'users'],
TABLES_NOT_SHOW_IF_USERNAME: ['myskills'],
VISIB_ALL: 0,
VISIB_ONLYIF_VERIFIED: 1,
@@ -459,6 +461,10 @@ export const shared_consts = {
label: 'Reggio Emilia',
value: 'RE',
},
{
label: 'Repubblica di San Marino',
value: 'RSM',
},
{
label: 'Rieti',
value: 'RI',

View File

@@ -90,6 +90,17 @@ export default defineComponent({
searchList.value = [
{
label: 'Offro/Cerco',
table: 'adtypes',
key: 'adType',
value: tools.getCookie(tools.COOK_SEARCH + 'adtypes', costanti.FILTER_TUTTI),
arrvalue: [],
addall: true,
type: costanti.FieldType.select,
filter: null,
useinput: false,
},
{
label: 'Settore',
table: 'sectors',
@@ -204,27 +215,6 @@ export default defineComponent({
}
async function createNewRecordInUserTable() {
console.log('createNewRecordInUserTable')
let mydata = {
table: mytable,
data: {
userId: userStore.my._id,
data: {},
field: 'myskills'
}
};
if (props.defaultnewrec) {
mydata.data.data = props.defaultnewrec
}
console.log('mydata', mydata)
const data = await globalStore.saveSubRec(mydata)
}
function getdefaultnewrec(): IMySkill {
return {
_id: 0,
@@ -235,9 +225,10 @@ export default defineComponent({
idContribType: [],
idCity: [],
NumLevel: 0,
adType: 0,
photos: [],
note: '',
subTitle: '',
descr: '',
}
}
@@ -263,13 +254,15 @@ export default defineComponent({
idSector: 1,
idSkill: 1,
idSubSkill: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
subTitle: 1,
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,

View File

@@ -18,7 +18,9 @@
prop_mytitle=""
:prop_mycolumns="colmySkills"
prop_colkey="idSkill"
col_title="subTitle"
col_title="descr"
col_footer="idCity"
col_tabfooter="mycities"
:vertical="-1"
:nodataLabel="idSector > 0 ? 'Nessuna Competenza trovata': 'Selezionare un Settore'"
:prop_search="true"

View File

@@ -18,7 +18,6 @@
</div>
</q-card>
<div v-if="!isInModif && getlistimages().length <= 0 && imagebak">
<q-card :class="getclass()" @click="ImgFullScreen(mygallery)">
<q-img
:src="imagebak" :class="getclimg()">

View File

@@ -20,6 +20,7 @@ import { lists } from '@store/Modules/lists'
import { IParamsQuery } from 'model'
import { CMyPopupEdit } from '../CMyPopupEdit'
import { CMyFriends } from '../CMyFriends'
import { CMyUser } from '../CMyUser'
import { CMyGroups } from '../CMyGroups'
import { CMyFieldDb } from '../CMyFieldDb'
import { CMySelect } from '../CMySelect'
@@ -172,6 +173,16 @@ export default defineComponent({
required: false,
default: '',
},
col_footer: {
type: String,
required: false,
default: '',
},
col_tabfooter: {
type: String,
required: false,
default: '',
},
showCol: {
type: Boolean,
required: false,
@@ -193,7 +204,7 @@ export default defineComponent({
default: '',
},
},
components: { CMyPopupEdit, CTitleBanner, CMyFieldDb, CMySelect, CMyFriends, CMyGroups },
components: { CMyPopupEdit, CTitleBanner, CMyFieldDb, CMySelect, CMyFriends, CMyGroups, CMyUser },
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
@@ -342,6 +353,8 @@ export default defineComponent({
if (userId === userStore.my._id) {
// E' il mio, quindi modificalo
return true
} else {
return false
}
} else {
return false
@@ -878,9 +891,7 @@ export default defineComponent({
pagination.value = props.prop_pagination
myvertical.value = props.vertical
if (props.finder) {
myvertical.value = tools.getCookie('myv', 0)
}
myvertical.value = tools.getCookie('myv_' + props.prop_mytable, props.vertical)
}
function mounted() {
@@ -1019,7 +1030,7 @@ export default defineComponent({
function checkIfColShow(field: string | undefined) {
let vis = true
if (props.prop_mytable === 'myskills' && !props.prop_search) {
if (shared_consts.TABLES_NOT_SHOW_IF_USERNAME.includes(props.prop_mytable) && !props.prop_search) {
if (field === 'username') {
vis = false
}
@@ -1333,6 +1344,17 @@ export default defineComponent({
return ''
}
function getLabelFooterByRow(row: any) {
if (props.col_footer) {
let mycol = fieldsTable.getColByTable(tablesel.value, props.col_footer)
if (mycol) {
return tools.getValueByRemoteField(mycol, row, row[props.col_footer], props.col_tabfooter)
}
}
return ''
}
// onMounted(mounted)
created()
@@ -1413,6 +1435,7 @@ export default defineComponent({
showColCheck,
getValueExtra,
shared_consts,
getLabelFooterByRow,
}
}
})

View File

@@ -247,13 +247,13 @@
<div v-if="choose_visutype" class="">
<q-radio v-model="myvertical" :val="2" label="Lista"
@update:model-value="tools.setCookie('myv', myvertical) "/>
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
<q-radio v-if="mytable === toolsext.TABMYGROUPS" v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_GROUP" label="Scheda"
@update:model-value="tools.setCookie('myv', myvertical) "/>
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
<q-radio v-else v-model="myvertical" :val="costanti.VISUTABLE_SCHEDA_USER" label="Scheda"
@update:model-value="tools.setCookie('myv', myvertical) "/>
<q-radio v-model="myvertical" :val="0" label="Tabella"
@update:model-value="tools.setCookie('myv', myvertical) "/>
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
<q-radio v-if="$q.screen.gt.xs" v-model="myvertical" :val="0" label="Tabella"
@update:model-value="tools.setCookie('myv_' + prop_mytable, myvertical) "/>
</div>
</template>
@@ -303,8 +303,18 @@
</template>
<template v-slot:item="props">
<div v-if="((showType === costanti.SHOW_USERINFO) && myvertical !== costanti.VISUTABLE_SCHEDA_USER) || ((myvertical === 2) && (tablesel === 'users' || tablesel === 'myskills'))" class="fill-all-width">
<div v-if="((showType === costanti.SHOW_USERINFO) && myvertical !== costanti.VISUTABLE_SCHEDA_USER) || ((myvertical === 2) && (shared_consts.TABLES_VISU_LISTA_USER.includes(tablesel)))" class="fill-all-width">
<div>
<CMyUser
:mycontact="props.row"
:visu="visufind"
:groupname="extrafield"
:labelextra="col_title ? props.row[col_title] : ''"
:labelFooter="col_footer ? getLabelFooterByRow(props.row) : ''"
>
</CMyUser>
<!--
<CMyFriends
v-model="filter"
:finder="false"
@@ -313,6 +323,8 @@
:groupname="extrafield"
:labelextra="props.row[col_title]"
/>
-->
<q-separator></q-separator>
</div>
</div>
@@ -330,12 +342,14 @@
</div>
<div
v-else
class="q-pa-xs col-xs-12 col-sm-6 col-md-4 col-lg-3 grid-style-transition"
class="q-pa-xs col-xs-12 col-sm-6 col-md-4 col-lg-3 "
:style="props.selected ? 'transform: scale(0.95);' : ''"
>
<q-card :class="props.selected ? 'bg-grey-2 my-card' : 'my-card'">
<q-bar v-if="!visuinpage" dense class="bg-primary text-white full-height">
<span class=""> {{ props.row[col_title] }} </span>
<q-card :class="props.selected ? 'bg-grey-2 my-card-withshadow no-padding' : 'my-card-withshadow no-padding'"
style="background: radial-gradient(circle, #ffffff 0%, #bbddff 100%)">
<q-bar v-if="!visuinpage && canModifyThisRec(props.row)" dense class="bg-primary text-white full-height">
<span v-if="props.row['username']">{{props.row['username']}}</span>
<q-space/>
<q-btn
@@ -352,7 +366,8 @@
{{ props.row[col_title] }}
</q-toolbar-title>
</q-toolbar>-->
<q-card-section class="inset-shadow">
<q-card-section class="">
<q-list dense>
<div v-for="col in mycolumns" :key="col.name">
<q-item v-if="showColCheck(col, tools.TIPOVIS_SHOW_RECORD, false, tools.getValue(props.row,col.field, col.subfield))"
@@ -438,7 +453,7 @@
</div>
</div>
</div>
<q-dialog v-model="newRecordBool" @hide="hidewindow">
<q-dialog v-model="newRecordBool" @hide="hidewindow" :maximized="true">
<q-card class="dialog_card">
<q-bar dense class="bg-primary text-white">
Nuovo:
@@ -483,8 +498,7 @@
<q-dialog v-model="editRecordBool">
<q-card class="dialog_card">
<q-bar dense class="bg-primary text-white full-height">
<span v-if="mytitle">{{ mytitle }}</span>
<span v-else>{{ recModif[col_title] }}</span>
<span class="ellipsis">{{ recModif[col_title] }}</span>
<q-space/>
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-bar>

View File

@@ -60,8 +60,8 @@ export default defineComponent({
const toolbarcomp = ref([
['left', 'center', 'right', 'justify'],
['bold', 'italic', 'underline', 'strike'],
['token', 'hr', 'link', 'custom_btn'],
['print', 'fullscreen'], [
['token', 'hr', 'link', 'custom_btn', 'print', 'fullscreen'],
[
{
label: $q.lang.editor.formatting,
icon: $q.iconSet.editor.formatting,

View File

@@ -53,7 +53,7 @@
<q-btn v-if="col.tipovisu === costanti.TipoVisu.LINK && myvalue"
type="a" rounded size="md"
:class="{disabled: disable }"
color="white" text-color="blue" :icon="`img:`+userStore.getImgByUsername(myvalue)" :to="col.link.replace(col.name, myvalue)"
color="white" text-color="blue" :icon="`img:`+userStore.getImgUserByUsername(myvalue)" :to="col.link.replace(col.name, myvalue)"
:label="myvalue"
>
</q-btn>
@@ -108,7 +108,7 @@
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.listimages" style="text-align: center;">
<CGallery
:imagebak="col.showpicprofile_ifnotset ? userStore.getImgByProfile(row) : ''"
:imagebak="col.showpicprofile_ifnotset ? userStore.getImgByProfile(row, true) : ''"
:title="getTitleGall()"
:directory="getDirectoryGall()"
:imgGall="myvalue"
@@ -122,7 +122,7 @@
<div v-if="canEdit">
{{ $t('reg.photo') }}
<CGallery
:imagebak="col.showpicprofile_ifnotset ? userStore.getImgByProfile(row['profile']) : ''"
:imagebak="col.showpicprofile_ifnotset ? userStore.getImgByProfile(row['profile'], true) : ''"
:title="getTitleGall()"
:directory="getDirectoryGall()"
:imgGall="[{ imagefile: myvalue }]"

View File

@@ -35,6 +35,16 @@ export default defineComponent({
type: String,
required: false,
default: '',
},
labelFooter: {
type: String,
required: false,
default: '',
},
notsetcmd: {
type: Boolean,
required: false,
default: false,
}
},
@@ -79,7 +89,11 @@ export default defineComponent({
}
function setCmd($q: any, cmd: number, myusername: string, value: any, groupname: string) {
emit('setCmd', $q, cmd, myusername, value, groupname)
if (props.notsetcmd) {
tools.setCmd($q, cmd, myusername, value, groupname)
}else {
emit('setCmd', $q, cmd, myusername, value, groupname)
}
}
onMounted(mounted)

View File

@@ -12,6 +12,8 @@
<q-item-label>{{ contact.username }} <span v-if="contact.name">({{ contact.name }} {{ contact.surname }})</span>
</q-item-label>
<q-item-label v-if="contact.profile" caption lines="1"><em>{{ contact.profile.qualifica }}</em></q-item-label>
<q-item-label caption lines="1"></q-item-label>
<q-item-label v-if="labelFooter" lines="1"><em>{{ labelFooter }}</em></q-item-label>
</q-item-section>
<q-item-section side v-if="visu === costanti.FRIENDS">

View File

@@ -44,26 +44,6 @@ export default defineComponent({
const globalStore = useGlobalStore()
const userStore = useUserStore()
async function createNewRecordInUserTable() {
console.log('createNewRecordInUserTable')
let mydata = {
table: mytable,
data: {
userId: userStore.my._id,
data: {},
field: 'myskills'
}
}
if (props.defaultnewrec) {
mydata.data.data = props.defaultnewrec
}
console.log('mydata', mydata)
const data = await globalStore.saveSubRec(mydata)
}
function getdefaultnewrec(): IMySkill {
return {
@@ -75,9 +55,10 @@ export default defineComponent({
idContribType: [],
idCity: [],
NumLevel: 0,
adType: 0,
photos: [],
note: '',
subTitle: '',
descr: '',
}
}
@@ -106,13 +87,15 @@ export default defineComponent({
idSector: 1,
idSkill: 1,
idSubSkill: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
subTitle: 1,
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,
@@ -137,13 +120,15 @@ export default defineComponent({
idSector: 1,
idSkill: 1,
idSubSkill: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
subTitle: 1,
descr: 1,
date_created: 1,
date_updated: 1,
comune: 1,

View File

@@ -7,7 +7,8 @@
prop_mytitle=""
:prop_mycolumns="colmySkills"
prop_colkey="idSkill"
col_title="subTitle"
col_title="descr"
col_footer="idCity"
:vertical="-1"
:choose_visutype="!visuinpage"
:butt_modif_new="!visuinpage"

View File

@@ -0,0 +1,30 @@
import { computed, defineComponent, PropType, ref } from 'vue'
import { ICalcStat, IOperators } from '../../model'
import { useUserStore } from '../../store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '../../store/globalStore'
import { useI18n } from '../../boot/i18n'
import { CTitleBanner } from '@/components/CTitleBanner'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'CUserNonVerif',
components: {
CTitleBanner
},
props: {
},
setup(props) {
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const { t } = useI18n();
return {
userStore,
tools,
}
},
})

View File

@@ -0,0 +1,14 @@
<template>
<div class="q-ma-md">
<CTitleBanner title="Verifica">
La verifica è in corso. Ti arriverà un messaggio dal Bot quando sarai abilitato.
</CTitleBanner>
</div>
</template>
<script lang="ts" src="./CUserNonVerif.ts">
</script>
<style lang="scss" scoped>
@import './CUserNonVerif.scss';
</style>

View File

@@ -0,0 +1 @@
export {default as CUserNonVerif} from './CUserNonVerif.vue'

View File

@@ -80,6 +80,7 @@ export default defineComponent({
getNumMsg,
getNumMsgUnread,
getMsgText,
isVerified,
paotest } = MixinUsers();
function isonline() {
@@ -382,10 +383,6 @@ export default defineComponent({
return userStore.isLogged
}
function isEmailVerified() {
return userStore.my.verified_email
}
function clickregister() {
rightDrawerOpen.value = false
@@ -445,7 +442,6 @@ export default defineComponent({
lang,
langshort,
isLogged,
isEmailVerified,
getnumOrdersCart,
t,
isonline,
@@ -485,6 +481,7 @@ export default defineComponent({
paotest,
logoutHandler,
isUserNotAuth,
isVerified,
}
},

View File

@@ -129,11 +129,18 @@
<q-img :src="getMyImgforIcon()" :alt="Username()" img-class=""/>
</q-avatar>-->
<q-avatar v-if="static_data.functionality.SHOW_USER_MENU && isLogged()"
<q-avatar v-if="static_data.functionality.SHOW_USER_MENU && isLogged() && getMyImg()"
size="36px" class="center_img cursor-pointer"
@click="rightDrawerOpen = !rightDrawerOpen">
<q-img ratio="1" fit="conver" :src="getMyImg()" :alt="Username()" img-class="imgprofile_small" stretch="false" />
<q-img ratio="1" fit="conver" :src="getMyImg()" :alt="Username()" img-class="imgprofile_small" stretch="false"
placeholder-src="https://placeimg.com/36/36/nature"/>
</q-avatar>
<q-btn
v-else
class="q-mx-xs iconprofile_small" round dense flat
@click="rightDrawerOpen = !rightDrawerOpen" :icon="getMyImgforIcon()" :color="getcolormenu()">
</q-btn>
<!--<q-btn
class="q-mx-xs iconprofile_small" v-if="static_data.functionality.SHOW_USER_MENU && isLogged()" round dense flat
@@ -188,7 +195,7 @@
dense flat round icon="close" @click="rightDrawerOpen = !rightDrawerOpen">
</q-btn>
<div v-if="isLogged()" class="text-weight-bold text-user">{{ Username() }} - {{ myName() }}
<div v-if="isLogged()" class="text-weight-bold text-user">{{ Username() }}<span v-if="myName()"> - {{ myName() }}</span>
</div>
<div class="row justify-evenly q-pa-xs-sm">
<div v-if="isLogged() && isAdmin()" class="text-weight-bold text-user bg-red q-px-xs">Admin</div>
@@ -203,7 +210,7 @@
{{ t('user.loggati') }}
</div>
<div v-if="isLogged() && !isEmailVerified()" class="text-verified">{{
<div v-if="isLogged() && !isVerified()" class="text-verified">{{
t('components.authentication.email_verification.verify_email')
}}
</div>

View File

@@ -280,6 +280,14 @@ $heightBtn: 100%;
box-shadow: none;
}
.my-card-withshadow {
width: 100%;
max-width: 300px;
min-width: 300px;
padding: 1rem 1rem;
}
.myimgtitle {
margin-left: auto;
margin-right: auto;
@@ -936,3 +944,7 @@ $heightBtn: 100%;
display: block;
}
}
.no-padding{
padding: 0 !important;
}

View File

@@ -102,7 +102,7 @@ const msg_website = {
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li><strong>Condividendolo</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>Rispondendo ai <strong>Sondaggi Popolari</strong> e lasciando <strong>Feedback</strong></li>'
+ '<li>Tramite una piccola <strong>donazione</strong> per le spese dei Server<br>'
+ '<li>Tramite una <strong>donazione</strong> (<strong>anche 1€</strong> ) per le spese.<br>'
+ '</ul>'
+ 'Vedo un <strong>futuro</strong> dove non si utilizzerà più denaro. Dove le persone si <strong>aiuteranno</strong> a vicenda e non avranno bisogno di "possedere" cose, ma le <strong>condivideranno</strong> con gli altri.<br>',
},

View File

@@ -27,6 +27,10 @@ const msg_website_es = {
nave: 'Nave',
testimonial: 'Opiniones',
Test: 'Test',
chisiamo: 'Chi Siamo',
linkamici: 'Link Amici',
dovesiamo: 'Dove Siamo',
calendarioeventi: 'Calendario Eventi',
Category: 'Categorie',
Admin: 'Admin',
Test1: 'Test1',

View File

@@ -1,8 +1,8 @@
const msg_website_it = {
ws: {
sitename: 'FreePlanet',
siteshortname: 'FreePlanet',
botname: 'il Bot di FreePlanet',
sitename: 'PopoloDelNuovoMondo',
siteshortname: 'PDNM',
botname: 'il Bot di PdNM',
},
products: {
quantity: 'Quantità',
@@ -208,7 +208,7 @@ const msg_website_it = {
descr: '<ul class="mylist" style="padding-left: 20px;">'
+ '<li><strong>Condividendolo</strong> a tutti coloro che vogliono far parte insieme della crescita e sviluppo di una Nuova Era</li>'
+ '<li>Rispondendo ai <strong>Sondaggi Popolari</strong> e lasciando <strong>Feedback</strong></li>'
+ '<li>Tramite una piccola <strong>donazione</strong> per le spese dei Server.<br>'
+ '<li>Tramite una <strong>donazione</strong> (<strong>anche 1€</strong> ) per le spese.<br>'
+ '</ul>'
+ 'Vedo un <strong>futuro</strong> dove non si utilizzerà più denaro. Dove le persone si <strong>aiuteranno</strong> a vicenda e non avranno bisogno di "possedere" cose, ma le <strong>condivideranno</strong> con gli altri.<br>',
},

View File

@@ -20,7 +20,7 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true,
SHOW_NAMESURNAME: false,
ENABLE_GROUPS: false,
}
// const SHOW_PROJINTHEMENU = false
@@ -374,12 +374,12 @@ const baseroutes: IListRoutes[] = [
path: '/',
materialIcon: 'home',
name: 'pages.home',
component: () => import('@src/root/home_freeplanet/home_freeplanet.vue'),
component: () => import('@src/root/home_pdnm/home_pdnm.vue'),
reqauth: false,
inmenu: true,
infooter: true,
},
{
/*{
active: true,
order: 100,
path: '/presentazione',
@@ -389,7 +389,7 @@ const baseroutes: IListRoutes[] = [
reqauth: false,
inmenu: true,
infooter: true,
},
},*/
{
active: true,
order: 120,
@@ -424,7 +424,7 @@ const baseroutes: IListRoutes[] = [
infooter: true,
},
{
active: true,
active: functionality.ENABLE_GROUPS,
order: 132,
path: '/groups',
materialIcon: 'fas fa-users',
@@ -447,7 +447,7 @@ const baseroutes: IListRoutes[] = [
},
{
active: true,
order: 135,
order: 136,
path: '/grp/:groupname',
materialIcon: 'fas fa-user',
name: 'proj.group2',
@@ -628,8 +628,8 @@ const baseroutes: IListRoutes[] = [
const arrLangUsed = [
'it',
// 'enUs',
// 'es',
'enUs',
'es',
]
const lang_available: ILang[] = [

View File

@@ -113,7 +113,7 @@ export default function () {
function Verificato() {
const userStore = useUserStore()
return userStore.my.verified_email && userStore.my.verified_by_aportador
return isVerified() && userStore.my.verified_by_aportador
}
function paotest() {
@@ -155,6 +155,20 @@ export default function () {
return ris
}
function isEmailVerified() {
const userStore = useUserStore()
return userStore.my.verified_email
}
function TelegVerificato(): boolean {
const userStore = useUserStore()
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function isVerified() {
return TelegVerificato()
}
return {
getUsernameChatByMsg,
getMyUsername,
@@ -175,6 +189,9 @@ export default function () {
getNumMsg,
getNumMsgUnread,
getMsgText,
isEmailVerified,
TelegVerificato,
isVerified,
paotest,
}
}

View File

@@ -257,6 +257,7 @@ export interface IGlobalState {
URL_RITORNA: string
URL_RESTORE: string
levels: ILevel[],
adtypes: IAdType[],
skills: ISkill[],
subSkills: ISubSkill[],
statusSkills: IStatusSkill[],
@@ -660,6 +661,11 @@ export interface ILevel {
years_of_exp: number
}
export interface IAdType {
_id: number
descr: string
}
export interface ICity {
_id: number
istat: string
@@ -677,8 +683,9 @@ export interface IMySkill {
idCity: number[]
photos: IGallery[]
NumLevel: number
adType: number
note: string
subTitle: string
descr: string
date_created?: Date,
date_updated?: Date,
}

View File

@@ -7,6 +7,7 @@ import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CDashboard } from '@/components/CDashboard'
import { CChartMap } from '@src/components/CChartMap'
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -14,28 +15,22 @@ import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard },
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
function isEmailVerified() {
return userStore.my.verified_email
}
const { isEmailVerified, TelegVerificato } = MixinUsers()
function TelegCode() {
return userStore.my.profile.teleg_checkcode
}
function TelegVerificato(): boolean {
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function openrighttoolbar() {
globalStore.rightDrawerOpen = true
}

View File

@@ -13,14 +13,14 @@
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<div v-if="isUserOk()">
<CFinder>
@@ -30,6 +30,9 @@
<CDashboard></CDashboard>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
<div v-else>

View File

@@ -7,6 +7,7 @@ import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CChartMap } from '@src/components/CChartMap'
import { CDashboard } from '@/components/CDashboard'
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -14,19 +15,17 @@ import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard },
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
function isEmailVerified() {
return userStore.my.verified_email
}
const { isEmailVerified } = MixinUsers()
function TelegCode() {
return userStore.my.profile.teleg_checkcode

View File

@@ -13,14 +13,14 @@
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<CVerifyEmail v-if="!isEmailVerified() && !TelegVerificato()">
</CVerifyEmail>
<div v-if="isUserOk()">
<div v-if="isUserOk()">
@@ -32,6 +32,9 @@
</div>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
<div v-else>

View File

@@ -7,6 +7,7 @@ import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CChartMap } from '@src/components/CChartMap'
import { CDashboard } from '@/components/CDashboard'
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -14,28 +15,23 @@ import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'Home',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard },
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
const { isEmailVerified, TelegVerificato } = MixinUsers()
function isEmailVerified() {
return userStore.my.verified_email
}
function TelegCode() {
return userStore.my.profile.teleg_checkcode
}
function TelegVerificato(): boolean {
return userStore.my.profile ? userStore.my.profile.teleg_id! > 0 : false
}
function openrighttoolbar() {
globalStore.rightDrawerOpen = true
}

View File

@@ -12,14 +12,12 @@
<!--<CMapsEsempio></CMapsEsempio>-->
<div v-if="isLogged()">
<CVerifyEmail v-if="!isEmailVerified()">
</CVerifyEmail>
<CVerifyTelegram v-if="TelegCode() || !TelegVerificato()">
</CVerifyTelegram>
<CVerifyEmail v-if="!isEmailVerified() && !TelegVerificato()">
</CVerifyEmail>
<div v-if="isUserOk()">
@@ -39,6 +37,9 @@
</template>
</q-banner>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
<div v-else>

View File

@@ -31,7 +31,7 @@ const msg_it = {
otherpages: {
product: 'Prodotto',
sito_offline: 'Sito in Aggiornamento',
modifprof: 'Modifica Profilo',
modifprof: 'Modifica',
modifgrp: 'Modifica Gruppo',
biografia: 'Biografia',
qualifica: 'Qualifica (in breve)',

View File

@@ -316,6 +316,11 @@ export const colTableStorehouse = [
AddCol(DuplicateRec),
]
export const colAdType = [
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descr', label_trans: 'store.description' }),
]
export const colSectors = [
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descr', label_trans: 'store.description' }),
@@ -502,7 +507,7 @@ export const colmyUserGroup = [
noshowlabel: true,
icon: 'fas fa-map-marker-alt',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
remote_table: 'comune',
remote_table: 'mycities',
remote_key: '_id',
remote_field: 'comune',
}),
@@ -523,8 +528,18 @@ export const colmySkills = [
}), */
//AddCol({ name: 'name', label_trans: 'reg.name', fieldtype: costanti.FieldType.string }),
//AddCol({ name: 'surname', label_trans: 'reg.surname', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'subTitle', label_trans: 'event.title', fieldtype: costanti.FieldType.string,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit , maxlength: 70, noshowlabel: true }),
// AddCol({ name: 'subTitle', label_trans: 'event.title', fieldtype: costanti.FieldType.string,
// showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit , maxlength: 70, noshowlabel: true }),
AddCol({
name: 'adTypes',
label_trans: 'adTypes.name',
fieldtype: costanti.FieldType.select,
required: true,
jointable: 'adtypes',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'grading',
}),
AddCol({ name: 'descr', label_trans: 'proj.shortdescr', fieldtype: costanti.FieldType.string,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, noshowlabel: true, maxlength: 200 }),
AddCol({
@@ -569,7 +584,7 @@ export const colmySkills = [
filter_field: 'idSkill',
noshowlabel: true,
icon: 'far fa-id-card',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
allowNewValue: true,
}),
AddCol({
@@ -609,7 +624,10 @@ export const colmySkills = [
tablesel: 'cities',
noshowlabel: true,
icon: 'fas fa-map-marker-alt',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
remote_table: 'mycities',
remote_key: '_id',
remote_field: 'comune',
}),
AddCol({ name: 'username', label_trans: 'reg.username', foredit: false, tipovisu: costanti.TipoVisu.LINK, link: '/my/username', noshowlabel: true }),
AddCol({ name: 'note', label_trans: 'proj.longdescr', fieldtype: costanti.FieldType.html,
@@ -1984,6 +2002,13 @@ export const fieldsTable = {
colkey: '_id',
collabel: 'descr',
},
{
value: 'adtypes',
label: 'Tipo Annuncio',
columns: colAdType,
colkey: '_id',
collabel: 'descr',
},
{
value: 'cities',
label: 'Comune',

View File

@@ -3124,7 +3124,7 @@ export const tools = {
const msg2 = t('fetch.errore_generico') + userStore.getMsgError(riscode)
this.showNotif(mythisq, msg2)
} else if (riscode === this.OK) {
$router.push('/regok')
$router.push('/')
this.showNotif(mythisq, t('components.authentication.email_verification.link_sent', { botname: t('ws.botname') }), {
color: 'green',
textColor: 'black',
@@ -4856,6 +4856,27 @@ export const tools = {
} else {
return value[keyfunz]
}
},
getValueByRemoteField(col: IColGridTable, row: any, value: any, col_tabfooter: string) {
if (col) {
if (col.remote_table && col.remote_key && col.remote_field && col_tabfooter) {
const myarrremote = row[col.remote_table]
let myarr: any = []
for (const myrec of myarrremote) {
let myval = myrec[col.remote_field]
myarr.push(myval)
}
return myarr ? myarr.join(' - ') : ''
}
}
return ''
}

View File

@@ -221,7 +221,12 @@ export const useUserStore = defineStore('UserStore', {
return ''
},
getImgByProfile(userparam: IUserFields): string {
getImgUserByUsername(username: string): string {
let img = this.getImgByUsername(username)
return img ? img : 'images/noimg-user.svg'
},
getImgByProfile(userparam: IUserFields, reale: any = false): string {
try {
if (userparam.profile && userparam.profile.img) {
@@ -229,7 +234,10 @@ export const useUserStore = defineStore('UserStore', {
}
} catch (e) {
}
return 'images/noimg.png'
if (!reale)
return 'images/noimg.png'
else
return ''
},
getImgByGroup(group: IMyGroup): string {

View File

@@ -117,6 +117,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
URL_RITORNA: '',
URL_RESTORE: '',
levels: [],
adtypes: [],
skills: [],
subSkills: [],
statusSkills: [],
@@ -232,6 +233,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
return state.settings
else if (table === 'levels')
return state.levels
else if (table === 'adtypes')
return state.adtypes
else if (table === 'skills')
return state.skills
else if (table === 'subskills')
@@ -1227,6 +1230,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
this.sectors = (res.data.sectors) ? [...res.data.sectors] : []
this.cities = (res.data.cities) ? [...res.data.cities] : []
this.catgrps = (res.data.catgrps) ? [...res.data.catgrps] : []
this.adtypes = (res.data.adtypes) ? [...res.data.adtypes] : []
// console.log('res.data.cart', res.data.cart)

View File

@@ -220,6 +220,40 @@
<br>
</div>
<div class="row">
<q-btn
label="Populate Tables" color="negative"
@click="EseguiFunz('PopulateTables')"></q-btn>
<br>
</div>
<div class="row">
<q-btn
label="Rewrite Cities Table" color="negative"
@click="EseguiFunz('RewriteCitiesTable')"></q-btn>
<br>
</div>
<div class="row">
<q-btn
label="Rewrite Levels Table" color="negative"
@click="EseguiFunz('RewriteLevelsTable')"></q-btn>
<br>
</div>
<div class="row">
<q-btn
label="Rewrite Provinces Table" color="negative"
@click="EseguiFunz('RewriteProvincesTable')"></q-btn>
<br>
</div>
<div class="row">
<q-btn
label="Rewrite ContribType" color="negative"
@click="EseguiFunz('RewriteContribType')"></q-btn>
<br>
</div>
<q-field
stack-label

View File

@@ -2,6 +2,7 @@ import { defineComponent } from 'vue'
import { Footer } from '@/components/Footer'
import { useUserStore } from '@store/UserStore'
import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'Regok',
@@ -9,13 +10,7 @@ export default defineComponent({
props: {},
setup() {
const userStore = useUserStore()
function isEmailVerified() {
if (userStore.my)
return userStore.my.verified_email
else
return false
}
const { isEmailVerified } = MixinUsers()
return {
isEmailVerified,

View File

@@ -74,7 +74,7 @@
<CTitleBanner
class="q-pa-xs" title="Competenze e Talenti" bgcolor="bg-primary" clcolor="text-white"
class="q-pa-xs" title="Competenze Personali (Offerte)" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
<CSkill

View File

@@ -89,6 +89,10 @@ export default defineComponent({
return site
}
function isMyRecord(username: string){
return username === userStore.my.username
}
onMounted(mounted)
return {
@@ -109,6 +113,7 @@ export default defineComponent({
t,
static_data,
animation,
isMyRecord,
}
}
})

View File

@@ -1,125 +1,87 @@
<template>
<div class="row q-col-gutter-sm q-ma-xs">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<q-card v-if="myuser.date_reg" class="my-card" flat bordered>
<q-card-section>
<div class="text-overline" v-if="myuser.profile.qualifica"><em><span
class="qualifica">{{ myuser.profile.qualifica }}</span></em></div>
<div class="text-overline"><span
v-if="myuser.profile && myuser.profile.born_city">{{ myuser.profile.born_city }}</span>
<span
v-if="myuser.profile && myuser.profile.nationality && myuser.profile.nationality !== 'Italia'">({{
myuser.profile.nationality
}})</span>
</div>
</q-card-section>
<q-card-section horizontal>
<q-card-section class="q-pt-xs">
<div class="text-h5 q-mt-sm q-mb-xs">{{ myuser.username }}</div>
<div class="text-caption text-blue-grey-10">
{{ myuser.profile.biografia }}
</div>
</q-card-section>
<q-card-section class="col-5 flex flex-center">
<q-avatar size="140px" class="rounded-borders">
<q-img :src="getImgUser()" :alt="username" img-class="imgprofile" height="140px" @click="showPic = true"/>
</q-avatar>
</q-card-section>
</q-card-section>
<q-separator/>
</q-card>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<q-card>
<q-card-section>
<div v-if="static_data.functionality.SHOW_NAMESURNAME">
<div class="text-h6">
<span v-if="checkifShow('name')"> {{ myuser.name }}</span> <span v-if="checkifShow('surname')">{{
myuser.surname
}}</span>
</div>
</div>
<div class="col-6 text-h6">
<CTitleBanner
class="" title="Info" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
<CDateTime
v-if="checkifShow('profile.dateofbirth') && !!myuser.profile.dateofbirth"
v-model:value="myuser.profile.dateofbirth"
:label="$t('reg.dateofbirth')"
:canEdit="false">
</CDateTime>
<q-card-section class="col-md-6 col-sm-6 q-ma-xs col-xs-12 flex flex-center">
<div>
<div v-if="myuser.username !== userStore.my.username">
<q-btn
v-if="!userStore.IsMyFriendByUsername(myuser.username) && !userStore.IsAskedFriendByUsername(myuser.username)"
icon="fas fa-user-plus"
color="primary" :label="$t('friends.ask_friend')"
@click="tools.setRequestFriendship($q, userStore.my.username, myuser.username, true)"
/>
<q-btn
v-if="userStore.IsAskedFriendByUsername(myuser.username) && !userStore.IsMyFriendByUsername(myuser.username)"
icon="fas fa-user-minus"
flat :label="$t('friends.cancel_ask_friend_short')"
@click="tools.cancelReqFriends($q, userStore.my.username, myuser.username)"
/>
</div>
<q-btn
v-if="myuser.username === myusername()" icon="fas fa-pencil-alt"
color="blue"
size="md"
:label="$t('otherpages.modifprof')"
to="/editprofile">
</q-btn>
</div>
<div v-if="myuser._id" class="myrow justify-evenly items-center q-pa-xs q-ma-xs">
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<q-btn
v-if="getLinkUserTelegram()" icon="fab fa-telegram"
color="blue" type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkUserTelegram()" target="__blank">
</q-btn>
</div>
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<q-btn
v-if="getLinkWebSite()" icon="fas fa-globe"
color="blue" type="a"
size="md"
rounded
:label="$t('reg.website')"
:href="getLinkWebSite()" target="__blank">
</q-btn>
</div>
</div>
</q-card-section>
</CTitleBanner>
</div>
</q-card-section>
</q-card>
</div>
</div>
<div class="q-gutter-sm q-pa-sm q-pb-md">
<div v-if="myuser.date_reg" class="fit column no-wrap justify-evenly items-center content-start">
<div class="">
<q-avatar size="140px">
<q-img :src="getImgUser()" :alt="username" img-class="imgprofile" height="140px" @click="showPic = true"/>
</q-avatar>
</div>
<div v-if="static_data.functionality.SHOW_NAMESURNAME">
<div class="text-h6">
<span v-if="checkifShow('name')"> {{ myuser.name }}</span> <span v-if="checkifShow('surname')">{{
myuser.surname
}}</span>
</div>
</div>
<div class="col-12 text-h7 text-blue text-shadow-2">
{{ myuser.username }}
</div>
<div class="col-12 text-h7">
<span v-if="myuser.profile && myuser.profile.born_city">{{ myuser.profile.born_city }}</span> <span
v-if="myuser.profile && myuser.profile.nationality && myuser.profile.nationality !== 'Italia'">({{
myuser.profile.nationality
}})</span>
</div>
<div v-if="myuser._id" class="col-12 text-h8 q-mt-sm">
<span v-if="myuser.profile.qualifica">
<em><span class="qualifica">{{ myuser.profile.qualifica }}</span></em>
</span>
</div>
<div v-if="myuser._id" class="col-12 text-h8 q-mt-sm">
{{ myuser.profile.biografia }}
</div>
<div v-if="!isMyRecord(myuser.username)">
<q-btn
v-if="!userStore.IsMyFriendByUsername(myuser.username) && !userStore.IsAskedFriendByUsername(myuser.username)"
icon="fas fa-user-plus"
color="primary" :label="$t('friends.ask_friend')"
@click="tools.setRequestFriendship($q, userStore.my.username, myuser.username, true)"
/>
<q-btn
v-if="userStore.IsAskedFriendByUsername(myuser.username) && !userStore.IsMyFriendByUsername(myuser.username)"
icon="fas fa-user-minus"
flat :label="$t('friends.cancel_ask_friend_short')"
@click="tools.cancelReqFriends($q, userStore.my.username, myuser.username)"
/>
</div>
<q-btn
v-if="myuser.username === myusername()" icon="fas fa-pencil-alt"
color="blue"
size="md"
:label="$t('otherpages.modifprof')"
to="/editprofile">
</q-btn>
<div v-if="myuser._id" class="myrow justify-evenly items-center q-pa-sm q-ma-sm">
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<q-btn
v-if="getLinkUserTelegram()" icon="fab fa-telegram"
color="blue" type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkUserTelegram()" target="__blank">
</q-btn>
</div>
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<q-btn
v-if="getLinkWebSite()" icon="fas fa-globe"
color="blue" type="a"
size="md"
rounded
:label="$t('reg.website')"
:href="getLinkWebSite()" target="__blank">
</q-btn>
</div>
</div>
</div>
<div v-else class="fit column no-wrap justify-evenly items-center content-start">
<q-skeleton type="QAvatar" size="140px" height="140px" animation="fade"/>
@@ -149,7 +111,7 @@
<CSkill
:filtercustom="filtroutente"
:butt_modif_new="false"
:butt_modif_new="isMyRecord(myuser.username)"
>
@@ -158,6 +120,28 @@
</CTitleBanner>
<div v-if="myuser._id">
<CTitleBanner
class="" :title="$t('dashboard.info')" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true">
<div v-if="myuser.profile" class="fit column no-wrap justify-evenly content-start">
<div class="col-6 text-h6">
<CDateTime
v-if="checkifShow('profile.dateofbirth') && !!myuser.profile.dateofbirth"
v-model:value="myuser.profile.dateofbirth"
:label="$t('reg.dateofbirth')"
:canEdit="false">
</CDateTime>
</div>
</div>
</CTitleBanner>
</div>
</div>
<q-dialog