- fix: sistemato pagina gruppo che non si visualizzava (errore per modifica)

- fix: corretto il "Invia RIS" al gruppo.
This commit is contained in:
Surya Paolo
2025-03-13 18:19:35 +01:00
parent f187fb2146
commit f5b0e693d0
24 changed files with 258 additions and 627 deletions

4
.env
View File

@@ -1,6 +1,6 @@
VITE_APP_VERSION="1.2.15"
VITE_APP_VERSION="1.2.17"
VITE_LANG_DEFAULT="it"
VITE_PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
VITE_SERVICE_WORKER_FILE="sw-1.2.15.js"
VITE_SERVICE_WORKER_FILE="sw-1.2.17.js"
VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
VITE_VUE_ROUTER_MODE="history"

View File

@@ -1,11 +1,11 @@
VITE_APP_ID="13"
VITE_APP_URL="https://test.riso.app"
VITE_MONGODB_HOST="https://testapi.riso.app"
VITE_LOGO_REG="riso-logo-full.png"
VITE_APP_URL="https://riso.app"
VITE_MONGODB_HOST="https://api.riso.app"
VITE_LOGO_REG='riso-logo-full.png'
VITE_PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST="1"
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_test.riso_server"
SERVERDIR_WEBSITE="/var/www/test.riso.app"
VITE_DEBUG="0"
VITE_VUE_APP_ISTEST="0"
DIRECTORY_LOCAL=myprojplanet_vite
DIRECTORY_SERVER=/var/www/nodejs_riso_server
SERVERDIR_WEBSITE="/var/www/riso.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"

View File

@@ -10,7 +10,7 @@
<meta name="description" content="<%= productDescription %>">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="version" content="1.2.15">
<meta name="version" content="1.2.17">
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "1.2.15",
"version": "1.2.17",
"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": "Surya",

View File

