Version 0.2.7

This commit is contained in:
paoloar77
2022-02-21 18:14:38 +01:00
parent 6c3973b5ad
commit 36f53334ed
26 changed files with 313 additions and 118 deletions

View File

@@ -1,6 +1,7 @@
<template> <template>
<div> <div>
<q-layout view="lHh Lpr lFf" class="shadow-2 rounded-borders"> <!--<q-layout view="lHh Lpr lFf" class="shadow-2 rounded-borders">--->
<q-layout view="hHh lpR fFf" class="shadow-2 rounded-borders">
<app-header></app-header> <app-header></app-header>
<q-ajax-bar></q-ajax-bar> <q-ajax-bar></q-ajax-bar>

View File

@@ -360,7 +360,7 @@ export default defineComponent({
useinput: false, useinput: false,
}, },
{ {
label: 'Spedizione', label: 'Consegna',
table: 'shippings', table: 'shippings',
key: 'idShipping', key: 'idShipping',
value: tools.getCookie(tools.COOK_SEARCH + 'shippings', costanti.FILTER_TUTTI), value: tools.getCookie(tools.COOK_SEARCH + 'shippings', costanti.FILTER_TUTTI),

View File

@@ -12,6 +12,7 @@
<div class="row shadow justify-center" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);"> <div class="row shadow justify-center" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);">
<CBigBtn <CBigBtn
v-for="(card, ind) of cardssmall" :key="ind" v-for="(card, ind) of cardssmall" :key="ind"
glossy
:label="card.title" :to="card.to" :icon="card.icon" :color="card.color" :text-color="!!card.textcolor ? card.textcolor : ''" :label="card.title" :to="card.to" :icon="card.icon" :color="card.color" :text-color="!!card.textcolor ? card.textcolor : ''"
:small="card.small" :small="card.small"
:numcol="3" :numcol="3"

View File

@@ -32,3 +32,15 @@
padding: 10px; padding: 10px;
} }
.img {
margin-left: auto;
margin-right: auto;
max-height: 350px;
max-width: 350px;
@media (max-width: 500px) {
max-height: 400px;
max-width: 400px;
}
}

View File

