- Aggiornato grafica Pagina Gruppi

- Lista Utenti appartenenti al gruppo
- Lista richieste gruppo
- Nome e Cognome tolti
This commit is contained in:
paoloar77
2022-02-08 23:06:22 +01:00
parent 980ff4b48e
commit a2f7f7a8d2
97 changed files with 1141 additions and 441 deletions

View File

@@ -12,7 +12,7 @@ LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="http://192.168.0.200:3000" MONGODB_HOST="http://192.168.0.200:3000"
LOGO_REG='insiemesipuo-logo-full.png' LOGO_REG="freeplanet-logo-full.svg"
TEST_NAME="Paolo" TEST_NAME="Paolo"
TEST_SURNAME="Arena" TEST_SURNAME="Arena"
TEST_EMAIL="paolo@freeplanet.app" TEST_EMAIL="paolo@freeplanet.app"

View File

@@ -3,16 +3,16 @@ SERVICE_WORKER_FILE="service-worker.js"
APP_ID="1" APP_ID="1"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=freeplanet_serverside DIRECTORY_SERVER=freeplanet_serverside
SERVERDIR_WEBSITE=www.insiemesipuo.app SERVERDIR_WEBSITE=www.freeplanet.app
SERVERPW_WEBSITE=pwdadmin@1AOK SERVERPW_WEBSITE=pwdadmin@1AOK
APP_URL="https://www.insiemesipuo.app" APP_URL="https://www.freeplanet.app"
URL_FACEBOOK="" URL_FACEBOOK="https://www.facebook.com/freeplanetapp"
PROVA_PAOLO="" PROVA_PAOLO="PROVA ENV FUNZIONA!"
LANG_DEFAULT="it" LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://www.freeplanet.app:3000" MONGODB_HOST="https://www.freeplanet.app:3000"
LOGO_REG='insiemesipuo-logo-full.png' LOGO_REG='freeplanet-logo-full.svg'
TEST_NAME="" TEST_NAME=""
TEST_SURNAME="" TEST_SURNAME=""
TEST_EMAIL="" TEST_EMAIL=""
@@ -22,7 +22,7 @@ TEST_APORTADOR="------"
PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw" PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
IN_CONSTRUCTION="1" IN_CONSTRUCTION="1"
DEBUG="1" DEBUG="1"
TELEGRAM_SUPPORT="https://t.me/" TELEGRAM_SUPPORT="https://t.me/freeplanet_supporto"
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a" PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL="" TEST_CELL=""
ISTEST=0 ISTEST=0

View File

@@ -3,21 +3,21 @@ SERVICE_WORKER_FILE="service-worker.js"
APP_ID="1" APP_ID="1"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet
DIRECTORY_SERVER=test.freeplanet_serverside DIRECTORY_SERVER=test.freeplanet_serverside
SERVERDIR_WEBSITE="test.insiemesipuo.app" SERVERDIR_WEBSITE="test.freeplanet.app"
SERVERPW_WEBSITE="pwdadmin@1AOK" SERVERPW_WEBSITE="pwdadmin@1AOK"
APP_URL="https://test.insiemesipuo.app" APP_URL="https://test.freeplanet.app"
URL_FACEBOOK="" URL_FACEBOOK="https://www.facebook.com/freeplanetapp"
PROVA_PAOLO="" PROVA_PAOLO="PROVA ENV FUNZIONA!"
LANG_DEFAULT="it" LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://test.freeplanet.app:3001" MONGODB_HOST="https://test.freeplanet.app:3001"
LOGO_REG='insiemesipuo-logo-full.png' LOGO_REG="freeplanet-logo-full.svg"
TEST_NAME="Paolo" TEST_NAME="Paolo"
TEST_SURNAME="Arena" TEST_SURNAME="Arena"
TEST_EMAIL="paolo@freeplanet.app" TEST_EMAIL="paolo@freeplanet.app"
TEST_USERNAME="paoloar77" TEST_USERNAME="paoloar77"
TEST_PASSWORD="" TEST_PASSWORD="passpao1fr@1A"
TEST_APORTADOR="" TEST_APORTADOR=""
PUBLICKEY_PUSH="BNRBtL3iaLVGW-aQckwQBmh5uKKzcizOZsMjnzCtSuHkssEhbyioEN2E_CwItDLDShMO-OQ1uhK51ty6zG_gCT8" PUBLICKEY_PUSH="BNRBtL3iaLVGW-aQckwQBmh5uKKzcizOZsMjnzCtSuHkssEhbyioEN2E_CwItDLDShMO-OQ1uhK51ty6zG_gCT8"
IN_CONSTRUCTION="0" IN_CONSTRUCTION="0"

View File

@@ -20,6 +20,7 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true, BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false, ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true, ENABLE_REG_ISP: true,
SHOW_NAMESURNAME: false,
} }
// const SHOW_PROJINTHEMENU = false // const SHOW_PROJINTHEMENU = false

View File

@@ -12,7 +12,7 @@ LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="http://192.168.0.200:3000" MONGODB_HOST="http://192.168.0.200:3000"
LOGO_REG="freeplanet-logo-full.svg" LOGO_REG='insiemesipuo-logo-full.png'
TEST_NAME="Paolo" TEST_NAME="Paolo"
TEST_SURNAME="Arena" TEST_SURNAME="Arena"
TEST_EMAIL="paolo@freeplanet.app" TEST_EMAIL="paolo@freeplanet.app"

View File