@@ -366,7 +366,7 @@ export default defineConfig((ctx) => {
// https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa
pwa: {
workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
swFilename: 'sw-' + "1.2.15" + '.js',
swFilename: 'sw-' + "1.2.17" + '.js',
workboxOptions: {
swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista
},

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "1.2.15",
"version": "1.2.17",
"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": "Surya",

View File

@@ -1,6 +1,6 @@
{
"name": "gruppomacro",
"version": "1.2.15",
"version": "1.2.17",
"description": "Gruppo Macro",
"productName": "Gruppo Macro",
"author": "Surya",

View File

@@ -360,7 +360,7 @@ export default defineConfig((ctx) => {
pwa: {
workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
swFilename: 'sw-' + "1.2.15" + '.js',
swFilename: 'sw-' + "1.2.17" + '.js',
workboxOptions: {
swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista
},

View File

@@ -1,11 +1,11 @@
VITE_APP_ID="17"
VITE_APP_URL="https://test.piuchebuono.app"
VITE_MONGODB_HOST="https://testapi.piuchebuono.app"
VITE_APP_URL="https://piuchebuono.app"
VITE_MONGODB_HOST="https://api.piuchebuono.app"
VITE_LOGO_REG="piuchebuono-logo-full.png"
VITE_PUBLICKEY_PUSH="BJgo8XR_upbnbMLWgCAUELo6DK7dRXffYAnFOxbaMMz5favBgcQBKT-eISqouO-jRad4Sw8l5nd2wCF6KorGiTc"
VITE_DEBUG="1"
VITE_VUE_APP_ISTEST="1"
VITE_DEBUG="0"
VITE_VUE_APP_ISTEST="0"
DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_test.piuchebuono_server"
SERVERDIR_WEBSITE="/var/www/test.piuchebuono.app"
DIRECTORY_SERVER="/var/www/nodejs_piuchebuono_server"
SERVERDIR_WEBSITE="/var/www/piuchebuono.app"
SERVERPW_WEBSITE="pwdadmin@1AOK"

View File

@@ -1,6 +1,6 @@
{
"name": "piuchebuono",
"version": "1.2.15",
"version": "1.2.17",
"description": "PiuCheBuono",
"productName": "PiuCheBuono",
"author": "Surya",

View File

@@ -360,7 +360,7 @@ export default defineConfig((ctx) => {
pwa: {
workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
swFilename: 'sw-' + "1.2.15" + '.js',
swFilename: 'sw-' + "1.2.17" + '.js',
workboxOptions: {
swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista
},

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "1.2.15",
"version": "1.2.17",
"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": "Surya",

View File

@@ -215,7 +215,10 @@ export default defineConfig((ctx) => {
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-devServer
devServer: {
https: false,
https: {
key: path.resolve(__dirname, 'localhost-key.pem'),
cert: path.resolve(__dirname, 'localhost.pem'),
},
port: ctx.mode.spa ? 8084 : 8094,
vueDevtools: false, // automatically opening remote Vue Devtools
open: false, // opens browser window automatically
@@ -363,7 +366,7 @@ export default defineConfig((ctx) => {
// https://v2.quasar.dev/quasar-cli/developing-pwa/configuring-pwa
pwa: {
workboxMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
swFilename: 'sw-' + "1.2.15" + '.js',
swFilename: 'sw-' + "1.2.17" + '.js',
workboxOptions: {
swSrc: 'src-pwa/custom-service-worker.js', // Assicurati che il file esista
},

View File

@@ -1 +1 @@
TERMINA DI LAVORARE SU piuchebuono.app: (Sovrascrivo!)
TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo!)

View File

@@ -7,10 +7,6 @@ const CACHE_NAME = 'pwa-cache-v2'; // Nome della cache
const ORA = "12.57"
console.log('***** INIZIO CUSTOM-SERVICE-WORKER.JS ' + ORA);
//importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.5.4/workbox-sw.js');
importScripts('workbox/workbox-sw.js')
import { clientsClaim } from 'workbox-core'
@@ -84,7 +80,7 @@ self.addEventListener('activate', (event) => {
);
});
const VITE_APP_VERSION = "1.2.15";
const VITE_APP_VERSION = "1.2.17";
console.log(' [ VER-' + VITE_APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker: ' + ORA);

View File

@@ -43,7 +43,7 @@ export interface IMyGroup {
username_who_block?: string
date_blocked?: Date
createdBy?: string
mycircuits?: IMyCircuit[]
mycircuits?: ICircuit[]
lastdate_reqRisGroup?: Date
account?: IAccount

View File

@@ -4,7 +4,8 @@ import type {
IAccount,
ICircuit, ICircuitState, IGroupShort, IMyCircuit, IMyGroup, IUserFields
} from '@src/model';
import { IGlobalState
import {
IGlobalState
} from '@src/model'
import { tools } from '@tools'
import translate from '@src/globalroutines/util'
@@ -252,7 +253,7 @@ export const useCircuitStore = defineStore('CircuitStore', {
getCircuitsListByGroup(mygrp: IMyGroup): ICircuit[] {
if (mygrp.mycircuits)
return this.listcircuits.filter((rec: ICircuit) => mygrp.mycircuits!.findIndex((circ: IMyCircuit) => circ.circuitname === rec.name) >= 0)
return this.listcircuits.filter((rec: ICircuit) => mygrp.mycircuits!.findIndex((circ: ICircuit) => circ.name === rec.name) >= 0)
return []
},

View File

@@ -7823,7 +7823,7 @@ export const tools = {
if (username) {
await userStore.loadGroups(username).then((ris) => {
// console.log('ris', ris)
console.log('loadGroupsByUsername ', ris)
if (ris) {
userStore.my.profile.mygroups = ris.mygroups ? ris.mygroups : []
userStore.my.profile.list_usersgroup = ris.listUsersGroup ? ris.listUsersGroup : []

View File

@@ -306,10 +306,14 @@ export const useUserStore = defineStore('UserStore', {
},
IsMyGroupByGroupname(groupname: string): boolean {
if (this.my.profile.mygroups)
return this.my.profile.mygroups.findIndex((rec) => rec.groupname === groupname) >= 0
else
try {
if (this.my.profile?.mygroups)
return this.my.profile.mygroups.findIndex((rec) => rec.groupname === groupname) >= 0
else
return false
} catch (e) {
return false
}
},
getMyGroupByGroupname(groupname: string): IMyGroup | null {

View File

@@ -1724,6 +1724,11 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
async loadTest(ind: number, numval: number) {
const restest = await Api.SendReq(`/testpao/?numval=${numval}&ind=${ind}`, 'GET', null)
return restest
},
async loadSite() {
const userStore = useUserStore()
const calendarStore = useCalendarStore()
@@ -1740,10 +1745,6 @@ export const useGlobalStore = defineStore('GlobalStore', {
// calendarStore.editable = false
try {
console.log('CHIAMA testpao...')
const restest = await Api.SendReq(`/testpao/`, 'GET', null)
console.log(' RISULTATO = ', restest)
const res = await Api.SendReq(`/loadsite/${myuserid}/${tools.getEnv('VITE_APP_ID')}/${import.meta.env.VITE_APP_VERSION}`, 'GET', null)
if (res.status === 200) {

View File

@@ -24,6 +24,10 @@ export default defineComponent({
const $q = useQuasar()
const { t } = useI18n();
const log = ref('');
const log2 = ref('');
const numval = ref(20);
const loading = ref(false);
const filtroutente = ref(<any[]>[])
function getpayment() {
@@ -79,6 +83,26 @@ export default defineComponent({
]
}
async function runTest(ind: number) {
loading.value = true;
log.value = '';
try {
// Assicurati che l'URL di base di axios sia impostato correttamente
// Puoi configurarlo globalmente o usare direttamente import.meta.env.VITE_API_BASE_URL
const response = await globalStore.loadTest(ind, numval.value);
if (ind === 1)
log.value = response.data.log;
else if (ind === 2)
log2.value = response.data.log;
} catch (error) {
console.error('Errore nella chiamata a /testpao:', error);
log.value = 'Errore: ' + error.message;
} finally {
loading.value = false;
}
}
onMounted(mounted)
return {
@@ -88,6 +112,11 @@ export default defineComponent({
tools,
costanti,
filtroutente,
log,
log2,
loading,
runTest,
numval,
}
}
})

View File

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

View File

@@ -50,7 +50,7 @@ export default defineComponent({
return costanti.MAINCARDS.filter((rec: any) => rec.table && rec.showinprofile)
})
const groupname = computed(() => $route.params.groupname ? $route.params.groupname.toString() : '')
const groupname = computed(() => $route.params?.groupname ? $route.params?.groupname.toString() : '')
const idnotif = computed(() => $route.query.idnotif ? $route.query.idnotif.toString() : '')
const filtroutente = ref(<any[]>[])

View File

@@ -14,95 +14,57 @@
</div>
<div v-else>
<div>
<div
v-if="mygrp.descr"
class="fit column no-wrap justify-evenly items-center content-start"
>
<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-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
v-if="mygrp.title !== mygrp.groupname"
class="col-12 text-h7 text-blue text-shadow-2"
>
<div v-if="mygrp.title !== mygrp.groupname" class="col-12 text-h7 text-blue text-shadow-2">
{{ mygrp.groupname }}
</div>
<q-banner
v-if="userStore.IsRefusedGroupByGroupname(mygrp.groupname)"
rounded
class="bg-red text-white"
style="text-align: center"
>
<q-banner v-if="userStore.IsRefusedGroupByGroupname(mygrp.groupname)" rounded class="bg-red text-white"
style="text-align: center">
<em style="font-weight: bold">{{ $t("db.youarerefusedgroup") }}</em>
<br />
</q-banner>
<q-btn
v-if="circuitslistOpt.length > 0"
icon-right="img: /images/1ris_rosso_100.png"
color="green"
size="md"
:label="t('circuit.sendcoins')"
dense
rounded
@click="showsendCoinTo = true"
>
<q-btn v-if="circuitslistOpt.length > 0" icon-right="img: /images/1ris_rosso_100.png" color="green" size="md"
:label="t('circuit.sendcoins')" dense rounded @click="showsendCoinTo = true">
</q-btn>
<div>
<q-btn
v-if="
!userStore.IsMyGroupByGroupname(mygrp.groupname) &&
!userStore.IsAskedGroupByGroupname(mygrp.groupname) &&
!userStore.IsRefusedGroupByGroupname(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.IsMyGroupByGroupname(mygrp.groupname)"
rounded
icon="fas fa-ellipsis-h"
>
<q-btn v-if="
!userStore.IsMyGroupByGroupname(mygrp.groupname) &&
!userStore.IsAskedGroupByGroupname(mygrp.groupname) &&
!userStore.IsRefusedGroupByGroupname(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.IsMyGroupByGroupname(mygrp.groupname)" rounded icon="fas fa-ellipsis-h">
<q-menu>
<q-list v-if="true" style="min-width: 150px">
<q-item
v-if="userStore.IsMyGroupByGroupname(mygrp.groupname)"
clickable
v-close-popup
@click="
tools.removeFromMyGroups(
$q,
userStore.my.username,
mygrp.groupname,
$t('db.domanda_exit_fromgroup', {
groupname: mygrp.groupname,
})
)
"
>
<q-item v-if="userStore.IsMyGroupByGroupname(mygrp.groupname)" clickable v-close-popup @click="
tools.removeFromMyGroups(
$q,
userStore.my.username,
mygrp.groupname,
$t('db.domanda_exit_fromgroup', {
groupname: mygrp.groupname,
})
)
">
<q-item-section avatar>
<q-icon color="negative" name="fas fa-user-minus" />
</q-item-section>
@@ -111,26 +73,19 @@
</q-item-section>
</q-item>
<q-list
v-if="
userStore.IsMyGroupByGroupname(mygrp.groupname) &&
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-list v-if="
userStore.IsMyGroupByGroupname(mygrp.groupname) &&
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>
@@ -143,42 +98,26 @@
</q-menu>
</q-btn>
<q-btn
v-if="
userStore.IsAskedGroupByGroupname(mygrp.groupname) &&
!userStore.IsMyGroupByGroupname(mygrp.groupname)
"
icon="fas fa-user-minus"
outline
flat
:label="$t('shared.cancel_ask_short')"
@click="
tools.cancelReqGroups(
$q,
userStore.my.username,
mygrp.groupname
)
"
/>
<q-btn v-if="
userStore.IsAskedGroupByGroupname(mygrp.groupname) &&
!userStore.IsMyGroupByGroupname(mygrp.groupname)
" icon="fas fa-user-minus" outline flat :label="$t('shared.cancel_ask_short')" @click="
tools.cancelReqGroups(
$q,
userStore.my.username,
mygrp.groupname
)
" />
</div>
</div>
<div class="absolute-top-right q-mr-sm q-my-md q-pt-lg">
<div class="column">
<q-btn
flat
round
color="blue"
icon="share"
style="z-index: 1"
@click.stop="tools.copyToClip($q, getlinkpage(), true)"
></q-btn>
<q-btn flat round color="blue" icon="share" style="z-index: 1"
@click.stop="tools.copyToClip($q, getlinkpage(), true)"></q-btn>
</div>
</div>
<div
v-if="mygrp.descr"
class="no-wrap justify-evenly items-center content-start"
>
<div v-if="mygrp.descr" class="no-wrap justify-evenly items-center content-start">
<!--
<q-btn
v-if="tools.iAmAdminGroup(groupname)" icon="fas fa-pencil-alt"
@@ -190,35 +129,17 @@
-->
<q-tabs v-model="tabgrp" class="text-blue">
<q-tab
:label="t('shared.info1')"
name="info"
icon="fas fa-info"
></q-tab>
<q-tab
v-if="
tools.iCanShowGroupsMember(mygrp) ||
tools.iAmAdminGroup(groupname)
"
:label="t('shared.subscribes')"
name="members"
icon="fas fa-users"
></q-tab>
<q-tab
v-if="tools.iCanShowAnnunci(mygrp)"
:label="t('profile.annunci')"
name="annunci"
icon="fas fa-pencil-alt"
></q-tab>
<q-tab
v-if="
tools.iCanShowGroupsMember(mygrp) ||
tools.iAmAdminGroup(groupname)
"
:label="t('groups.circuits')"
name="circuits"
icon="img: /images/1ris_rosso_100.png"
></q-tab>
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab v-if="
tools.iCanShowGroupsMember(mygrp) ||
tools.iAmAdminGroup(groupname)
" :label="t('shared.subscribes')" name="members" icon="fas fa-users"></q-tab>
<q-tab v-if="tools.iCanShowAnnunci(mygrp)" :label="t('profile.annunci')" name="annunci"
icon="fas fa-pencil-alt"></q-tab>
<q-tab v-if="
tools.iCanShowGroupsMember(mygrp) ||
tools.iAmAdminGroup(groupname)
" :label="t('groups.circuits')" name="circuits" icon="img: /images/1ris_rosso_100.png"></q-tab>
</q-tabs>
<q-tab-panels v-model="tabgrp" animated keep-alive>
@@ -230,48 +151,25 @@
</div>
<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>
<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') +
' ' +
tools.getMainUrl(getLinkWebSite())
"
:href="getLinkWebSite()"
target="__blank"
></q-btn>
<q-btn v-if="getLinkWebSite()" icon="fas fa-globe" color="blue" type="a" size="md" rounded :label="$t('reg.website') +
' ' +
tools.getMainUrl(getLinkWebSite())
" :href="getLinkWebSite()" target="__blank"></q-btn>
</div>
</q-card-section>
</q-card>
<div>
<q-card>
<q-card-section>
<div
v-if="
mygrp.visibility.includes(
shared_consts.Visibility_Group.PRIVATE
)
"
class="row"
>
<div v-if="
mygrp.visibility.includes(
shared_consts.Visibility_Group.PRIVATE
)
" class="row">
<div class="q-pa-xs">
<q-icon name="fas fa-lock"></q-icon>
</div>
@@ -283,14 +181,11 @@
</div>
</div>
<div
v-if="
mygrp.visibility.includes(
shared_consts.Visibility_Group.HIDDEN
)
"
class="row"
>
<div v-if="
mygrp.visibility.includes(
shared_consts.Visibility_Group.HIDDEN
)
" class="row">
<div class="q-pa-xs">
<q-icon name="fas fa-eye-slash"></q-icon>
</div>
@@ -304,18 +199,11 @@
<q-item>
<q-item-section>
<q-item-label class="full-width">
<div
v-for="(rec, ind) of mygrp.recCatGrp"
:key="ind"
>
<q-chip
dense
class="text-center shadow-5 glossy chipmodif text-white"
:style="`background-color: ${rec.color};`"
>
<div v-for="(rec, ind) of mygrp.recCatGrp" :key="ind">
<q-chip dense class="text-center shadow-5 glossy chipmodif text-white"
:style="`background-color: ${rec.color};`">
<q-icon :name="rec.icon" left />
{{ rec.descr }}</q-chip
>
{{ rec.descr }}</q-chip>
</div>
</q-item-label>
</q-item-section>
@@ -340,11 +228,7 @@
</div>
<div v-for="(user, index) of mygrp.admins" :key="index">
<CMyUser
:mycontact="user"
:visu="costanti.FIND_PEOPLE"
@setCmd="tools.setCmd"
></CMyUser>
<CMyUser :mycontact="user" :visu="costanti.FIND_PEOPLE" @setCmd="tools.setCmd"></CMyUser>
</div>
<div v-if="cities.length > 0" class="row">
@@ -368,14 +252,11 @@
})
}}
</div>
<div
v-if="
!!mygrp.date_updated &&
tools.getstrshortDate(mygrp.date_updated) !==
tools.getstrshortDate(mygrp.createdBy)
"
class="element"
>
<div v-if="
!!mygrp.date_updated &&
tools.getstrshortDate(mygrp.date_updated) !==
tools.getstrshortDate(mygrp.createdBy)
" class="element">
<q-icon name="fas fa-pencil-alt"></q-icon>
{{
$t("shared.lastmodify", {
@@ -405,98 +286,43 @@
</q-card>
</q-tab-panel>
<q-tab-panel
name="members"
style="max-width: 500px"
v-if="tools.iCanShowGroupsMember(mygrp)"
>
<q-tabs
v-show="tools.iAmAdminGroup(groupname)"
v-model="tabmembers"
class="text-blue"
>
<q-tab-panel name="members" style="max-width: 500px" v-if="tools.iCanShowGroupsMember(mygrp)">
<q-tabs v-show="tools.iAmAdminGroup(groupname)" v-model="tabmembers" class="text-blue">
<q-tab label="Tutti" name="all" 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-tab
v-if="tools.iAmAdminGroup(groupname)"
label="Rifiutati"
name="refused"
icon="fas fa-user-minus"
outline
></q-tab>
<q-tab v-if="tools.iAmAdminGroup(groupname)" label="Richieste" name="rich"
icon="fas fa-user-plus"></q-tab>
<q-tab v-if="tools.iAmAdminGroup(groupname)" label="Rifiutati" name="refused" icon="fas fa-user-minus"
outline></q-tab>
</q-tabs>
<q-tab-panels v-model="tabmembers" animated keep-alive>
<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"
:showCol="false"
:extraparams="extraparams_rich()"
:extrafield="groupname"
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
></CGridTableRec>
<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" :showCol="false"
:extraparams="extraparams_rich()" :extrafield="groupname"
:visufind="costanti.REQ_ADD_USER_TO_GROUP"></CGridTableRec>
</q-tab-panel>
<q-tab-panel name="refused">
<CGridTableRec
prop_mytable="mygroups"
prop_mytitle
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title
:vertical="costanti.VISUTABLE_SCHEDA_GROUP"
nodataLabel="Nessun utente Rifiutato"
: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"
:showCol="false"
:extraparams="extraparams_refused()"
:extrafield="groupname"
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
></CGridTableRec>
<CGridTableRec prop_mytable="mygroups" prop_mytitle :prop_mycolumns="colmyUserPeople"
prop_colkey="_id" col_title :vertical="costanti.VISUTABLE_SCHEDA_GROUP"
nodataLabel="Nessun utente Rifiutato" :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" :showCol="false"
:extraparams="extraparams_refused()" :extrafield="groupname"
:visufind="costanti.REQ_ADD_USER_TO_GROUP"></CGridTableRec>
</q-tab-panel>
</q-tab-panels>
</q-tab-panel>
<q-tab-panel name="circuits">
<q-select
v-if="circuitslistOpt.length > 0"
v-model="circuitIndex"
:options="circuitslistOpt"
emit-value
map-options
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
>
<q-select v-if="circuitslistOpt.length > 0" v-model="circuitIndex" :options="circuitslistOpt" emit-value
map-options :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'">
<template v-slot:prepend></template>
<template v-slot:option="scope">
<q-item v-bind="scope.itemProps">
@@ -507,22 +333,9 @@
</template>
</q-select>
<q-tabs
v-if="circuitslistOpt.length > 0"
v-model="tabcircuit"
class="text-blue"
no-caps
>
<q-tab
:label="t('shared.info1')"
name="info"
icon="fas fa-info"
></q-tab>
<q-tab
:label="t('circuit.movements')"
name="mov"
icon="img: /images/1ris_rosso_100.png"
></q-tab>
<q-tabs v-if="circuitslistOpt.length > 0" v-model="tabcircuit" class="text-blue" no-caps>
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab :label="t('circuit.movements')" name="mov" icon="img: /images/1ris_rosso_100.png"></q-tab>
</q-tabs>
</q-tab-panel>
<q-tab-panel name="annunci"></q-tab-panel>
@@ -533,12 +346,8 @@
<q-tab-panel name="info" style="max-width: 500px">
<div v-for="(circuit, ind) of circuitslist" :key="ind">
<div class="circuit_name">{{ circuit.name }}:</div>
<CInfoAccount
:circuitname="circuit.name"
:grp="mygrp"
:account="circuit.account"
:admin="tools.iAmAdminCircuit(circuit.name)"
/>
<CInfoAccount :circuitname="circuit.name" :grp="mygrp" :account="circuit.account"
:admin="tools.iAmAdminCircuit(circuit.name)" />
</div>
</q-tab-panel>
</q-tab-panels>
@@ -547,85 +356,38 @@
<div v-if="circuitslist && circuitslist.length > 0">
<q-toggle v-model="tabellare" label="Tabella"></q-toggle>
<CGridTableRec
v-if="tabellare && !loading"
prop_mytable="movements"
prop_mytitle
:prop_mycolumns="colmyMovementTable"
prop_colkey="_id"
col_title="Lista Movimenti"
:vertical="0"
nodataLabel="Nessun Movimento effettuato"
:prop_search="true"
:enableExport="true"
hint="nota da trovare (tabella)"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="movimenti non trovati con questa ricerca"
filterextra
:prop_pagination="{
<CGridTableRec v-if="tabellare && !loading" prop_mytable="movements" prop_mytitle
:prop_mycolumns="colmyMovementTable" prop_colkey="_id" col_title="Lista Movimenti" :vertical="0"
nodataLabel="Nessun Movimento effettuato" :prop_search="true" :enableExport="true"
hint="nota da trovare (tabella)" :finder="false" :choose_visutype="false" :finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS" :butt_modif_new="false"
noresultLabel="movimenti non trovati con questa ricerca" filterextra :prop_pagination="{
sortBy: 'transactionDate',
descending: true,
page: 1,
rowsNumber: 0,
rowsPerPage: 20,
}"
:showType="costanti.SHOW_MOVEMENTS"
:showCol="true"
:showHeaderCol="true"
:extraparams="
getExtraparams_movs_grp(circuitslist[circuitIndex])
"
extrafield
:visufind="costanti.FRIENDS"
></CGridTableRec>
<CGridTableRec
v-else-if="!loading"
prop_mytable="movements"
prop_mytitle
:prop_mycolumns="colmyMovement"
prop_colkey="_id"
col_title="Lista Movimenti"
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessun Movimento effettuato"
:enableExport="true"
:prop_search="true"
hint="nota da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="movimenti non trovati con questa ricerca"
:prop_pagination="{
}" :showType="costanti.SHOW_MOVEMENTS" :showCol="true" :showHeaderCol="true" :extraparams="getExtraparams_movs_grp(circuitslist[circuitIndex])
" extrafield :visufind="costanti.FRIENDS"></CGridTableRec>
<CGridTableRec v-else-if="!loading" prop_mytable="movements" prop_mytitle :prop_mycolumns="colmyMovement"
prop_colkey="_id" col_title="Lista Movimenti" :vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessun Movimento effettuato" :enableExport="true" :prop_search="true"
hint="nota da trovare" :finder="false" :choose_visutype="false" :finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS" :butt_modif_new="false"
noresultLabel="movimenti non trovati con questa ricerca" :prop_pagination="{
sortBy: 'transactionDate',
descending: true,
page: 1,
rowsNumber: 20,
rowsPerPage: 20,
}"
:showType="costanti.SHOW_MOVEMENTS"
:showCol="false"
:showHeaderCol="false"
:extraparams="
getExtraparams_movs_grp(circuitslist[circuitIndex])
"
extrafield
:visufind="costanti.FRIENDS"
></CGridTableRec>
}" :showType="costanti.SHOW_MOVEMENTS" :showCol="false" :showHeaderCol="false" :extraparams="getExtraparams_movs_grp(circuitslist[circuitIndex])
" extrafield :visufind="costanti.FRIENDS"></CGridTableRec>
</div>
</div>
<div v-if="tabgrp === 'annunci'">
<div v-for="(card, ind) of mycards" :key="ind" :name="card.table">
<div
v-if="card.table !== 'mygroups' && card.table !== 'circuits'"
>
<div
v-if="card.table !== 'mygroups' && card.table !== 'circuits'"
>
<div v-if="card.table !== 'mygroups' && card.table !== 'circuits'">
<div v-if="card.table !== 'mygroups' && card.table !== 'circuits'">
<div v-if="card.table === shared_consts.TABLES_MYBACHECAS">
<q-tabs v-model="tabevents" class="text-teal">
<q-tab label="Eventi Passati" name="past"></q-tab>
@@ -634,87 +396,43 @@
<q-tab-panels v-model="tabevents" animated>
<q-tab-panel name="past">
<CSkill
:groupname="mygrp.groupname"
:table="card.table"
<CSkill :groupname="mygrp.groupname" :table="card.table"
:filtercustom="filtrotables(card.table, tabevents)"
:butt_modif_new="tools.iAmAdminGroup(groupname)"
:visuinpage="true"
:noaut="false"
:title="card.title"
/>
:butt_modif_new="tools.iAmAdminGroup(groupname)" :visuinpage="true" :noaut="false"
:title="card.title" />
</q-tab-panel>
<q-tab-panel name="new">
<CSkill
:groupname="mygrp.groupname"
:table="card.table"
<CSkill :groupname="mygrp.groupname" :table="card.table"
:filtercustom="filtrotables(card.table, tabevents)"
:butt_modif_new="tools.iAmAdminGroup(groupname)"
:visuinpage="true"
:noaut="false"
:title="card.title"
/>
:butt_modif_new="tools.iAmAdminGroup(groupname)" :visuinpage="true" :noaut="false"
:title="card.title" />
</q-tab-panel>
</q-tab-panels>
</div>
<div v-else>
<CSkill
:groupname="mygrp.groupname"
:table="card.table"
:filtercustom="filtrotables(card.table, '')"
:butt_modif_new="tools.iAmAdminGroup(groupname)"
:visuinpage="true"
:noaut="false"
:title="card.title"
/>
<CSkill :groupname="mygrp.groupname" :table="card.table"
:filtercustom="filtrotables(card.table, '')" :butt_modif_new="tools.iAmAdminGroup(groupname)"
:visuinpage="true" :noaut="false" :title="card.title" />
</div>
</div>
</div>
</div>
</div>
<div v-if="tabgrp === 'members' && tabmembers === 'all'">
<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="tools.extraparams(shared_consts.TABMYGROUPS)"
:visufind="
tools.iAmAdminGroup(groupname)
? costanti.REQ_REMOVE_USER_TO_GROUP
: costanti.FIND_PEOPLE
"
></CGridTableRec>
<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="tools.extraparams(shared_consts.TABMYGROUPS)" :visufind="tools.iAmAdminGroup(groupname)
? costanti.REQ_REMOVE_USER_TO_GROUP
: costanti.FIND_PEOPLE
"></CGridTableRec>
</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="animation"
/>
<div v-else class="fit column no-wrap justify-evenly items-center content-start">
<q-skeleton type="QAvatar" size="140px" height="140px" :animation="animation" />
<q-card flat bordered style="width: 250px">
<div class="text-h6">
<q-skeleton :animation="animation" />
@@ -744,12 +462,7 @@
</div>
</div>
<div v-if="showsendCoinTo">
<CSendCoins
:showprop="showsendCoinTo"
:to_group="mygrp"
circuitname=""
@close="showsendCoinTo = false"
>
<CSendCoins :showprop="showsendCoinTo" :to_group="mygrp" circuitname="" @close="showsendCoinTo = false">
</CSendCoins>
</div>
</template>
@@ -760,4 +473,3 @@
<style lang="scss" scoped>
@import "./mygroup.scss";
</style>