Settore se compariva "Tutti", veniva selezionato erroneamente di default -100

Risolto caricamento immagini
Cliccando sull'immagine del profilo, nella Card, non si apre il Profilo
Aggiunto "Estero" e "On Line" sul campo Comune.
Orientamento dell'Immagine. viene storta una volta ridimensionata.
Al momento della registrazione, dal BOT, in automatico viene presa l'immagine di Telegram e salvata sul proprio profilo della APP.
This commit is contained in:
paoloar77
2022-03-01 23:50:47 +01:00
parent d8b5bda0ce
commit 1c22d5e8d4
39 changed files with 467 additions and 282 deletions

View File

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

View File

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

View File

@@ -503,10 +503,10 @@ const baseroutes: IListRoutes[] = [
{
active: true,
order: 130,
path: '/mywork/:idSkill',
path: '/myservice/:idSkill',
materialIcon: '',
name: 'pages.mywork2',
component: () => import('@/views/user/mywork/mywork.vue'),
name: 'pages.myservice2',
component: () => import('@/views/user/myservice/myservice.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,

View File

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

View File

@@ -25,7 +25,7 @@ const msg_website_it = {
profile: 'Profilo',
profile2: 'ProfiloU',
mypage2: 'mypage2',
mywork2: 'mywork2',
myservice2: 'myservice2',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',

View File

@@ -503,10 +503,10 @@ const baseroutes: IListRoutes[] = [
{
active: true,
order: 130,
path: '/mywork/:idSkill',
path: '/myservice/:idSkill',
materialIcon: '',
name: 'pages.mywork2',
component: () => import('@/views/user/mywork/mywork.vue'),
name: 'pages.myservice2',
component: () => import('@/views/user/myservice/myservice.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,

View File

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

View File

@@ -439,6 +439,14 @@ export const Province = [
label: 'Viterbo',
value: 'VT',
},
{
label: 'Estero',
value: 'EST',
},
{
label: 'On Line',
value: 'ONL',
},
]
export const Comuni = [

View File

@@ -503,10 +503,10 @@ const baseroutes: IListRoutes[] = [
{
active: true,
order: 130,
path: '/mywork/:idSkill',
path: '/myservice/:idSkill',
materialIcon: '',
name: 'pages.mywork2',
component: () => import('@/views/user/mywork/mywork.vue'),
name: 'pages.myservice2',
component: () => import('@/views/user/myservice/myservice.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,

View File

@@ -469,12 +469,17 @@ export const shared_consts = {
reg: 'CAL',
value: 'VV',
label: 'Vibo Valentia',
}, { _id: 109, reg: 'VEN', value: 'VI', label: 'Vicenza', }, {
},
{ _id: 109, reg: 'VEN', value: 'VI', label: 'Vicenza', }, {
_id: 110,
reg: 'LAZ',
value: 'VT',
label: 'Viterbo',
}, { _id: 111, reg: 'RSM', value: 'RSM', label: 'Repubblica di San Marino', }],
},
{ _id: 111, reg: 'RSM', value: 'RSM', label: 'Repubblica di San Marino', },
{ _id: 112, reg: 'EST', value: 'EST', label: 'Estero', },
{ _id: 113, reg: 'ONL', value: 'ONL', label: 'On Line', },
],
Regions: [
{
@@ -561,6 +566,14 @@ export const shared_consts = {
value: 'VEN',
label: 'Veneto',
},
{
value: 'EST',
label: 'Estero',
},
{
value: 'ONL',
label: 'On Line',
},
],
Lang: [

View File

@@ -0,0 +1,29 @@
import { defineComponent, ref, computed, PropType, toRef } from 'vue'
import { useUserStore } from '@store/UserStore'
import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import { tools } from '@store/Modules/tools'
import { costanti } from '@store/Modules/costanti'
import { static_data } from '@src/db/static_data'
export default defineComponent({
name: 'CCheckIfIsLogged',
components: { },
props: {},
setup(props, { emit }) {
const userStore = useUserStore()
const $router = useRouter()
const globalStore = useGlobalStore()
const { t } = useI18n()
return {
userStore,
tools,
costanti,
static_data,
}
}
})

View File

@@ -0,0 +1,31 @@
<template>
<div v-if="!tools.isLogged()">
<div class="q-pa-md q-gutter-sm">
<q-banner rounded class="bg-primary text-white">
<div class="text-h6 text-center">
Accedi al menu inserendo le tue credenziali 🔑<br><br>
📝 Non sei <strong>Registrato</strong>?<br>
👉🏻 Chiedi in chat il link a chi ti ha <strong>invitato</strong>.<br>
</div>
<template v-slot:action>
<q-btn flat color="white" label="Accedi al Login" @click="openrighttoolbar"/>
</template>
</q-banner>
</div>
<div
v-if="!tools.isLogged() && static_data.functionality.ENABLE_REGISTRATION && static_data.functionality.SHOW_REG_BUTTON"
style="margin:20px; text-align: center;">
<q-btn rounded size="lg" color="primary" @click="openrighttoolbar">{{ $t('login.enter') }}
</q-btn>
</div>
</div>
</template>
<script lang="ts" src="./CCheckIfIsLogged.ts">
</script>
<style lang="scss" scoped>
@import './CCheckIfIsLogged.scss';
</style>

View File

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

View File

@@ -343,7 +343,7 @@ export default defineComponent({
function getUrl() {
const myurl = tools.geturlupload() + getParamDir()
// console.log('myurl', myurl)
console.log('myurl', myurl)
return myurl
}

View File

@@ -5,6 +5,7 @@ import { CTitleBanner } from '@/components/CTitleBanner'
import { CProfile } from '@/components/CProfile'
import { CDateTime } from '@/components/CDateTime'
import { CMyPage } from '@/components/CMyPage'
import { CCheckIfIsLogged } from '@/components/CCheckIfIsLogged'
import { CMyFieldRec } from '@/components/CMyFieldRec'
import { tools } from '@store/Modules/tools'
import { useUserStore } from '@store/UserStore'
@@ -19,7 +20,7 @@ import { colCitys, fieldsTable } from '@store/Modules/fieldsTable'
export default defineComponent({
name: 'CMyCardGrpPopup',
components: { CProfile, CTitleBanner, CMyFieldDb, CDateTime, CMyPage, CMyFieldRec },
components: { CProfile, CTitleBanner, CMyFieldDb, CDateTime, CMyPage, CMyFieldRec, CCheckIfIsLogged },
props: {
table: {
type: String,
@@ -54,7 +55,7 @@ export default defineComponent({
function load() {
// Carica il profilo di quest'utente
if (props.idRec > 0) {
if (props.idRec && props.idRec > 0) {
userStore.loadGeneric(props.table, props.idRec).then((ris) => {
myrec.value = ris
})

View File

@@ -1,4 +1,7 @@
<template>
<div v-if="!tools.isLogged()">
<CCheckIfIsLogged></CCheckIfIsLogged>
</div>
<q-card class="dialog_card q-mb-lg" v-if="myrec">
<q-footer

View File

@@ -627,8 +627,18 @@ export default defineComponent({
}
function getDirectoryGall() {
let ris = ''
let username = myrow.value.hasOwnProperty('username') ? myrow.value['username'] : ''
let userId = myrow.value.hasOwnProperty('userId') ? myrow.value['userId'] : ''
if (username === '') {
if (userId === userStore.my._id)
username = userStore.my.username
}
if (username === '') {
username = userStore.my.username
}
if (fieldsTable.tableForUsers.includes(props.table)) {
ris = 'profile/' + myrow.value['username'] + '/' + props.table
ris = 'profile/' + username + '/' + props.table
}else if (props.table === 'users') {
ris = 'profile/' + userStore.my.username
}else if (props.table === 'mygroups') {
@@ -637,6 +647,7 @@ export default defineComponent({
} else {
ris = props.table
}
console.log('getDirectoryGall', ris)
return ris
}

View File

@@ -9,7 +9,7 @@ import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { CMyCardPopup } from '@/components/CMyCardPopup'
// import { useRouter } from 'vue-router'
import { useRouter } from 'vue-router'
export default defineComponent({
name: 'CMyRecCard',
@@ -32,7 +32,7 @@ export default defineComponent({
const userStore = useUserStore()
// const $q = useQuasar()
const { t } = useI18n()
// const $router = useRouter()
const $router = useRouter()
const myrec = ref(<any | null>null)
@@ -61,9 +61,9 @@ export default defineComponent({
return userStore.getImgByProfile(profile)
}
/*function naviga(path: string) {
function naviga(path: string) {
$router.push(path)
}*/
}
function setCmd($q: any, cmd: number, myusername: string, value: any, groupname: string) {
emit('setCmd', $q, cmd, myusername, value, groupname)
@@ -80,7 +80,7 @@ export default defineComponent({
myrec,
costanti,
getImgUser,
// naviga,
naviga,
setCmd,
shared_consts,
userStore,

View File

@@ -3,14 +3,21 @@
<q-item v-if="myrec" clickable v-ripple class="shadow-2 q-btn--rounded bg-teal-1">
<q-item-section v-if="(shared_consts.TABLES_VISU_IMG.includes(table)) && (myrec.photos.length > 0)" avatar
@click="cmdExt(costanti.CMD_SHOW_PAGE, myrec)">
<q-badge v-if="showBadge" class="q-my-xs self-center" :color="fieldsTable.getColByAdType(myrec.adType)">
{{ fieldsTable.getValByTabAndId(table, 'adType', myrec.adType) }}
<q-icon :name="fieldsTable.getIconByAdType(myrec.adType)" color="white"
class="q-ml-xs"/>
</q-badge>
<q-avatar size="60px">
<q-img :src="tools.getFullFileName(myrec.photos, table, myrec.username, '')" :alt="myrec.descr"
img-class="imgprofile" height="60px"/>
</q-avatar>
</q-item-section>
<q-item-section v-else avatar @click="naviga(`/my/` + myrec.username)">
<q-badge v-if="showBadge" class="q-my-xs self-center" :color="fieldsTable.getColByAdType(myrec.adType)">
{{ fieldsTable.getValByTabAndId(table, 'adType', myrec.adType) }}
<q-icon :name="fieldsTable.getIconByAdType(myrec.adType)" color="white"

View File

@@ -21,6 +21,7 @@ export * from './CProfile'
export * from './CProvaPao'
export * from './CSignIn'
export * from './CSigninNoreg'
export * from './CCheckIfIsLogged'
export * from './CSignUp'
export * from './CSingleCart'
export * from './CTitle'

View File

@@ -25,7 +25,7 @@ const msg_website_enUs = {
profile: 'Profile',
profile2: 'ProfiloU',
mypage2: 'mypage2',
mywork2: 'mywork2',
myservice2: 'myservice2',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',

View File

@@ -25,7 +25,7 @@ const msg_website_es = {
profile: 'Perfil',
profile2: 'ProfiloU',
mypage2: 'mypage2',
mywork2: 'mywork2',
myservice2: 'myservice2',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',

View File

@@ -24,7 +24,7 @@ const msg_website_it = {
profile: 'Profilo',
profile2: 'ProfiloU',
mypage2: 'mypage2',
mywork2: 'mywork2',
myservice2: 'myservice2',
test: 'Test',
projects: 'Progetti',
report: 'Report Ore',

View File

@@ -517,10 +517,10 @@ const baseroutes: IListRoutes[] = [
{
active: true,
order: 130,
path: '/mywork/:idSkill',
path: '/myservice/:idSkill',
materialIcon: '',
name: 'pages.mywork2',
component: () => import('@/views/user/mywork/mywork.vue'),
name: 'pages.myservice2',
component: () => import('@/views/user/myservice/myservice.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,

View File

@@ -757,6 +757,8 @@ export interface IMySkill {
descr: string
date_created?: Date,
date_updated?: Date,
username?: string
}
export interface IMyGoods {

View File

@@ -10,6 +10,7 @@ import { CChartMap } from '@src/components/CChartMap'
import { Footer } from '@src/components/Footer'
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CCopyBtn } from '@/components/CCopyBtn'
import { CCheckIfIsLogged } from '@/components/CCheckIfIsLogged'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
@@ -20,7 +21,7 @@ import MixinUsers from '@/mixins/mixin-users'
export default defineComponent({
name: 'mainview',
components: { CSkill, CChartMap, CMapsEsempio, CDashboard, CUserNonVerif, CMainView, CCopyBtn, Footer },
components: { CSkill, CChartMap, CMapsEsempio, CDashboard, CUserNonVerif, CMainView, CCopyBtn, Footer, CCheckIfIsLogged },
setup() {
const globalStore = useGlobalStore()
const userStore = useUserStore()

View File

@@ -44,25 +44,7 @@
</div>
<div v-else>
<div class="q-pa-md q-gutter-sm">
<q-banner rounded class="bg-primary text-white">
<div class="text-h6 text-center">
Accedi al menu inserendo le tue credenziali 🔑<br><br>
📝 Non sei <strong>Registrato</strong>?<br>
👉🏻 Chiedi in chat il link a chi ti ha <strong>invitato</strong>.<br>
</div>
<template v-slot:action>
<q-btn flat color="white" label="Accedi al Login" @click="openrighttoolbar"/>
</template>
</q-banner>
</div>
<div
v-if="!tools.isLogged() && static_data.functionality.ENABLE_REGISTRATION && static_data.functionality.SHOW_REG_BUTTON"
style="margin:20px; text-align: center;">
<q-btn rounded size="lg" color="primary" @click="openrighttoolbar">{{ $t('login.enter') }}
</q-btn>
</div>
<CCheckIfIsLogged></CCheckIfIsLogged>
<!--
<div v-if="!isLogged && static_data.functionality.ENABLE_REGISTRATION" align="center" style="margin:20px;">

View File

@@ -669,7 +669,7 @@ export const colmyGoods = [
filter_field: 'idSectorGood',
noshowlabel: true,
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_OnlyifExist,
allowNewValue: false,
}),
AddCol({
@@ -835,7 +835,7 @@ export const colmySkills = [
noshowlabel: true,
addnone: true,
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_OnlyifExist,
allowNewValue: false,
required: false,
}),

View File

@@ -4890,7 +4890,7 @@ export const tools = {
check = check && tools.isBitActive(col.showWhen, costanti.showWhen.InEdit)
} else if (tipovis === tools.TIPOVIS_SHOW_RECORD) {
if (tools.isBitActive(col.showWhen, costanti.showWhen.InView_OnlyifExist)) {
check = check && valuePresent
check = check && valuePresent && valuePresent !== costanti.FILTER_NESSUNO
} else {
check = check && tools.isBitActive(col.showWhen, costanti.showWhen.InView)
}
@@ -5040,16 +5040,22 @@ export const tools = {
{ table: 'goods', join: 'sectorgoods' }
]
let ris = mydef
if (arrtable.includes(table)) {
return tools.getCookie(tools.COOK_SEARCH + table, mydef)
ris =tools.getCookie(tools.COOK_SEARCH + table, mydef)
} else if (arrmultisel_tab.includes(table)) {
const rec = arrmultisel.find((rec) => rec.table === table)
if (rec) {
return tools.getCookie(tools.COOK_SEARCH + table + '_' + tools.getCookie(tools.COOK_SEARCH + rec.join, 0), mydef)
ris = tools.getCookie(tools.COOK_SEARCH + table + '_' + tools.getCookie(tools.COOK_SEARCH + rec.join, 0), mydef)
}
}
return mydef
if (ris.toString() === costanti.FILTER_TUTTI.toString()){
ris = ''
}
return ris
},
getdefaultnewrec_MySkill(): any {
@@ -5139,7 +5145,7 @@ export const tools = {
getDirectoryByTable(table: string) {
if (table === toolsext.TABMYSKILLS) {
return 'mywork'
return 'myservice'
} else if (table === toolsext.TABMYBACHECAS) {
return 'mypage'
} else if (table === toolsext.TABMYGROUPS) {

View File

@@ -10,6 +10,7 @@ import { colmyUserPeople } from '@store/Modules/fieldsTable'
import { ISearchList } from 'model'
import { costanti } from '@costanti'
import { shared_consts } from '@/common/shared_vuejs'
import { toolsext } from '@store/Modules/toolsext'
export default defineComponent({
name: 'myfriends',
@@ -27,7 +28,62 @@ export default defineComponent({
const filter = ref(costanti.FIND_PEOPLE)
function mounted() {
searchList.value = []
searchList.value = [
{
label: 'Regione',
table: 'regions',
key: 'idReg',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'regions', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
filter: null,
useinput: false,
icon: 'fas fa-globe-europe'
},
{
label: 'Provincia',
table: 'provinces',
key: 'idProvince',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'provinces', costanti.FILTER_TUTTI),
addall: true,
arrvalue: [],
filter: getFilterProvinceByRegion,
useinput: true,
icon: 'flag',
tablesel: 'provinces',
},
{
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: 'In cambio di',
table: 'contribtypes',
key: 'idContribType',
value: 0,
arrvalue: tools.getCookie(tools.COOK_SEARCH + 'contribtypes', []),
type: costanti.FieldType.multiselect,
filter: null,
useinput: false,
icon: 'fas fa-hand-holding',
filteradv: true,
//icon: 'swap_horizontal_circle',
},
]
filtercustom.value = []
arrfilterand.value = []
@@ -63,6 +119,15 @@ export default defineComponent({
}
}
function getFilterProvinceByRegion(recProvince: any, index: number, arr: any) {
const recreg: any = searchList.value.find((rec) => rec.table === 'regions')
if (recreg) {
return recProvince.reg === recreg.value
} else {
return true
}
}
onMounted(mounted)
@@ -75,6 +140,7 @@ export default defineComponent({
searchList,
colmyUserPeople,
extraparams,
getFilterProvinceByRegion,
}
}
})

View File

@@ -3,6 +3,7 @@ import { CMyFriends } from '@/components/CMyFriends'
import { CMyUser } from '@/components/CMyUser'
import { CTitleBanner } from '@/components/CTitleBanner'
import { CProfile } from '@/components/CProfile'
import { CCheckIfIsLogged } from '@/components/CCheckIfIsLogged'
import { CMyFieldRec } from '@/components/CMyFieldRec'
import { CSkill } from '@/components/CSkill'
import { CDateTime } from '@/components/CDateTime'
@@ -22,7 +23,7 @@ import { colmyUserPeople, colmyUserGroup } from '@store/Modules/fieldsTable'
export default defineComponent({
name: 'mygroup',
components: { CProfile, CTitleBanner, CMyFieldRec, CSkill, CDateTime, CMyFriends, CGridTableRec, CMyUser },
components: { CProfile, CTitleBanner, CMyFieldRec, CSkill, CDateTime, CMyFriends, CGridTableRec, CMyUser, CCheckIfIsLogged },
props: {},
setup() {
const userStore = useUserStore()

View File

@@ -1,229 +1,236 @@
<template>
<div class="q-gutter-sm q-pa-sm q-pb-md">
<div v-if="mygrp.descr" class="fit column no-wrap justify-evenly items-center content-start">
<div class="">
<q-avatar size="140px">
<q-img :src="getImgGrp()" :alt="mygrpname()" img-class="imgprofile" height="140px" @click="showPic = true"/>
</q-avatar>
</div>
<div class="text-h6">
<span v-if="checkifShow('name')"> {{ mygrp.title }}</span>
</div>
<div class="col-12 text-h7 text-blue text-shadow-2">
{{ mygrp.groupname }}
</div>
<div>
<q-btn
v-if="!userStore.IsMyGroupByGroupname(mygrp.groupname) && !userStore.IsAskedGroupByGroupname(mygrp.groupname)"
icon="fas fa-user-plus"
color="primary" :label="$t('groups.ask_group')"
@click="tools.setRequestGroup($q, userStore.my.username, mygrp.groupname, true)"
/>
<q-btn
v-if="userStore.IsAskedGroupByGroupname(mygrp.groupname) && !userStore.IsMyGroupByGroupname(mygrp.groupname)"
icon="fas fa-user-minus"
flat :label="$t('groups.cancel_ask_group_short')"
@click="tools.cancelReqGroups($q, userStore.my.username, mygrp.groupname)"
/>
</div>
<q-tabs v-model="tabgrp" class="text-blue">
<q-tab label="Info" name="info" icon="fas fa-info"></q-tab>
<q-tab v-if="!!mygrp.note" label="Pagina" name="page" icon="fas fa-file-word"></q-tab>
<q-tab v-if="userStore.IsMyGroupByGroupname(mygrp.groupname) || tools.iAmAdminGroup(groupname)" label="Iscritti" name="membri" icon="fas fa-users"></q-tab>
<q-tab v-if="tools.iAmAdminGroup(groupname)" label="Richieste" name="rich" icon="fas fa-user-plus"></q-tab>
</q-tabs>
<q-tab-panels v-model="tabgrp" animated>
<q-tab-panel name="info">
<div>
<q-card>
<CMyFieldRec
title="Visibilità"
table="mygroups"
:id="mygrp._id"
:columns="colmyUserGroup"
:rec="mygrp"
field="visibility"
:canEdit="false"
:canModify="false">
</CMyFieldRec>
</q-card>
<q-card>
<div class="members">
<q-icon name="fas fa-users"></q-icon>
{{ numUsers() }} {{ numUsers() === 1 ? t('groups.member') : t('groups.members') }}
</div>
<div class="admins">
<q-icon name="fas fa-user-cog"></q-icon>
{{ numAdmins() }} {{ numAdmins() === 1 ? t('groups.admin') : t('groups.admins') }}
</div>
<div v-for="(user, index) of mygrp.admins" :key="index">
<CMyUser
:mycontact="user"
:visu="costanti.FIND_PEOPLE"
@setCmd="setCmd"
>
</CMyUser>
</div>
</q-card>
</div>
<q-card>
<br>
<div class="col-12 text-h7">
<span v-if="checkifShow('descr')">{{ mygrp.descr }}</span>
</div>
</q-card>
<div v-if="mygrp.title" class="myrow justify-evenly items-center q-pa-sm q-ma-sm">
<q-card>
<div class="col-6 q-ma-xs">
<q-btn
v-if="getLinkGrpTelegram()" icon="fab fa-telegram"
color="blue" type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkGrpTelegram()" target="__blank">
</q-btn>
</div>
<div class="col-6 q-ma-xs">
<q-btn
v-if="getLinkWebSite()" icon="fas fa-globe"
color="blue" type="a"
size="md"
rounded
:label="$t('reg.website')"
:href="getLinkWebSite()" target="__blank">
</q-btn>
</div>
</q-card>
</div>
</q-tab-panel>
<q-tab-panel name="page">
<div v-if="mygrp.note">
<br>
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<div v-if="mygrp.note" v-html="mygrp.note">
</div>
</div>
</div>
</q-tab-panel>
<q-tab-panel name="membri">
<CGridTableRec
ref="tabMembri"
prop_mytable="users"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title="username"
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessun Iscritto"
:prop_search="true"
hint="Username da trovare"
:finder="false"
:choose_visutype="true"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
:showCol="false"
:extrafield="groupname"
:extraparams="extraparams()"
:visufind="tools.iAmAdminGroup(groupname) ? costanti.REQ_REMOVE_USER_TO_GROUP : costanti.FIND_PEOPLE"
>
</CGridTableRec>
</q-tab-panel>
<q-tab-panel name="rich">
<CGridTableRec
prop_mytable="mygroups"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title=""
:vertical="costanti.VISUTABLE_USER_TABGROUP"
nodataLabel="Nessuna Richiesta in sospeso"
:prop_search="false"
hint="Username da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom_rich"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
keyMain=""
:showCol="false"
:extraparams="extraparams_rich()"
:extrafield="groupname"
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
>
</CGridTableRec>
</q-tab-panel>
</q-tab-panels>
<q-btn
v-if="mygrp.admins.includes(userStore.my.username)" icon="fas fa-pencil-alt"
color="blue"
size="md"
:label="$t('otherpages.modifgrp')"
to="/editgrp">
</q-btn>
<div v-if="!tools.isLogged()">
<CCheckIfIsLogged></CCheckIfIsLogged>
</div>
<div v-else class="fit column no-wrap justify-evenly items-center content-start">
<q-skeleton type="QAvatar" size="140px" height="140px" animation="fade"/>
<q-card flat bordered style="width: 250px">
<div>
<div v-if="mygrp.descr" class="fit column no-wrap justify-evenly items-center content-start">
<div class="">
<q-avatar size="140px">
<q-img :src="getImgGrp()" :alt="mygrpname()" img-class="imgprofile" height="140px" @click="showPic = true"/>
</q-avatar>
</div>
<div class="text-h6">
<q-skeleton :animation="animation"/>
<span v-if="checkifShow('name')"> {{ mygrp.title }}</span>
</div>
<div class="col-12 text-h7 text-grey text-center">
{{ groupname }}
</div>
<div class="col-12 text-h7">
<q-skeleton :animation="animation"/>
<div class="col-12 text-h7 text-blue text-shadow-2">
{{ mygrp.groupname }}
</div>
<div class="col-12 text-h8 q-mt-sm">
<q-skeleton :animation="animation"/>
<div>
<q-btn
v-if="!userStore.IsMyGroupByGroupname(mygrp.groupname) && !userStore.IsAskedGroupByGroupname(mygrp.groupname)"
icon="fas fa-user-plus"
color="primary" :label="$t('groups.ask_group')"
@click="tools.setRequestGroup($q, userStore.my.username, mygrp.groupname, true)"
/>
<q-btn
v-if="userStore.IsAskedGroupByGroupname(mygrp.groupname) && !userStore.IsMyGroupByGroupname(mygrp.groupname)"
icon="fas fa-user-minus"
flat :label="$t('groups.cancel_ask_group_short')"
@click="tools.cancelReqGroups($q, userStore.my.username, mygrp.groupname)"
/>
</div>
<div class="col-12 text-h8 q-mt-sm">
<q-skeleton :animation="animation"/>
</div>
</q-card>
<q-tabs v-model="tabgrp" class="text-blue">
<q-tab label="Info" name="info" icon="fas fa-info"></q-tab>
<q-tab v-if="!!mygrp.note" label="Pagina" name="page" icon="fas fa-file-word"></q-tab>
<q-tab v-if="userStore.IsMyGroupByGroupname(mygrp.groupname) || tools.iAmAdminGroup(groupname)"
label="Iscritti" name="membri" icon="fas fa-users"></q-tab>
<q-tab v-if="tools.iAmAdminGroup(groupname)" label="Richieste" name="rich" icon="fas fa-user-plus"></q-tab>
</q-tabs>
<q-tab-panels v-model="tabgrp" animated>
<q-tab-panel name="info">
<div>
<q-card>
<CMyFieldRec
title="Visibilità"
table="mygroups"
:id="mygrp._id"
:columns="colmyUserGroup"
:rec="mygrp"
field="visibility"
:canEdit="false"
:canModify="false">
</CMyFieldRec>
</q-card>
<q-card>
<div class="members">
<q-icon name="fas fa-users"></q-icon>
{{ numUsers() }} {{ numUsers() === 1 ? t('groups.member') : t('groups.members') }}
</div>
<div class="admins">
<q-icon name="fas fa-user-cog"></q-icon>
{{ numAdmins() }} {{ numAdmins() === 1 ? t('groups.admin') : t('groups.admins') }}
</div>
<div v-for="(user, index) of mygrp.admins" :key="index">
<CMyUser
:mycontact="user"
:visu="costanti.FIND_PEOPLE"
@setCmd="setCmd"
>
</CMyUser>
</div>
</q-card>
</div>
<q-card>
<br>
<div class="col-12 text-h7">
<span v-if="checkifShow('descr')">{{ mygrp.descr }}</span>
</div>
</q-card>
<div v-if="mygrp.title" class="myrow justify-evenly items-center q-pa-sm q-ma-sm">
<q-card>
<div class="col-6 q-ma-xs">
<q-btn
v-if="getLinkGrpTelegram()" icon="fab fa-telegram"
color="blue" type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkGrpTelegram()" target="__blank">
</q-btn>
</div>
<div class="col-6 q-ma-xs">
<q-btn
v-if="getLinkWebSite()" icon="fas fa-globe"
color="blue" type="a"
size="md"
rounded
:label="$t('reg.website')"
:href="getLinkWebSite()" target="__blank">
</q-btn>
</div>
</q-card>
</div>
</q-tab-panel>
<q-tab-panel name="page">
<div v-if="mygrp.note">
<br>
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<div v-if="mygrp.note" v-html="mygrp.note">
</div>
</div>
</div>
</q-tab-panel>
<q-tab-panel name="membri">
<CGridTableRec
ref="tabMembri"
prop_mytable="users"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title="username"
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessun Iscritto"
:prop_search="true"
hint="Username da trovare"
:finder="false"
:choose_visutype="true"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
:showCol="false"
:extrafield="groupname"
:extraparams="extraparams()"
:visufind="tools.iAmAdminGroup(groupname) ? costanti.REQ_REMOVE_USER_TO_GROUP : costanti.FIND_PEOPLE"
>
</CGridTableRec>
</q-tab-panel>
<q-tab-panel name="rich">
<CGridTableRec
prop_mytable="mygroups"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title=""
:vertical="costanti.VISUTABLE_USER_TABGROUP"
nodataLabel="Nessuna Richiesta in sospeso"
:prop_search="false"
hint="Username da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom_rich"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
keyMain=""
:showCol="false"
:extraparams="extraparams_rich()"
:extrafield="groupname"
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
>
</CGridTableRec>
</q-tab-panel>
</q-tab-panels>
<q-btn
v-if="mygrp.admins.includes(userStore.my.username)" icon="fas fa-pencil-alt"
color="blue"
size="md"
:label="$t('otherpages.modifgrp')"
to="/editgrp">
</q-btn>
</div>
<div v-else class="fit column no-wrap justify-evenly items-center content-start">
<q-skeleton type="QAvatar" size="140px" height="140px" animation="fade"/>
<q-card flat bordered style="width: 250px">
<div class="text-h6">
<q-skeleton :animation="animation"/>
</div>
<div class="col-12 text-h7 text-grey text-center">
{{ groupname }}
</div>
<div class="col-12 text-h7">
<q-skeleton :animation="animation"/>
</div>
<div class="col-12 text-h8 q-mt-sm">
<q-skeleton :animation="animation"/>
</div>
<div class="col-12 text-h8 q-mt-sm">
<q-skeleton :animation="animation"/>
</div>
</q-card>
</div>
</div>
<q-dialog
v-model="showPic"
full-height full-width
>
<img :src="getImgGrp()" :alt="groupname" class="full-width">
</q-dialog>
</div>
<q-dialog
v-model="showPic"
full-height full-width
>
<img :src="getImgGrp()" :alt="groupname" class="full-width">
</q-dialog>
</template>

View File

@@ -9,7 +9,6 @@ import { useRoute, useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import { colmyUserGroup } from '@store/Modules/fieldsTable'
import { ISearchList } from 'model'
import { costanti } from '@costanti'
import { shared_consts } from '@/common/shared_vuejs'

View File

@@ -4,11 +4,14 @@ import { useRoute, useRouter } from 'vue-router'
import { useI18n } from '@/boot/i18n'
import { useQuasar } from 'quasar'
import { CMyCardPopup } from '@/components/CMyCardPopup'
import { CMyPage } from '@/components/CMyPage'
import { CCheckIfIsLogged } from '@/components/CCheckIfIsLogged'
import { toolsext } from '@store/Modules/toolsext'
import { tools } from '@store/Modules/tools'
export default defineComponent({
name: 'mypagebacheca',
components: { CMyCardPopup },
components: { CMyCardPopup, CMyPage, CCheckIfIsLogged },
props: {},
setup() {
const userStore = useUserStore()
@@ -22,6 +25,7 @@ export default defineComponent({
t,
idBacheca,
toolsext,
tools,
}
}
})

View File

@@ -3,7 +3,12 @@
imgbackground="images/calendario_eventi.jpg"
sizes="max-height: 120px" styleadd="bottom: -20px !important;">
<div v-if="!tools.isLogged()">
<CCheckIfIsLogged></CCheckIfIsLogged>
</div>
<CMyCardPopup
v-if="!!idBacheca"
:table="toolsext.TABMYBACHECAS"
:idRec="idBacheca">

View File

@@ -3,6 +3,7 @@ import { CTitleBanner } from '@/components/CTitleBanner'
import { CProfile } from '@/components/CProfile'
import { CDateTime } from '@/components/CDateTime'
import { CMyPage } from '@/components/CMyPage'
import { CCheckIfIsLogged } from '@/components/CCheckIfIsLogged'
import { CSkill } from '@/components/CSkill'
import { tools } from '@store/Modules/tools'
import { computed, defineComponent, onMounted, ref, watch } from 'vue'
@@ -21,8 +22,8 @@ import { colCitys } from '@store/Modules/fieldsTable'
export default defineComponent({
name: 'mywork',
components: { CProfile, CTitleBanner, CMyFieldDb, CSkill, CDateTime, CMyPage },
name: 'myservice',
components: { CProfile, CTitleBanner, CMyFieldDb, CSkill, CDateTime, CMyPage, CCheckIfIsLogged },
props: {},
setup() {
const userStore = useUserStore()
@@ -42,6 +43,8 @@ export default defineComponent({
const myskill = ref(<IMySkill>{})
const username = computed(() => (myskill.value && myskill.value.username) ? myskill.value.username : 'Pagina')
function profile() {
return userStore.my.profile
}
@@ -97,6 +100,7 @@ export default defineComponent({
fieldsTable,
colCitys,
table,
username,
}
}
})

View File

@@ -1,9 +1,12 @@
<template>
<CMyPage
:title='myskill.username' imgbackground="images/calendario_eventi.jpg"
:title="username" imgbackground="images/calendario_eventi.jpg"
sizes="max-height: 120px" styleadd="bottom: -20px !important;">
<div v-if="!tools.isLogged()">
<CCheckIfIsLogged></CCheckIfIsLogged>
</div>
<div class="q-ma-sm q-gutter-sm q-pa-xs">
<div v-if="!!myskill.note" v-html="myskill.note"></div>
@@ -47,10 +50,10 @@
</CMyPage>
</template>
<script lang="ts" src="./mywork.ts">
<script lang="ts" src="./myservice.ts">
</script>
<style lang="scss" scoped>
@import './mywork.scss';
@import './myservice.scss';
</style>