@@ -12,7 +12,7 @@ LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://test.freeplanet.app:3001" MONGODB_HOST="https://test.freeplanet.app:3001"
LOGO_REG="freeplanet-logo-full.svg" LOGO_REG='insiemesipuo-logo-full.png'
TEST_NAME="Paolo" TEST_NAME="Paolo"
TEST_SURNAME="Arena" TEST_SURNAME="Arena"
TEST_EMAIL="paolo@freeplanet.app" TEST_EMAIL="paolo@freeplanet.app"

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +1,8 @@
const msg_website_enUs = { const msg_website_enUs = {
ws: { ws: {
sitename: 'Comunità Nuovo Mondo', sitename: 'InsiemeSuPuò',
siteshortname: 'CNM', siteshortname: 'InsiemeSuPuò',
botname: 'CNM BOT', botname: 'InsiemeSuPuò BOT',
}, },
pages: { pages: {
home: 'Home', home: 'Home',

View File

@@ -1,8 +1,8 @@
const msg_website_es = { const msg_website_es = {
ws: { ws: {
sitename: 'AYNI', sitename: 'InsiemeSuPuò',
siteshortname: 'Ayni', siteshortname: 'InsiemeSuPuò',
botname: 'AYNI BOT', botname: 'InsiemeSuPuò BOT',
}, },
pages: { pages: {
home: 'Home', home: 'Home',
@@ -19,6 +19,7 @@ const msg_website_es = {
status: 'Estadísticas', status: 'Estadísticas',
nextzoom: 'Conferencias', nextzoom: 'Conferencias',
requestresetpwd: 'Solicitud de restablecimiento de contraseña', requestresetpwd: 'Solicitud de restablecimiento de contraseña',
calendarioeventi: 'Calendario Eventos',
vreg: 'Verifica Reg', vreg: 'Verifica Reg',
dashboard: 'Tablero', dashboard: 'Tablero',
statoattuale: 'Estado Actual', statoattuale: 'Estado Actual',

View File

@@ -1,8 +1,8 @@
const msg_website_fr = { const msg_website_fr = {
ws: { ws: {
sitename: 'AYNI', sitename: 'InsiemeSuPuò',
siteshortname: 'Ayni', siteshortname: 'InsiemeSuPuò',
botname: 'AYNI BOT', botname: 'InsiemeSuPuò BOT',
}, },
homepage: { homepage: {
titlecontatti: 'CONTACTS', titlecontatti: 'CONTACTS',

View File

@@ -1,8 +1,8 @@
const msg_website_it = { const msg_website_it = {
ws: { ws: {
sitename: 'FreePlanet', sitename: 'InsiemeSuPuò',
siteshortname: 'FreePlanet', siteshortname: 'InsiemeSuPuò',
botname: 'il Bot di FreePlanet', botname: 'il Bot di InsiemeSuPuò',
}, },
products: { products: {
quantity: 'Quantità', quantity: 'Quantità',
@@ -128,8 +128,8 @@ const msg_website_it = {
color: 'Colore', color: 'Colore',
}, },
msg: { msg: {
myAppName: 'FreePlanet', myAppName: 'InsiemeSiPuò',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito e senza Pubblicità', myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...', underconstruction: 'App in costruzione...',
myDescriz: '', myDescriz: '',
sottoTitoloApp: 'Il primo Vero Social', sottoTitoloApp: 'Il primo Vero Social',

View File

@@ -1,8 +1,8 @@
const msg_website_pt = { const msg_website_pt = {
ws: { ws: {
sitename: 'CNM', sitename: 'InsiemeSuPuò',
siteshortname: 'CNM', siteshortname: 'InsiemeSuPuò',
botname: 'CNM BOT', botname: 'InsiemeSuPuò BOT',
}, },
pages: { pages: {
home: 'Home', home: 'Home',

View File

@@ -1,8 +1,8 @@
const msg_website_si = { const msg_website_si = {
ws: { ws: {
sitename: 'AYNI', sitename: 'InsiemeSuPuò',
siteshortname: 'Ayni', siteshortname: 'InsiemeSuPuò',
botname: 'AYNI BOT', botname: 'InsiemeSuPuò BOT',
}, },
pages: { pages: {
home: 'Domača stran', home: 'Domača stran',

View File

@@ -20,6 +20,7 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true, BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false, ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true, ENABLE_REG_ISP: true,
ENABLE_GROUPS: true,
} }
// const SHOW_PROJINTHEMENU = false // const SHOW_PROJINTHEMENU = false
@@ -422,6 +423,17 @@ const baseroutes: IListRoutes[] = [
inmenu: true, inmenu: true,
infooter: true, infooter: true,
}, },
{
active: functionality.ENABLE_GROUPS,
order: 132,
path: '/groups',
materialIcon: 'fas fa-users',
name: 'mypages.groups',
component: () => import('@/views/user/mygroups/mygroups.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{ {
active: true, active: true,
order: 135, order: 135,
@@ -433,6 +445,17 @@ const baseroutes: IListRoutes[] = [
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{
active: true,
order: 136,
path: '/grp/:groupname',
materialIcon: 'fas fa-user',
name: 'proj.group2',
component: () => import('@/views/user/mygroup/mygroup.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{ {
active: true, active: true,
order: 130, order: 130,

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -293,12 +293,22 @@ module.exports = configure((ctx) => ({
theme_color: '#027be3', theme_color: '#027be3',
icons: [ icons: [
{ {
src: 'images/android-chrome-192x192.png', src: 'images/isp-android-icon-96x96.png',
sizes: '384x384', sizes: '96x96',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/android-chrome-512x512.png', src: 'images/isp-android-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/isp-android-icon-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'images/isp-android-icon-512x512.png',
sizes: '512x512', sizes: '512x512',
type: 'image/png', type: 'image/png',
}, },
@@ -336,7 +346,7 @@ module.exports = configure((ctx) => ({
builder: { builder: {
// https://www.electron.build/configuration/configuration // https://www.electron.build/configuration/configuration
appId: 'firstproj', appId: 'InsiemeSiPuo',
}, },
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain

View File

@@ -27,6 +27,10 @@ const msg_website_es = {
nave: 'Nave', nave: 'Nave',
testimonial: 'Opiniones', testimonial: 'Opiniones',
Test: 'Test', Test: 'Test',
chisiamo: 'Chi Siamo',
linkamici: 'Link Amici',
dovesiamo: 'Dove Siamo',
calendarioeventi: 'Calendario Eventi',
Category: 'Categorie', Category: 'Categorie',
Admin: 'Admin', Admin: 'Admin',
Test1: 'Test1', Test1: 'Test1',

View File

@@ -20,6 +20,7 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true, BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false, ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true, ENABLE_REG_ISP: true,
ENABLE_GROUPS: false,
} }
// const SHOW_PROJINTHEMENU = false // const SHOW_PROJINTHEMENU = false
@@ -422,6 +423,17 @@ const baseroutes: IListRoutes[] = [
inmenu: true, inmenu: true,
infooter: true, infooter: true,
}, },
{
active: functionality.ENABLE_GROUPS,
order: 132,
path: '/groups',
materialIcon: 'fas fa-users',
name: 'mypages.groups',
component: () => import('@/views/user/mygroups/mygroups.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{ {
active: true, active: true,
order: 135, order: 135,
@@ -433,6 +445,17 @@ const baseroutes: IListRoutes[] = [
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{
active: true,
order: 136,
path: '/grp/:groupname',
materialIcon: 'fas fa-user',
name: 'proj.group2',
component: () => import('@/views/user/mygroup/mygroup.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{ {
active: true, active: true,
order: 130, order: 130,
@@ -559,7 +582,7 @@ const baseroutes: IListRoutes[] = [
isseparator: true, isseparator: true,
inmenu: true, inmenu: true,
}, },
/*{ {
active: true, active: true,
order: 80, order: 80,
path: '/calendario-eventi', path: '/calendario-eventi',
@@ -569,7 +592,7 @@ const baseroutes: IListRoutes[] = [
extraclass: 'isCalendar', extraclass: 'isCalendar',
inmenu: true, inmenu: true,
infooter: true infooter: true
},*/ },
{ {
active: true, active: true,
order: 1000, order: 1000,

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@@ -294,12 +294,22 @@ module.exports = configure((ctx) => ({
theme_color: '#027be3', theme_color: '#027be3',
icons: [ icons: [
{ {
src: 'images/android-chrome-192x192.png', src: 'images/pdnm-android-icon-96x96.png',
sizes: '384x384', sizes: '96x96',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/android-chrome-512x512.png', src: 'images/pdnm-android-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/pdnm-android-icon-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'images/pdnm-android-icon-512x512.png',
sizes: '512x512', sizes: '512x512',
type: 'image/png', type: 'image/png',
}, },

View File

@@ -18,5 +18,6 @@ else
cp -R _ALL_SITES/$site/.env.development . cp -R _ALL_SITES/$site/.env.development .
cp -R _ALL_SITES/$site/.env.production . cp -R _ALL_SITES/$site/.env.production .
cp -R _ALL_SITES/$site/.env.test . cp -R _ALL_SITES/$site/.env.test .
cp -R _ALL_SITES/$site/images/ ./public/images/
fi fi

View File

@@ -1,8 +1,8 @@
{ {
"name": "insiemesipuo", "name": "freeplanet",
"version": "0.1.0", "version": "0.0.7",
"description": "Insieme Si Puo", "description": "FreePlanet",
"productName": "Insieme Si Puo", "productName": "FreePlanet",
"author": "Paolo Arena", "author": "Paolo Arena",
"private": true, "private": true,
"keywords": [ "keywords": [

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
public/images/pdnm-logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -284,31 +284,21 @@ module.exports = configure((ctx) => ({
}, },
manifest: { manifest: {
name: 'InsiemeSiPuo', name: 'FreePlanet',
short_name: 'InsiemeSiPuo', short_name: 'FreePlanet',
description: 'Insieme Si Può', description: 'New Free Social',
display: 'standalone', display: 'standalone',
orientation: 'portrait', orientation: 'portrait',
background_color: '#ffffff', background_color: '#ffffff',
theme_color: '#027be3', theme_color: '#027be3',
icons: [ icons: [
{ {
src: 'images/isp-android-icon-96x96.png', src: 'images/android-chrome-192x192.png',
sizes: '96x96', sizes: '384x384',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/isp-android-icon-144x144.png', src: 'images/android-chrome-512x512.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/isp-android-icon-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'images/isp-android-icon-512x512.png',
sizes: '512x512', sizes: '512x512',
type: 'image/png', type: 'image/png',
}, },
@@ -346,7 +336,7 @@ module.exports = configure((ctx) => ({
builder: { builder: {
// https://www.electron.build/configuration/configuration // https://www.electron.build/configuration/configuration
appId: 'InsiemeSiPuo', appId: 'firstproj',
}, },
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain

View File

@@ -16,6 +16,8 @@ export const shared_consts = {
}, },
}, },
QUERYTYPE_MYGROUP: 1,
ALL_SAW_AND_ACCEPTED: 3, ALL_SAW_AND_ACCEPTED: 3,
FILTER_EXTRALIST_NOT_REGISTERED: 1, FILTER_EXTRALIST_NOT_REGISTERED: 1,

View File

@@ -38,7 +38,7 @@ export default defineComponent({
myval = searchList.value.find((rec) => (rec.table === 'sectors')) myval = searchList.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('idSector=', ris)
return ris return ris
} else { } else {
return 0 return 0

View File

@@ -208,6 +208,7 @@ export default defineComponent({
const newRecordBool = ref(false) const newRecordBool = ref(false)
const editRecordBool = ref(false) const editRecordBool = ref(false)
const newRecord: any = ref({}) const newRecord: any = ref({})
const recSaved: any = ref({})
const recModif: any = ref({}) const recModif: any = ref({})
const mytable = ref('') const mytable = ref('')
@@ -945,6 +946,7 @@ export default defineComponent({
console.log('Edit', item) console.log('Edit', item)
selItem(item, col) selItem(item, col)
recModif.value = item recModif.value = item
recSaved.value = {...item}
editRecordBool.value = true editRecordBool.value = true
} else { } else {
@@ -1243,6 +1245,16 @@ export default defineComponent({
}) })
} }
function cancelrecModif() {
recModif.value = {...recSaved.value}
if (recModif.value._id) {
const indrec = serverData.value.findIndex((rec: any) => rec._id === recModif.value._id)
if (indrec >= 0)
serverData.value[indrec] = recModif.value
editRecordBool.value = false
}
}
async function saverecModif() { async function saverecModif() {
console.log('saverecModif') console.log('saverecModif')
const mydata = { const mydata = {
@@ -1259,7 +1271,7 @@ export default defineComponent({
// console.log('ris', ris) // console.log('ris', ris)
if (ris) { if (ris) {
editRecordBool.value = false editRecordBool.value = false
const indrec = serverData.value.findIndex((rec: IMySkill) => rec._id === ris._id) const indrec = serverData.value.findIndex((rec: any) => rec._id === ris._id)
console.log('indrec', indrec, serverData.value[indrec]) console.log('indrec', indrec, serverData.value[indrec])
mycolumns.value.forEach((col: IColGridTable) => { mycolumns.value.forEach((col: IColGridTable) => {
if (!col.foredit) { if (!col.foredit) {
@@ -1347,6 +1359,7 @@ export default defineComponent({
getusernamesel, getusernamesel,
saveNewRecord, saveNewRecord,
saverecModif, saverecModif,
cancelrecModif,
hidewindow, hidewindow,
isfinishLoading, isfinishLoading,
getlabelAddRow, getlabelAddRow,
@@ -1372,6 +1385,7 @@ export default defineComponent({
editRecordBool, editRecordBool,
newRecord, newRecord,
recModif, recModif,
recSaved,
lists, lists,
refresh, refresh,
spinner_visible, spinner_visible,

View File

@@ -120,6 +120,7 @@
:optval="fieldsTable.getKeyByTable(item.table)" :optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)" :optlab="fieldsTable.getLabelByTable(item.table)"
:options="valoriopt(item, false)" :options="valoriopt(item, false)"
:filter="item.filter"
:useinput="item.useinput && item.type !== costanti.FieldType.select_by_server"> :useinput="item.useinput && item.type !== costanti.FieldType.select_by_server">
</CMySelect> </CMySelect>
@@ -144,6 +145,7 @@
:icon_alternative="item.icon" :icon_alternative="item.icon"
:optval="fieldsTable.getKeyByTable(item.table)" :optval="fieldsTable.getKeyByTable(item.table)"
:optlab="fieldsTable.getLabelByTable(item.table)" :optlab="fieldsTable.getLabelByTable(item.table)"
:filter="item.filter"
:options="valoriopt(item, false)" :options="valoriopt(item, false)"
:useinput="true"> :useinput="true">
</CMySelect> </CMySelect>
@@ -164,6 +166,7 @@
stack-label stack-label
:useinput="item.useinput" :useinput="item.useinput"
:options="valoriopt(item, item.addall)" :options="valoriopt(item, item.addall)"
:filter="item.filter"
class="combowidth" class="combowidth"
:option-value="fieldsTable.getKeyByTable(item.table)" :option-value="fieldsTable.getKeyByTable(item.table)"
> >
@@ -513,7 +516,7 @@
</q-card-section> </q-card-section>
<q-card-actions align="center"> <q-card-actions align="center">
<q-btn flat :label="$t('dialog.ok')" color="primary" @click="saverecModif"></q-btn> <q-btn flat :label="$t('dialog.ok')" color="primary" @click="saverecModif"></q-btn>
<q-btn flat :label="$t('dialog.cancel')" color="primary" v-close-popup></q-btn> <q-btn flat :label="$t('dialog.cancel')" color="primary" @click="cancelrecModif"></q-btn>
</q-card-actions> </q-card-actions>
</q-card> </q-card>
</q-dialog> </q-dialog>

View File

@@ -21,7 +21,7 @@ export default defineComponent({
required: false, required: false,
}, },
optlab: { optlab: {
type: String, type: [String, Function],
required: true, required: true,
}, },
optval: { optval: {
@@ -111,7 +111,7 @@ export default defineComponent({
if (mydata.label) if (mydata.label)
mydata.label = mydata.label[0] mydata.label = mydata.label[0]
} else { } else {
mydata.label = rec[props.optlab] mydata.label = tools.getValueByFunzOrVal(rec, props.optlab)
} }
// console.log('mydata.label', mydata.label) // console.log('mydata.label', mydata.label)
@@ -141,7 +141,7 @@ export default defineComponent({
if (mydata.label) if (mydata.label)
mydata.label = mydata.label[0] mydata.label = mydata.label[0]
} else { } else {
mydata.label = rec[props.optlab] mydata.label = tools.getValueByFunzOrVal(rec, props.optlab)
} }
if (props.opticon) if (props.opticon)
@@ -155,7 +155,7 @@ export default defineComponent({
} else { } else {
if (tools.isBitActive(myval.value, rec[props.optval])) { if (tools.isBitActive(myval.value, rec[props.optval])) {
const mydata = { const mydata = {
label: t(rec[props.optlab]), label: t(tools.getValueByFunzOrVal(rec, props.optlab)),
value: rec[props.optval], value: rec[props.optval],
valbool: tools.isBitActive(myval.value, rec[props.optval]), valbool: tools.isBitActive(myval.value, rec[props.optval]),
icon: '', icon: '',

View File

@@ -37,7 +37,9 @@ export default defineComponent({
setup(props, { emit }) { setup(props, { emit }) {
const $q = useQuasar() const $q = useQuasar()
const editor = ref(null) const editorRef = ref(<any>null)
const editor = ref('')
//const myvalue = toRef(props, 'value') //const myvalue = toRef(props, 'value')
const myvalue = ref('') const myvalue = ref('')
const mycolor = ref('') const mycolor = ref('')
@@ -58,7 +60,8 @@ export default defineComponent({
const toolbarcomp = ref([ const toolbarcomp = ref([
['left', 'center', 'right', 'justify'], ['left', 'center', 'right', 'justify'],
['bold', 'italic', 'underline', 'strike'], ['bold', 'italic', 'underline', 'strike'],
[ ['token', 'hr', 'link', 'custom_btn'],
['print', 'fullscreen'], [
{ {
label: $q.lang.editor.formatting, label: $q.lang.editor.formatting,
icon: $q.iconSet.editor.formatting, icon: $q.iconSet.editor.formatting,
@@ -112,7 +115,7 @@ export default defineComponent({
]) ])
function changeval(newval: any) { function changeval(newval: any) {
console.log('myEditor: changeval', newval) // console.log('myEditor: changeval', newval)
emit('update:value', newval) emit('update:value', newval)
} }
@@ -171,6 +174,29 @@ export default defineComponent({
myvalue.value = props.value myvalue.value = props.value
} }
function onPaste (evt: any) {
// Let inputs do their thing, so we don't break pasting of links.
if (evt.target.nodeName === 'INPUT') return
let text, onPasteStripFormattingIEPaste
evt.preventDefault()
evt.stopPropagation()
if (evt.originalEvent && evt.originalEvent.clipboardData.getData) {
text = evt.originalEvent.clipboardData.getData('text/plain')
editorRef.value.runCmd('insertText', text)
}
else if (evt.clipboardData && evt.clipboardData.getData) {
text = evt.clipboardData.getData('text/plain')
editorRef.value.runCmd('insertText', text)
}
/*else if (ClipboardEvent.clipboardData && ClipboardEvent.clipboardData.getData) {
if (!onPasteStripFormattingIEPaste) {
onPasteStripFormattingIEPaste = true
editorRef.value.runCmd('ms-pasteTextOnly', text)
}
onPasteStripFormattingIEPaste = false
}*/
}
onMounted(mounted) onMounted(mounted)
return { return {
@@ -185,6 +211,8 @@ export default defineComponent({
setcolor, setcolor,
pasteCapture, pasteCapture,
tools, tools,
onPaste,
editorRef,
} }
} }
}) })

View File

@@ -25,7 +25,7 @@
</q-btn> </q-btn>
<q-editor <q-editor
ref="editor" ref="editorRef"
content-class="wrap_anywhere" content-class="wrap_anywhere"
toolbar-text-color="white" toolbar-text-color="white"
toolbar-toggle-color="yellow-8" toolbar-toggle-color="yellow-8"
@@ -33,7 +33,7 @@
:toolbar="toolbarcomp" :toolbar="toolbarcomp"
:fonts="myfonts" :fonts="myfonts"
@update:model-value="changeval" @update:model-value="changeval"
@paste="evt => pasteCapture(evt)" @paste="onPaste"
@keyup.enter.stop @keyup.enter.stop
v-model="myvalue"> v-model="myvalue">
</q-editor> </q-editor>

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="text-center"> <div class="text-center">
<div v-if="visuElem()" class="row items-center justify-center q-gutter-md q-ma-xs"> <div v-if="visuElem()" class="row items-center justify-center q-ma-xs">
<div class="q-ma-xs"> <div class="q-ma-xs">
<q-field rounded outlined bg-color="blue-1" dense style="min-width:110px;"> <q-field rounded outlined bg-color="blue-1" dense style="min-width:110px;">
@@ -36,6 +36,8 @@
:myimg="myimg" :myimg="myimg"
:canModify="canModify" :canModify="canModify"
:canEdit="canEdit" :canEdit="canEdit"
:id="id"
:idmain="idmain"
:visulabel="true" :visulabel="true"
:mycol="col" :mycol="col"
:tablesel="tablesel" :tablesel="tablesel"
@@ -47,6 +49,7 @@
</CMyPopupEdit> </CMyPopupEdit>
</div> </div>
<slot></slot>
</div> </div>
</div> </div>
</template> </template>

View File

@@ -204,72 +204,12 @@ export default defineComponent({
}) })
} }
function removeFromMyFriends(usernameDest: string) {
$q.dialog({
message: t('db.domanda_removefriend', { username: usernameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setFriendsCmd($q, t, username.value, usernameDest, shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, null).then((res) => { function setCmd($q: any, cmd: number, usernameDest: string, value: any, groupname: string) {
if (res) { tools.setCmd($q, cmd, usernameDest, value, username.value)
userStore.my.profile.friends = userStore.my.profile.friends.filter((rec: IFriends) => rec.username !== usernameDest)
tools.showPositiveNotif($q, t('db.removedfriend'))
}
})
})
}
function refuseReqFriends(usernameDest: string) {
$q.dialog({
message: t('db.domanda_revoke_friend', { username: usernameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setFriendsCmd($q, t, username.value, usernameDest, shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, null).then((res) => {
if (res) {
userStore.my.profile.req_friends = userStore.my.profile.req_friends.filter((user: IFriends) => user.username !== usernameDest)
tools.showPositiveNotif($q, t('db.removedfriend'))
}
})
})
}
function blockUser(usernameDest: string) {
$q.dialog({
message: t('db.domanda_blockuser', { username: usernameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setFriendsCmd($q, t, username.value, usernameDest, shared_consts.FRIENDSCMD.BLOCK_USER, null).then((res) => {
if (res) {
userStore.my.profile.friends = userStore.my.profile.friends.filter((rec: IFriends) => rec.username !== usernameDest)
tools.showPositiveNotif($q, t('db.blockedfriend'))
}
})
})
}
function setCmd(cmd: number, usernameDest: string, value: any = '') {
if (cmd === shared_consts.FRIENDSCMD.SETTRUST) { if (cmd === shared_consts.FRIENDSCMD.SETTRUST) {
setRequestTrust(usernameDest, value) setRequestTrust(usernameDest, value)
} else if (cmd === shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS) {
removeFromMyFriends(usernameDest)
} else if (cmd === shared_consts.FRIENDSCMD.BLOCK_USER) {
blockUser(usernameDest)
} else if (cmd === shared_consts.FRIENDSCMD.SETFRIEND) {
tools.addToMyFriends($q, username.value, usernameDest)
} else if (cmd === shared_consts.FRIENDSCMD.REQFRIEND) {
tools.setRequestFriendship($q, username.value, usernameDest, value)
} else if (cmd === shared_consts.FRIENDSCMD.REFUSE_REQ_FRIEND) {
refuseReqFriends(usernameDest)
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND) {
tools.cancelReqFriends($q, username.value, usernameDest)
} }
} }

View File

@@ -81,6 +81,7 @@ export default defineComponent({
setCmd, setCmd,
shared_consts, shared_consts,
userStore, userStore,
$q,
} }
}, },
}) })

View File

@@ -19,12 +19,12 @@
<q-menu> <q-menu>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable icon="fas fa-user-minus" v-close-popup <q-item clickable icon="fas fa-user-minus" v-close-popup
@click="setCmd(shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP, grp.groupname)"> @click="tools.setCmd($q, shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.remove_from_mygroups') }}</q-item-section> <q-item-section>{{ $t('groups.remove_from_mygroups') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable icon="fas fa-ban" v-close-popup @click="setCmd(shared_consts.GROUPSCMD.BLOCK_GROUP, grp.groupname)"> <q-item 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-section>{{ $t('groups.block_group') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -38,7 +38,7 @@
<q-menu> <q-menu>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable icon="fas fa-user-minus" v-close-popup <q-item clickable icon="fas fa-user-minus" v-close-popup
@click="setCmd(shared_consts.GROUPSCMD.REQGROUP, grp.groupname, false)"> @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), false, grp.groupname)">
<q-item-section>{{ $t('groups.reject_ask_group') }}</q-item-section> <q-item-section>{{ $t('groups.reject_ask_group') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -52,7 +52,7 @@
<q-menu> <q-menu>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable icon="fas fa-user-minus" v-close-popup <q-item clickable icon="fas fa-user-minus" v-close-popup
@click="setCmd(shared_consts.GROUPSCMD.CANCEL_REQ_GROUP, grp.groupname)"> @click="tools.setCmd($q, shared_consts.GROUPSCMD.CANCEL_REQ_GROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section> <q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -65,17 +65,17 @@
<q-btn rounded :icon="userStore.IsMyGroupByGroupname(grp.groupname) ? `fas fa-ellipsis-h` : `fas fa-user`"> <q-btn rounded :icon="userStore.IsMyGroupByGroupname(grp.groupname) ? `fas fa-ellipsis-h` : `fas fa-user`">
<q-menu> <q-menu>
<q-list v-if="(!userStore.IsMyGroupByGroupname(grp.groupname) && !userStore.IsAskedGroupByGroupname(grp.groupname))" style="min-width: 200px"> <q-list v-if="(!userStore.IsMyGroupByGroupname(grp.groupname) && !userStore.IsAskedGroupByGroupname(grp.groupname))" style="min-width: 200px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.GROUPSCMD.REQGROUP, grp.groupname, true)"> <q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), true, grp.groupname)">
<q-item-section>{{ $t('groups.ask_group') }}</q-item-section> <q-item-section>{{ $t('groups.ask_group') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<q-list v-else-if="(!userStore.IsMyGroupByGroupname(grp.groupname) && userStore.IsAskedGroupByGroupname(grp.groupname))" style="min-width: 200px"> <q-list v-else-if="(!userStore.IsMyGroupByGroupname(grp.groupname) && userStore.IsAskedGroupByGroupname(grp.groupname))" style="min-width: 200px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.GROUPSCMD.REQGROUP, grp.groupname, false)"> <q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), false, grp.groupname)">
<q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section> <q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<q-list v-else-if="userStore.IsMyGroupByGroupname(grp.groupname)" style="min-width: 200px"> <q-list v-else-if="userStore.IsMyGroupByGroupname(grp.groupname)" style="min-width: 200px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUPS, grp.groupname)"> <q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUPS, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.remove_from_mygroups') }}</q-item-section> <q-item-section>{{ $t('groups.remove_from_mygroups') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>

View File

@@ -103,7 +103,8 @@ export default defineComponent({
userStore.loadGroups(username.value).then((ris) => { userStore.loadGroups(username.value).then((ris) => {
// console.log('ris', ris) // console.log('ris', ris)
if (ris) { if (ris) {
userStore.my.profile.mygroups = ris.listUsersGroup ? ris.listUsersGroup : [] userStore.my.profile.mygroups = ris.mygroups ? ris.mygroups : []
userStore.my.profile.list_usersgroup = ris.listUsersGroup ? ris.listUsersGroup : []
userStore.groups = ris.listgroups ? ris.listgroups : [] userStore.groups = ris.listgroups ? ris.listgroups : []
userStore.my.profile.asked_groups = ris.listSentRequestGroups ? ris.listSentRequestGroups : [] userStore.my.profile.asked_groups = ris.listSentRequestGroups ? ris.listSentRequestGroups : []
filtroutente.value = [{ userId: userStore.my._id }] filtroutente.value = [{ userId: userStore.my._id }]
@@ -113,36 +114,6 @@ export default defineComponent({
} }
} }
function blockGroup(usernameDest: string) {
$q.dialog({
message: t('db.domanda_blockgroup', { groupname: usernameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setGroupsCmd($q, t, username.value, usernameDest, shared_consts.GROUPSCMD.BLOCK_GROUP, null).then((res) => {
if (res) {
userStore.my.profile.mygroups = userStore.my.profile.mygroups.filter((rec: IMyGroup) => rec.groupname !== usernameDest)
tools.showPositiveNotif($q, t('db.blockedgroup'))
}
})
})
}
function setCmd(cmd: number, groupnameDest: string, value: any = '') {
if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP) {
tools.removeFromMyGroups($q, username.value, groupnameDest)
} else if (cmd === shared_consts.GROUPSCMD.BLOCK_GROUP) {
blockGroup(groupnameDest)
} else if (cmd === shared_consts.GROUPSCMD.SETGROUP) {
tools.addToMyGroups($q, username.value, groupnameDest)
} else if (cmd === shared_consts.GROUPSCMD.REQGROUP) {
tools.setRequestGroup($q, username.value, groupnameDest, value)
} else if (cmd === shared_consts.GROUPSCMD.CANCEL_REQ_GROUP) {
tools.cancelReqGroups($q, username.value, groupnameDest)
}
}
function mounted() { function mounted() {
username.value = userStore.my.username username.value = userStore.my.username
loadGroups() loadGroups()
@@ -161,7 +132,6 @@ export default defineComponent({
shared_consts, shared_consts,
filtroutente, filtroutente,
listgroupsfiltered, listgroupsfiltered,
setCmd,
updateValue, updateValue,
myoptions, myoptions,
} }

View File

@@ -23,7 +23,6 @@
<span v-for="(grp, index) in listgroupsfiltered" :key="index" class="q-my-sm" clickable> <span v-for="(grp, index) in listgroupsfiltered" :key="index" class="q-my-sm" clickable>
<CMyGroup <CMyGroup
:mygrp="grp" :mygrp="grp"
@setCmd="setCmd"
:visu="modelValue"> :visu="modelValue">
</CMyGroup> </CMyGroup>
</span> </span>
@@ -35,7 +34,6 @@
<span class="q-my-sm" clickable> <span class="q-my-sm" clickable>
<CMyGroup <CMyGroup
:mygrp="mygrp" :mygrp="mygrp"
@setCmd="setCmd"
:visu="visu"> :visu="visu">
</CMyGroup> </CMyGroup>
</span> </span>

View File

@@ -231,8 +231,6 @@ export default defineComponent({
} }
} }
console.log('col.value', col.value)
// console.log('CMyFieldDb crea', myvalue) // console.log('CMyFieldDb crea', myvalue)
} }
@@ -251,10 +249,13 @@ export default defineComponent({
function changeval(newval: any) { function changeval(newval: any) {
console.log('changeval update:row', newval) console.log('changeval update:row', newval)
if (!props.isrec) {
emit('update:row', props.row) emit('update:row', props.row)
}
if (props.isInModif) if (props.isInModif)
OpenEdit() OpenEdit()
} }
function getrealval(newval: any) { function getrealval(newval: any) {

View File

@@ -126,6 +126,10 @@ export default defineComponent({
type: String, type: String,
required: false, required: false,
default: '', default: '',
},
filter: {
type: Function,
required: false,
} }
}, },
components: {}, components: {},
@@ -194,7 +198,7 @@ export default defineComponent({
// console.log('----------- arrtempOpt.value', arrtempOpt.value) // console.log('----------- arrtempOpt.value', arrtempOpt.value)
localStorage.setItem(props.tablesel + num + props.optval, id) localStorage.setItem(props.tablesel + num + props.optval, id)
localStorage.setItem(props.tablesel + num + props.optlab, rec[`${props.optlab}`]) localStorage.setItem(props.tablesel + num + props.optlab, tools.getValueByFunzOrVal(rec, props.optlab))
num += 1 num += 1
localStorage.setItem(props.tablesel + 'NUM', num.toString()) localStorage.setItem(props.tablesel + 'NUM', num.toString())
@@ -320,7 +324,7 @@ export default defineComponent({
} }
if (props.tablesel === 'friendsandme') { if (props.tablesel === 'friendsandme') {
debugger; // debugger;
} }
if (props.multiple) { if (props.multiple) {
@@ -349,7 +353,7 @@ export default defineComponent({
if (props.funcgetvaluebyid) if (props.funcgetvaluebyid)
myvalue.value = props.funcgetvaluebyid(rec[`${props.optval}`]) myvalue.value = props.funcgetvaluebyid(rec[`${props.optval}`])
else else
myvalue.value = rec[`${props.optlab}`] myvalue.value = tools.getValueByFunzOrVal(rec, props.optlab)
} else { } else {
// if (!props.useinput) { // if (!props.useinput) {
if (props.value) { if (props.value) {
@@ -372,13 +376,16 @@ export default defineComponent({
function updateArrOptions() { function updateArrOptions() {
let myarr: any = [] let myarr: any = []
// console.log(props.col.jointable, props.filter)
if (props.col.jointable) { if (props.col.jointable) {
optionsreal.value = globalStore.getTableJoinByName(props.col.jointable, props.col.addall, props.col.filter) optionsreal.value = globalStore.getTableJoinByName(props.col.jointable, props.col.addall, props.filter)
// console.log('optionsreal.value', optionsreal.value) // console.log('optionsreal.value', optionsreal.value)
} else { } else {
optionsreal.value = props.options optionsreal.value = props.options
} }
// console.log('optionsreal.value', optionsreal.value)
myarr = optionsreal.value myarr = optionsreal.value
if (!fieldsTable.tableRemotePickup.includes(props.tablesel)) { if (!fieldsTable.tableRemotePickup.includes(props.tablesel)) {
@@ -386,7 +393,7 @@ export default defineComponent({
// console.log('needle', needle, 'props.multiple', props.multiple) // console.log('needle', needle, 'props.multiple', props.multiple)
if (props.filter_table) { if (props.filter_table) {
console.log(' FILTERTABLE', props.filter_field, myarr) // console.log(' FILTERTABLE', props.filter_field, myarr)
if (props.multiple) { if (props.multiple) {
myarr = myarr.filter((rec: any) => rec[props.filter_field] === needle) myarr = myarr.filter((rec: any) => rec[props.filter_field] === needle)
} else { } else {
@@ -578,6 +585,7 @@ export default defineComponent({
abortFilterFn, abortFilterFn,
newvaluefuncfirst, newvaluefuncfirst,
getIcon, getIcon,
tools,
} }
} }
}) })

View File

@@ -105,7 +105,7 @@
<template v-slot:option="scope"> <template v-slot:option="scope">
<q-item v-bind="scope.itemProps"> <q-item v-bind="scope.itemProps">
<q-item-section> <q-item-section>
<q-item-label> {{ scope.opt[optlab] }}</q-item-label> <q-item-label> {{ tools.getValueByFunzOrVal(scope.opt,optlab) }}</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
</template> </template>
@@ -139,7 +139,7 @@
</template> </template>
<template <template
v-slot:selected-item="scope"> v-slot:selected-item="scope">
<div v-if="scope.opt[optlab]"> <div v-if="tools.getValueByFunzOrVal(scope.opt,optlab)">
<q-chip <q-chip
removable removable
dense dense
@@ -149,7 +149,7 @@
class="q-my-none q-ml-xs q-mr-none" class="q-my-none q-ml-xs q-mr-none"
> >
<q-avatar color="primary" text-color="white" :icon="scope.opt.icon ? scope.opt.icon : ''" size="12px"/> <q-avatar color="primary" text-color="white" :icon="scope.opt.icon ? scope.opt.icon : ''" size="12px"/>
{{ scope.opt[optlab] }} {{ tools.getValueByFunzOrVal(scope.opt, optlab) }}
</q-chip> </q-chip>
</div> </div>
</template> </template>
@@ -158,7 +158,7 @@
v-slot:option="{ itemProps, opt, selected, toggleOption }"> v-slot:option="{ itemProps, opt, selected, toggleOption }">
<q-item v-bind="itemProps"> <q-item v-bind="itemProps">
<q-item-section> <q-item-section>
<q-item-label>{{ opt[optlab] }}</q-item-label> <q-item-label>{{ tools.getValueByFunzOrVal(opt,optlab) }}</q-item-label>
<q-item-label v-if="'hint' in opt" class="hint">{{ opt['hint'] }}</q-item-label> <q-item-label v-if="'hint' in opt" class="hint">{{ opt['hint'] }}</q-item-label>
</q-item-section> </q-item-section>
<q-item-section side> <q-item-section side>
@@ -200,7 +200,7 @@
<q-icon :name="scope.opt.icon ? scope.opt.icon : ''"/> <q-icon :name="scope.opt.icon ? scope.opt.icon : ''"/>
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label>{{ scope.opt[optlab] }}</q-item-label> <q-item-label>{{ tools.getValueByFunzOrVal(scope.opt,optlab) }}</q-item-label>
<q-item-label v-if="'hint' in scope.opt" class="hint">{{ scope.opt['hint'] }}</q-item-label> <q-item-label v-if="'hint' in scope.opt" class="hint">{{ scope.opt['hint'] }}</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>

View File

@@ -73,8 +73,8 @@ export default defineComponent({
$router.push(path) $router.push(path)
} }
function setCmd(cmd: number, myusername: string, value: any = '') { function setCmd($q: any, cmd: number, myusername: string, value: any, groupname: string) {
emit('setCmd', cmd, myusername, value) emit('setCmd', $q, cmd, myusername, value, groupname)
} }
onMounted(mounted) onMounted(mounted)

View File

@@ -8,7 +8,7 @@
</q-item-section> </q-item-section>
<q-item-section @click="naviga(`/my/` + contact.username)"> <q-item-section @click="naviga(`/my/` + contact.username)">
<q-item-label><strong>{{ contact.name }} {{ contact.surname }}</strong> ({{ contact.username }}) <q-item-label><strong>{{ contact.username }}</strong> <span v-if="contact.name">({{ contact.name }} {{ contact.surname }})</span>
</q-item-label> </q-item-label>
<q-item-label v-if="contact.profile" caption lines="1"><em>{{ contact.profile.qualifica }}</em></q-item-label> <q-item-label v-if="contact.profile" caption lines="1"><em>{{ contact.profile.qualifica }}</em></q-item-label>
</q-item-section> </q-item-section>
@@ -19,12 +19,12 @@
<q-menu> <q-menu>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable icon="fas fa-user-minus" v-close-popup <q-item clickable icon="fas fa-user-minus" v-close-popup
@click="setCmd(shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, contact.username)"> @click="setCmd($q, shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, contact.username, '', '')">
<q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section> <q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable icon="fas fa-ban" v-close-popup @click="setCmd(shared_consts.FRIENDSCMD.BLOCK_USER, contact.username)"> <q-item clickable icon="fas fa-ban" v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.BLOCK_USER, contact.username, '', '')">
<q-item-section>{{ $t('friends.block_user') }}</q-item-section> <q-item-section>{{ $t('friends.block_user') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -32,18 +32,18 @@
</q-btn> </q-btn>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.REQ_FRIENDS"> <q-item-section side v-else-if="visu === costanti.REQ_FRIENDS">
<q-item-label> <q-item-label>
<q-btn rounded icon="fas fa-ellipsis-h"> <q-btn rounded icon="fas fa-ellipsis-h">
<q-menu> <q-menu>
<q-list v-if="true" style="min-width: 150px"> <q-list v-if="true" style="min-width: 150px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.FRIENDSCMD.SETFRIEND, contact.username)"> <q-item clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.SETFRIEND, contact.username, '', '')">
<q-item-section>{{ $t('friends.accept_friend') }}</q-item-section> <q-item-section>{{ $t('friends.accept_friend') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable icon="fas fa-user-minus" v-close-popup <q-item clickable icon="fas fa-user-minus" v-close-popup
@click="setCmd(shared_consts.FRIENDSCMD.REQFRIEND, contact.username, false)"> @click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, contact.username, false, '')">
<q-item-section>{{ $t('friends.reject_ask_friend') }}</q-item-section> <q-item-section>{{ $t('friends.reject_ask_friend') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -51,7 +51,7 @@
</q-btn> </q-btn>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.REQ_ADD_USER_TO_GROUP"> <q-item-section side v-else-if="visu === costanti.REQ_ADD_USER_TO_GROUP">
<q-item-label> <q-item-label>
<q-btn rounded icon="fas fa-ellipsis-h"> <q-btn rounded icon="fas fa-ellipsis-h">
<q-menu> <q-menu>
@@ -79,7 +79,7 @@
</q-btn> </q-btn>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.REQ_REMOVE_USER_TO_GROUP"> <q-item-section side v-else-if="visu === costanti.REQ_REMOVE_USER_TO_GROUP">
<q-item-label> <q-item-label>
<q-btn rounded icon="fas fa-ellipsis-h"> <q-btn rounded icon="fas fa-ellipsis-h">
<q-menu> <q-menu>
@@ -95,13 +95,13 @@
</q-btn> </q-btn>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.ASK_SENT_FRIENDS"> <q-item-section side v-else-if="visu === costanti.ASK_SENT_FRIENDS">
<q-item-label> <q-item-label>
<q-btn rounded icon="fas fa-ellipsis-h"> <q-btn rounded icon="fas fa-ellipsis-h">
<q-menu> <q-menu>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable icon="fas fa-user-minus" v-close-popup <q-item clickable icon="fas fa-user-minus" v-close-popup
@click="setCmd(shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND, contact.username)"> @click="setCmd($q, shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND, contact.username, '', '')">
<q-item-section>{{ $t('friends.cancel_ask_friend') }}</q-item-section> <q-item-section>{{ $t('friends.cancel_ask_friend') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -109,25 +109,25 @@
</q-btn> </q-btn>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.ASK_TRUST"> <q-item-section side v-else-if="visu === costanti.ASK_TRUST">
<q-item-label> <q-item-label>
<q-btn color="positive" :label="$t('friends.accept_trust')" @click="setCmd(shared_consts.FRIENDSCMD.SETTRUST, contact.username, true)"/> <q-btn color="positive" :label="$t('friends.accept_trust')" @click="setCmd($q, shared_consts.FRIENDSCMD.SETTRUST, contact.username, true, '')"/>
</q-item-label> </q-item-label>
<q-item-label> <q-item-label>
<q-btn color="negative" :label="$t('friends.refuse_trust')" @click="setCmd(shared_consts.FRIENDSCMD.SETTRUST, contact.username, false)"/> <q-btn color="negative" :label="$t('friends.refuse_trust')" @click="setCmd($q, shared_consts.FRIENDSCMD.SETTRUST, contact.username, false, '')"/>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.TRUSTED"> <q-item-section side v-else-if="visu === costanti.TRUSTED">
<q-item-label> <q-item-label>
<q-btn rounded icon="fas fa-ellipsis-h"> <q-btn rounded icon="fas fa-ellipsis-h">
<q-menu> <q-menu>
<q-list v-if="!userStore.IsMyFriendByUsername(contact.username)" style="min-width: 200px"> <q-list v-if="!userStore.IsMyFriendByUsername(contact.username)" style="min-width: 200px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.FRIENDSCMD.REQFRIEND, contact.username, true)"> <q-item clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, contact.username, true, '')">
<q-item-section>{{ $t('friends.ask_friend') }}</q-item-section> <q-item-section>{{ $t('friends.ask_friend') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<q-list style="min-width: 200px"> <q-list style="min-width: 200px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.FRIENDSCMD.SETTRUST, contact.username, false)"> <q-item clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.SETTRUST, contact.username, false, '')">
<q-item-section>{{ $t('friends.reject_trust') }}</q-item-section> <q-item-section>{{ $t('friends.reject_trust') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -135,22 +135,22 @@
</q-btn> </q-btn>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.FIND_PEOPLE"> <q-item-section side v-else-if="visu === costanti.FIND_PEOPLE">
<q-item-label> <q-item-label>
<q-btn v-if="contact.username !== userStore.my.username" rounded :icon="userStore.IsMyFriendByUsername(contact.username) ? `fas fa-ellipsis-h` : `fas fa-user`"> <q-btn v-if="contact.username !== userStore.my.username" rounded :icon="userStore.IsMyFriendByUsername(contact.username) ? `fas fa-ellipsis-h` : `fas fa-user`">
<q-menu> <q-menu>
<q-list v-if="(!userStore.IsMyFriendByUsername(contact.username) && !userStore.IsAskedFriendByUsername(contact.username))" style="min-width: 200px"> <q-list v-if="(!userStore.IsMyFriendByUsername(contact.username) && !userStore.IsAskedFriendByUsername(contact.username))" style="min-width: 200px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.FRIENDSCMD.REQFRIEND, contact.username, true)"> <q-item clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, contact.username, true, '')">
<q-item-section>{{ $t('friends.ask_friend') }}</q-item-section> <q-item-section>{{ $t('friends.ask_friend') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<q-list v-else-if="(!userStore.IsMyFriendByUsername(contact.username) && userStore.IsAskedFriendByUsername(contact.username))" style="min-width: 200px"> <q-list v-else-if="(!userStore.IsMyFriendByUsername(contact.username) && userStore.IsAskedFriendByUsername(contact.username))" style="min-width: 200px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.FRIENDSCMD.REQFRIEND, contact.username, false)"> <q-item clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, contact.username, false, '')">
<q-item-section>{{ $t('friends.cancel_ask_friend') }}</q-item-section> <q-item-section>{{ $t('friends.cancel_ask_friend') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
<q-list v-else-if="userStore.IsMyFriendByUsername(contact.username)" style="min-width: 200px"> <q-list v-else-if="userStore.IsMyFriendByUsername(contact.username)" style="min-width: 200px">
<q-item clickable v-close-popup @click="setCmd(shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, contact.username)"> <q-item clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, contact.username, '', '')">
<q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section> <q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -158,13 +158,13 @@
</q-btn> </q-btn>
</q-item-label> </q-item-label>
</q-item-section> </q-item-section>
<q-item-section side v-if="visu === costanti.REJECTED"> <q-item-section side v-else-if="visu === costanti.REJECTED">
<q-item-label> <q-item-label>
<q-btn rounded icon="fas fa-ellipsis-h"> <q-btn rounded icon="fas fa-ellipsis-h">
<q-menu> <q-menu>
<q-list style="min-width: 200px"> <q-list style="min-width: 200px">
<q-item clickable icon="fas fa-user-minus" v-close-popup <q-item clickable icon="fas fa-user-minus" v-close-popup
@click="setCmd(shared_consts.FRIENDSCMD.SETTRUST, contact.username, true)"> @click="setCmd($q, shared_consts.FRIENDSCMD.SETTRUST, contact.username, true, '')">
<q-item-section>{{ $t('friends.accept_trust') }}</q-item-section> <q-item-section>{{ $t('friends.accept_trust') }}</q-item-section>
</q-item> </q-item>
</q-list> </q-list>

View File

@@ -22,6 +22,7 @@ import { complexity, registereduser, aportadorexist } from '../../validation'
// import 'vue3-tel-input/dist/vue3-tel-input.css' // import 'vue3-tel-input/dist/vue3-tel-input.css'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { static_data } from '@/db/static_data'
// import {Loading, QSpinnerFacebook, QSpinnerGears} from 'quasar' // import {Loading, QSpinnerFacebook, QSpinnerGears} from 'quasar'
@@ -49,6 +50,11 @@ export default defineComponent({
required: false, required: false,
default: false, default: false,
}, },
show_namesurname: {
type: Boolean,
required: false,
default: true,
},
}, },
setup(props, { emit }) { setup(props, { emit }) {
const $q = useQuasar() const $q = useQuasar()
@@ -65,8 +71,8 @@ export default defineComponent({
const signup = reactive(<ISignupOptions>{ const signup = reactive(<ISignupOptions>{
email: process.env.TEST_EMAIL || '', email: process.env.TEST_EMAIL || '',
username: process.env.TEST_USERNAME || '', username: process.env.TEST_USERNAME || '',
name: process.env.TEST_NAME || '', name: static_data.functionality.SHOW_NAMESURNAME ? (process.env.TEST_NAME || '') : '',
surname: process.env.TEST_SURNAME || '', surname: static_data.functionality.SHOW_NAMESURNAME ? (process.env.TEST_SURNAME || '') : '',
password: process.env.TEST_PASSWORD || '', password: process.env.TEST_PASSWORD || '',
repeatPassword: process.env.TEST_PASSWORD || '', repeatPassword: process.env.TEST_PASSWORD || '',
terms: !process.env.PROD, terms: !process.env.PROD,
@@ -75,7 +81,7 @@ export default defineComponent({
}) })
const validations: any = computed(() => { const validations: any = computed(() => {
return { let valid: any = {
repeatPassword: { repeatPassword: {
required, required,
repeatPassword: sameAs(signup.password), repeatPassword: sameAs(signup.password),
@@ -90,12 +96,6 @@ export default defineComponent({
minLength: minLength(6), minLength: minLength(6),
registereduser, registereduser,
}, },
name: {
required,
},
surname: {
required,
},
terms: { terms: {
required, required,
}, },
@@ -104,6 +104,17 @@ export default defineComponent({
required required
} }
} }
if (props.show_namesurname) {
valid.name = {
required,
}
valid.surname = {
required,
}
}
return valid
}) })
// @ts-ignore // @ts-ignore
@@ -176,8 +187,10 @@ export default defineComponent({
return return
} */ } */
if (signup.name) {
signup.name = tools.CapitalizeAllWords(signup.name) signup.name = tools.CapitalizeAllWords(signup.name)
signup.surname = tools.CapitalizeAllWords(signup.surname) signup.surname = tools.CapitalizeAllWords(signup.surname)
}
$q.loading.show({ message: t('reg.incorso') }) $q.loading.show({ message: t('reg.incorso') })

View File

@@ -2,7 +2,8 @@
<div> <div>
<div class="text-center"> <div class="text-center">
<p> <p>
<logo></logo><CTitleBanner :title="$t('pages.SignUp')"></CTitleBanner> <logo></logo>
<CTitleBanner :title="$t('pages.SignUp')"></CTitleBanner>
</p> </p>
</div> </div>
@@ -53,7 +54,7 @@
debounce="3000" debounce="3000"
:rules="[ myRuleEmail ]" :rules="[ myRuleEmail ]"
lazy-rules lazy-rules
:label="$t('reg.email')"> :label="$t('reg.email_reg')">
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="email"/> <q-icon name="email"/>
@@ -69,9 +70,10 @@
:error="v$.username.$error" :error="v$.username.$error"
@keydown.space="(event) => event.preventDefault()" @keydown.space="(event) => event.preventDefault()"
maxlength="20" maxlength="20"
:hint="$t('reg.username_hint')"
debounce="1000" debounce="1000"
:error-message="tools.errorMsg( 'username', v$.username)" :error-message="tools.errorMsg( 'username', v$.username)"
:label="$t('reg.username')"> :label="$t('reg.username_reg')">
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="person"/> <q-icon name="person"/>
@@ -79,6 +81,7 @@
</q-input> </q-input>
<div v-if="show_namesurname">
<q-input <q-input
v-model="signup.name" v-model="signup.name"
rounded outlined rounded outlined
@@ -111,6 +114,8 @@
</q-input> </q-input>
</div>
<q-input <q-input
v-model="signup.password" v-model="signup.password"
type="password" type="password"
@@ -120,7 +125,7 @@
:error-message="`${tools.errorMsg( 'password', v$.password)}`" :error-message="`${tools.errorMsg( 'password', v$.password)}`"
maxlength="30" maxlength="30"
debounce="1000" debounce="1000"
:label="$t('reg.password')"> :label="$t('reg.password_reg')">
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="vpn_key"/> <q-icon name="vpn_key"/>
@@ -203,10 +208,11 @@
</div> </div>
<div class="wrapper"> <div class="wrapper">
<q-btn rounded size="lg" color="positive" @click="submitOk" :disabled='!allowSubmit()' :label="$t('reg.submit')"> <q-btn rounded size="lg" color="positive" @click="submitOk" :disabled='!allowSubmit()'
:label="$t('reg.submit')">
</q-btn> </q-btn>
</div> </div>
<br /><br /><br /> <br/><br/><br/>
</div> </div>
</div> </div>
@@ -215,5 +221,5 @@
<script lang="ts" src="./CSignUp.ts"> <script lang="ts" src="./CSignUp.ts">
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import './CSignUp.scss'; @import './CSignUp.scss';
</style> </style>

View File

@@ -13,7 +13,7 @@
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label>{{ user.name }} {{ user.surname }} {{ getindorder(user) }}<br> <q-item-label><span v-if="user.name">{{ user.name }} {{ user.surname }}</span> {{ getindorder(user) }}<br>
<span class="text-grey">({{ getusername(user) }}) <strong>{{ getquanti(user)}}</strong></span> <span class="text-grey">({{ getusername(user) }}) <strong>{{ getquanti(user)}}</strong></span>
<br><!--<span v-if="isextralist(user)" class="notreg">{{ $t('dashboard.notreg') }}</span>--> <br><!--<span v-if="isextralist(user)" class="notreg">{{ $t('dashboard.notreg') }}</span>-->
</q-item-label> </q-item-label>

View File

@@ -98,7 +98,6 @@
</div>--> </div>-->
<!-- BUTTON USER BAR --> <!-- BUTTON USER BAR -->
<q-btn <q-btn
class="q-mx-xs" v-if="static_data.functionality.SHOW_USER_MENU && !isLogged()" dense flat round class="q-mx-xs" v-if="static_data.functionality.SHOW_USER_MENU && !isLogged()" dense flat round
icon="menu" icon="menu"

View File

@@ -868,7 +868,7 @@ $heightBtn: 100%;
} }
.combowidth { .combowidth {
min-width: 180px; min-width: 190px;
@media (max-width: 450px) { @media (max-width: 450px) {
min-width: 250px; min-width: 250px;
} }

View File

@@ -1,8 +1,8 @@
const msg_website_enUs = { const msg_website_enUs = {
ws: { ws: {
sitename: 'InsiemeSuPuò', sitename: 'Comunità Nuovo Mondo',
siteshortname: 'InsiemeSuPuò', siteshortname: 'CNM',
botname: 'InsiemeSuPuò BOT', botname: 'CNM BOT',
}, },
pages: { pages: {
home: 'Home', home: 'Home',

View File

@@ -1,8 +1,8 @@
const msg_website_es = { const msg_website_es = {
ws: { ws: {
sitename: 'InsiemeSuPuò', sitename: 'AYNI',
siteshortname: 'InsiemeSuPuò', siteshortname: 'Ayni',
botname: 'InsiemeSuPuò BOT', botname: 'AYNI BOT',
}, },
pages: { pages: {
home: 'Home', home: 'Home',

View File

@@ -1,8 +1,8 @@
const msg_website_fr = { const msg_website_fr = {
ws: { ws: {
sitename: 'InsiemeSuPuò', sitename: 'AYNI',
siteshortname: 'InsiemeSuPuò', siteshortname: 'Ayni',
botname: 'InsiemeSuPuò BOT', botname: 'AYNI BOT',
}, },
homepage: { homepage: {
titlecontatti: 'CONTACTS', titlecontatti: 'CONTACTS',

View File

@@ -1,8 +1,8 @@
const msg_website_it = { const msg_website_it = {
ws: { ws: {
sitename: 'InsiemeSuPuò', sitename: 'FreePlanet',
siteshortname: 'InsiemeSuPuò', siteshortname: 'FreePlanet',
botname: 'il Bot di InsiemeSuPuò', botname: 'il Bot di FreePlanet',
}, },
products: { products: {
quantity: 'Quantità', quantity: 'Quantità',
@@ -128,8 +128,8 @@ const msg_website_it = {
color: 'Colore', color: 'Colore',
}, },
msg: { msg: {
myAppName: 'InsiemeSiPuò', myAppName: 'FreePlanet',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito', myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito e senza Pubblicità',
underconstruction: 'App in costruzione...', underconstruction: 'App in costruzione...',
myDescriz: '', myDescriz: '',
sottoTitoloApp: 'Il primo Vero Social', sottoTitoloApp: 'Il primo Vero Social',

View File

@@ -1,8 +1,8 @@
const msg_website_pt = { const msg_website_pt = {
ws: { ws: {
sitename: 'InsiemeSuPuò', sitename: 'CNM',
siteshortname: 'InsiemeSuPuò', siteshortname: 'CNM',
botname: 'InsiemeSuPuò BOT', botname: 'CNM BOT',
}, },
pages: { pages: {
home: 'Home', home: 'Home',

View File

@@ -1,8 +1,8 @@
const msg_website_si = { const msg_website_si = {
ws: { ws: {
sitename: 'InsiemeSuPuò', sitename: 'AYNI',
siteshortname: 'InsiemeSuPuò', siteshortname: 'Ayni',
botname: 'InsiemeSuPuò BOT', botname: 'AYNI BOT',
}, },
pages: { pages: {
home: 'Domača stran', home: 'Domača stran',

View File

@@ -20,6 +20,7 @@ const functionality: IFunctionality = {
BOOKING_EVENTS: true, BOOKING_EVENTS: true,
ENABLE_ECOMMERCE: false, ENABLE_ECOMMERCE: false,
ENABLE_REG_ISP: true, ENABLE_REG_ISP: true,
SHOW_NAMESURNAME: false,
} }
// const SHOW_PROJINTHEMENU = false // const SHOW_PROJINTHEMENU = false
@@ -373,12 +374,12 @@ const baseroutes: IListRoutes[] = [
path: '/', path: '/',
materialIcon: 'home', materialIcon: 'home',
name: 'pages.home', name: 'pages.home',
component: () => import('@src/root/home_insiemesipuo/home_insiemesipuo.vue'), component: () => import('@src/root/home_freeplanet/home_freeplanet.vue'),
reqauth: false, reqauth: false,
inmenu: true, inmenu: true,
infooter: true, infooter: true,
}, },
/*{ {
active: true, active: true,
order: 100, order: 100,
path: '/presentazione', path: '/presentazione',
@@ -388,7 +389,7 @@ const baseroutes: IListRoutes[] = [
reqauth: false, reqauth: false,
inmenu: true, inmenu: true,
infooter: true, infooter: true,
},*/ },
{ {
active: true, active: true,
order: 120, order: 120,
@@ -446,7 +447,7 @@ const baseroutes: IListRoutes[] = [
}, },
{ {
active: true, active: true,
order: 136, order: 135,
path: '/grp/:groupname', path: '/grp/:groupname',
materialIcon: 'fas fa-user', materialIcon: 'fas fa-user',
name: 'proj.group2', name: 'proj.group2',

View File

@@ -65,7 +65,7 @@ export default function () {
function getMyImg() { function getMyImg() {
const userStore = useUserStore() const userStore = useUserStore()
const ris = userStore.getImgByUsername(userStore.my.username) const ris = userStore.getImgByUsername(userStore.my.username)
const out = (ris !== '') ? `${ris}` : '' const out = (ris !== '') ? `${ris}` : 'images/noimg-user.svg'
// console.log('getMyImg = ', out) // console.log('getMyImg = ', out)
return out return out
} }

View File

@@ -444,6 +444,8 @@ export interface IFunctionality {
ENABLE_REG_AYNI?: boolean ENABLE_REG_AYNI?: boolean
ENABLE_REG_CNM?: boolean ENABLE_REG_CNM?: boolean
ENABLE_REG_ISP?: boolean ENABLE_REG_ISP?: boolean
SHOW_NAMESURNAME?: boolean
ENABLE_GROUPS?: boolean
} }
export interface IParLookup { export interface IParLookup {

View File

@@ -14,6 +14,7 @@ export interface IFriends {
} }
export interface IMyGroup { export interface IMyGroup {
_id: string
groupname: string groupname: string
title?: string title?: string
descr?: string descr?: string
@@ -75,6 +76,7 @@ export interface IUserProfile {
// in memory // in memory
asked_friends: any[] asked_friends: any[]
asked_groups: any[] asked_groups: any[]
list_usersgroup?: IFriends[]
} }
export interface IPaymentType { export interface IPaymentType {

View File

@@ -630,6 +630,7 @@ const msg_es = {
mypages: { mypages: {
find_people: 'Busca Personas', find_people: 'Busca Personas',
friends: 'Amigos', friends: 'Amigos',
groups: 'Grupos',
request_friends: 'Rich. Amicizia', request_friends: 'Rich. Amicizia',
request_sent_friends: 'Rich. Inviate', request_sent_friends: 'Rich. Inviate',
request_trust: 'Rich. Fiducia', request_trust: 'Rich. Fiducia',

View File

@@ -408,6 +408,7 @@ const msg_it = {
iscrizioneincorso: 'Iscrizione in corso...', iscrizioneincorso: 'Iscrizione in corso...',
richiesto: 'Campo Richiesto', richiesto: 'Campo Richiesto',
email: 'Email', email: 'Email',
email_reg: 'la tua Email',
website: 'Sito Web', website: 'Sito Web',
intcode_cell: 'Prefisso Int.', intcode_cell: 'Prefisso Int.',
cell: 'Cellulare', cell: 'Cellulare',
@@ -448,12 +449,15 @@ const msg_it = {
deleted: 'Nascosto', deleted: 'Nascosto',
sospeso: 'Sospeso', sospeso: 'Sospeso',
username: 'Username', username: 'Username',
username_reg: 'Scegli il tuo Username',
username_hint: 'i caratteri speciali consentiti sono il tratteggio (_) e il meno (-)',
username_pseudonimo: 'Username (Pseudonimo)', username_pseudonimo: 'Username (Pseudonimo)',
username_short: 'Username', username_short: 'Username',
name: 'Nome', name: 'Nome',
surname: 'Cognome', surname: 'Cognome',
username_login: 'Username o email', username_login: 'Username o email',
password: 'Password', password: 'Password',
password_reg: 'Scegli una nuova Password',
repeatPassword: 'Ripeti password', repeatPassword: 'Ripeti password',
terms: 'Accetto i termini della privacy', terms: 'Accetto i termini della privacy',
metodopagamento: 'Metodo di Pagamento', metodopagamento: 'Metodo di Pagamento',
@@ -890,6 +894,9 @@ const msg_it = {
reject_ask_friend: 'Rifiuta la richiesta di Amicizia', reject_ask_friend: 'Rifiuta la richiesta di Amicizia',
}, },
groups: { groups: {
member: 'membro',
members: 'membri',
admin: 'amministratore',
admins: 'Amministratori', admins: 'Amministratori',
ask_group: 'Chiedi di entrare nel Gruppo', ask_group: 'Chiedi di entrare nel Gruppo',
accept_group: 'Accetta la richiesta', accept_group: 'Accetta la richiesta',

View File

@@ -39,6 +39,8 @@ export const costanti = {
CREATE_GROUP: 30, CREATE_GROUP: 30,
MANAGE_GROUPS: 31, MANAGE_GROUPS: 31,
SHOW_ALL: 50,
REQ_ADD_USER_TO_GROUP: 40, REQ_ADD_USER_TO_GROUP: 40,
REQ_REMOVE_USER_TO_GROUP: 41, REQ_REMOVE_USER_TO_GROUP: 41,

View File

@@ -1539,6 +1539,10 @@ export const tools = {
return Object(anything) === anything return Object(anything) === anything
}, },
isFunc(anything: any) {
return (typeof anything === 'function')
},
isDebug() { isDebug() {
return process.env.DEV return process.env.DEV
}, },
@@ -4424,6 +4428,62 @@ export const tools = {
}) })
}, },
removeFromMyFriends($q: any, username: string, usernameDest: string) {
const userStore = useUserStore()
$q.dialog({
message: t('db.domanda_removefriend', { username: usernameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setFriendsCmd($q, t, username, usernameDest, shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, null).then((res) => {
if (res) {
userStore.my.profile.friends = userStore.my.profile.friends.filter((rec: IFriends) => rec.username !== usernameDest)
tools.showPositiveNotif($q, t('db.removedfriend'))
}
})
})
},
blockUser($q: any, username: string, usernameDest: string) {
const userStore = useUserStore()
$q.dialog({
message: t('db.domanda_blockuser', { username: usernameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setFriendsCmd($q, t, username, usernameDest, shared_consts.FRIENDSCMD.BLOCK_USER, null).then((res: any) => {
if (res) {
userStore.my.profile.friends = userStore.my.profile.friends.filter((rec: IFriends) => rec.username !== usernameDest)
tools.showPositiveNotif($q, t('db.blockedfriend'))
}
})
})
},
refuseReqFriends($q: any, username: string, usernameDest: string) {
const userStore = useUserStore()
$q.dialog({
message: t('db.domanda_revoke_friend', { username: usernameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setFriendsCmd($q, t, username, usernameDest, shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, null).then((res) => {
if (res) {
userStore.my.profile.req_friends = userStore.my.profile.req_friends.filter((user: IFriends) => user.username !== usernameDest)
tools.showPositiveNotif($q, t('db.removedfriend'))
}
})
})
},
addToMyGroups($q: any, username: string, groupnameDest: string) { addToMyGroups($q: any, username: string, groupnameDest: string) {
const userStore = useUserStore() const userStore = useUserStore()
@@ -4447,6 +4507,24 @@ export const tools = {
}) })
}, },
blockGroup($q: any, username: string, usernameDest: string) {
const userStore = useUserStore()
$q.dialog({
message: t('db.domanda_blockgroup', { groupname: usernameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setGroupsCmd($q, t, username, usernameDest, shared_consts.GROUPSCMD.BLOCK_GROUP, null).then((res) => {
if (res) {
userStore.my.profile.mygroups = userStore.my.profile.mygroups.filter((rec: IMyGroup) => rec.groupname !== usernameDest)
tools.showPositiveNotif($q, t('db.blockedgroup'))
}
})
})
},
removeFromMyGroups($q: any, username: string, groupnameDest: string) { removeFromMyGroups($q: any, username: string, groupnameDest: string) {
const userStore = useUserStore() const userStore = useUserStore()
@@ -4743,6 +4821,44 @@ export const tools = {
}, },
setCmd($q: any, cmd: number, username: string, value: any, dest: string) {
if (cmd === shared_consts.GROUPSCMD.REMOVE_FROM_MYGROUP) {
tools.removeFromMyGroups($q, username, dest)
} else if (cmd === shared_consts.GROUPSCMD.BLOCK_GROUP) {
tools.blockGroup($q, username, dest)
} else if (cmd === shared_consts.GROUPSCMD.SETGROUP) {
tools.addToMyGroups($q, username, dest)
} else if (cmd === shared_consts.GROUPSCMD.REQGROUP) {
tools.setRequestGroup($q, username, dest, value)
} else if (cmd === shared_consts.GROUPSCMD.CANCEL_REQ_GROUP) {
tools.cancelReqGroups($q, username, dest)
} else if (cmd === shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS) {
tools.removeFromMyFriends($q, username, value)
} else if (cmd === shared_consts.FRIENDSCMD.BLOCK_USER) {
tools.blockUser($q, username, dest)
} else if (cmd === shared_consts.FRIENDSCMD.SETFRIEND) {
tools.addToMyFriends($q, username, dest)
} else if (cmd === shared_consts.FRIENDSCMD.REQFRIEND) {
tools.setRequestFriendship($q, username, dest, value)
} else if (cmd === shared_consts.FRIENDSCMD.REFUSE_REQ_FRIEND) {
tools.refuseReqFriends($q, username, dest)
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND) {
tools.cancelReqFriends($q, username, dest)
}
},
isCallable(anything: any) {
return typeof anything === 'function'
},
getValueByFunzOrVal(value: any, keyfunz: any) {
if (typeof keyfunz === 'function') {
return keyfunz(value)
} else {
return value[keyfunz]
}
}
// getLocale() { // getLocale() {
// if (navigator.languages && navigator.languages.length > 0) { // if (navigator.languages && navigator.languages.length > 0) {
// return navigator.languages[0] // return navigator.languages[0]

View File

@@ -1,6 +1,6 @@
<template> <template>
<q-page padding class="signup"> <q-page padding class="signup">
<CSignUp :showcell="false" :showaportador="true"> <CSignUp :showcell="false" :showaportador="true" :show_namesurname="false">
</CSignUp> </CSignUp>
</q-page> </q-page>

View File

@@ -11,6 +11,7 @@ import { useI18n } from '@/boot/i18n'
import { toolsext } from '@store/Modules/toolsext' import { toolsext } from '@store/Modules/toolsext'
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar'
import { costanti } from '@costanti' import { costanti } from '@costanti'
import { static_data } from '@/db/static_data'
export default defineComponent({ export default defineComponent({
@@ -87,6 +88,7 @@ export default defineComponent({
getpayment, getpayment,
tools, tools,
costanti, costanti,
static_data,
filtroutente, filtroutente,
} }
} }

View File

@@ -7,6 +7,7 @@
<div class="column"> <div class="column">
<div class="myrow"> <div class="myrow">
<div v-if="static_data.functionality.SHOW_NAMESURNAME">
<CMyFieldDb <CMyFieldDb
:title="$t('reg.name')" :title="$t('reg.name')"
table="users" table="users"
@@ -20,6 +21,7 @@
:type="costanti.FieldType.string"> :type="costanti.FieldType.string">
</CMyFieldDb> </CMyFieldDb>
</div> </div>
</div>
<div class="myrow"> <div class="myrow">
<CMyFieldDb <CMyFieldDb
:title="$t('reg.username')" :title="$t('reg.username')"

View File

@@ -16,3 +16,9 @@
border-radius: 1rem; border-radius: 1rem;
padding: 5px; padding: 5px;
} }
.members, .admins{
font-weight: bold;
text-align: center;
vertical-align: center;
}

View File

@@ -1,5 +1,6 @@
import { CGridTableRec } from '@/components/CGridTableRec' import { CGridTableRec } from '@/components/CGridTableRec'
import { CMyFriends } from '@/components/CMyFriends' import { CMyFriends } from '@/components/CMyFriends'
import { CMyUser } from '@/components/CMyUser'
import { CTitleBanner } from '@/components/CTitleBanner' import { CTitleBanner } from '@/components/CTitleBanner'
import { CProfile } from '@/components/CProfile' import { CProfile } from '@/components/CProfile'
import { CMyFieldRec } from '@/components/CMyFieldRec' import { CMyFieldRec } from '@/components/CMyFieldRec'
@@ -21,7 +22,7 @@ import { colmyUserPeople, colmyUserGroup } from '@store/Modules/fieldsTable'
export default defineComponent({ export default defineComponent({
name: 'mygroup', name: 'mygroup',
components: { CProfile, CTitleBanner, CMyFieldRec, CSkill, CDateTime, CMyFriends, CGridTableRec }, components: { CProfile, CTitleBanner, CMyFieldRec, CSkill, CDateTime, CMyFriends, CGridTableRec, CMyUser },
props: {}, props: {},
setup() { setup() {
const userStore = useUserStore() const userStore = useUserStore()
@@ -39,6 +40,7 @@ export default defineComponent({
const mygrp = ref(<IMyGroup|null>{}) const mygrp = ref(<IMyGroup|null>{})
const users_in_group = ref(<IFriends[]>[]) const users_in_group = ref(<IFriends[]>[])
const tabgrp = ref('info')
const tab = ref('membri') const tab = ref('membri')
const arrfilterand: any = ref([]) const arrfilterand: any = ref([])
@@ -54,10 +56,10 @@ export default defineComponent({
return userStore.my.username return userStore.my.username
} }
function loadGroup() { async function loadGroup() {
// Carica il profilo di quest'utente // Carica il profilo di quest'utente
if (groupname.value) { if (groupname.value) {
userStore.loadGroup(groupname.value).then((ris) => { await userStore.loadGroup(groupname.value).then((ris) => {
if (ris) { if (ris) {
mygrp.value = ris.mygroup mygrp.value = ris.mygroup
users_in_group.value = ris.users_in_group users_in_group.value = ris.users_in_group
@@ -75,13 +77,14 @@ export default defineComponent({
loadGroup() loadGroup()
}) })
function mounted() { async function mounted() {
loadGroup() await loadGroup()
searchList.value = [] searchList.value = []
filtercustom.value = [{ 'profile.mygroups': { $elemMatch: {groupname: {$eq: groupname.value }} } } ] filtercustom.value = [{ 'profile.mygroups': { $elemMatch: {groupname: {$eq: groupname.value }} } } ]
filtercustom_rich.value = [{ req_users: { $elemMatch: {username: {$eq: userStore.my.username }} } } ]
arrfilterand.value = [] arrfilterand.value = []
filtercustom_rich.value = []
//++TODO: sistemare la filtercustom ... richieste... //++TODO: sistemare la filtercustom ... richieste...
} }
@@ -124,11 +127,11 @@ export default defineComponent({
} }
function extraparams() { function extraparams() {
let lk_tab = 'users' let lk_tab = ''
let lk_LF = 'userId' let lk_LF = ''
let lk_FF = '_id' let lk_FF = ''
let lk_as = 'user' let lk_as = ''
let af_objId_tab = 'myId' let af_objId_tab = ''
return { return {
lookup1: { lookup1: {
@@ -138,13 +141,29 @@ export default defineComponent({
lk_as, lk_as,
af_objId_tab, af_objId_tab,
lk_proj: { lk_proj: {
username: 1, 'username': 1,
name: 1,
'profile.img': 1, 'profile.img': 1,
'profile.qualifica': 1, 'profile.qualifica': 1,
} }
},
} }
} }
function extraparams_rich() {
return {
querytype: shared_consts.QUERYTYPE_MYGROUP,
myid: mygrp.value ? mygrp.value._id : '',
}
}
function numUsers() {
return users_in_group.value ? users_in_group.value.length : 0
}
function numAdmins() {
return (mygrp.value && mygrp.value.admins) ? mygrp.value.admins.length : 0
}
function listaAdmins() {
return (mygrp.value && mygrp.value.admins) ? mygrp.value.admins.map((rec) => rec.username).join(', ') : ''
} }
@@ -174,7 +193,12 @@ export default defineComponent({
colmyUserPeople, colmyUserPeople,
colmyUserGroup, colmyUserGroup,
extraparams, extraparams,
extraparams_rich,
tab, tab,
tabgrp,
numUsers,
numAdmins,
listaAdmins,
users_in_group, users_in_group,
} }
} }

View File

@@ -15,19 +15,6 @@
<div class="col-12 text-h7 text-blue text-shadow-2"> <div class="col-12 text-h7 text-blue text-shadow-2">
{{ mygrp.groupname }} {{ mygrp.groupname }}
</div> </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> <div>
<q-btn <q-btn
@@ -45,24 +32,57 @@
/> />
</div> </div>
<div v-if="mygrp.title"> <q-tabs v-model="tabgrp" class="text-blue">
<br> <q-tab label="Info" name="info" icon="fas fa-info"></q-tab>
<div class="q-ma-sm q-gutter-sm q-pa-xs"> <q-tab v-if="!!mygrp.note && userStore.IsMyGroupByGroupname(mygrp.groupname)" label="Pagina" name="page" icon="fas fa-file-word"></q-tab>
<div v-if="mygrp.note" v-html="mygrp.note"> <q-tab v-if="userStore.IsMyGroupByGroupname(mygrp.groupname)" label="Iscritti" name="membri" icon="fas fa-users"></q-tab>
</div> <q-tab v-if="tools.iAmAdminGroup(groupname)" label="Richieste" name="rich" icon="fas fa-user-plus"></q-tab>
</div> </q-tabs>
</div>
<q-btn <q-tab-panels v-model="tabgrp" animated>
v-if="mygrp.admins.includes(userStore.my.username)" icon="fas fa-pencil-alt" <q-tab-panel name="info">
color="blue" <div>
size="md" <q-card>
:label="$t('otherpages.modifgrp')" <CMyFieldRec
to="/editgrp"> title="Visibilità"
</q-btn> table="mygroups"
:id="mygrp._id"
:columns="colmyUserGroup"
:rec="mygrp"
field="visibility"
:canEdit="true"
:canModify="true">
</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"> <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"> <div class="col-6 q-ma-xs">
<q-btn <q-btn
v-if="getLinkGrpTelegram()" icon="fab fa-telegram" v-if="getLinkGrpTelegram()" icon="fab fa-telegram"
@@ -84,15 +104,22 @@
:href="getLinkWebSite()" target="__blank"> :href="getLinkWebSite()" target="__blank">
</q-btn> </q-btn>
</div> </div>
</q-card>
</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>
<q-tab-panel name="page">
<div v-if="mygrp.title">
<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"> <q-tab-panel name="membri">
<CGridTableRec <CGridTableRec
ref="tabMembri" ref="tabMembri"
@@ -102,7 +129,7 @@
prop_colkey="_id" prop_colkey="_id"
col_title="username" col_title="username"
:vertical="costanti.VISUTABLE_LISTA" :vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessun Membro" nodataLabel="Nessun Iscritto"
:prop_search="true" :prop_search="true"
hint="Username da trovare" hint="Username da trovare"
:finder="false" :finder="false"
@@ -119,12 +146,13 @@
:showCol="false" :showCol="false"
:extrafield="groupname" :extrafield="groupname"
:extraparams="extraparams()" :extraparams="extraparams()"
:visufind="costanti.REQ_REMOVE_USER_TO_GROUP" :visufind="tools.iAmAdminGroup(groupname) ? costanti.REQ_REMOVE_USER_TO_GROUP : costanti.FIND_PEOPLE"
> >
</CGridTableRec> </CGridTableRec>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="rich"> <q-tab-panel name="rich">
<CGridTableRec <CGridTableRec
prop_mytable="mygroups" prop_mytable="mygroups"
prop_mytitle="" prop_mytitle=""
@@ -132,7 +160,7 @@
prop_colkey="_id" prop_colkey="_id"
col_title="username" col_title="username"
:vertical="costanti.VISUTABLE_LISTA" :vertical="costanti.VISUTABLE_LISTA"
nodataLabel=" " nodataLabel="Nessuna Richiesta in sospeso"
:prop_search="false" :prop_search="false"
hint="Username da trovare" hint="Username da trovare"
:finder="false" :finder="false"
@@ -147,7 +175,7 @@
:showType="costanti.SHOW_USERINFO" :showType="costanti.SHOW_USERINFO"
keyMain="" keyMain=""
:showCol="false" :showCol="false"
:extraparams="extraparams()" :extraparams="extraparams_rich()"
:extrafield="groupname" :extrafield="groupname"
:visufind="costanti.REQ_ADD_USER_TO_GROUP" :visufind="costanti.REQ_ADD_USER_TO_GROUP"
> >
@@ -156,7 +184,13 @@
</q-tab-panel> </q-tab-panel>
</q-tab-panels> </q-tab-panels>
</div> <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>
<div v-else class="fit column no-wrap justify-evenly items-center content-start"> <div v-else class="fit column no-wrap justify-evenly items-center content-start">

View File

@@ -11,7 +11,7 @@
prop_colkey="_id" prop_colkey="_id"
col_title="groupname" col_title="groupname"
:vertical="costanti.VISUTABLE_LISTA" :vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessuna Richiesta in sospeso" nodataLabel=" Nessun Gruppo"
:prop_search="true" :prop_search="true"
hint="nome del gruppo da trovare" hint="nome del gruppo da trovare"
:finder="true" :finder="true"

View File

@@ -14,6 +14,7 @@ import { useQuasar } from 'quasar'
import { costanti } from '@costanti' 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'
export default defineComponent({ export default defineComponent({
@@ -106,6 +107,7 @@ export default defineComponent({
myusername, myusername,
userStore, userStore,
t, t,
static_data,
animation, animation,
} }
} }

View File

@@ -8,11 +8,13 @@
</q-avatar> </q-avatar>
</div> </div>
<div v-if="static_data.functionality.SHOW_NAMESURNAME">
<div class="text-h6"> <div class="text-h6">
<span v-if="checkifShow('name')"> {{ myuser.name }}</span> <span v-if="checkifShow('surname')">{{ <span v-if="checkifShow('name')"> {{ myuser.name }}</span> <span v-if="checkifShow('surname')">{{
myuser.surname myuser.surname
}}</span> }}</span>
</div> </div>
</div>
<div class="col-12 text-h7 text-blue text-shadow-2"> <div class="col-12 text-h7 text-blue text-shadow-2">
{{ myuser.username }} {{ myuser.username }}
</div> </div>
@@ -38,7 +40,7 @@
/> />
</div> </div>
<div v-if="myuser.name"> <div v-if="myuser._id">
<div class="col-12 text-h8 q-mt-sm" v-if="myuser.profile.qualifica"> <div class="col-12 text-h8 q-mt-sm" v-if="myuser.profile.qualifica">
<em><span class="qualifica">{{ myuser.profile.qualifica }}</span></em> <em><span class="qualifica">{{ myuser.profile.qualifica }}</span></em>
</div> </div>
@@ -55,7 +57,7 @@
to="/editprofile"> to="/editprofile">
</q-btn> </q-btn>
<div v-if="myuser.name" class="myrow justify-evenly items-center q-pa-sm q-ma-sm"> <div v-if="myuser._id" class="myrow justify-evenly items-center q-pa-sm q-ma-sm">
<div class="col-6 q-ma-xs"> <div class="col-6 q-ma-xs">
<q-btn <q-btn
@@ -117,7 +119,7 @@
</CTitleBanner> </CTitleBanner>
<div v-if="myuser.name"> <div v-if="myuser._id">
<CTitleBanner <CTitleBanner
class="" :title="$t('dashboard.info')" bgcolor="bg-primary" clcolor="text-white" class="" :title="$t('dashboard.info')" bgcolor="bg-primary" clcolor="text-white"
myclass="myshad" :canopen="true"> myclass="myshad" :canopen="true">