@@ -13,7 +13,7 @@ import { useI18n } from '@/boot/i18n'
import { toolsext } from '@store/Modules/toolsext' import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar'
import { costanti } from '@costanti' import { costanti } from '@costanti'
import { IColGridTable, IMyBacheca, IUserFields } from 'model' import { IColGridTable, IImgGallery, IUserFields } from 'model'
import { shared_consts } from '@/common/shared_vuejs' import { shared_consts } from '@/common/shared_vuejs'
import { colCitys, fieldsTable } from '@store/Modules/fieldsTable' import { colCitys, fieldsTable } from '@store/Modules/fieldsTable'
@@ -45,7 +45,7 @@ export default defineComponent({
const showPic = ref(false) const showPic = ref(false)
const mybacheca = ref(<IMyBacheca>{}) const myrec = ref({})
const col = ref(<IColGridTable>{}) const col = ref(<IColGridTable>{})
function profile() { function profile() {
@@ -56,11 +56,11 @@ export default defineComponent({
// Carica il profilo di quest'utente // Carica il profilo di quest'utente
if (props.idRec > 0) { if (props.idRec > 0) {
userStore.loadGeneric(props.table, props.idRec).then((ris) => { userStore.loadGeneric(props.table, props.idRec).then((ris) => {
mybacheca.value = ris myrec.value = ris
}) })
} else { } else {
mybacheca.value = props.prop_myrec myrec.value = props.prop_myrec
} }
col.value = fieldsTable.getArrColsByTable(props.table) col.value = fieldsTable.getArrColsByTable(props.table)
@@ -74,13 +74,21 @@ export default defineComponent({
load() load()
} }
function getFullFileName(arrimage: IImgGallery[], username: string){
if (arrimage && arrimage.length > 0) {
return 'upload/profile/' + username + '/' + props.table + '/' + arrimage[0].imagefile
} else {
return ''
}
}
onMounted(mounted) onMounted(mounted)
return { return {
profile, profile,
tools, tools,
costanti, costanti,
mybacheca, myrec,
shared_consts, shared_consts,
globalStore, globalStore,
showPic, showPic,
@@ -90,6 +98,7 @@ export default defineComponent({
colCitys, colCitys,
toolsext, toolsext,
col, col,
getFullFileName,
} }
} }
}) })

View File

@@ -1,5 +1,5 @@
<template> <template>
<q-card class="dialog_card" v-if="mybacheca"> <q-card class="dialog_card q-mb-lg" v-if="myrec">
<q-footer <q-footer
class="bg-white small-screen-only text-center" class="bg-white small-screen-only text-center"
bordered bordered
@@ -8,17 +8,24 @@
</q-footer> </q-footer>
<q-bar dense class="bg-primary text-white"> <q-bar dense class="bg-primary text-white">
{{ mybacheca.username }} {{ myrec.username }}
<q-space/> <q-space/>
<q-btn flat round color="white" icon="close" v-close-popup></q-btn> <q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-bar> </q-bar>
<q-card-section class="inset-shadow"> <q-card-section class="inset-shadow">
<!-- Per ora visualizzo solo la Prima Immagine -->
<div class="text-center">
<q-img
v-if="tools.getValue(myrec, 'photos', '')"
:src="getFullFileName(tools.getValue(myrec, 'photos', ''), myrec.username)" class="img" alt="immagine bene"></q-img>
</div>
<div class="text-center"> <div class="text-center">
<q-chip :icon="fieldsTable.getIconByAdType(mybacheca.adType)" <q-chip :icon="fieldsTable.getIconByAdType(myrec.adType)"
:color="fieldsTable.getColByAdType(mybacheca.adType)" :color="fieldsTable.getColByAdType(myrec.adType)"
text-color="white">{{ text-color="white">{{
fieldsTable.getValByTabAndId(table, 'adType', mybacheca.adType) fieldsTable.getValByTabAndId(table, 'adType', myrec.adType)
}} }}
</q-chip> </q-chip>
</div> </div>
@@ -27,23 +34,23 @@
<div v-for="(mycol, index) of col" :key="index"> <div v-for="(mycol, index) of col" :key="index">
<div <div
v-if="(mycol.visible && (tools.checkIfShowField(mycol, tools.TIPOVIS_SHOW_RECORD, false, tools.getValue(mybacheca, mycol.field, mycol.subfield))))"> v-if="(mycol.visible && (tools.checkIfShowField(mycol, tools.TIPOVIS_SHOW_RECORD, false, tools.getValue(myrec, mycol.field, mycol.subfield))))">
<div v-if="mycol.fieldtype === costanti.FieldType.html"> <div v-if="mycol.fieldtype === costanti.FieldType.html">
<div class="note-bacheca" <div class="note-bacheca"
v-html="tools.getValue(mybacheca, mycol.field, mycol.subfield)"> v-html="tools.getValue(myrec, mycol.field, mycol.subfield)">
</div> </div>
</div> </div>
<div v-else-if="mycol.name === 'descr'"> <div v-else-if="mycol.name === 'descr'">
<div class="text-bacheca"> <div class="text-bacheca">
{{ tools.getValue(mybacheca, mycol.field, mycol.subfield) }} {{ tools.getValue(myrec, mycol.field, mycol.subfield) }}
</div> </div>
</div> </div>
<CMyFieldRec <CMyFieldRec
v-else v-else
:table="table" :table="table"
:id="mybacheca._id" :id="myrec._id"
:rec="mybacheca" :rec="myrec"
:field="mycol.field" :field="mycol.field"
:canEdit="false" :canEdit="false"
:canModify="false"> :canModify="false">
@@ -51,7 +58,7 @@
</div> </div>
</div> </div>
<br><br>
</q-card-section> </q-card-section>
</q-card> </q-card>

View File

@@ -43,6 +43,11 @@ export default defineComponent({
required: false, required: false,
default: '' default: ''
}, },
labelifblank: {
type: String,
required: false,
default: ''
},
rec: { rec: {
type: Object, type: Object,
required: false, required: false,
@@ -188,6 +193,11 @@ export default defineComponent({
color: tools.getColorByIndexBest(0) color: tools.getColorByIndexBest(0)
} }
if (!mydata.label && props.labelifblank) {
mydata.label = props.labelifblank
mydata.color = 'grey'
}
myarrvalues.value.push(mydata) myarrvalues.value.push(mydata)
} }
} }

