Nuova Grafica , Nuovi settori e categorie, Beni e Servizi.

Nella Nazionalità non c'è Repubblica di San Marino
Aggiungere Bottone di "Chiudi" nella visualizzazione della Card
cerca persona, mettere solo una parte della parola da cercare...
Gruppi sistemare il bottone di Nuovo e controllare altro..
adTypeBacheca per la tabella mybachecas (Evento, Offro, Cerco)
Semplificare le CATEGORIE ?! o togliere la Specializzazione?  (con Giovanna)
This commit is contained in:
paoloar77
2022-02-19 22:02:54 +01:00
parent 9161909003
commit 1aea88a1fa
61 changed files with 1669 additions and 399 deletions

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.2.5" APP_VERSION="0.2.6"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.2.5" APP_VERSION="0.2.6"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="1" APP_ID="1"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -392,11 +392,22 @@ const baseroutes: IListRoutes[] = [
}, },
{ {
active: true, active: true,
order: 15, order: 12,
path: '/work', path: '/goods',
materialIcon: 'fas fa-briefcase', materialIcon: 'fas fa-briefcase',
name: 'mypages.work', name: 'mypages.goods',
component: () => import('@/root/work/work.vue'), component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-briefcase',
name: 'mypages.services',
component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true }, meta: { requiresAuth: true },
inmenu: true, inmenu: true,
infooter: true, infooter: true,

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.2.5" APP_VERSION="0.2.6"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -392,11 +392,22 @@ const baseroutes: IListRoutes[] = [
}, },
{ {
active: true, active: true,
order: 15, order: 12,
path: '/work', path: '/goods',
materialIcon: 'fas fa-briefcase', materialIcon: 'fas fa-briefcase',
name: 'mypages.work', name: 'mypages.goods',
component: () => import('@/root/work/work.vue'), component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-briefcase',
name: 'mypages.services',
component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true }, meta: { requiresAuth: true },
inmenu: true, inmenu: true,
infooter: true, infooter: true,

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.2.5" APP_VERSION="0.2.6"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="12" APP_ID="12"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -392,11 +392,22 @@ const baseroutes: IListRoutes[] = [
}, },
{ {
active: true, active: true,
order: 15, order: 12,
path: '/work', path: '/goods',
materialIcon: 'fas fa-briefcase', materialIcon: 'fas fa-briefcase',
name: 'mypages.work', name: 'mypages.goods',
component: () => import('@/root/work/work.vue'), component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-briefcase',
name: 'mypages.services',
component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true }, meta: { requiresAuth: true },
inmenu: true, inmenu: true,
infooter: true, infooter: true,

View File

@@ -41,10 +41,9 @@ export const shared_consts = {
FILTER_TO_MAKE_MEMBERSHIP_CARD: 524288, FILTER_TO_MAKE_MEMBERSHIP_CARD: 524288,
FILTER_MEMBERSHIP_CARD_OK: 1048576, FILTER_MEMBERSHIP_CARD_OK: 1048576,
FILTER_MYSKILL_SKILL: 1,
OPTIONS_SEARCH_ONLY_FULL_WORDS: 1, OPTIONS_SEARCH_ONLY_FULL_WORDS: 1,
OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2, OPTIONS_SEARCH_USER_ONLY_FULL_WORDS: 2,
OPTIONS_SEARCH_USER_ALL_WORDS: 4,
FRIENDSCMD: { FRIENDSCMD: {
SETTRUST: 121, SETTRUST: 121,
@@ -86,21 +85,24 @@ export const shared_consts = {
TABLES_MYSKILLS: 'myskills', TABLES_MYSKILLS: 'myskills',
TABLES_MYBACHECAS: 'mybachecas', TABLES_MYBACHECAS: 'mybachecas',
TABLES_MYGOODS: 'mygoods',
TABLES_ENABLE_GETREC_BYID: ['mybachecas'],
TABLES_USER_INCLUDE_MY: ['mygroups'], TABLES_USER_INCLUDE_MY: ['mygroups'],
TABLES_GETCOMPLETEREC: ['myskills'], TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'mygoods'],
TABLES_PERM_NEWREC: ['skills', 'subskills', 'mygroups'], TABLES_PERM_NEWREC: ['skills', 'goods', 'subskills', 'mygroups'],
TABLES_REC_ID: ['skills', 'subskills'], TABLES_REC_ID: ['skills', 'goods', 'subskills'],
TABLES_ID_NUMBER: ['permissions', 'levels', 'adtypes', 'statusSkills', 'sectors', 'catgrps', 'skills', 'subskills', 'cities', 'provinces', 'myskills', 'mybachecas', 'mygroups'], TABLES_ID_NUMBER: ['permissions', 'levels', 'adtypes', 'adtypegoods', 'statusSkills', 'sectors', 'sectorgoods', 'catgrps', 'skills', 'subskills', 'cities', 'provinces',
TABLES_USER_ID: ['myskills', 'mybachecas'], 'myskills', 'mybachecas', 'mygoods', 'mygroups'],
TABLES_UPDATE_LASTMODIFIED: ['myskills', 'mybots'], TABLES_USER_ID: ['myskills', 'mybachecas', 'mygoods'],
TABLES_FINDER: ['myskills', 'mybachecas', 'mygroups'], TABLES_UPDATE_LASTIFIED: ['myskills', 'mybachecas', 'mygoods', 'mybots'],
TABLES_VISU_CMYSRECCARD: ['myskills', 'mybachecas'], TABLES_FINDER: ['myskills', 'mybachecas', 'mygoods', 'mygroups'],
TABLES_VISU_CMYSRECCARD: ['myskills', 'mybachecas', 'mygoods'],
TABLES_PERM_CHANGE_FOR_USERS: ['myskills', 'mybachecas'], TABLES_PERM_CHANGE_FOR_USERS: ['myskills', 'mybachecas', 'mygoods'],
TABLES_VISU_LISTA_USER: ['myskills', 'mybachecas', 'users'], TABLES_VISU_LISTA_USER: ['myskills', 'mybachecas', 'mygoods', 'users'],
TABLES_NOT_SHOW_IF_USERNAME: ['myskills', 'mybachecas'],
VISIB_ALL: 0, VISIB_ALL: 0,
VISIB_ONLYIF_VERIFIED: 1, VISIB_ONLYIF_VERIFIED: 1,
@@ -122,8 +124,9 @@ export const shared_consts = {
PROVINCE: 1, PROVINCE: 1,
COMUNI: 2, COMUNI: 2,
CITIES_SERVER: 3, CITIES_SERVER: 3,
CAT_TXT: 4, CAT_SKILL_TXT: 4,
CAT_NO_SPAZI: 5, CAT_NO_SPAZI: 5,
CAT_GOODS_TXT: 10,
}, },
BotType: [ BotType: [
@@ -145,6 +148,21 @@ export const shared_consts = {
}, },
], ],
Shippings: [
{
label: 'Di Persona',
value: 1,
},
{
label: 'Tramite Corriere',
value: 2,
},
{
label: 'Tramite Posta',
value: 3,
},
],
Provinces: [ Provinces: [
{ {
label: 'Agrigento', label: 'Agrigento',

View File

@@ -0,0 +1,38 @@
.my-text {
font-size: 1rem;
font-weight: bold;
line-height: 1.5rem;
letter-spacing: 0.0125em;
}
.my-text_3 {
font-size: 1rem;
font-weight: bold;
line-height: 1.5rem;
letter-spacing: 0.0125em;
}
.my-text-small {
font-size: 1rem;
line-height: 1rem;
letter-spacing: 0.0125em;
}
.mybox_3 {
min-width: 100px;
min-height: 100px;
width: 100%;
}
.mybox {
min-width: 125px;
min-height: 137px;
width: 100%;
}
.mybox_small {
min-width: 110px;
width: 100%;
}

View File

@@ -29,6 +29,16 @@ export default defineComponent({
required: false, required: false,
default: 'grey' default: 'grey'
}, },
small: {
type: Boolean,
required: false,
default: false
},
numcol: {
type: Number,
required: false,
default: 3
},
}, },
setup(props, { emit }) { setup(props, { emit }) {

View File

@@ -1,10 +1,26 @@
<template> <template>
<div class="q-pa-xs col-xs-6 col-sm-6 col-md-4 col-lg-2"> <div v-if="numcol === 3" class="col-xs-4 col-sm-4 col-md-3 col-lg-2">
<div class="q-ma-xs">
<q-btn v-if="!small" class="mybox_3" :color="color" rounded :to="to" v-bind="$attrs">
<q-icon class="q-ma-sm" :name="icon"/>
<div class="q-ma-sm my-text_3">{{ label }}</div>
</q-btn>
<q-btn v-if="small" class="mybox_small" :color="color" rounded :to="to" v-bind="$attrs">
<q-icon class="q-ma-xs" :name="icon" size="sm"/>
<div class="q-ma-xs my-text-small">{{ label }}</div>
</q-btn>
</div>
</div>
<div v-else class="col-xs-6 col-sm-6 col-md-4 col-lg-3">
<div class="q-ma-sm"> <div class="q-ma-sm">
<q-btn :color="color" rounded :to="to" v-bind="$attrs"> <q-btn v-if="!small" class="mybox" :color="color" rounded :to="to" v-bind="$attrs">
<q-icon class="q-ma-sm" size="4em" :name="icon"/> <q-icon class="q-ma-sm" size="4.5rem" :name="icon"/>
<div class="q-ma-sm text-h5">{{ label }}</div> <div class="q-ma-sm text-h5">{{ label }}</div>
</q-btn> </q-btn>
<q-btn v-if="small" class="mybox_small" :color="color" rounded :to="to" v-bind="$attrs">
<q-icon class="q-ma-xs" :name="icon" size="sm"/>
<div class="q-ma-xs my-text-small">{{ label }}</div>
</q-btn>
</div> </div>
</div> </div>
</template> </template>

View File

@@ -19,7 +19,7 @@ export default defineComponent({
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const { t } = useI18n(); const { t } = useI18n();
const calcstat = computed(() => userStore.my.calcstat ? userStore.my.calcstat : {numUsersReg: 0, numMySkills: 0, numMyBachecas: 0} ) const calcstat = computed(() => userStore.my.calcstat ? userStore.my.calcstat : {numUsersReg: 0, numMySkills: 0, numMyGoods: 0, numMyBachecas: 0} )
return { return {
userStore, userStore,

View File

@@ -51,7 +51,29 @@
<q-item class="q-pb-none q-pt-xs"> <q-item class="q-pb-none q-pt-xs">
<q-item-section> <q-item-section>
<q-item-label class="text-h4" style="font-weight: 500;letter-spacing: 3px;">{{ calcstat.numMyBachecas }}</q-item-label> <q-item-label class="text-h4" style="font-weight: 500;letter-spacing: 3px;">{{ calcstat.numMyBachecas }}</q-item-label>
<q-item-label :class="!$q.dark.isActive? 'text-grey-7':'text-white'" style="letter-spacing: 1px;">Annunci</q-item-label> <q-item-label :class="!$q.dark.isActive? 'text-grey-7':'text-white'" style="letter-spacing: 1px;">Dacci un Occhio</q-item-label>
</q-item-section>
<q-item-section side>
<q-icon name="engineering" class="box_3" size="60px"></q-icon>
</q-item-section>
</q-item>
<q-item class="q-py-xs" style="min-height: unset">
<q-item-section>
<div class="progress-base q-my-sm">
<div class="progress-bar-3" style="width:100%"></div>
</div>
</q-item-section>
</q-item>
</q-card>
</div>
<div class="col-md-3 col-lg-3 col-sm-12 col-xs-12 box_3" style="border-left: 1px solid #efefef;"
v-bind:class="{'border-top': $q.platform.is.mobile}">
<q-card class="no-shadow q-pa-sm">
<q-item class="q-pb-none q-pt-xs">
<q-item-section>
<q-item-label class="text-h4" style="font-weight: 500;letter-spacing: 3px;">{{ calcstat.numMyGoods }}</q-item-label>
<q-item-label :class="!$q.dark.isActive? 'text-grey-7':'text-white'" style="letter-spacing: 1px;">Beni</q-item-label>
</q-item-section> </q-item-section>
<q-item-section side> <q-item-section side>

View File

@@ -28,14 +28,14 @@ export default defineComponent({
CMyFieldDb, CGridTableRec, CMyFieldDb, CGridTableRec,
}, },
setup(props, { attrs, slots, emit }) { setup(props, { attrs, slots, emit }) {
const mytable = 'users'
const { t } = useI18n() const { t } = useI18n()
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const userStore = useUserStore() const userStore = useUserStore()
const arrfilterand: any = ref([]) const arrfilterand: any = ref([])
const filtercustom: any = ref([]) const filtercustom: any = ref([])
const searchList = ref(<ISearchList[]>[]) const searchList_Servizi = ref(<ISearchList[]>[])
const searchList_Beni = ref(<ISearchList[]>[])
const search = ref('') const search = ref('')
const myrecfiltertoggle = ref(tools.FILTER_ALL) const myrecfiltertoggle = ref(tools.FILTER_ALL)
@@ -45,22 +45,25 @@ export default defineComponent({
const col_footer = ref('idCity') const col_footer = ref('idCity')
const col_tabfooter = ref('mycities') const col_tabfooter = ref('mycities')
const mypagination = ref({ sortBy: 'date_created', descending: true, page: 1, rowsNumber: 10, rowsPerPage: 10 }) const mypagination = ref({ sortBy: 'date_created', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 })
const col = ref(<IColGridTable>{}) const col = ref(<IColGridTable>{})
const idSector = computed(() => { /*
const idSectorServizi = computed(() => {
let myval: any = null let myval: any = null
myval = searchList.value.find((rec) => (rec.table === 'sectors')) myval = searchList_Servizi.value.find((rec) => (rec.table === 'sectors'))
if (myval) { if (myval) {
const ris = myval.value || 0 const ris = myval.value || 0
// console.log('idSector=', ris) // console.log('idSectorServizi=', ris)
return ris return ris
} else { } else {
return 0 return 0
} }
}) })
*/
watch(() => myrecfiltertoggle.value, (value: any, oldval: any) => { watch(() => myrecfiltertoggle.value, (value: any, oldval: any) => {
if (value === tools.FILTER_MYREC) { if (value === tools.FILTER_MYREC) {
filtercustom.value = [{ userId: userStore.my._id }] filtercustom.value = [{ userId: userStore.my._id }]
@@ -70,6 +73,15 @@ export default defineComponent({
}, },
) )
const searchList = computed(() => {
if (props.table === 'mygoods')
return searchList_Beni.value
else if (props.table === 'myskills')
return searchList_Servizi.value
return searchList_Servizi.value
})
function mounted() { function mounted() {
@@ -93,6 +105,16 @@ export default defineComponent({
} }
} }
function getFilterGoods(recGood: any, index: number, arr: any) {
const recsectorGoods: any = searchList.value.find((rec) => rec.table === 'sectorgoods')
// console.log('getFilterSkills', recSkill.idSector, recsectors.value)
if (recsectorGoods) {
return recGood.idSectorGood.includes(recsectorGoods.value)
} else {
return true
}
}
function getFilterSubSkills(recSubSkill: any, index: number, arr: any) { function getFilterSubSkills(recSubSkill: any, index: number, arr: any) {
const recskills: any = searchList.value.find((rec) => rec.table === 'skills') const recskills: any = searchList.value.find((rec) => rec.table === 'skills')
// console.log('recSubSkill', recSubSkill, 'recskills', recskills) // console.log('recSubSkill', recSubSkill, 'recskills', recskills)
@@ -114,9 +136,30 @@ export default defineComponent({
} }
searchList_Servizi.value = [
{
searchList.value = [ label: 'Stato',
table: 'statusSkills',
key: 'idStatusSkill',
value: 0,
// arrvalue: tools.getCookie(tools.COOK_SEARCH + 'statusSkills', []),
arrvalue: [],
type: costanti.FieldType.multiselect,
filter: null,
useinput: false,
icon: 'mood',
filteradv: true,
},
/*{
label: 'Regione',
table: 'regions',
key: 'idReg',
value: 0,
type: costanti.FieldType.select,
arrvalue: tools.getCookie(tools.COOK_SEARCH + 'regions', [costanti.FILTER_TUTTI]),
filter: null,
useinput: true,
},*/
{ {
label: 'Provincia', label: 'Provincia',
table: 'provinces', table: 'provinces',
@@ -130,7 +173,7 @@ export default defineComponent({
icon: 'flag', icon: 'flag',
}, },
{ {
label: 'Città', label: 'Comune',
table: 'cities', table: 'cities',
key: 'idCity', key: 'idCity',
type: costanti.FieldType.select_by_server, type: costanti.FieldType.select_by_server,
@@ -167,7 +210,7 @@ export default defineComponent({
useinput: false, useinput: false,
}, },
{ {
label: 'Competenza', label: 'Categoria',
table: 'skills', table: 'skills',
key: 'idSkill', key: 'idSkill',
value: tools.getCookie(tools.COOK_SEARCH + 'skills' + '_' + tools.getCookie(tools.COOK_SEARCH + 'sectors', costanti.FILTER_TUTTI), costanti.FILTER_TUTTI), value: tools.getCookie(tools.COOK_SEARCH + 'skills' + '_' + tools.getCookie(tools.COOK_SEARCH + 'sectors', costanti.FILTER_TUTTI), costanti.FILTER_TUTTI),
@@ -178,7 +221,7 @@ export default defineComponent({
showcount: true, showcount: true,
useinput: false, useinput: false,
}, },
{ /*{
label: 'Specializzazione', label: 'Specializzazione',
table: 'subskills', table: 'subskills',
key: 'idSubSkill', key: 'idSubSkill',
@@ -191,16 +234,11 @@ export default defineComponent({
useinput: false, useinput: false,
icon: 'far fa-id-card', icon: 'far fa-id-card',
}, },
/*{ */
label: 'Regione',
table: 'regions',
key: 'idReg',
value: 0, /*
type: costanti.FieldType.select,
arrvalue: tools.getCookie(tools.COOK_SEARCH + 'regions', [costanti.FILTER_TUTTI]),
filter: null,
useinput: true,
},*/
{ {
label: 'Livello', label: 'Livello',
table: 'levels', table: 'levels',
@@ -213,20 +251,160 @@ export default defineComponent({
useinput: false, useinput: false,
filteradv: true, filteradv: true,
}, },
*/
{ {
label: 'Stato', label: 'In cambio di',
table: 'statusSkills', table: 'contribtypes',
key: 'idStatusSkill', key: 'idContribType',
value: 0, value: 0,
arrvalue: tools.getCookie(tools.COOK_SEARCH + 'statusSkills', []), arrvalue: tools.getCookie(tools.COOK_SEARCH + 'contribtypes', []),
type: costanti.FieldType.multiselect, type: costanti.FieldType.multiselect,
filter: null, filter: null,
useinput: false, useinput: false,
icon: 'mood', icon: 'fas fa-hand-holding',
filteradv: true, filteradv: true,
//icon: 'swap_horizontal_circle',
},
/*
{
label: '',
table: '',
key: '',
value: 0,
type: costanti.FieldType.separator,
arrvalue: [],
addall: true,
filter: null,
showcount: true,
useinput: false,
notinsearch: true,
icon: '',
},
*/
]
searchList_Beni.value = [
/*{
label: 'Regione',
table: 'regions',
key: 'idReg',
value: 0,
type: costanti.FieldType.select,
arrvalue: tools.getCookie(tools.COOK_SEARCH + 'regions', [costanti.FILTER_TUTTI]),
filter: null,
useinput: true,
},*/
{
label: 'Provincia',
table: 'provinces',
key: 'idProvince',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'provinces', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
filter: null,
useinput: true,
icon: 'flag',
}, },
{ {
label: 'Contributo', label: 'Comune',
table: 'cities',
key: 'idCity',
type: costanti.FieldType.select_by_server,
value: tools.getCookie(tools.COOK_SEARCH + 'cities', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
useinput: true,
filter: null,
// filter: getFilterCitiesByProvince,
// param1: shared_consts.PARAM_SHOW_PROVINCE,
tablesel: 'cities',
},
{
label: 'Offro/Cerco',
table: 'adtypegoods',
key: 'adType',
value: tools.getCookie(tools.COOK_SEARCH + 'adtypegoods', costanti.FILTER_TUTTI),
arrvalue: [],
addall: true,
type: costanti.FieldType.select,
filter: null,
useinput: false,
},
{
label: 'Settore',
table: 'sectorgoods',
key: 'idSectorGood',
value: tools.getCookie(tools.COOK_SEARCH + 'sectorgoods', 0),
arrvalue: [],
type: costanti.FieldType.select,
filter: null,
addall: true,
notinsearch: true,
useinput: false,
},
{
label: 'Categoria',
table: 'goods',
key: 'idGood',
value: tools.getCookie(tools.COOK_SEARCH + 'goods' + '_' + tools.getCookie(tools.COOK_SEARCH + 'sectorgoods', costanti.FILTER_TUTTI), costanti.FILTER_TUTTI),
arrvalue: [],
type: costanti.FieldType.select,
addall: true,
filter: getFilterGoods,
showcount: true,
useinput: false,
},
{
label: 'Spedizione',
table: 'shippings',
key: 'idShipping',
value: tools.getCookie(tools.COOK_SEARCH + 'shippings', costanti.FILTER_TUTTI),
arrvalue: [],
type: costanti.FieldType.select,
addall: true,
filter: null,
useinput: false,
},
/*{
label: 'Specializzazione',
table: 'subskills',
key: 'idSubSkill',
value: tools.getCookie(tools.COOK_SEARCH + 'subskills' + '_' + tools.getCookie(tools.COOK_SEARCH + 'skills', costanti.FILTER_TUTTI), costanti.FILTER_TUTTI),
type: costanti.FieldType.select,
arrvalue: [],
addall: true,
filter: getFilterSubSkills,
showcount: true,
useinput: false,
icon: 'far fa-id-card',
},
*/
/*
{
label: 'Livello',
table: 'levels',
key: 'numLevel',
value: tools.getCookie(tools.COOK_SEARCH + 'levels', costanti.FILTER_TUTTI),
arrvalue: [],
addall: true,
type: costanti.FieldType.select,
filter: null,
useinput: false,
filteradv: true,
},
*/
{
label: 'In cambio di',
table: 'contribtypes', table: 'contribtypes',
key: 'idContribType', key: 'idContribType',
value: 0, value: 0,
@@ -259,9 +437,8 @@ export default defineComponent({
} }
function extraparams() { function extraparams() {
if (props.table === 'myskills') {
return { return {
lookup1: { lookup1: {
lk_tab: 'users', lk_tab: 'users',
@@ -281,7 +458,7 @@ export default defineComponent({
sector: 1, sector: 1,
idSector: 1, idSector: 1,
idSkill: 1, idSkill: 1,
idSubSkill: 1, // idSubSkill: 1,
myskill: 1, myskill: 1,
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
@@ -312,11 +489,62 @@ export default defineComponent({
lk_as: 'sector', lk_as: 'sector',
af_objId_tab: '', af_objId_tab: '',
}, },
lookup4: { lookup5: {
lk_tab: 'subskills', lk_tab: 'cities',
lk_LF: 'idSubSkill', lk_LF: 'idCity',
lk_FF: '_id', lk_FF: '_id',
lk_as: 'myrec', lk_as: 'mycities',
af_objId_tab: '',
},
}
} else if (props.table === 'myskills') {
return {
lookup1: {
lk_tab: 'users',
lk_LF: 'userId',
lk_FF: '_id',
lk_as: 'user',
af_objId_tab: 'myId',
},
lookup2: {
lk_tab: 'goods',
lk_LF: 'idGood',
lk_FF: '_id',
lk_as: 'recGood',
af_objId_tab: '',
lk_proj: {
recGood: 1,
sectorGood: 1,
idSectorGood: 1,
idGood: 1,
mygood: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
website: 1,
//**ADDFIELD_MYSKILL
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,
username: 1,
name: 1,
surname: 1,
comune: 1,
mycities: 1,
'profile.img': 1,
'profile.qualifica': 1,
}
},
lookup3: {
lk_tab: 'sectorgoods',
lk_LF: 'recGood.idSectorGood',
lk_FF: '_id',
lk_as: 'sectorgood',
af_objId_tab: '', af_objId_tab: '',
}, },
lookup5: { lookup5: {
@@ -328,12 +556,15 @@ export default defineComponent({
}, },
} }
} }
}
function getdefaultnewrec(): any { function getdefaultnewrec(): any {
if (props.table === toolsext.TABMYSKILLS) { if (props.table === toolsext.TABMYSKILLS) {
return tools.getdefaultnewrec_MySkill() return tools.getdefaultnewrec_MySkill()
} else if (props.table === toolsext.TABMYBACHECAS) { } else if (props.table === toolsext.TABMYBACHECAS) {
return tools.getdefaultnewrec_MyBacheca() return tools.getdefaultnewrec_MyBacheca()
} else if (props.table === toolsext.TABMYGOODS) {
return tools.getdefaultnewrec_MyGoods()
} }
return null return null
} }
@@ -353,7 +584,6 @@ export default defineComponent({
arrfilterand, arrfilterand,
filtercustom, filtercustom,
searchList, searchList,
idSector,
search, search,
doSearch, doSearch,
myrecfiltertoggle, myrecfiltertoggle,

View File

@@ -37,7 +37,7 @@
:vertical="costanti.VISUTABLE_LISTA" :vertical="costanti.VISUTABLE_LISTA"
:prop_pagination="mypagination" :prop_pagination="mypagination"
:showType="costanti.SHOW_MYCARD" :showType="costanti.SHOW_MYCARD"
:nodataLabel="'Nessuna Competenza trovata'" :nodataLabel="'Nessun annuncio trovato con i filtri selezionati'"
:prop_search="true" :prop_search="true"
:finder="true" :finder="true"
:choose_visutype="$q.screen.gt.xs" :choose_visutype="$q.screen.gt.xs"

View File

@@ -1,6 +1,6 @@
<template> <template>
<div v-if="tools.isTest()"> <div v-if="tools.isTest()">
<q-banner <!--<q-banner
rounded rounded
dense dense
class="bg-primary text-white" class="bg-primary text-white"
@@ -10,7 +10,7 @@
<q-icon name="fas fa-exclamation-triangle" color="yellow" size="xs" /> <q-icon name="fas fa-exclamation-triangle" color="yellow" size="xs" />
</template> </template>
<span class="mybanner">Ambiente di Test</span> <span class="mybanner">Ambiente di Test</span>
</q-banner> </q-banner>-->
</div> </div>
</template> </template>

View File

@@ -299,49 +299,39 @@ export default defineComponent({
refresh() refresh()
}) })
function searchval(newval: any, table: any) { function setCategBySector(tablecat: string, tabsector: string, newval: any) {
// console.log('searchval', newval, table) const recSector = searchList.value.find((rec) => rec.table === tabsector)
tools.setCookie(tools.COOK_SEARCH + table, newval)
if (table === 'skills') {
const recSector = searchList.value.find((rec) => rec.table === 'sectors')
if (recSector) if (recSector)
tools.setCookie(tools.COOK_SEARCH + table + '_' + recSector.value, newval) tools.setCookie(tools.COOK_SEARCH + tablecat + '_' + recSector.value, newval)
}
if (table === 'sectors') {
for (const item of searchList.value) { for (const item of searchList.value) {
if ((item.table === 'subskills')) { if (item.table === tablecat) {
// item.arrvalue = [costanti.FILTER_TUTTI] const valsaved = tools.getCookie(tools.COOK_SEARCH + tablecat + '_' + newval, costanti.FILTER_TUTTI)
} const rec = searchList.value.find((rec) => rec.table === tablecat) // check if exist
if (item.table === 'skills') {
// console.log('---PRIMA ', item.value)
const valsaved = tools.getCookie(tools.COOK_SEARCH + 'skills' + '_' + newval, costanti.FILTER_TUTTI)
// check if exist
const recSkill = searchList.value.find((rec) => rec.table === 'skills')
let trovato = false let trovato = false
if (recSkill) { if (rec) {
// console.log('recSkill.value', recSkill) const arrvalues = valoriopt.value(rec.value, false)
const arrvalues = valoriopt.value(recSkill.value, false)
// console.log('arrvalues', arrvalues)
if (arrvalues) if (arrvalues)
trovato = arrvalues.find((rec: any) => rec[recSkill.key] === valsaved) trovato = arrvalues.find((rec: any) => rec[rec.key] === valsaved)
} }
if (valsaved && trovato) if (valsaved && trovato)
item.value = valsaved item.value = valsaved
else else
item.value = costanti.FILTER_TUTTI item.value = costanti.FILTER_TUTTI
// console.log('---DOPO ', item.value)
} }
} }
} }
/*if (table === 'skills') {
for (const item of searchList.value) { function searchval(newval: any, table: any) {
if (item.table === 'subskills') { // console.log('searchval', newval, table)
item.arrvalue = [costanti.FILTER_TUTTI] tools.setCookie(tools.COOK_SEARCH + table, newval)
if (table === 'skills') {
setCategBySector(table, 'sectors', newval)
}else if (table === 'goods') {
setCategBySector(table, 'sectorgoods', newval)
} }
}
} */
refresh() refresh()
} }
@@ -412,15 +402,21 @@ export default defineComponent({
let filtersearch3or: any[] = [] let filtersearch3or: any[] = []
let recSector = null let recSector = null
let recSectorGood = null
let recProvince = null let recProvince = null
let recSkill = null let recSkill = null
let idSector = 0 let idSector = 0
let idSectorGood = 0
let idProvince = 0 let idProvince = 0
let idSkill = 0 let idSkill = 0
if (searchList.value) { if (searchList.value) {
recSector = searchList.value.find((item: ISearchList) => item.table === 'sectors') recSector = searchList.value.find((item: ISearchList) => item.table === 'sectors')
idSector = recSector ? recSector.value : 0 idSector = recSector ? recSector.value : 0
} }
if (searchList.value) {
recSectorGood = searchList.value.find((item: ISearchList) => item.table === 'sectorgoods')
idSectorGood = recSectorGood ? recSectorGood.value : 0
}
if (searchList.value) { if (searchList.value) {
recProvince = searchList.value.find((item: ISearchList) => item.table === 'provinces') recProvince = searchList.value.find((item: ISearchList) => item.table === 'provinces')
idProvince = recProvince ? recProvince.value : 0 idProvince = recProvince ? recProvince.value : 0
@@ -494,6 +490,14 @@ export default defineComponent({
filtersearch2.push(obj2) filtersearch2.push(obj2)
} }
} }
if ((item.table === 'goods') && item.value === costanti.FILTER_TUTTI) {
let obj2: any = {}
if (idSectorGood > 0) {
// idSectorGood
obj2['sectorgood._id'] = idSectorGood
filtersearch2.push(obj2)
}
}
if ((item.table === 'subskills') && item.value === costanti.FILTER_TUTTI) { if ((item.table === 'subskills') && item.value === costanti.FILTER_TUTTI) {
let obj2: any = {} let obj2: any = {}
// idSector // idSector

View File

@@ -106,9 +106,10 @@
<div v-if="searchList" <div v-if="searchList"
:class="$q.screen.lt.sm ? `` : `row` + ` text-blue `"> :class="$q.screen.lt.sm ? `` : `row` + ` text-blue `">
<span v-for="(item, index) in searchList" :key="index"> <span v-for="(item, index) in searchList" :key="index">
<div class="text-center q-my-xs" v-if="(item.type === costanti.FieldType.separator)">
<!--<div class="text-center q-my-xs" v-if="(item.type === costanti.FieldType.separator)">
<q-btn size="sm" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" label="Filtri Avanzati" @click="showfilteradv = !showfilteradv"></q-btn> <q-btn size="sm" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" label="Filtri Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div> </div>-->
<CMySelect <CMySelect
:col="fieldsTable.getColByTable(mytable, item.key)" :col="fieldsTable.getColByTable(mytable, item.key)"
@@ -223,6 +224,7 @@
<div v-if="prop_search" class="q-mr-sm full-width"> <div v-if="prop_search" class="q-mr-sm full-width">
<q-input <q-input
v-model="search" filled dense type="search" debounce="500" :hint="hint" v-model="search" filled dense type="search" debounce="500" :hint="hint"
label="Cerca"
v-on:keyup.enter="doSearch" v-on:keyup.enter="doSearch"
> >
@@ -497,7 +499,7 @@
v-for="col in mycolumns" :key="col.name" class="newrec_fields"> v-for="col in mycolumns" :key="col.name" class="newrec_fields">
<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)"> <div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn size="sm" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn> <q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div> </div>
<div <div
v-if="showColCheck(col, tools.TIPOVIS_NEW_RECORD, true, 0, newRecord) && col.foredit "> v-if="showColCheck(col, tools.TIPOVIS_NEW_RECORD, true, 0, newRecord) && col.foredit ">
@@ -542,7 +544,7 @@
<div <div
v-for="col in mycolumns" :key="col.name"> v-for="col in mycolumns" :key="col.name">
<div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)"> <div class="text-center q-my-xs" v-if="(col.fieldtype === costanti.FieldType.separator)">
<q-btn size="sm" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn> <q-btn color="primary" size="md" dense :icon="!showfilteradv ? 'fas fa-arrow-down' : 'fas fa-arrow-up'" label="Campi Avanzati" @click="showfilteradv = !showfilteradv"></q-btn>
</div> </div>
<div <div
v-else-if="showColCheck(col, tools.TIPOVIS_EDIT_RECORD, false) && col.foredit"> v-else-if="showColCheck(col, tools.TIPOVIS_EDIT_RECORD, false) && col.foredit">

View File

@@ -4,6 +4,7 @@ import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore' import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n' import { useI18n } from '@/boot/i18n'
import { tools } from '@store/Modules/tools' import { tools } from '@store/Modules/tools'
import { costanti } from '@store/Modules/costanti'
import { CBigBtn } from '@/components/CBigBtn' import { CBigBtn } from '@/components/CBigBtn'
@@ -18,9 +19,23 @@ export default defineComponent({
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const { t } = useI18n() const { t } = useI18n()
const showInfo = ref(false)
const cardsbig = computed(() => {
return costanti.MAINCARDS.filter((rec: any) => !rec.small)
})
const cardssmall = computed(() => {
return costanti.MAINCARDS.filter((rec: any) => rec.small)
})
return { return {
userStore, userStore,
tools, tools,
costanti,
cardsbig,
cardssmall,
showInfo,
} }
} }
}) })

View File

@@ -1,32 +1,34 @@
<template> <template>
<div> <div>
<div class="row q-ma-sm shadow justify-center" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);"> <div class="row q-ma-xs shadow justify-center" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);">
<CBigBtn <CBigBtn
label="Bacheca" to="/bacheca" icon="fas fa-bullhorn" color="indigo"> v-for="(card, ind) of cardsbig" :key="ind"
:label="card.title" :to="card.to" :icon="card.icon" :color="card.color" :text-color="!!card.textcolor ? card.textcolor : ''"
:small="card.small"
:numcol="2"
:hint="card.hint" :disable="card.disable">
</CBigBtn> </CBigBtn>
</div>
<div class="row shadow justify-center" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);">
<CBigBtn <CBigBtn
label="Lavoro" to="/work" icon="fas fa-briefcase" color="blue"> v-for="(card, ind) of cardssmall" :key="ind"
:label="card.title" :to="card.to" :icon="card.icon" :color="card.color" :text-color="!!card.textcolor ? card.textcolor : ''"
:small="card.small"
:numcol="3"
:hint="card.hint" :disable="card.disable">
</CBigBtn> </CBigBtn>
</div>
</div>
<!--<div class="row justify-center">
<CBigBtn <CBigBtn
label="Scuola" to="/school" icon="fas fa-book-reader" color="orange" disable> label="Info" to="" @click="showInfo = true" icon="fas fa-info" color="primary"
</CBigBtn> :numcol="3"
<CBigBtn >
label="Luoghi" to="/places" icon="fas fa-map-marker-alt" color="cyan" disable>
</CBigBtn>
<CBigBtn
label="Mobilità" to="/mobility" icon="fas fa-car-side" color="red" disable>
</CBigBtn>
<CBigBtn
label="Alimentari" to="/grocery" icon="fas fa-utensils" color="green" disable>
</CBigBtn>
<CBigBtn
label="Socializza" to="/socialising" icon="fas fa-users" color="purple" disable>
</CBigBtn> </CBigBtn>
</div>
<div v-if="showInfo">
</div> </div>-->
<div class="text-center">P.S: Attualmente sono attivi il bottone <b>Bacheca e Lavoro</b>.<br>
Gli altri verranno attivati prossimamente .</div>
</div>
</template> </template>
<script lang="ts" src="./CMainView.ts"> <script lang="ts" src="./CMainView.ts">

View File

@@ -1,5 +1,12 @@
<template> <template>
<q-card class="dialog_card" v-if="mybacheca"> <q-card class="dialog_card" v-if="mybacheca">
<q-footer
class="bg-white small-screen-only text-center"
bordered
>
<q-btn push rounded color="primary" icon="close" label="Chiudi" v-close-popup></q-btn>
</q-footer>
<q-bar dense class="bg-primary text-white"> <q-bar dense class="bg-primary text-white">
{{ mybacheca.username }} {{ mybacheca.username }}
<q-space/> <q-space/>

View File

@@ -253,6 +253,7 @@
</div> </div>
</div> </div>
<div v-else-if="col.fieldtype === costanti.FieldType.date"> <div v-else-if="col.fieldtype === costanti.FieldType.date">
<div v-if="myvalue">
<CDateTime <CDateTime
:label="col.label" :label="col.label"
class="cursor-pointer" class="cursor-pointer"
@@ -265,6 +266,14 @@
@show="OpenEdit"> @show="OpenEdit">
</CDateTime> </CDateTime>
</div> </div>
<div v-else-if="canEdit">
<q-btn
dense
color="primary" @click="OpenEdit"
icon="fas fa-calendar-day"
/>
</div>
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.onlydate"> <div v-else-if="col.fieldtype === costanti.FieldType.onlydate">
<CDateTime <CDateTime
:label="col.label" :label="col.label"
@@ -461,7 +470,7 @@
:color="tools.getColByLevel(myvalue)" :color="tools.getColByLevel(myvalue)"
icon="star_border" icon="star_border"
icon-selected="star" icon-selected="star"
:max="costanti.FieldType.star5 ? 5 : 3" :max="col.fieldtype === costanti.FieldType.star5 ? 5 : 3"
:readonly="true" :readonly="true"
/> />
</div> </div>
@@ -745,6 +754,34 @@
</CMySelect> </CMySelect>
</div> </div>
</div> </div>
<div v-else-if="col.fieldtype === costanti.FieldType.date">
<CDateTime
:label="col.label"
class="cursor-pointer"
v-model:value="myvalue"
:readonly="false"
:minuteinterval="minuteinterval"
:dense="true"
:canEdit="canEdit"
@savetoclose="SaveValueInt"
@show="OpenEdit">
</CDateTime>
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.onlydate">
<CDateTime
:label="col.label"
class="cursor-pointer"
:valueDate="myvalue"
v-model:value="myvalue"
:readonly="false"
:minuteinterval="minuteinterval"
:dense="true"
:canEdit="canEdit"
@savetoclose="SaveValueInt"
@show="OpenEdit"
view="date">
</CDateTime>
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.binary"> <div v-else-if="col.fieldtype === costanti.FieldType.binary">
<CMyToggleList <CMyToggleList

View File

@@ -22,7 +22,7 @@
:label="$t('reg.username_login')" :label="$t('reg.username_login')"
:rules="[ :rules="[
val => !!val || $t('reg.err.required'), val => !!val || $t('reg.err.required'),
val => val.length > 6 || $t('reg.err.atleast') + ' 6 ' + $t('reg.err.char'), val => val.length >= 6 || $t('reg.err.atleast') + ' 6 ' + $t('reg.err.char'),
]"> ]">
<template v-slot:prepend> <template v-slot:prepend>
@@ -40,7 +40,7 @@
:label="$t('reg.password')" :label="$t('reg.password')"
:rules="[ :rules="[
val => !!val || $t('reg.err.required'), val => !!val || $t('reg.err.required'),
val => val.length > 8 || $t('reg.err.atleast') + ' 8 ' + $t('reg.err.char'), val => val.length >= 8 || $t('reg.err.atleast') + ' 8 ' + $t('reg.err.char'),
]"> ]">
<template v-slot:prepend> <template v-slot:prepend>

View File

@@ -1,5 +1,5 @@
import { import {
defineComponent, onBeforeMount, onBeforeUnmount, onMounted, ref, toRef, toRefs, watch, defineComponent, onBeforeMount, onBeforeUnmount, onMounted, ref, toRef, toRefs, watch, computed,
} from 'vue' } from 'vue'
import { tools } from '@store/Modules/tools' import { tools } from '@store/Modules/tools'
@@ -7,7 +7,6 @@ import { CMyFieldDb } from '@/components/CMyFieldDb'
import { costanti } from '@costanti' import { costanti } from '@costanti'
import { useGlobalStore } from '@store/globalStore' import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore' import { useUserStore } from '@store/UserStore'
import { colmySkills } from '@store/Modules/fieldsTable'
import { CGridTableRec } from '@/components/CGridTableRec' import { CGridTableRec } from '@/components/CGridTableRec'
import { IColGridTable, IMySkill, ISkill } from 'model' import { IColGridTable, IMySkill, ISkill } from 'model'
import { toolsext } from '@store/Modules/toolsext' import { toolsext } from '@store/Modules/toolsext'
@@ -58,6 +57,13 @@ export default defineComponent({
const col_footer = ref('') const col_footer = ref('')
const col_tabfooter = ref('') const col_tabfooter = ref('')
const extraparams = computed(() =>{
if (props.table === 'goods')
return extraparams_Goods()
else
return extraparams_Servizi()
})
function mounted() { function mounted() {
let obj = tools.getParamsByTable(props.table) let obj = tools.getParamsByTable(props.table)
@@ -71,7 +77,8 @@ export default defineComponent({
} }
function extraparams() {
function extraparams_Servizi() {
let lk_tab = 'users' let lk_tab = 'users'
let lk_LF = 'userId' let lk_LF = 'userId'
let lk_FF = '_id' let lk_FF = '_id'
@@ -94,7 +101,6 @@ export default defineComponent({
sector: 1, sector: 1,
idSector: 1, idSector: 1,
idSkill: 1, idSkill: 1,
idSubSkill: 1,
myskill: 1, myskill: 1,
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
@@ -129,7 +135,6 @@ export default defineComponent({
sector: 1, sector: 1,
idSector: 1, idSector: 1,
idSkill: 1, idSkill: 1,
idSubSkill: 1,
myskill: 1, myskill: 1,
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
@@ -164,7 +169,6 @@ export default defineComponent({
sector: 1, sector: 1,
idSector: 1, idSector: 1,
idSkill: 1, idSkill: 1,
idSubSkill: 1,
myskill: 1, myskill: 1,
idStatusSkill: 1, idStatusSkill: 1,
idContribType: 1, idContribType: 1,
@@ -189,13 +193,134 @@ export default defineComponent({
} }
}, },
lookup4: { lookup4: {
lk_tab: 'subskills', lk_tab: 'cities',
lk_LF: 'idSubSkill', lk_LF: 'idCity',
lk_FF: '_id', lk_FF: '_id',
lk_as: 'myrec', lk_as: 'mycities',
af_objId_tab: '', af_objId_tab: '',
}, },
lookup5: {
}
}
function extraparams_Goods() {
let lk_tab = 'users'
let lk_LF = 'userId'
let lk_FF = '_id'
let lk_as = 'user'
let af_objId_tab = 'myId'
if (props.username) {
// lk_LF = 'username'
}
return {
lookup1: {
lk_tab,
lk_LF,
lk_FF,
lk_as,
af_objId_tab,
lk_proj: {
recSkill: 1,
sector: 1,
idSector: 1,
idSkill: 1,
idShipping: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
//**ADDFIELD_MYSKILL
website: 1,
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,
username: 1,
name: 1,
surname: 1,
comune: 1,
mycities: 1,
'profile.img': 1,
'profile.qualifica': 1,
}
},
lookup2: {
lk_tab: 'cities',
lk_LF: 'idCity',
lk_FF: '_id',
lk_as: 'comune',
af_objId_tab: '',
lk_proj: {
recSkill: 1,
sector: 1,
idSector: 1,
idSkill: 1,
idShipping: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
//**ADDFIELD_MYSKILL
website: 1,
descr: 1,
date_created: 1,
date_updated: 1,
comune: 1,
userId: 1,
username: 1,
name: 1,
surname: 1,
mycities: 1,
'profile.img': 1,
'profile.qualifica': 1,
}
},
lookup3: {
lk_tab: 'skills',
lk_LF: 'idSkill',
lk_FF: '_id',
lk_as: 'recSkill',
af_objId_tab: '',
lk_proj: {
recSkill: 1,
sector: 1,
idSector: 1,
idSkill: 1,
idShipping: 1,
myskill: 1,
idStatusSkill: 1,
idContribType: 1,
idCity: 1,
numLevel: 1,
adType: 1,
photos: 1,
note: 1,
//**ADDFIELD_MYSKILL
website: 1,
descr: 1,
date_created: 1,
date_updated: 1,
userId: 1,
username: 1,
name: 1,
surname: 1,
comune: 1,
mycities: 1,
'profile.img': 1,
'profile.qualifica': 1,
}
},
lookup4: {
lk_tab: 'cities', lk_tab: 'cities',
lk_LF: 'idCity', lk_LF: 'idCity',
lk_FF: '_id', lk_FF: '_id',
@@ -211,6 +336,8 @@ export default defineComponent({
return tools.getdefaultnewrec_MySkill() return tools.getdefaultnewrec_MySkill()
} else if (props.table === toolsext.TABMYBACHECAS) { } else if (props.table === toolsext.TABMYBACHECAS) {
return tools.getdefaultnewrec_MyBacheca() return tools.getdefaultnewrec_MyBacheca()
} else if (props.table === toolsext.TABMYGOODS) {
return tools.getdefaultnewrec_MyGoods()
} }
return null return null
} }
@@ -220,7 +347,6 @@ export default defineComponent({
return { return {
tools, tools,
costanti, costanti,
colmySkills,
extraparams, extraparams,
fieldsTable, fieldsTable,
col, col,

View File

@@ -0,0 +1,51 @@
import { computed, defineComponent, onMounted, PropType, ref } from 'vue'
import { costanti } from '@costanti'
export default defineComponent({
name: 'CTitlePage',
props: {
ind: {
type: Number,
required: false,
default: -1,
},
title: {
type: String,
required: false
},
icon: {
type: String,
required: false
},
color: {
type: String,
required: false
},
},
setup(props) {
const mytitle = ref('')
const myicon = ref('')
const mycolor = ref('')
function mount() {
if (props.ind === -1) {
mytitle.value = props.title!
myicon.value = props.icon!
mycolor.value = props.color!
} else {
mytitle.value = costanti.MAINCARDS[props.ind].title
myicon.value = costanti.MAINCARDS[props.ind].icon
mycolor.value = costanti.MAINCARDS[props.ind].color
}
}
onMounted(mount)
return {
mytitle,
myicon,
mycolor,
}
},
})

View File

@@ -0,0 +1,19 @@
<template>
<q-banner
rounded
dense
class="text-white"
:style="`text-align: center; background-color: ${mycolor}`">
<template v-slot:avatar>
<q-icon :name="myicon" size="xs" />
</template>
<span class="mybanner">{{mytitle}}</span>
</q-banner>
</template>
<script lang="ts" src="./CTitlePage.ts">
</script>
<style lang="scss" scoped>
@import './CTitlePage.scss';
</style>

View File

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

View File

@@ -345,6 +345,10 @@ export default defineComponent({
} }
function getappname() { function getappname() {
let mystr = ''
if (tools.isTest()){
mystr = 'Ambiente di TEST'
} else {
let mystr = tools.getsuffisso() + tools.getappname(tools.isMobile()) let mystr = tools.getsuffisso() + tools.getappname(tools.isMobile())
if (!tools.isMobile()) { if (!tools.isMobile()) {
//if (!tools.isMobile()) { //if (!tools.isMobile()) {
@@ -353,6 +357,7 @@ export default defineComponent({
} else { } else {
mystr = '' mystr = ''
} }
}
return mystr return mystr
@@ -420,9 +425,9 @@ export default defineComponent({
} }
function getClassColorHeader() { function getClassColorHeader() {
if (tools.isTest()) return 'bg-warning' if (tools.isTest()) return 'bg-light-blue'
if (tools.isDebug()) return 'bg-info' if (tools.isDebug()) return 'bg-info'
return 'bg-primary' return 'bg-light-blue'
} }
function changecmd(value: any) { function changecmd(value: any) {

View File

@@ -380,23 +380,34 @@ const baseroutes: IListRoutes[] = [
infooter: true, infooter: true,
}, },
{ {
active: true, active: false,
order: 100, order: 100,
path: '/bacheca', path: '/bacheca',
materialIcon: 'fas fa-bullhorn', materialIcon: 'fas fa-bullhorn',
name: 'mypages.bacheca', name: 'mypages.bacheca',
component: () => import('@/root/bacheca/bacheca.vue'), component: () => import('@/root/bacheca/bacheca.vue'),
meta: { requiresAuth: true }, meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{
active: true,
order: 12,
path: '/goods',
materialIcon: 'fas fa-briefcase',
name: 'mypages.goods',
component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true, inmenu: true,
infooter: true, infooter: true,
}, },
{ {
active: true, active: true,
order: 15, order: 15,
path: '/work', path: '/services',
materialIcon: 'fas fa-briefcase', materialIcon: 'fas fa-briefcase',
name: 'mypages.work', name: 'mypages.services',
component: () => import('@/root/work/work.vue'), component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true }, meta: { requiresAuth: true },
inmenu: true, inmenu: true,
infooter: true, infooter: true,
@@ -507,8 +518,7 @@ const baseroutes: IListRoutes[] = [
materialIcon: 'fas fa-test', materialIcon: 'fas fa-test',
name: 'mypages.test', name: 'mypages.test',
component: () => import('@/views/testServer/testServer.vue'), component: () => import('@/views/testServer/testServer.vue'),
meta: { requiresAuth: true }, inmenu: true,
inmenu: false,
infooter: false, infooter: false,
}, },
{ {

View File

@@ -258,10 +258,13 @@ export interface IGlobalState {
URL_RESTORE: string URL_RESTORE: string
levels: ILevel[], levels: ILevel[],
adtypes: IAdType[], adtypes: IAdType[],
adtypegoods: IAdType[],
skills: ISkill[], skills: ISkill[],
subSkills: ISubSkill[], goods: IGood[],
// subSkills: ISubSkill[],
statusSkills: IStatusSkill[], statusSkills: IStatusSkill[],
sectors: ISector[], sectors: ISector[],
sectorgoods: ISectorGood[],
catgrps: ICatGrp[], catgrps: ICatGrp[],
cities: ICity[], cities: ICity[],
} }
@@ -619,7 +622,15 @@ export interface ISkill {
icon?: string icon?: string
img?: string img?: string
} }
export interface IGood {
_id: number
descr: string
idSectorGood: number[]
icon?: string
img?: string
}
/*
export interface ISubSkill { export interface ISubSkill {
_id: number _id: number
descr: string descr: string
@@ -628,13 +639,18 @@ export interface ISubSkill {
img?: string img?: string
} }
*/
export interface IStatusSkill { export interface IStatusSkill {
_id: number _id: number
descr: string descr: string
color: string color: string
icon: string
theme: string theme: string
} }
export interface ISector { export interface ISector {
_id: number _id: number
descr: string descr: string
@@ -645,6 +661,16 @@ export interface ISector {
theme: string theme: string
} }
export interface ISectorGood {
_id: number
descr: string
idSectorGood?: number
icon?: string
img?: string
color: string
theme: string
}
export interface ICatGrp { export interface ICatGrp {
_id: number _id: number
descr: string descr: string
@@ -679,7 +705,26 @@ export interface IMySkill {
_id: number _id: number
idSector: number idSector: number
idSkill: number idSkill: number
idSubSkill: number[] // idSubSkill: number[]
idStatusSkill: number[]
idContribType: string[]
idCity: number[]
photos: IGallery[]
NumLevel: number
adType: number
note: string
//**ADDFIELD_MYSKILL
website: string
descr: string
date_created?: Date,
date_updated?: Date,
}
export interface IMyGoods {
_id: number
idSector: number
idSkill: number
idShipping: number[]
idStatusSkill: number[] idStatusSkill: number[]
idContribType: string[] idContribType: string[]
idCity: number[] idCity: number[]
@@ -698,7 +743,7 @@ export interface IMyBacheca {
_id: number _id: number
idSector: number idSector: number
idSkill: number idSkill: number
idSubSkill: number[] // idSubSkill: number[]
idStatusSkill: number[] idStatusSkill: number[]
idContribType: string[] idContribType: string[]
idCity: number[] idCity: number[]

View File

@@ -59,7 +59,8 @@ export interface IUserProfile {
resplist?: any resplist?: any
workerslist?: any workerslist?: any
dateofbirth?: Date|null dateofbirth?: Date|null
born_city?: string born_city_id?: number
born_city_str?: string
born_province?: string born_province?: string
born_country?: string born_country?: string
my_dream?: string my_dream?: string

View File

@@ -9,6 +9,7 @@ import { CFinder } from '@/components/CFinder'
import { CDashboard } from '@/components/CDashboard' import { CDashboard } from '@/components/CDashboard'
import { CChartMap } from '@src/components/CChartMap' import { CChartMap } from '@src/components/CChartMap'
import { CUserNonVerif } from '@/components/CUserNonVerif' import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CTitlePage } from '@/components/CTitlePage'
import { CMapsEsempio } from '@src/components/CMapsEsempio' import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail' import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram' import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -22,7 +23,7 @@ import { colmyBachecas } from '@store/Modules/fieldsTable'
export default defineComponent({ export default defineComponent({
name: 'bacheca', name: 'bacheca',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif }, components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage },
setup() { setup() {
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const userStore = useUserStore() const userStore = useUserStore()

View File

@@ -4,6 +4,7 @@
<div v-if="isLogged()"> <div v-if="isLogged()">
<div v-if="isUserOk()"> <div v-if="isUserOk()">
<CTitlePage :ind="0" />
<CFinder <CFinder
:table="toolsext.TABMYBACHECAS"> :table="toolsext.TABMYBACHECAS">

0
src/root/goods/goods.scss Executable file
View File

View File

@@ -9,6 +9,7 @@ import { CFinder } from '@/components/CFinder'
import { CDashboard } from '@/components/CDashboard' import { CDashboard } from '@/components/CDashboard'
import { CChartMap } from '@src/components/CChartMap' import { CChartMap } from '@src/components/CChartMap'
import { CUserNonVerif } from '@/components/CUserNonVerif' import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CTitlePage } from '@/components/CTitlePage'
import { CMapsEsempio } from '@src/components/CMapsEsempio' import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail' import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram' import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -18,19 +19,15 @@ import { static_data } from '@/db/static_data'
import MixinBase from '@/mixins/mixin-base' import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users' import MixinUsers from '@/mixins/mixin-users'
import { colmySkills } from '@store/Modules/fieldsTable'
export default defineComponent({ export default defineComponent({
name: 'bacheca', name: 'Goods',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif }, components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage },
setup() { setup() {
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const userStore = useUserStore() const userStore = useUserStore()
const { getValDb } = MixinBase() const { getValDb } = MixinBase()
const { isEmailVerified, TelegVerificato } = MixinUsers() const { isEmailVerified, TelegVerificato } = MixinUsers()
function TelegCode() { function TelegCode() {
return userStore.my.profile.teleg_checkcode return userStore.my.profile.teleg_checkcode
} }
@@ -65,7 +62,6 @@ export default defineComponent({
openrighttoolbar, openrighttoolbar,
isUserOk, isUserOk,
getLinkBotTelegram, getLinkBotTelegram,
colmySkills,
} }
}, },
}) })

29
src/root/goods/goods.vue Executable file
View File

@@ -0,0 +1,29 @@
<template>
<q-page class="">
<div v-if="isLogged()">
<div v-if="isUserOk()">
<CTitlePage :ind="0" />
<CFinder
:table="toolsext.TABMYGOODS"
/>
<CDashboard></CDashboard>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
</q-page>
</template>
<script lang="ts" src="./goods.ts">
</script>
<style lang="scss" scoped>
@import './goods.scss';
</style>

View File

68
src/root/services/services.ts Executable file
View File

@@ -0,0 +1,68 @@
import {
defineComponent, ref, computed,
} from 'vue'
import { tools } from '@src/store/Modules/tools'
import { toolsext } from '@src/store/Modules/toolsext'
import { CSkill } from '@/components/CSkill'
import { CFinder } from '@/components/CFinder'
import { CDashboard } from '@/components/CDashboard'
import { CTitlePage } from '@/components/CTitlePage'
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'
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'
import { costanti } from '@costanti'
export default defineComponent({
name: 'Services',
components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
const { isEmailVerified, TelegVerificato } = MixinUsers()
function TelegCode() {
return userStore.my.profile.teleg_checkcode
}
function openrighttoolbar() {
globalStore.rightDrawerOpen = true
}
function isLogged() {
return userStore.isLogged
}
function isUserOk() {
return userStore.isUserOk()
}
function getLinkBotTelegram(): string {
if ( tools.isTest() && !process.env.DEV) {
return getValDb('TELEG_BOT_LINK_TEST', false)
} else{
return getValDb('TELEG_BOT_LINK', false)
}
}
return {
tools,
toolsext,
static_data,
isEmailVerified,
TelegCode,
TelegVerificato,
isLogged,
openrighttoolbar,
isUserOk,
getLinkBotTelegram,
}
},
})

View File

@@ -1,5 +1,6 @@
<template> <template>
<q-page class=""> <q-page class="">
<CTitlePage :ind="1" />
<div v-if="isLogged()"> <div v-if="isLogged()">
@@ -21,8 +22,8 @@
</q-page> </q-page>
</template> </template>
<script lang="ts" src="./work.ts"> <script lang="ts" src="./services.ts">
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import './work.scss'; @import './services.scss';
</style> </style>

View File

@@ -7,13 +7,20 @@ import { CTitleBanner } from '@/components/CTitleBanner'
import { CGridTableRec } from '@/components/CGridTableRec' import { CGridTableRec } from '@/components/CGridTableRec'
import { colTablegroups } from '@src/store/Modules/fieldsTable' import { colTablegroups } from '@src/store/Modules/fieldsTable'
import { tools } from '@store/Modules/tools'
export default defineComponent({ export default defineComponent({
name: 'GroupPage', name: 'GroupPage',
components: { CImgText, CCard, CMyPage, CTitleBanner, CGridTableRec }, components: { CImgText, CCard, CMyPage, CTitleBanner, CGridTableRec },
setup() { setup() {
function getdefaultnewrec(): any {
return tools.getdefaultnewrec_MyGroup()
}
return { return {
colTablegroups colTablegroups,
getdefaultnewrec
} }
} }
}) })

View File

@@ -15,6 +15,7 @@
prop_mytable="groups" prop_mytable="groups"
prop_mytitle="Gruppi" prop_mytitle="Gruppi"
:prop_mycolumns="colTablegroups" :prop_mycolumns="colTablegroups"
:defaultnewrec="getdefaultnewrec"
prop_colkey="descr" prop_colkey="descr"
nodataLabel="Nessun Gruppo" nodataLabel="Nessun Gruppo"
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"> noresultLabel="Il filtro selezionato non ha trovato nessun risultato">

View File

@@ -20,7 +20,9 @@ export default defineComponent({
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const arrSector = ref(<any[]>[]) const arrSector = ref(<any[]>[])
const arrSectorGood = ref(<any[]>[])
const arrSkill = ref(<any[]>[]) const arrSkill = ref(<any[]>[])
const arrGood = ref(<any[]>[])
const incaricamento = ref(false) const incaricamento = ref(false)
@@ -30,6 +32,8 @@ export default defineComponent({
const inputfile = ref('') const inputfile = ref('')
const risultato = ref('') const risultato = ref('')
const caricaDatiToggle = ref(false)
const ListaCmd = ref( const ListaCmd = ref(
[ [
{ {
@@ -45,8 +49,12 @@ export default defineComponent({
value: shared_consts.Cmd.CITIES_SERVER value: shared_consts.Cmd.CITIES_SERVER
}, },
{ {
label: 'Importa Categorie da TXT', label: 'Importa Categorie Servizi da TXT',
value: shared_consts.Cmd.CAT_TXT value: shared_consts.Cmd.CAT_SKILL_TXT
},
{
label: 'Importa Categorie Beni (Goods) da TXT',
value: shared_consts.Cmd.CAT_GOODS_TXT
}, },
{ {
label: 'converti da TXT seperato senza spazi', label: 'converti da TXT seperato senza spazi',
@@ -55,8 +63,16 @@ export default defineComponent({
] ]
) )
function created() { function caricadati() {
inputfile.value = ''
if (!caricaDatiToggle.value) {
arrSector.value = []
arrSectorGood.value = []
arrSkill.value = []
arrGood.value = []
return
}
const sortBy = 'descr' const sortBy = 'descr'
const descending = 1 const descending = 1
@@ -67,7 +83,7 @@ export default defineComponent({
myobj[sortBy] = 1 myobj[sortBy] = 1
const params: IParamsQuery = { const params: IParamsQuery = {
table: 'sectors', table: '',
startRow: 0, startRow: 0,
endRow: 10000, endRow: 10000,
filter: '', filter: '',
@@ -80,42 +96,89 @@ export default defineComponent({
userId: '' userId: ''
} }
if (true) {
params.table = 'sectors'
globalStore.loadTable(params).then((data) => { globalStore.loadTable(params).then((data) => {
arrSector.value = data.rows arrSector.value = data.rows
}) })
params.table = 'sectorgoods'
globalStore.loadTable(params).then((data) => {
arrSectorGood.value = data.rows
})
params.table = 'skills' params.table = 'skills'
globalStore.loadTable(params).then((data) => { globalStore.loadTable(params).then((data) => {
arrSkill.value = data.rows arrSkill.value = data.rows
}) })
params.table = 'goods'
globalStore.loadTable(params).then((data) => {
arrGood.value = data.rows
})
} }
function createSector(cat: string) { }
const myid = arrSector.value.length + 1
arrSector.value.push({_id: myid, descr: cat}) function created() {
inputfile.value = ''
if (caricaDatiToggle.value) {
caricadati()
}
}
function createSector(cat: string, cmd: number) {
let arr = []
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
arr = arrSectorGood.value
} else {
arr = arrSector.value
}
const myid = arr.length + 1
arr.push({_id: myid, descr: cat})
return myid return myid
} }
function findidSector(cat: string) { function findidSector(cat: string, cmd: number) {
const rec = arrSector.value.find((rec) => rec.descr === cat) let arr = []
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
arr = arrSectorGood.value
} else {
arr = arrSector.value
}
const rec = arr.find((rec) => rec.descr === cat)
if (rec) { if (rec) {
return rec._id return rec._id
} }
return 0; return 0;
} }
function findidSkill(cat: string) { function findidSkill(cat: string, cmd: number) {
const rec = arrSkill.value.find((rec) => rec.descr === cat) let arr = []
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
arr = arrGood.value
} else {
arr = arrSkill.value
}
const rec = arr.find((rec) => rec.descr === cat)
if (rec) { if (rec) {
return rec._id return rec._id
} }
return 0; return 0;
} }
function createSkill(cat: string) { function createSkill(cat: string, cmd: number) {
const myid = arrSkill.value.length + 1 let arr = []
arrSkill.value.push({_id: myid, descr: cat}) if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
arr = arrGood.value
} else {
arr = arrSkill.value
}
const myid = arr.length + 1
arr.push({_id: myid, descr: cat})
return myid return myid
} }
@@ -147,7 +210,7 @@ export default defineComponent({
arrstr = myarr[i].split(',') arrstr = myarr[i].split(',')
sector = arrstr[0] sector = arrstr[0]
skill = arrstr[1] skill = arrstr[1]
sotto_cat = arrstr[2] // sotto_cat = arrstr[2]
// sotto_cat = myarr[i].replace('\'', '\\\'') // sotto_cat = myarr[i].replace('\'', '\\\'')
// sector = myarr[i+2] // sector = myarr[i+2]
if (skill) if (skill)
@@ -156,9 +219,9 @@ export default defineComponent({
sector = sector.replace('\'', '\\\'') sector = sector.replace('\'', '\\\'')
if (sector) { if (sector) {
idSector = findidSector(sector) idSector = findidSector(sector, cmd)
if (!idSector) { if (!idSector) {
idSector = createSector(sector) idSector = createSector(sector, cmd)
// sectors // sectors
strsectors += '{ \n' strsectors += '{ \n'
@@ -168,19 +231,25 @@ export default defineComponent({
} }
if (skill !== '') { if (skill !== '') {
idSkill = findidSkill(skill) idSkill = findidSkill(skill, cmd)
if (!idSkill) { if (!idSkill) {
idSkill = createSkill(skill) idSkill = createSkill(skill, cmd)
// skills // skills
strskills += '{ \n' strskills += '{ \n'
strsectors += ' _id:' + idSkill + ',' strskills += ' _id:' + idSkill + ','
if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
strskills += ' idSectorGood: [' + idSector + '],'
}else if (cmd === shared_consts.Cmd.CAT_SKILL_TXT) {
strskills += ' idSector: [' + idSector + '],' strskills += ' idSector: [' + idSector + '],'
}
strskills += ' descr:\'' + skill + '\',' strskills += ' descr:\'' + skill + '\','
strskills += '}, \n' strskills += '}, \n'
} }
} }
/*
if (sotto_cat !== '') { if (sotto_cat !== '') {
// subskills // subskills
strsubskills += '{ \n' strsubskills += '{ \n'
@@ -188,6 +257,8 @@ export default defineComponent({
strsubskills += ' descr:\'' + sotto_cat + '\',' strsubskills += ' descr:\'' + sotto_cat + '\','
strsubskills += '}, \n' strsubskills += '}, \n'
} }
*/
} }
indrecsub++ indrecsub++
@@ -199,9 +270,11 @@ export default defineComponent({
ris += 'module.exports = {\n' + ris += 'module.exports = {\n' +
' list: [' + strskills + ']' ' list: [' + strskills + ']'
ris += '<br><br><br><br>' ris += '<br><br><br><br>'
ris += 'module.exports = {\n' + /*ris += 'module.exports = {\n' +
' list: [' + strsubskills + ']' ' list: [' + strsubskills + ']'
*/
return ris return ris
} }
@@ -241,7 +314,9 @@ export default defineComponent({
delim = ',' delim = ','
} else if ((cmd === shared_consts.Cmd.COMUNI) || (cmd === shared_consts.Cmd.CITIES_SERVER)) { } else if ((cmd === shared_consts.Cmd.COMUNI) || (cmd === shared_consts.Cmd.CITIES_SERVER)) {
delim = ';' delim = ';'
} else if (cmd === shared_consts.Cmd.CAT_TXT) { } else if (cmd === shared_consts.Cmd.CAT_SKILL_TXT) {
return importCmdTxt(cmd, testo);
} else if (cmd === shared_consts.Cmd.CAT_GOODS_TXT) {
return importCmdTxt(cmd, testo); return importCmdTxt(cmd, testo);
} else if (cmd === shared_consts.Cmd.CAT_NO_SPAZI) { } else if (cmd === shared_consts.Cmd.CAT_NO_SPAZI) {
return importNoSpazi(cmd, testo); return importNoSpazi(cmd, testo);
@@ -326,6 +401,8 @@ export default defineComponent({
cosafare, cosafare,
ListaCmd, ListaCmd,
eseguiCmd, eseguiCmd,
caricaDatiToggle,
caricadati,
} }
} }
}) })

View File

@@ -1,6 +1,9 @@
<template> <template>
<CMyPage img="" title="Import Data" keywords="" description=""> <CMyPage img="" title="Import Data" keywords="" description="">
<div class="q-ma-sm"> <div class="q-ma-sm">
<q-toggle v-model="caricaDatiToggle" @click="caricadati()"
label="Carica Dati"></q-toggle>
<br> <br>
<q-select rounded outlined v-model="cosafare" <q-select rounded outlined v-model="cosafare"
:options="ListaCmd" :options="ListaCmd"
@@ -16,10 +19,10 @@
<q-btn <q-btn
label="Esegui" label="Esegui"
@click="eseguiCmd"></q-btn> @click="eseguiCmd"></q-btn>
{{risultato}}
<br><br><br><br><br> <br><br>
VERSIONE HTML:
<div v-html="risultato"></div> <div v-html="risultato"></div>
<br> <br>
<br> <br>

View File

@@ -78,24 +78,11 @@ export default defineComponent({
return fieldsTable return fieldsTable
} }
function userlist() {
if (static_data.functionality.ENABLE_REG_AYNI) {
return db_fieldsTable().colTableUsers
} else if (static_data.functionality.ENABLE_REG_CNM) {
return db_fieldsTable().colTableUsersCNM
} else if (static_data.functionality.ENABLE_REG_ISP) {
return db_fieldsTable().colTableUsersISP
} else {
return db_fieldsTable().colTableUsersBase
}
}
onMounted(mounted) onMounted(mounted)
return { return {
arrfilterand, arrfilterand,
userlist, fieldsTable,
} }
} }
}) })

View File

@@ -3,7 +3,7 @@
<CGridTableRec <CGridTableRec
prop_mytable="users" prop_mytable="users"
prop_mytitle="Lista Utenti" prop_mytitle="Lista Utenti"
:prop_mycolumns="userlist()" :prop_mycolumns="fieldsTable.userlist()"
prop_colkey="_id" prop_colkey="_id"
nodataLabel="Nessun Utente" nodataLabel="Nessun Utente"
noresultLabel="Il filtro selezionato non ha trovato nessun risultato" noresultLabel="Il filtro selezionato non ha trovato nessun risultato"

View File

@@ -23,6 +23,7 @@ const msg_it = {
list: 'Lista', list: 'Lista',
select_image: 'Scegli un\'Immagine', select_image: 'Scegli un\'Immagine',
load_image: 'Carica un\'Immagine', load_image: 'Carica un\'Immagine',
data_choose: 'Scegli la Data',
}, },
profile: { profile: {
chisei: 'Chi Sei? Raccontaci di te:', chisei: 'Chi Sei? Raccontaci di te:',
@@ -483,7 +484,7 @@ const msg_it = {
numTesseraInterna: 'Tess', numTesseraInterna: 'Tess',
codiceConacreis: 'Conacreis', codiceConacreis: 'Conacreis',
residency_address: 'Indirizzo di Residenza', residency_address: 'Indirizzo di Residenza',
residency_city: 'Città di Residenza', residency_city: 'Comune di Residenza',
residency_province: 'Provincia', residency_province: 'Provincia',
residency_zipcode: 'CAP', residency_zipcode: 'CAP',
residency_country: 'Paese', residency_country: 'Paese',
@@ -492,7 +493,7 @@ const msg_it = {
dateofreg: 'Registrato', dateofreg: 'Registrato',
dateofapproved: 'Approvato', dateofapproved: 'Approvato',
dateofbirth: 'Data di Nascita', dateofbirth: 'Data di Nascita',
born_city: 'Città di Nascita', born_city: 'Comune di Nascita',
born_province: 'Provincia di Nascita', born_province: 'Provincia di Nascita',
nationality_born: 'Paese di Nascita', nationality_born: 'Paese di Nascita',
iscrizione_compilata: 'Iscritto', iscrizione_compilata: 'Iscritto',
@@ -830,8 +831,8 @@ const msg_it = {
ask_to_verify_reg: 'Chiedi Verif. Reg', ask_to_verify_reg: 'Chiedi Verif. Reg',
}, },
skill: { skill: {
name: 'Competenza', name: 'Categoria',
city: 'Città', city: 'Comune',
photos: 'Foto', photos: 'Foto',
note: 'Note', note: 'Note',
short_node: 'Breve Nota', short_node: 'Breve Nota',
@@ -841,7 +842,7 @@ const msg_it = {
name: 'Livello', name: 'Livello',
}, },
statusSkill: { statusSkill: {
name: 'Stato', name: 'Di Persona / On Line',
}, },
store: { store: {
description: 'Descrizione', description: 'Descrizione',
@@ -856,7 +857,7 @@ const msg_it = {
name: 'Categoria', name: 'Categoria',
}, },
contribtype: { contribtype: {
name: 'Contributo' name: 'In Cambio di'
}, },
bot: { bot: {
page: 'Pagina', page: 'Pagina',
@@ -879,7 +880,8 @@ const msg_it = {
create_group: 'Crea Gruppo', create_group: 'Crea Gruppo',
friends: 'Amici', friends: 'Amici',
bacheca: 'Bacheca', bacheca: 'Bacheca',
work: 'Lavoro', services: 'Servizi',
goods: 'Beni',
test: 'Test', test: 'Test',
groups: 'Gruppi', groups: 'Gruppi',
request_friends: 'Rich. Amicizia', request_friends: 'Rich. Amicizia',

View File

@@ -12,6 +12,84 @@ export const costanti = {
SHOW_GROUPINFO: 5, SHOW_GROUPINFO: 5,
SHOW_MYCARD: 10, SHOW_MYCARD: 10,
MAINCARDS: [
{
title: ' Beni ',
to: '/goods',
icon: 'fas fa-tshirt',
color: 'indigo',
hint: '',
},
{
title: 'Servizi',
to: '/services',
icon: 'fas fa-house-user',
color: 'red',
hint: '',
},
{
title: 'Luoghi',
to: '/places',
icon: 'fas fa-map-marker-alt',
color: 'blue',
hint: '',
disable: true,
},
{
title: 'Mobilità',
to: '/places',
icon: 'fas fa-taxi',
color: 'yellow-5',
textcolor: 'grey-10',
hint: '',
disable: true,
},
{
title: 'Scuola',
to: '/school',
icon: 'fas fa-book-open',
color: 'orange',
hint: '',
disable: true,
},
{
title: 'Alimenti',
to: '/foods',
icon: 'fas fa-utensils',
color: 'green-5',
hint: '',
disable: true,
},
{
title: 'Tue_Idee',
to: '/ideas',
icon: 'fas fa-lightbulb',
color: 'red-5',
textcolor: '',
hint: '',
disable: true,
small: true,
},
{
title: 'Aiuto',
to: '/bacheca',
icon: 'event',
color: 'pink-5',
hint: 'eventi, last minute, offerte di lavoro',
disable: true,
small: true,
},
{
title: 'Socializza',
to: '/socialising',
icon: 'fas fa-users',
color: 'purple-5',
hint: '',
disable: true,
small: true,
},
],
BINARY_CHECK: 1, BINARY_CHECK: 1,
RISERVATO_PASSWORD: 1, RISERVATO_PASSWORD: 1,

View File

@@ -4,6 +4,7 @@ import { lists } from './lists'
import { costanti } from './costanti' import { costanti } from './costanti'
import { useGlobalStore } from '@store/globalStore' import { useGlobalStore } from '@store/globalStore'
import { toolsext } from '@store/Modules/toolsext' import { toolsext } from '@store/Modules/toolsext'
import { static_data } from '@/db/static_data'
const DeleteRec = { const DeleteRec = {
name: 'deleterec', name: 'deleterec',
@@ -351,6 +352,24 @@ export const colSectors = [
AddCol(DuplicateRec), AddCol(DuplicateRec),
] ]
export const colSectorGoods = [
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descr', label_trans: 'store.description' }),
AddCol({
name: 'idSectorGood',
label_trans: 'sectors.name',
fieldtype: costanti.FieldType.select,
jointable: 'sectorgoods',
}),
AddCol({ name: 'main', label_trans: 'store.main', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'color', label_trans: 'products.color' }),
AddCol({ name: 'theme', label_trans: 'products.theme' }),
AddCol({ name: 'img', label_trans: 'store.img' }),
AddCol({ name: 'icon', label_trans: 'store.icon' }),
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
export const colCatGrps = [ export const colCatGrps = [
AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }), AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descr', label_trans: 'store.description' }), AddCol({ name: 'descr', label_trans: 'store.description' }),
@@ -444,7 +463,24 @@ export const colSkills = [
AddCol(DuplicateRec), AddCol(DuplicateRec),
AddCol(DeleteRec), AddCol(DeleteRec),
] ]
export const colGoods = [
// AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descr', label_trans: 'store.description' }),
AddCol({ name: 'img', label_trans: 'store.img' }),
AddCol({ name: 'icon', label_trans: 'store.icon' }),
AddCol({
name: 'idSectorGood',
label_trans: 'sectors.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'sectorgoods',
}),
AddCol({ name: 'color', label_trans: 'products.color' }),
AddCol({ name: 'theme', label_trans: 'products.theme' }),
AddCol(DuplicateRec),
AddCol(DeleteRec),
]
/*
export const colSubSkills = [ export const colSubSkills = [
// AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }), // AddCol({ name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'descr', label_trans: 'store.description' }), AddCol({ name: 'descr', label_trans: 'store.description' }),
@@ -462,6 +498,8 @@ export const colSubSkills = [
AddCol(DeleteRec), AddCol(DeleteRec),
] ]
*/
export const colmyUserPeople = [ export const colmyUserPeople = [
// AddCol({ name: '_id', label_trans: 'reg.id' }), // AddCol({ name: '_id', label_trans: 'reg.id' }),
AddCol({ name: 'username', label_trans: 'reg.username_short' }), AddCol({ name: 'username', label_trans: 'reg.username_short' }),
@@ -493,7 +531,13 @@ export const colmyUserGroup = [
icon: 'category', icon: 'category',
noshowlabel: true, noshowlabel: true,
}), }),
AddCol({ name: 'descr', label_trans: 'proj.longdescr', required: true, noshowlabel: true, }), AddCol(
{
name: 'descr', label_trans: 'proj.longdescr', required: true,
noshowlabel: true,
maxlength: 40
}
),
AddCol({ AddCol({
name: 'visibility', name: 'visibility',
label_trans: 'bot.visibility', label_trans: 'bot.visibility',
@@ -546,7 +590,155 @@ export const colmyUserGroup = [
] ]
export const colmyGoods = [
AddCol({
name: 'username',
label_trans: 'reg.username',
foredit: false,
tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip,
link: '/my/username',
noshowlabel: true,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
}),
AddCol({
name: 'idCity',
label_trans: 'skill.city',
fieldtype: costanti.FieldType.multiselect_by_server,
jointable: 'cities',
tablesel: 'cities',
noshowlabel: true,
icon: 'fas fa-map-marker-alt',
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: 'adTypeGood',
label_trans: 'adTypes.name',
fieldtype: costanti.FieldType.select,
required: true,
jointable: 'adtypegoods',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit,
icon: 'fas fa-bullhorn',
noshowlabel: true,
}),
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,
required: true,
}),
AddCol({
name: 'idSectorGood',
label_trans: 'sectors.name',
fieldtype: costanti.FieldType.select,
required: true,
jointable: 'sectorgoods',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit,
visible: true,
icon: 'category',
}),
AddCol({
name: 'idGood',
label_trans: 'skill.name',
fieldtype: costanti.FieldType.select,
required: true,
jointable: 'goods',
filter_table: 'sectorgoods',
filter_field: 'idSectorGood',
noshowlabel: true,
icon: 'engineering',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
allowNewValue: true,
}),
AddCol({
name: 'idShipping',
label_trans: 'shipping.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'shippings',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'fas fa-shipping-fast',
//icon: 'fas fa-hands-helping',
// isadvanced_field: true,
}),
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({
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: '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({
name: 'note', label_trans: 'proj.longdescr', fieldtype: costanti.FieldType.html,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
titlepopupedit: 'Dettagli', field_extra1: 'username', subfield_extra1: '',
isadvanced_field: true,
}),
//**ADDFIELD_MYSKILL
AddCol({
name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist
}),
AddCol(DuplicateRec),
AddCol(ModifRec),
AddCol(DeleteRec),
]
export const colmySkills = [ export const colmySkills = [
AddCol({
name: 'idStatusSkill',
label_trans: 'statusSkill.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'statusSkills',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'mood',
required: true,
}),
AddCol({ AddCol({
name: 'username', name: 'username',
label_trans: 'reg.username', label_trans: 'reg.username',
@@ -586,7 +778,8 @@ export const colmySkills = [
fieldtype: costanti.FieldType.string, fieldtype: costanti.FieldType.string,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
maxlength: 200 maxlength: 200,
required: true,
}), }),
AddCol({ AddCol({
name: 'idSector', name: 'idSector',
@@ -602,7 +795,6 @@ export const colmySkills = [
name: 'idSkill', name: 'idSkill',
label_trans: 'skill.name', label_trans: 'skill.name',
fieldtype: costanti.FieldType.select, fieldtype: costanti.FieldType.select,
required: true,
jointable: 'skills', jointable: 'skills',
filter_table: 'sectors', filter_table: 'sectors',
filter_field: 'idSector', filter_field: 'idSector',
@@ -610,6 +802,18 @@ export const colmySkills = [
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: true,
required: 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: '', name: '',
@@ -618,7 +822,7 @@ export const colmySkills = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit,
visible: false, visible: false,
}), }),
AddCol({ /*AddCol({
name: 'idSubSkill', name: 'idSubSkill',
label_trans: 'skill.subskill', label_trans: 'skill.subskill',
fieldtype: costanti.FieldType.multiselect, fieldtype: costanti.FieldType.multiselect,
@@ -633,6 +837,8 @@ export const colmySkills = [
isadvanced_field: true, isadvanced_field: true,
}), }),
*/
AddCol({ AddCol({
name: 'numLevel', name: 'numLevel',
label_trans: 'level.name', label_trans: 'level.name',
@@ -644,27 +850,6 @@ export const colmySkills = [
icon: 'grading', icon: 'grading',
isadvanced_field: true, isadvanced_field: true,
}), }),
AddCol({
name: 'idStatusSkill',
label_trans: 'statusSkill.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'statusSkills',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'mood',
isadvanced_field: true,
}),
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: 'currency_exchange',
//icon: 'fas fa-hands-helping',
isadvanced_field: true,
}),
AddCol({ AddCol({
name: 'photos', name: 'photos',
label_trans: 'skill.photos', label_trans: 'skill.photos',
@@ -681,14 +866,27 @@ export const colmySkills = [
isadvanced_field: true, isadvanced_field: true,
}), }),
//**ADDFIELD_MYSKILL //**ADDFIELD_MYSKILL
AddCol({ name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link, AddCol({
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist }), name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist
}),
AddCol(DuplicateRec), AddCol(DuplicateRec),
AddCol(ModifRec), AddCol(ModifRec),
AddCol(DeleteRec), AddCol(DeleteRec),
] ]
export const colmyBachecas = [ export const colmyBachecas = [
AddCol({
name: 'idStatusSkill',
label_trans: 'statusSkill.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'statusSkills',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'mood',
isadvanced_field: true,
}),
AddCol({ AddCol({
name: 'username', name: 'username',
label_trans: 'reg.username', label_trans: 'reg.username',
@@ -728,7 +926,8 @@ export const colmyBachecas = [
fieldtype: costanti.FieldType.string, fieldtype: costanti.FieldType.string,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
maxlength: 200 maxlength: 200,
required: true,
}), }),
AddCol({ AddCol({
name: 'idSector', name: 'idSector',
@@ -744,7 +943,6 @@ export const colmyBachecas = [
name: 'idSkill', name: 'idSkill',
label_trans: 'skill.name', label_trans: 'skill.name',
fieldtype: costanti.FieldType.select, fieldtype: costanti.FieldType.select,
required: true,
jointable: 'skills', jointable: 'skills',
filter_table: 'sectors', filter_table: 'sectors',
filter_field: 'idSector', filter_field: 'idSector',
@@ -752,6 +950,7 @@ export const colmyBachecas = [
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: true,
required: false,
}), }),
AddCol({ AddCol({
name: '', name: '',
@@ -786,16 +985,6 @@ export const colmyBachecas = [
icon: 'grading', icon: 'grading',
isadvanced_field: true, isadvanced_field: true,
}), }),
AddCol({
name: 'idStatusSkill',
label_trans: 'statusSkill.name',
fieldtype: costanti.FieldType.multiselect,
jointable: 'statusSkills',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true,
icon: 'mood',
isadvanced_field: true,
}),
AddCol({ AddCol({
name: 'idContribType', name: 'idContribType',
label_trans: 'contribtype.name', label_trans: 'contribtype.name',
@@ -803,7 +992,7 @@ export const colmyBachecas = [
jointable: 'contribtypes', jointable: 'contribtypes',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
noshowlabel: true, noshowlabel: true,
icon: 'currency_exchange', icon: 'fas fa-hand-holding',
//icon: 'fas fa-hands-helping', //icon: 'fas fa-hands-helping',
isadvanced_field: true, isadvanced_field: true,
}), }),
@@ -823,8 +1012,10 @@ export const colmyBachecas = [
isadvanced_field: true, isadvanced_field: true,
}), }),
//**ADDFIELD_MYBACHECAS //**ADDFIELD_MYBACHECAS
AddCol({ name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link, AddCol({
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist }), name: 'website', label_trans: 'reg.website', isadvanced_field: true, fieldtype: costanti.FieldType.link,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist
}),
AddCol(DuplicateRec), AddCol(DuplicateRec),
AddCol(ModifRec), AddCol(ModifRec),
AddCol(DeleteRec), AddCol(DeleteRec),
@@ -835,6 +1026,7 @@ export const colStatusSkills = [
AddCol({ name: 'descr', label_trans: 'store.description' }), AddCol({ name: 'descr', label_trans: 'store.description' }),
AddCol({ name: 'color', label_trans: 'products.color' }), AddCol({ name: 'color', label_trans: 'products.color' }),
AddCol({ name: 'theme', label_trans: 'products.theme' }), AddCol({ name: 'theme', label_trans: 'products.theme' }),
AddCol({ name: 'icon', label_trans: 'pages.icon' }),
AddCol(DeleteRec), AddCol(DeleteRec),
AddCol(DuplicateRec), AddCol(DuplicateRec),
] ]
@@ -1239,6 +1431,19 @@ export const fields = {
} }
export const fieldsTable = { export const fieldsTable = {
userlist() {
if (static_data.functionality.ENABLE_REG_AYNI) {
return fieldsTable.colTableUsers
} else if (static_data.functionality.ENABLE_REG_CNM) {
return fieldsTable.colTableUsersCNM
} else if (static_data.functionality.ENABLE_REG_ISP) {
return fieldsTable.colTableUsersISP
} else {
return fieldsTable.colTableUsersBase
}
},
getrecTableList(mytable: string) { getrecTableList(mytable: string) {
return this.tablesList.find((rec) => rec.value === mytable) return this.tablesList.find((rec) => rec.value === mytable)
}, },
@@ -1771,7 +1976,10 @@ export const fieldsTable = {
name: 'profile.nationality', field: 'profile', subfield: 'nationality', label_trans: 'reg.nationality', name: 'profile.nationality', field: 'profile', subfield: 'nationality', label_trans: 'reg.nationality',
}), }),
AddCol({ name: 'profile.dateofbirth', label_trans: 'reg.dateofbirth', fieldtype: costanti.FieldType.date }), AddCol({ name: 'profile.dateofbirth', label_trans: 'reg.dateofbirth', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'profile.born_city', label_trans: 'reg.born_city', fieldtype: costanti.FieldType.string }), AddCol({
name: 'born_city_id', label_trans: 'reg.born_city', fieldtype: costanti.FieldType.select,
jointable: 'cities',
}),
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({
@@ -1941,6 +2149,7 @@ export const fieldsTable = {
tableForUsers: [ tableForUsers: [
'myskills', 'myskills',
'mygoods',
'mybachecas', 'mybachecas',
], ],
@@ -1952,6 +2161,7 @@ export const fieldsTable = {
tableWithUsername: [ tableWithUsername: [
'myskills', 'myskills',
'mygoods',
'mybachecas', 'mybachecas',
], ],
@@ -2215,6 +2425,13 @@ export const fieldsTable = {
colkey: '_id', colkey: '_id',
collabel: (rec: any) => `${rec.descr}`, collabel: (rec: any) => `${rec.descr}`,
}, },
{
value: toolsext.TABMYGOODS,
label: 'Beni',
columns: colmyGoods,
colkey: '_id',
collabel: (rec: any) => `${rec.descr}`,
},
{ {
value: 'skills', value: 'skills',
label: 'Competenze', label: 'Competenze',
@@ -2223,15 +2440,24 @@ export const fieldsTable = {
collabel: 'descr', collabel: 'descr',
}, },
{ {
value: 'goods',
label: 'Beni',
columns: colGoods,
colkey: '_id',
collabel: 'descr',
},
/*{
value: 'subskills', value: 'subskills',
label: 'Specializzazione', label: 'Specializzazione',
columns: colSubSkills, columns: colSubSkills,
colkey: '_id', colkey: '_id',
collabel: 'descr', collabel: 'descr',
}, },
*/
{ {
value: 'statusSkills', value: 'statusSkills',
label: 'Stato Attuale', label: 'Di Persona / OnLine',
columns: colStatusSkills, columns: colStatusSkills,
colkey: '_id', colkey: '_id',
collabel: 'descr', collabel: 'descr',
@@ -2243,6 +2469,13 @@ export const fieldsTable = {
colkey: '_id', colkey: '_id',
collabel: 'descr', collabel: 'descr',
}, },
{
value: 'sectorgoods',
label: 'Settori Beni',
columns: colSectorGoods,
colkey: '_id',
collabel: 'descr',
},
{ {
value: 'catgrps', value: 'catgrps',
label: 'Categorie', label: 'Categorie',
@@ -2264,6 +2497,13 @@ export const fieldsTable = {
colkey: '_id', colkey: '_id',
collabel: 'descr', collabel: 'descr',
}, },
{
value: 'adtypegoods',
label: 'Offro / Cerco',
columns: colAdType,
colkey: '_id',
collabel: 'descr',
},
{ {
value: 'cities', value: 'cities',
label: 'Comune', label: 'Comune',
@@ -2314,10 +2554,17 @@ export const fieldsTable = {
{ {
value: 'mygroups', value: 'mygroups',
label: 'Gruppi', label: 'Gruppi',
columns: colTableMyGroup, columns: colmyUserGroup,
colkey: 'groupname', colkey: 'groupname',
collabel: 'groupname', collabel: 'groupname',
}, },
{
value: 'shippings',
label: 'Spedizione',
columns: colTableGeneric,
colkey: 'value',
collabel: 'label',
},
], ],
} }

View File

@@ -12,7 +12,7 @@ import {
ITodo, ITodo,
IUserFields, IUserFields,
Privacy, Privacy,
TipoVisu, IGroup, IMySkill, IMyBacheca, TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery,
} from '@model' } from '@model'
import { lists } from '@store/Modules/lists' import { lists } from '@store/Modules/lists'
@@ -1751,7 +1751,6 @@ export const tools = {
// console.log('param1', par.param1) // console.log('param1', par.param1)
globalStore.DeleteRec({ table, id: par.param1 }).then((ris) => { globalStore.DeleteRec({ table, id: par.param1 }).then((ris) => {
if (ris) { if (ris) {
debugger
mythis.ActionAfterYes(func, par.param2, null) mythis.ActionAfterYes(func, par.param2, null)
this.showPositiveNotif(mythisq, t('db.deletedrecord')) this.showPositiveNotif(mythisq, t('db.deletedrecord'))
} else { } else {
@@ -4928,7 +4927,7 @@ export const tools = {
_id: 0, _id: 0,
idSector: 0, idSector: 0,
idSkill: 0, idSkill: 0,
idSubSkill: [], // idSubSkill: [],
idStatusSkill: [], idStatusSkill: [],
idContribType: [], idContribType: [],
idCity: [], idCity: [],
@@ -4942,6 +4941,38 @@ export const tools = {
} }
}, },
getdefaultnewrec_MyGoods(): any {
return {
_id: 0,
idSectorGood: 0,
idGood: 0,
idShipping: [],
idStatusSkill: [],
idContribType: [],
idCity: [],
NumLevel: 0,
adType: 0,
photos: [],
note: '',
//**ADDFIELD_MYSKILL
website: '',
descr: '',
}
},
getdefaultnewrec_MyGroup(): any {
return {
_id: 0,
groupname: '',
photos: [],
visibility: 0,
admins: [],
req_users: [],
blocked: false,
website: '',
link_telegram: '',
}
},
getdefaultnewrec_MyBacheca(): any { getdefaultnewrec_MyBacheca(): any {
@@ -4949,7 +4980,7 @@ export const tools = {
_id: 0, _id: 0,
idSector: 0, idSector: 0,
idSkill: 0, idSkill: 0,
idSubSkill: [], // idSubSkill: [],
idStatusSkill: [], idStatusSkill: [],
idContribType: [], idContribType: [],
idCity: [], idCity: [],

View File

@@ -61,6 +61,7 @@ export const toolsext = {
TABFRIENDS: 'friends', TABFRIENDS: 'friends',
TABMYGROUPS: 'mygroups', TABMYGROUPS: 'mygroups',
TABMYSKILLS: 'myskills', TABMYSKILLS: 'myskills',
TABMYGOODS: 'mygoods',
TABMYBACHECAS: 'mybachecas', TABMYBACHECAS: 'mybachecas',
TABNAVI: 'navi', TABNAVI: 'navi',
TABLISTAINGRESSO: 'listaingressos', TABLISTAINGRESSO: 'listaingressos',

View File

@@ -118,10 +118,13 @@ export const useGlobalStore = defineStore('GlobalStore', {
URL_RESTORE: '', URL_RESTORE: '',
levels: [], levels: [],
adtypes: [], adtypes: [],
adtypegoods: [],
skills: [], skills: [],
subSkills: [], goods: [],
// subSkills: [],
statusSkills: [], statusSkills: [],
sectors: [], sectors: [],
sectorgoods: [],
catgrps: [], catgrps: [],
cities: [], cities: [],
}), }),
@@ -235,14 +238,20 @@ export const useGlobalStore = defineStore('GlobalStore', {
return state.levels return state.levels
else if (table === 'adtypes') else if (table === 'adtypes')
return state.adtypes return state.adtypes
else if (table === 'adtypegoods')
return state.adtypegoods
else if (table === 'skills') else if (table === 'skills')
return state.skills return state.skills
else if (table === 'subskills') else if (table === 'goods')
return state.subSkills return state.goods
// else if (table === 'subskills')
// return state.subSkills
else if (table === 'statusSkills') else if (table === 'statusSkills')
return state.statusSkills return state.statusSkills
else if (table === 'sectors') else if (table === 'sectors')
return state.sectors return state.sectors
else if (table === 'sectorgoods')
return state.sectorgoods
else if (table === 'catgrps') else if (table === 'catgrps')
return state.catgrps return state.catgrps
else { else {
@@ -1240,12 +1249,15 @@ export const useGlobalStore = defineStore('GlobalStore', {
this.departments = (res.data.departments) ? [...res.data.departments] : [] this.departments = (res.data.departments) ? [...res.data.departments] : []
this.levels = (res.data.levels) ? [...res.data.levels] : [] this.levels = (res.data.levels) ? [...res.data.levels] : []
this.skills = (res.data.skills) ? [...res.data.skills] : [] this.skills = (res.data.skills) ? [...res.data.skills] : []
this.subSkills = (res.data.subSkills) ? [...res.data.subSkills] : [] this.goods = (res.data.goods) ? [...res.data.goods] : []
// this.subSkills = (res.data.subSkills) ? [...res.data.subSkills] : []
this.statusSkills = (res.data.statusSkills) ? [...res.data.statusSkills] : [] this.statusSkills = (res.data.statusSkills) ? [...res.data.statusSkills] : []
this.sectors = (res.data.sectors) ? [...res.data.sectors] : [] this.sectors = (res.data.sectors) ? [...res.data.sectors] : []
this.sectorgoods = (res.data.sectorgoods) ? [...res.data.sectorgoods] : []
this.cities = (res.data.cities) ? [...res.data.cities] : [] this.cities = (res.data.cities) ? [...res.data.cities] : []
this.catgrps = (res.data.catgrps) ? [...res.data.catgrps] : [] this.catgrps = (res.data.catgrps) ? [...res.data.catgrps] : []
this.adtypes = (res.data.adtypes) ? [...res.data.adtypes] : [] this.adtypes = (res.data.adtypes) ? [...res.data.adtypes] : []
this.adtypegoods = (res.data.adtypegoods) ? [...res.data.adtypegoods] : []
// console.log('res.data.cart', res.data.cart) // console.log('res.data.cart', res.data.cart)
@@ -1390,6 +1402,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (table === 'lang') return shared_consts.Lang if (table === 'lang') return shared_consts.Lang
if (table === 'regions') return shared_consts.Regions if (table === 'regions') return shared_consts.Regions
if (table === 'provinces') return shared_consts.Provinces if (table === 'provinces') return shared_consts.Provinces
if (table === 'shippings') return shared_consts.Shippings
let myarr = this.getListByTable(table) let myarr = this.getListByTable(table)

View File

@@ -213,6 +213,12 @@
@click="EseguiFunz('setVerifiedByAportadorToALL')"></q-btn> @click="EseguiFunz('setVerifiedByAportadorToALL')"></q-btn>
<br> <br>
</div> </div>
<div class="row">
<q-btn
label="1. Cancella Tabelle (Sectors, SectorGoods, Skills, Goods)" color="negative"
@click="EseguiFunz('emptyTabCatServiziBeni')"></q-btn>
<br>
</div>
<div class="row"> <div class="row">
<q-btn <q-btn
label="1. Cancella e Ricrea tutte le Tabelle (Sector, Skill, SubSkill, Contribtype, AdType)" color="negative" label="1. Cancella e Ricrea tutte le Tabelle (Sector, Skill, SubSkill, Contribtype, AdType)" color="negative"
@@ -232,12 +238,12 @@
<br> <br>
</div> </div>
<div class="row"> <!--<div class="row">
<q-btn <q-btn
label="copyFrom1To13" color="negative" label="copyFrom1To13" color="negative"
@click="EseguiFunz('copyFrom1To13')"></q-btn> @click="EseguiFunz('copyFrom1To13')"></q-btn>
<br> <br>
</div> </div>-->
<div class="row"> <div class="row">
<q-btn <q-btn

View File

@@ -3,6 +3,11 @@
<CTestServer></CTestServer> <CTestServer></CTestServer>
<!--<iframe src="https://discord.com/widget?id=941826887821434890&theme=dark" width="350" height="500"
allowtransparency="true" frameborder="0"
sandbox="allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"></iframe>
-->
</q-page> </q-page>
</template> </template>

View File

@@ -140,9 +140,10 @@
tablesel="cities" tablesel="cities"
mykey="profile" mykey="profile"
:useinput="false" :useinput="false"
mysubkey="born_city" mysubkey="born_city_id"
jointable="cities"
:pickup="true" :pickup="true"
:type="costanti.FieldType.string"> :type="costanti.FieldType.select_by_server">
</CMyFieldDb> </CMyFieldDb>
<CMyFieldDb <CMyFieldDb

View File

@@ -10,14 +10,14 @@
:prop_mycolumns="colmyUserPeople" :prop_mycolumns="colmyUserPeople"
prop_colkey="_id" prop_colkey="_id"
col_title="username" col_title="username"
:vertical="-1" :vertical="costanti.VISUTABLE_LISTA"
nodataLabel=" " nodataLabel=" "
:prop_search="true" :prop_search="true"
hint="Username da trovare" hint="Username da trovare"
:finder="true" :finder="true"
:choose_visutype="true" :choose_visutype="true"
:finder_noNull="true" :finder_noNull="true"
:options="shared_consts.OPTIONS_SEARCH_ONLY_FULL_WORDS" :options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false" :butt_modif_new="false"
noresultLabel="Username non trovato" noresultLabel="Username non trovato"
:arrfilters="arrfilterand" :arrfilters="arrfilterand"

View File

@@ -135,7 +135,7 @@
:finder="false" :finder="false"
:choose_visutype="true" :choose_visutype="true"
:finder_noNull="false" :finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_WORDS" :options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false" :butt_modif_new="false"
noresultLabel="Username non trovato" noresultLabel="Username non trovato"
:arrfilters="arrfilterand" :arrfilters="arrfilterand"
@@ -166,7 +166,7 @@
:finder="false" :finder="false"
:choose_visutype="false" :choose_visutype="false"
:finder_noNull="false" :finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_WORDS" :options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false" :butt_modif_new="false"
noresultLabel="Username non trovato" noresultLabel="Username non trovato"
:arrfilters="arrfilterand" :arrfilters="arrfilterand"

View File

@@ -32,6 +32,33 @@ export default defineComponent({
arrfilterand.value = [] arrfilterand.value = []
searchList.value = [ searchList.value = [
{
label: 'Provincia',
table: 'provinces',
key: 'idProvince',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'provinces', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
filter: null,
useinput: true,
icon: 'flag',
},
{
label: 'Comune',
table: 'cities',
key: 'idCity',
type: costanti.FieldType.select_by_server,
value: 0,
addall: true,
arrvalue: tools.getCookie(tools.COOK_SEARCH + 'cities', costanti.FILTER_TUTTI),
useinput: true,
filter: null,
// filter: getFilterCitiesByProvince,
// param1: shared_consts.PARAM_SHOW_PROVINCE,
tablesel: 'cities',
icon: 'fas fa-map-marker-alt',
},
{ {
label: 'Categorie', label: 'Categorie',
table: 'catgrps', table: 'catgrps',
@@ -42,32 +69,7 @@ export default defineComponent({
filter: null, filter: null,
addall: true, addall: true,
useinput: false, useinput: false,
}, icon: 'engineering',
{
label: 'Provincia',
table: 'provinces',
key: 'idProvince',
type: costanti.FieldType.multiselect,
value: 0,
addall: true,
arrvalue: tools.getCookie(tools.COOK_SEARCH + 'provinces', [costanti.FILTER_TUTTI]),
filter: null,
useinput: true,
icon: 'flag',
},
{
label: 'Città',
table: 'cities',
key: 'idCity',
type: costanti.FieldType.multiselect_by_server,
value: 0,
addall: true,
arrvalue: tools.getCookie(tools.COOK_SEARCH + 'cities', [costanti.FILTER_TUTTI]),
useinput: true,
filter: null,
// filter: getFilterCitiesByProvince,
// param1: shared_consts.PARAM_SHOW_PROVINCE,
tablesel: 'cities',
}, },
] ]
@@ -80,6 +82,10 @@ export default defineComponent({
}) })
function getdefaultnewrec(): any {
return tools.getdefaultnewrec_MyGroup()
}
function extraparams() { function extraparams() {
let lk_tab = 'mygroups' let lk_tab = 'mygroups'
let lk_LF = 'userId' let lk_LF = 'userId'
@@ -149,6 +155,7 @@ export default defineComponent({
searchList, searchList,
colmyUserGroup, colmyUserGroup,
extraparams, extraparams,
getdefaultnewrec,
} }
} }
}) })

View File

@@ -17,7 +17,7 @@
:finder="true" :finder="true"
:choose_visutype="true" :choose_visutype="true"
:finder_noNull="false" :finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_ONLY_FULL_WORDS" :options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="true" :butt_modif_new="true"
noresultLabel="nome del gruppo non trovato" noresultLabel="nome del gruppo non trovato"
:arrfilters="arrfilterand" :arrfilters="arrfilterand"
@@ -26,6 +26,7 @@
:showType="costanti.SHOW_GROUPINFO" :showType="costanti.SHOW_GROUPINFO"
keyMain="" keyMain=""
:showCol="false" :showCol="false"
:defaultnewrec="getdefaultnewrec"
:extraparams="extraparams()"> :extraparams="extraparams()">
</CGridTableRec> </CGridTableRec>

View File

@@ -17,6 +17,7 @@ import { costanti } from '@costanti'
import { IUserFields } from 'model' import { IUserFields } from 'model'
import { shared_consts } from '@/common/shared_vuejs' import { shared_consts } from '@/common/shared_vuejs'
import { static_data } from '@/db/static_data' import { static_data } from '@/db/static_data'
import { fieldsTable } from '@store/Modules/fieldsTable'
import MixinUsers from '@/mixins/mixin-users' import MixinUsers from '@/mixins/mixin-users'
@@ -120,6 +121,7 @@ export default defineComponent({
animation, animation,
isMyRecord, isMyRecord,
getRefLink, getRefLink,
fieldsTable,
} }
} }
}) })

View File

@@ -20,7 +20,20 @@
{{ myuser.username }} {{ myuser.username }}
</div> </div>
<div class="col-12 text-h7"> <div class="col-12 text-h7">
<span v-if="myuser.profile && myuser.profile.born_city">{{ myuser.profile.born_city }}</span> <span <span v-if="myuser.profile && myuser.profile.born_city_id">
<CMyFieldRec
title="Comune"
table="users"
:id="myuser._id"
:columns="fieldsTable.userlist()"
:rec="mygrp"
field="profile.born_city_id"
:canEdit="false"
:canModify="false">
</CMyFieldRec>
{{ myuser.profile.born_city_str }}</span> <span
v-if="myuser.profile && myuser.profile.nationality && myuser.profile.nationality !== 'Italia'">({{ v-if="myuser.profile && myuser.profile.nationality && myuser.profile.nationality !== 'Italia'">({{
myuser.profile.nationality myuser.profile.nationality
}})</span> }})</span>