Nella pagina profilo, i "Gruppi" personali non si vedevano !

Cancellazione di un Gruppo
corretto filtro di visiblità dei Gruppi
This commit is contained in:
Paolo Arena
2022-06-17 12:28:43 +02:00
parent f1c89483ff
commit 9e6acfdb01
20 changed files with 627 additions and 250 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "0.3.22",
"version": "0.3.23",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso",
"author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.22"
APP_VERSION="0.3.23"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="14"
DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.3.22"
APP_VERSION="0.3.23"
SERVICE_WORKER_FILE="service-worker.js"
APP_ID="14"
DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{
"name": "terradellavisione",
"version": "0.3.22",
"version": "0.3.23",
"description": "TerraDellaVisione",
"productName": "TerraDellaVisione",
"author": "Paolo Arena",

312
grp.js Normal file
View File

@@ -0,0 +1,312 @@
db.getCollection('mygoods').aggregate(
[
{
"$match": {
"$and": [
{
"$or": [
{
"idContribType": "515a353c002c8298f4495bf7"
}
]
}
]
}
},
{
"$match": {
"idapp": "13"
}
},
{
"$sort": {
"date_created": -1
}
},
{
"$addFields": {
"myId1": {
"$toObjectId": "$userId"
}
}
},
{
"$lookup": {
"from": "users",
"localField": "myId1",
"foreignField": "_id",
"as": "user"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$user",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"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.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "goods",
"localField": "idGood",
"foreignField": "_id",
"as": "recGood"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$recGood",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"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.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "sectorgoods",
"localField": "recGood.idSectorGood",
"foreignField": "_id",
"as": "sectorgood"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$sectorgood",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"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.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "cities",
"localField": "idCity",
"foreignField": "_id",
"as": "mycities"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$mycities",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"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.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$match": {
"$or": [
{
"$and": [
{
"profile.mygroups": {
"$elemMatch": {
"groupname": {
"$in": [
"000017",
"VillaggiamoItalia",
"Terraw",
"RisoBenevento",
"111"
]
}
}
}
},
{
"pub_to_share": 1,
}
]
},
{
"pub_to_share": 0,
}
]
}
},
{
"$match": {
"$and": [
{
"mycities.reg": "EMR"
},
{
"mycities.prov": "RN"
}
]
}
},
{
"$group": {
"_id": null,
"count": {
"$sum": 1
},
"results": {
"$push": "$$ROOT"
}
}
},
{
"$project": {
"count": 1,
"rows": {
"$slice": [
"$results",
0,
20
]
}
}
}
]
)

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "0.3.22",
"version": "0.3.23",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso",
"author": "Paolo Arena",

View File

@@ -67,6 +67,7 @@ export const shared_consts = {
CANCEL_REQ_GROUP: 1146,
BLOCK_GROUP: 1155,
FIND_GROUP: 1166,
DELETE_GROUP: 1170,
},
PUBTOSHARE: {

View File

@@ -1,6 +1,6 @@
import { defineComponent, onMounted, PropType, ref, watch } from 'vue'
import { useUserStore } from '@store/UserStore'
import { IMyGroup, IImgGallery, IUserFields, IUserProfile } from 'model'
import { IMyGroup, IImgGallery, IUserFields, IUserProfile, IFriends } from 'model'
import { costanti } from '@costanti'
import { shared_consts } from '@/common/shared_vuejs'
import { tools } from '@store/Modules/tools'

View File

@@ -24,8 +24,13 @@
<q-item-section>{{ $t('groups.remove_from_mygroups') }}</q-item-section>
</q-item>
</q-list>
<q-list v-if="tools.iAmAdminGroup(grp.groupname)" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.DELETE_GROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.delete_group') }}</q-item-section>
</q-item>
</q-list>
<q-list style="min-width: 150px">
<q-item clickable icon="fas fa-ban" v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.BLOCK_GROUP, myusername(), '', grp.groupname)">
<q-item v-if="!tools.iAmAdminGroup(grp.groupname)" clickable icon="fas fa-ban" v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.BLOCK_GROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.block_group') }}</q-item-section>
</q-item>
</q-list>
@@ -52,6 +57,11 @@
<q-item-section>{{ $t('groups.exit_group') }}</q-item-section>
</q-item>
</q-list>
<q-list v-if="tools.iAmAdminGroup(grp.groupname)" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.DELETE_GROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.delete_group') }}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
</q-item-label>
@@ -103,6 +113,11 @@
<q-item-section>{{ $t('groups.exit_group') }}</q-item-section>
</q-item>
</q-list>
<q-list v-if="tools.iAmAdminGroup(grp.groupname)" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.DELETE_GROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.delete_group') }}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
</q-item-label>

View File

@@ -195,9 +195,11 @@ const msg_it = {
friendsadded: 'Aggiunto alla lista di Amici',
domanda_removefriend: 'Rimuovi dagli Amici {username}?',
domanda_exit_fromgroup: 'Uscire dal Gruppo {groupname} ?',
domanda_remove_group: 'Sicuro di voler Eliminare il Gruppo {groupname} ?',
domanda_removegroup: 'Rimuovere dal Gruppo {username} ?',
removedfriend: 'Rimosso dalla lista di Amici',
removedgroup: 'Rimosso dal Gruppo',
deletedgroup: 'Gruppo Eliminato',
domanda_addtofriend: 'Aggiungere agli amici {username}?',
domanda_addtogroup: 'Aggiungi {username} al gruppo {groupname}?',
addedfriend: 'Aggiunto alla lista di Amici',
@@ -945,6 +947,7 @@ const msg_it = {
admins: 'Amministratori',
ask_group: 'Chiedi di entrare nel Gruppo',
exit_group: 'Esci dal Gruppo',
delete_group: 'Elimina il Gruppo',
accept_group: 'Accetta la richiesta',
remove_from_mygroups: 'Rimuovi dal Gruppo',
block_group: 'Blocca Gruppo',

View File

@@ -4749,6 +4749,27 @@ export const tools = {
})
},
DeleteGroup($q: any, username: string, groupnameDest: string, domanda: any = '') {
const userStore = useUserStore()
$q.dialog({
message: domanda ? domanda : t('db.domanda_remove_group', { username }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setGroupsCmd($q, t, username, groupnameDest, shared_consts.GROUPSCMD.DELETE_GROUP, null).then((res) => {
if (res) {
if (userStore.my.profile.mygroups) {
userStore.my.profile.mygroups = userStore.my.profile.mygroups.filter((rec: IMyGroup) => rec.groupname !== groupnameDest)
tools.showPositiveNotif($q, t('db.deletedgroup'))
}
}
})
})
},
setRequestFriendship($q: any, username: string, usernameDest: string, value: boolean) {
const userStore = useUserStore()
@@ -5028,6 +5049,8 @@ export const tools = {
console.log('setcmd', cmd)
if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP) {
tools.removeFromMyGroups($q, username, dest, t('db.domanda_exit_fromgroup', { username }))
} else if (cmd === shared_consts.GROUPSCMD.DELETE_GROUP) {
tools.DeleteGroup($q, username, dest)
} else if (cmd === shared_consts.GROUPSCMD.BLOCK_GROUP) {
tools.blockGroup($q, username, dest)
} else if (cmd === shared_consts.GROUPSCMD.SETGROUP) {

View File

@@ -41,6 +41,8 @@ export default defineComponent({
const mygrp = ref(<IMyGroup|null>{})
const users_in_group = ref(<IFriends[]>[])
const loading = ref(false)
const tabgrp = ref('info')
const tab = ref('membri')
@@ -68,6 +70,8 @@ export default defineComponent({
mygrp.value = null
users_in_group.value = []
}
loading.value = false
// filtroutente.value = [{ userId: userStore.my._id }]
})
@@ -79,6 +83,7 @@ export default defineComponent({
})
async function mounted() {
loading.value = true
await loadGroup()
searchList.value = []
@@ -202,6 +207,7 @@ export default defineComponent({
numAdmins,
listaAdmins,
users_in_group,
loading,
}
}
})

View File

@@ -1,6 +1,11 @@
<template>
<div class="q-gutter-sm q-pa-sm q-pb-md">
<div v-if="!mygrp && !loading">
<h3>Gruppo non Esistente</h3>
</div>
<div v-else>
<div v-if="!tools.isLogged()">
<CCheckIfIsLogged></CCheckIfIsLogged>
</div>
@@ -40,6 +45,17 @@
</q-item-section>
<q-item-section>{{ $t('groups.exit_group') }}</q-item-section>
</q-item>
<q-list v-if="tools.iAmAdminGroup(mygrp.groupname)" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.DELETE_GROUP, userStore.my.username, '', mygrp.groupname)">
<q-item-section avatar>
<q-icon color="negative" name="fas fa-trash-alt"/>
</q-item-section>
<q-item-section>{{ $t('groups.delete_group') }}</q-item-section>
</q-item>
</q-list>
</q-list>
</q-menu>
</q-btn>
@@ -50,7 +66,6 @@
flat :label="$t('groups.cancel_ask_group_short')"
@click="tools.cancelReqGroups($q, userStore.my.username, mygrp.groupname)"
/>
</div>
<!--
@@ -249,6 +264,7 @@
</q-dialog>
</div>
</div>
</template>

View File

@@ -24,7 +24,8 @@ export default defineComponent({
function mounted() {
const filt_loaded = tools.getCookie(tools.COOK_SEARCH + tools.GROUP_SEARCH)
const filt_loaded = tools.getCookie(tools.COOK_SEARCH + tools.GROUP_SEARCH, costanti.FIND_GROUP, true)
console.log('filt_loaded', filt_loaded)
filter.value = filt_loaded ? filt_loaded : costanti.FIND_GROUP
}