View File

@@ -81,6 +81,11 @@ export default defineComponent({
required: false, required: false,
default: '' default: ''
}, },
sameclassasfielddb: {
tupe: Boolean,
required: false,
default: false,
}
}, },
components: { CMyPopupEdit }, components: { CMyPopupEdit },
setup(props, { emit }) { setup(props, { emit }) {
@@ -165,6 +170,12 @@ export default defineComponent({
return myvalue return myvalue
} }
function getclass() {
if (props.sameclassasfielddb) {
return 'q-ma-sm q-pa-sm col-grow popupedit'
}
}
function visuElem() { function visuElem() {
if (col.value) { if (col.value) {
return !!col.value.name && (props.canEdit || (!props.canEdit && getValue())) return !!col.value.name && (props.canEdit || (!props.canEdit && getValue()))
@@ -193,6 +204,7 @@ export default defineComponent({
mysubkey, mysubkey,
mysubsubkey, mysubsubkey,
visuElem, visuElem,
getclass,
} }
}, },
}) })

View File

@@ -20,7 +20,7 @@
</q-field> </q-field>
</div> </div>
<div :class="` col-grow clpopupVisuCard `" :style="withBorder() ? `` : ``"> <div :class="` col-grow clpopupVisuCard ` + getclass()" :style="withBorder() ? `` : ``">
<CMyPopupEdit <CMyPopupEdit
v-bind="$attrs" v-bind="$attrs"
:isrec="true" :isrec="true"

View File

