- Gruppi (3) - lista degli utenti del gruppo

This commit is contained in:
paoloar77
2022-02-05 23:28:01 +01:00
parent 498c28773f
commit 980ff4b48e
28 changed files with 642 additions and 117 deletions

View File

@@ -10,7 +10,7 @@
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title="username"
:vertical="true"
:vertical="-1"
nodataLabel=" "
:prop_search="true"
hint="Username da trovare"

View File

@@ -1,6 +1,8 @@
import { CMyFieldDb } from '@/components/CMyFieldDb'
import { CGridTableRec } from '@/components/CGridTableRec'
import { CMyFriends } from '@/components/CMyFriends'
import { CTitleBanner } from '@/components/CTitleBanner'
import { CProfile } from '@/components/CProfile'
import { CMyFieldRec } from '@/components/CMyFieldRec'
import { CSkill } from '@/components/CSkill'
import { CDateTime } from '@/components/CDateTime'
import { tools } from '@store/Modules/tools'
@@ -12,13 +14,14 @@ import { useI18n } from '@/boot/i18n'
import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar'
import { costanti } from '@costanti'
import { IMyGroup, IUserFields } from 'model'
import { IFriends, IMyGroup, ISearchList, IUserFields } from 'model'
import { shared_consts } from '@/common/shared_vuejs'
import { colmyUserPeople, colmyUserGroup } from '@store/Modules/fieldsTable'
export default defineComponent({
name: 'mygroup',
components: { CProfile, CTitleBanner, CMyFieldDb, CSkill, CDateTime },
components: { CProfile, CTitleBanner, CMyFieldRec, CSkill, CDateTime, CMyFriends, CGridTableRec },
props: {},
setup() {
const userStore = useUserStore()
@@ -33,7 +36,15 @@ export default defineComponent({
const filtroutente = ref(<any[]>[])
const showPic = ref(false)
const mygrp = ref(<IMyGroup>{})
const mygrp = ref(<IMyGroup|null>{})
const users_in_group = ref(<IFriends[]>[])
const tab = ref('membri')
const arrfilterand: any = ref([])
const filtercustom: any = ref([])
const filtercustom_rich: any = ref([])
const searchList = ref(<ISearchList[]>[])
function profile() {
return userStore.my.profile
@@ -47,7 +58,13 @@ export default defineComponent({
// Carica il profilo di quest'utente
if (groupname.value) {
userStore.loadGroup(groupname.value).then((ris) => {
mygrp.value = ris
if (ris) {
mygrp.value = ris.mygroup
users_in_group.value = ris.users_in_group
} else {
mygrp.value = null
users_in_group.value = []
}
// filtroutente.value = [{ userId: userStore.my._id }]
})
@@ -60,10 +77,19 @@ export default defineComponent({
function mounted() {
loadGroup()
searchList.value = []
filtercustom.value = [{ 'profile.mygroups': { $elemMatch: {groupname: {$eq: groupname.value }} } } ]
filtercustom_rich.value = [{ req_users: { $elemMatch: {username: {$eq: userStore.my.username }} } } ]
arrfilterand.value = []
//++TODO: sistemare la filtercustom ... richieste...
}
function getImgGrp() {
return userStore.getImgByGroup(mygrp.value)
if (mygrp.value)
return userStore.getImgByGroup(mygrp.value)
else
return ''
}
function checkifShow(col: string) {
@@ -73,12 +99,20 @@ export default defineComponent({
function getLinkGrpTelegram() {
if (!!mygrp.value.link_telegram) {
return 'https://t.me/' + mygrp.value.link_telegram
if (mygrp.value) {
if (!!mygrp.value.link_telegram) {
return 'https://t.me/' + mygrp.value.link_telegram
}
} else {
return ''
}
}
function getLinkWebSite() {
if (!mygrp.value) {
return ''
}
let site = mygrp.value.website!
if (site) {
@@ -89,6 +123,31 @@ export default defineComponent({
return site
}
function extraparams() {
let lk_tab = 'users'
let lk_LF = 'userId'
let lk_FF = '_id'
let lk_as = 'user'
let af_objId_tab = 'myId'
return {
lookup1: {
lk_tab,
lk_LF,
lk_FF,
lk_as,
af_objId_tab,
lk_proj: {
username: 1,
name: 1,
'profile.img': 1,
'profile.qualifica': 1,
}
}
}
}
onMounted(mounted)
return {
@@ -108,6 +167,15 @@ export default defineComponent({
userStore,
t,
animation,
arrfilterand,
filtercustom,
filtercustom_rich,
searchList,
colmyUserPeople,
colmyUserGroup,
extraparams,
tab,
users_in_group,
}
}
})

View File

@@ -1,4 +1,5 @@
<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">
@@ -14,11 +15,21 @@
<div class="col-12 text-h7 text-blue text-shadow-2">
{{ mygrp.groupname }}
</div>
<div>
<CMyFieldRec
title="Visibilità"
table="mygroups"
:columns="colmyUserGroup"
:rec="mygrp"
field="visibility"
:canModify="false">
</CMyFieldRec>
</div>
<div class="col-12 text-h7">
<span v-if="checkifShow('descr')">{{ mygrp.descr }}</span>
</div>
<div v-if="mygrp.admins && !mygrp.admins.includes(userStore.my.username)">
<div>
<q-btn
v-if="!userStore.IsMyGroupByGroupname(mygrp.groupname) && !userStore.IsAskedGroupByGroupname(mygrp.groupname)"
icon="fas fa-user-plus"
@@ -73,7 +84,80 @@
:href="getLinkWebSite()" target="__blank">
</q-btn>
</div>
</div>
<div v-if="tools.iAmAdminGroup(groupname)">
<q-tabs v-model="tab" class="text-blue">
<q-tab label="Membri" name="membri" icon="fas fa-users"></q-tab>
<q-tab label="Richieste" name="rich" icon="fas fa-user-plus"></q-tab>
</q-tabs>
<q-tab-panels v-model="tab" animated>
<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 Membro"
:prop_search="true"
hint="Username da trovare"
:finder="false"
:choose_visutype="true"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
keyMain=""
:showCol="false"
:extrafield="groupname"
:extraparams="extraparams()"
:visufind="costanti.REQ_REMOVE_USER_TO_GROUP"
>
</CGridTableRec>
</q-tab-panel>
<q-tab-panel name="rich">
<CGridTableRec
prop_mytable="mygroups"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title="username"
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel=" "
:prop_search="false"
hint="Username da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ONLY_FULL_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()"
:extrafield="groupname"
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
>
</CGridTableRec>
</q-tab-panel>
</q-tab-panels>
</div>
</div>
<div v-else class="fit column no-wrap justify-evenly items-center content-start">
<q-skeleton type="QAvatar" size="140px" height="140px" animation="fade"/>

View File

@@ -10,8 +10,8 @@
:prop_mycolumns="colmyUserGroup"
prop_colkey="_id"
col_title="groupname"
:vertical="true"
nodataLabel=" "
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessuna Richiesta in sospeso"
:prop_search="true"
hint="nome del gruppo da trovare"
:finder="true"