@@ -1,6 +1,5 @@
<template> <template>
<div :class="getclassCol(col)"> <div :class="getclassCol(col)">
<div <div
v-if="tools.checkIfShowField(col, insertMode ? tools.TIPOVIS_NEW_RECORD : (isInModif ? tools.TIPOVIS_EDIT_RECORD : tools.TIPOVIS_SHOW_RECORD), visulabel, myvalue)" v-if="tools.checkIfShowField(col, insertMode ? tools.TIPOVIS_NEW_RECORD : (isInModif ? tools.TIPOVIS_EDIT_RECORD : tools.TIPOVIS_SHOW_RECORD), visulabel, myvalue)"
style="flex-grow: 1;"> style="flex-grow: 1;">
@@ -38,6 +37,7 @@
<q-input <q-input
v-bind="$attrs" v-bind="$attrs"
v-model="myvalue" v-model="myvalue"
:maxlength="col.maxlength ? col.maxlength : undefined"
:style="$q.screen.lt.sm ? 'min-width: 300px' : ''" :style="$q.screen.lt.sm ? 'min-width: 300px' : ''"
:disable="disable" :disable="disable"
:readonly="disable" :readonly="disable"
@@ -124,6 +124,7 @@
<q-input <q-input
v-bind="$attrs" v-bind="$attrs"
v-model="myvalue" v-model="myvalue"
:maxlength="col.maxlength ? col.maxlength : undefined"
@update:model-value="Savedb" @update:model-value="Savedb"
:label="visulabel ? col.label : ''" :label="visulabel ? col.label : ''"
type="number" type="number"
@@ -152,6 +153,7 @@
<div v-else> <div v-else>
<q-input <q-input
v-model="myvalue" type="number" v-model="myvalue" type="number"
:maxlength="col.maxlength ? col.maxlength : undefined"
@update:value="changevalRec" @update:value="changevalRec"
autofocus> autofocus>
@@ -410,6 +412,7 @@
</CMySelect> </CMySelect>
</div> </div>
<div v-else> <div v-else>
<!-- <!--
rec: {{rec}} rec: {{rec}}
row: {{row}} row: {{row}}
@@ -425,6 +428,7 @@
:type_out="col.field_outtype" :type_out="col.field_outtype"
@update:value="changevalRec" @update:value="changevalRec"
v-model:value="myvalue" v-model:value="myvalue"
:labelifblank="canEdit ? 'Selezionare' : '' "
:filter_table="col.filter_table" :filter_table="col.filter_table"
:filter_field="col.filter_field" :filter_field="col.filter_field"
:options="globalStore.getTableJoinByName(col.jointable, col.addall, col.filter)" :options="globalStore.getTableJoinByName(col.jointable, col.addall, col.filter)"
@@ -564,6 +568,7 @@
<q-input <q-input
v-model="myvalue" v-model="myvalue"
@update:model-value="changevalRec" @update:model-value="changevalRec"
:maxlength="col.maxlength ? col.maxlength : undefined"
type="password" type="password"
@keyup.enter="scope.set" @keyup.enter="scope.set"
autofocus> autofocus>
@@ -612,6 +617,7 @@
<div v-if="visulabel"> <div v-if="visulabel">
<q-input <q-input
v-model="scope.value" type="number" v-model="scope.value" type="number"
:maxlength="col.maxlength ? col.maxlength : undefined"
autofocus autofocus
:label="visulabel ? col.label : ''"> :label="visulabel ? col.label : ''">
@@ -625,6 +631,7 @@
<div v-if="visulabel"> <div v-if="visulabel">
<q-input <q-input
v-model="myvalue" type="number" v-model="myvalue" type="number"
:maxlength="col.maxlength ? col.maxlength : undefined"
autofocus autofocus
@update:model-value="changevalRec" @update:model-value="changevalRec"
style="max-width: 100px;" style="max-width: 100px;"
@@ -649,6 +656,7 @@
<div v-else> <div v-else>
<q-input <q-input
v-model="scope.value" type="number" v-model="scope.value" type="number"
:maxlength="col.maxlength ? col.maxlength : undefined"
autofocus> autofocus>
</q-input> </q-input>
@@ -823,6 +831,7 @@
<div v-else-if="col.fieldtype === costanti.FieldType.password"> <div v-else-if="col.fieldtype === costanti.FieldType.password">
<q-input <q-input
v-model="scope.value" v-model="scope.value"
:maxlength="col.maxlength ? col.maxlength : undefined"
type="password" type="password"
@keyup.enter="scope.set" @keyup.enter="scope.set"
autofocus> autofocus>

View File

@@ -68,9 +68,9 @@ export default defineComponent({
default: '' default: ''
}, },
filter_extra: { filter_extra: {
type: String, type: [Object, String],
required: false, required: false,
default: '' default: null
}, },
value_extra: { value_extra: {
type: [String, Number], type: [String, Number],
@@ -466,10 +466,25 @@ export default defineComponent({
if (fieldsTable.tableRemotePickup.includes(props.tablesel)) { if (fieldsTable.tableRemotePickup.includes(props.tablesel)) {
try { try {
myarr = optionsreal.value // myarr = optionsreal.value
myarr = []
if (mystr !== '' || props.filter_extra) if (mystr !== '' || props.filter_extra)
// myarr = [{_id:1, prov: 'RN', descr: 'Rimini'}] // myarr = [{_id:1, prov: 'RN', descr: 'Rimini'}]
myarr = await globalStore.loadPickup({ table: props.tablesel, search: mystr.trim(), filter: props.filter_extra }) /*
if (val === '1') {
myarr.push({ _id: 1, comune: 'PROVA 1', prov: 'AL' })
myarr.push({ _id: 2, comune: 'PROVA 1b', prov: 'AL' })
}else if (val === '2') {
myarr.push({ _id: 1, comune: 'PROVA 2', prov: 'AL' })
myarr.push({ _id: 2, comune: 'PROVA 2B', prov: 'AL' })
}*/
{ // @ts-ignore
myarr = await globalStore.loadPickup({ table: props.tablesel, search: mystr.trim(), filter: props.filter_extra })
}
if (myarr === null) { if (myarr === null) {
console.log('@@@ VALORI VALUE XXX', valori.value) console.log('@@@ VALORI VALUE XXX', valori.value)

View File

@@ -34,7 +34,7 @@
<template v-slot:no-option> <template v-slot:no-option>
<q-item> <q-item>
<q-item-section class="text-grey"> <q-item-section class="text-grey">
No results Digita il testo da cercare
</q-item-section> </q-item-section>
</q-item> </q-item>
</template> </template>
@@ -100,7 +100,7 @@
<template v-slot:no-option> <template v-slot:no-option>
<q-item> <q-item>
<q-item-section class="text-grey"> <q-item-section class="text-grey">
No results Digita il testo da cercare
</q-item-section> </q-item-section>
</q-item> </q-item>
</template> </template>

View File

@@ -1,12 +1,14 @@
<template> <template>
<div class="q-ma-md"> <div class="q-ma-md">
<q-banner inline-actions rounded class="bg-orange text-white"> <div v-if="tools.isTelegOk()">
<template v-slot:avatar> <q-banner inline-actions rounded class="bg-orange text-black">
<q-icon name="info" color="primary" /> <template v-slot:avatar>
</template> <q-icon name="info" color="primary"/>
<strong>La verifica è in corso. Ti arriverà un messaggio sul Bot Telegram quando verrai abilitato dal tuo invitante.</strong> </template>
<strong>A breve sarai abilitato, altrimenti avvisa il tuo invitante che ti sei Registrato.<br>Ti arriverà un messaggio su Telegram quando verrai abilitato dal tuo invitante.</strong>
</q-banner> </q-banner>
</div>
</div> </div>
</template> </template>

View File

@@ -6,6 +6,7 @@ const msg_website = {
SignIn: 'Login', SignIn: 'Login',
vreg: 'Verifica Reg', vreg: 'Verifica Reg',
Test: 'Test', Test: 'Test',
TestLocal: 'TestLocal',
Category: 'Categorie', Category: 'Categorie',
Todo: 'Todo', Todo: 'Todo',
personal: 'Personale', personal: 'Personale',

View File

@@ -394,7 +394,7 @@ const baseroutes: IListRoutes[] = [
active: true, active: true,
order: 12, order: 12,
path: '/goods', path: '/goods',
materialIcon: 'fas fa-briefcase', materialIcon: 'fas fa-tshirt',
name: 'mypages.goods', name: 'mypages.goods',
component: () => import('@/root/goods/goods.vue'), component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true }, meta: { requiresAuth: true },
@@ -405,7 +405,7 @@ const baseroutes: IListRoutes[] = [
active: true, active: true,
order: 15, order: 15,
path: '/services', path: '/services',
materialIcon: 'fas fa-briefcase', materialIcon: 'fas fa-house-user',
name: 'mypages.services', name: 'mypages.services',
component: () => import('@/root/services/services.vue'), component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true }, meta: { requiresAuth: true },
@@ -521,6 +521,17 @@ const baseroutes: IListRoutes[] = [
inmenu: true, inmenu: true,
infooter: false, infooter: false,
}, },
{
active: true,
order: 400,
path: '/testlocal',
materialIcon: 'fas fa-test',
name: 'mypages.TestLocal',
component: () => import('@/views/test/test.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{ {
active: true, active: true,
order: 2000, order: 2000,

View File

@@ -922,6 +922,9 @@ const msg_it = {
}, },
adTypes: { adTypes: {
name: 'Tipo', name: 'Tipo',
},
shipping: {
name: 'Consegna'
} }
}, },

View File

@@ -34,7 +34,7 @@ export const costanti = {
color: 'lime-7', color: 'lime-7',
textcolor: '', textcolor: '',
hint: '', hint: '',
disable: false, disable: true,
}, },
{ {
title: 'Scuola', title: 'Scuola',
@@ -42,7 +42,7 @@ export const costanti = {
icon: 'fas fa-book-open', icon: 'fas fa-book-open',
color: 'orange', color: 'orange',
hint: '', hint: '',
disable: false, disable: true,
}, },
{ {
title: 'Alimenti', title: 'Alimenti',
@@ -50,7 +50,7 @@ export const costanti = {
icon: 'fas fa-utensils', icon: 'fas fa-utensils',
color: 'green-5', color: 'green-5',
hint: '', hint: '',
disable: false, disable: true,
}, },
{ {
title: 'Luoghi', title: 'Luoghi',
@@ -58,34 +58,34 @@ export const costanti = {
icon: 'fas fa-map-marker-alt', icon: 'fas fa-map-marker-alt',
color: 'blue', color: 'blue',
hint: '', hint: '',
disable: false, disable: true,
}, },
{ {
title: 'Tue&nbsp;Idee', title: 'Tue&nbsp;Idee',
to: '/ideas', to: '/ideas',
icon: 'fas fa-lightbulb', icon: 'fas fa-lightbulb',
color: 'red-5', color: 'red-7',
textcolor: '', textcolor: '',
hint: '', hint: '',
disable: false, disable: true,
small: true, small: true,
}, },
{ {
title: 'Eventi', title: 'Eventi',
to: '/bacheca', to: '/bacheca',
icon: 'event', icon: 'event',
color: 'pink-5', color: 'green-7',
hint: 'eventi, last minute, offerte di lavoro', hint: 'eventi, last minute, offerte di lavoro',
disable: false, disable: true,
small: true, small: true,
}, },
{ {
title: 'Social', title: 'Social',
to: '/socialising', to: '/socialising',
icon: 'fas fa-users', icon: 'fas fa-users',
color: 'purple-5', color: 'blue-7',
hint: '', hint: '',
disable: false, disable: true,
small: true, small: true,
}, },
], ],

View File

@@ -615,7 +615,7 @@ export const colmyGoods = [
remote_field: 'comune', remote_field: 'comune',
}), }),
AddCol({ AddCol({
name: 'adTypeGood', name: 'adType',
label_trans: 'adTypes.name', label_trans: 'adTypes.name',
fieldtype: costanti.FieldType.select, fieldtype: costanti.FieldType.select,
required: true, required: true,
@@ -647,14 +647,25 @@ export const colmyGoods = [
name: 'idGood', name: 'idGood',
label_trans: 'skill.name', label_trans: 'skill.name',
fieldtype: costanti.FieldType.select, fieldtype: costanti.FieldType.select,
required: true, required: false,
jointable: 'goods', jointable: 'goods',
filter_table: 'sectorgoods', filter_table: 'sectorgoods',
filter_field: 'idSectorGood', filter_field: 'idSectorGood',
noshowlabel: true, noshowlabel: true,
icon: 'engineering', icon: 'engineering',
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,
allowNewValue: true, allowNewValue: false,
}),
AddCol({
name: 'idContribType',
label_trans: 'contribtype.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'contribtypes',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'fas fa-hand-holding',
//icon: 'fas fa-hands-helping',
// isadvanced_field: true,
}), }),
AddCol({ AddCol({
name: 'idShipping', name: 'idShipping',
@@ -668,15 +679,13 @@ export const colmyGoods = [
// isadvanced_field: true, // isadvanced_field: true,
}), }),
AddCol({ AddCol({
name: 'idContribType', name: 'photos',
label_trans: 'contribtype.name', label_trans: 'skill.photos',
fieldtype: costanti.FieldType.multiselect, fieldtype: costanti.FieldType.listimages,
jointable: 'contribtypes', jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showpicprofile_ifnotset: true,
noshowlabel: true, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit,
icon: 'fas fa-hand-holding', isadvanced_field: false,
//icon: 'fas fa-hands-helping',
// isadvanced_field: true,
}), }),
AddCol({ AddCol({
name: '', name: '',
@@ -702,15 +711,6 @@ export const colmyGoods = [
*/ */
AddCol({
name: 'photos',
label_trans: 'skill.photos',
fieldtype: costanti.FieldType.listimages,
jointable: '',
showpicprofile_ifnotset: true,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
isadvanced_field: true,
}),
AddCol({ AddCol({
name: 'note', label_trans: 'proj.longdescr', fieldtype: costanti.FieldType.html, name: 'note', label_trans: 'proj.longdescr', fieldtype: costanti.FieldType.html,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
@@ -801,7 +801,7 @@ export const colmySkills = [
noshowlabel: true, noshowlabel: true,
icon: 'engineering', icon: 'engineering',
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,
allowNewValue: true, allowNewValue: false,
required: false, required: false,
}), }),
AddCol({ AddCol({
@@ -949,42 +949,9 @@ export const colmyBachecas = [
noshowlabel: true, noshowlabel: true,
icon: 'engineering', icon: 'engineering',
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,
allowNewValue: true, allowNewValue: false,
required: false, required: false,
}), }),
AddCol({
name: '',
fieldtype: costanti.FieldType.separator,
required: false,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit,
visible: false,
}),
AddCol({
name: 'idSubSkill',
label_trans: 'skill.subskill',
fieldtype: costanti.FieldType.multiselect,
required: false,
jointable: 'subskills',
filter_table: 'skills',
filter_field: 'idSkill',
noshowlabel: true,
icon: 'far fa-id-card',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
allowNewValue: true,
isadvanced_field: true,
}),
AddCol({
name: 'numLevel',
label_trans: 'level.name',
fieldtype: costanti.FieldType.star3,
required: false,
jointable: 'levels',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: false,
icon: 'grading',
isadvanced_field: true,
}),
AddCol({ AddCol({
name: 'idContribType', name: 'idContribType',
label_trans: 'contribtype.name', label_trans: 'contribtype.name',
@@ -994,8 +961,16 @@ export const colmyBachecas = [
noshowlabel: true, noshowlabel: true,
icon: 'fas fa-hand-holding', icon: 'fas fa-hand-holding',
//icon: 'fas fa-hands-helping', //icon: 'fas fa-hands-helping',
isadvanced_field: true, isadvanced_field: false,
}), }),
AddCol({
name: '',
fieldtype: costanti.FieldType.separator,
required: false,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit,
visible: false,
}),
AddCol({ AddCol({
name: 'photos', name: 'photos',
label_trans: 'skill.photos', label_trans: 'skill.photos',
@@ -1461,7 +1436,7 @@ export const colTableUsersBase = [
name: 'profile.nationality', field: 'profile', subfield: 'nationality', label_trans: 'reg.nationality', name: 'profile.nationality', field: 'profile', subfield: 'nationality', label_trans: 'reg.nationality',
}), }),
AddCol({ AddCol({
name: 'profile.cell', field: 'profile', subfield: 'cell', label_trans: 'reg.cell', name: 'profile.cell', field: 'profile', subfield: 'cell', label_trans: 'reg.cell', maxlength: 12
}), }),
AddCol({ AddCol({
name: 'perm', label_trans: 'reg.perm', fieldtype: costanti.FieldType.binary, jointable: 'permissions', name: 'perm', label_trans: 'reg.perm', fieldtype: costanti.FieldType.binary, jointable: 'permissions',
@@ -1899,7 +1874,7 @@ export const colTableUsersISP = [
AddCol({ name: 'profile.born_province', label_trans: 'reg.born_province', fieldtype: costanti.FieldType.string }), AddCol({ name: 'profile.born_province', label_trans: 'reg.born_province', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'profile.born_country', label_trans: 'reg.born_country', fieldtype: costanti.FieldType.string }), AddCol({ name: 'profile.born_country', label_trans: 'reg.born_country', fieldtype: costanti.FieldType.string }),
AddCol({ AddCol({
name: 'profile.cell', field: 'profile', subfield: 'cell', label_trans: 'reg.cell', name: 'profile.cell', field: 'profile', subfield: 'cell', label_trans: 'reg.cell', maxlength: 12
}), }),
AddCol({ AddCol({
name: 'profile.email_paypal', name: 'profile.email_paypal',

View File

@@ -4898,6 +4898,11 @@ export const tools = {
return userStore.isUserOk() return userStore.isUserOk()
}, },
isTelegOk() {
const userStore = useUserStore()
return userStore.isTelegOk()
},
getParamsByTable(table: string) { getParamsByTable(table: string) {
let obj = { let obj = {

View File

@@ -267,6 +267,11 @@ export const useUserStore = defineStore('UserStore', {
// return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador! // return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador!
}, },
isTelegOk(): boolean {
return this.my.profile.teleg_id! > 0
// return this.my.verified_email! && this.my.profile.teleg_id! > 0 && this.my.verified_by_aportador!
},
getNameSurnameByUserId(userId: string): string { getNameSurnameByUserId(userId: string): string {
const user = this.getUserByUserId(userId) const user = this.getUserByUserId(userId)

131
src/views/test/test.vue Executable file
View File

@@ -0,0 +1,131 @@
<template>
<div class="q-pa-md">
<div class="q-gutter-md">
<q-select
filled
v-model="model"
clearable
use-input
hide-selected
fill-input
input-debounce="0"
label="Focus after filtering"
:options="options"
@filter="filterFn"
@filter-abort="abortFilterFn"
style="width: 250px"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
No results
</q-item-section>
</q-item>
</template>
</q-select>
<q-select
filled
v-model="model"
clearable
use-input
hide-selected
fill-input
input-debounce="0"
label="Autoselect after filtering"
:options="options"
@filter="filterFnAutoselect"
@filter-abort="abortFilterFn"
style="width: 250px"
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
No results
</q-item-section>
</q-item>
</template>
</q-select>
</div>
</div>
</template>
<script>
import { ref } from 'vue'
const stringOptions = [
'Google', 'Facebook', 'Twitter', 'Apple', 'Oracle'
].reduce((acc, opt) => {
for (let i = 1; i <= 5; i++) {
acc.push(opt + ' ' + i)
}
return acc
}, [])
export default {
setup () {
const options = ref(stringOptions)
return {
model: ref(null),
options,
filterFn (val, update, abort) {
// call abort() at any time if you can't retrieve data somehow
setTimeout(() => {
update(
() => {
if (val === '') {
options.value = stringOptions
}
else {
const needle = val.toLowerCase()
options.value = stringOptions.filter(v => v.toLowerCase().indexOf(needle) > -1)
}
},
// "ref" is the Vue reference to the QSelect
ref => {
if (val !== '' && ref.options.length > 0) {
ref.setOptionIndex(-1) // reset optionIndex in case there is something selected
ref.moveOptionSelection(1, true) // focus the first selectable option and do not update the input-value
}
}
)
}, 300)
},
filterFnAutoselect (val, update, abort) {
// call abort() at any time if you can't retrieve data somehow
setTimeout(() => {
update(
() => {
if (val === '') {
options.value = stringOptions
}
else {
const needle = val.toLowerCase()
options.value = stringOptions.filter(v => v.toLowerCase().indexOf(needle) > -1)
}
},
// "ref" is the Vue reference to the QSelect
ref => {
if (val !== '' && ref.options.length > 0 && ref.getOptionIndex() === -1) {
ref.moveOptionSelection(1, true) // focus the first selectable option and do not update the input-value
ref.toggleOption(ref.options[ ref.optionIndex ], true) // toggle the focused option
}
}
)
}, 300)
},
abortFilterFn () {
// console.log('delayed filter aborted')
}
}
}
}
</script>

View File

@@ -157,6 +157,7 @@
:id="myuser._id" :id="myuser._id"
:rec="myuser" :rec="myuser"
field="profile.born_city_id" field="profile.born_city_id"
:sameclassasfielddb="true"
:canEdit="true" :canEdit="true"
:canModify="true"> :canModify="true">
</CMyFieldRec> </CMyFieldRec>

View File

@@ -20,7 +20,6 @@
{{ myuser.username }} {{ myuser.username }}
</div> </div>
ID: {{myuser.profile.born_city_id}}
<div class="col-12 text-h7"> <div class="col-12 text-h7">
<span v-if="myuser.profile && myuser.profile.born_city_id"> <span v-if="myuser.profile && myuser.profile.born_city_id">
<CMyFieldRec <CMyFieldRec

View File

@@ -1,14 +0,0 @@
<template>
<div class="q-gutter-sm q-pa-xs q-pb-md">
</div>
</template>
<script lang="ts" src="./test.ts">
</script>
<style lang="scss" scoped>
@import './test.scss';
</style>