- aggiornamento refreshtoken (parte 1)
- PCB: fix listino
@@ -1,6 +1,6 @@
|
|||||||
APP_VERSION="1.0.33"
|
APP_VERSION="1.0.33"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="17"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
DIRECTORY_SERVER="freeplanet_serverside"
|
DIRECTORY_SERVER="freeplanet_serverside"
|
||||||
SERVERDIR_WEBSITE=""
|
SERVERDIR_WEBSITE=""
|
||||||
@@ -12,7 +12,7 @@ LANG_DEFAULT="it"
|
|||||||
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||||
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
||||||
MONGODB_HOST="https://localhost:3000"
|
MONGODB_HOST="https://localhost:3000"
|
||||||
LOGO_REG='riso-logo-full.png'
|
LOGO_REG='piuchebuono-logo-full.png'
|
||||||
TEST_NAME="Paolo"
|
TEST_NAME="Paolo"
|
||||||
TEST_SURNAME="Arena"
|
TEST_SURNAME="Arena"
|
||||||
TEST_EMAIL=""
|
TEST_EMAIL=""
|
||||||
|
|||||||
@@ -43,7 +43,6 @@
|
|||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
"chart.js": "^4.4.2",
|
"chart.js": "^4.4.2",
|
||||||
"core-js": "^3.36.1",
|
"core-js": "^3.36.1",
|
||||||
"crypto": "^1.0.1",
|
|
||||||
"crypto-browserify": "^3.12.0",
|
"crypto-browserify": "^3.12.0",
|
||||||
"date-fns": "^3.6.0",
|
"date-fns": "^3.6.0",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ module.exports = configure((ctx) => ({
|
|||||||
views: path.resolve(__dirname, 'src/views/index.ts'),
|
views: path.resolve(__dirname, 'src/views/index.ts'),
|
||||||
icons: path.resolve(__dirname, 'src/assets/icons'),
|
icons: path.resolve(__dirname, 'src/assets/icons'),
|
||||||
images: path.resolve(__dirname, 'src/assets/images'),
|
images: path.resolve(__dirname, 'src/assets/images'),
|
||||||
|
maps: path.resolve(__dirname, 'src/public/maps'),
|
||||||
classes: path.resolve(__dirname, 'src/classes/index.ts'),
|
classes: path.resolve(__dirname, 'src/classes/index.ts'),
|
||||||
fonts: path.resolve(__dirname, 'src/assets/fonts'),
|
fonts: path.resolve(__dirname, 'src/assets/fonts'),
|
||||||
utils: path.resolve(__dirname, 'src/utils/index.ts'),
|
utils: path.resolve(__dirname, 'src/utils/index.ts'),
|
||||||
@@ -107,6 +108,7 @@ module.exports = configure((ctx) => ({
|
|||||||
.set('@css', path.resolve(__dirname, 'src/public/css/variables.scss'))
|
.set('@css', path.resolve(__dirname, 'src/public/css/variables.scss'))
|
||||||
.set('@icons', path.resolve(__dirname, 'src/public/icons/*'))
|
.set('@icons', path.resolve(__dirname, 'src/public/icons/*'))
|
||||||
.set('@images', path.resolve(__dirname, 'src/public/images/*'))
|
.set('@images', path.resolve(__dirname, 'src/public/images/*'))
|
||||||
|
.set('@maps', path.resolve(__dirname, 'src/public/maps/*'))
|
||||||
.set('@classes', path.resolve(__dirname, 'src/classes/index.ts'))
|
.set('@classes', path.resolve(__dirname, 'src/classes/index.ts'))
|
||||||
.set('@utils', path.resolve(__dirname, 'src/utils/index.ts'))
|
.set('@utils', path.resolve(__dirname, 'src/utils/index.ts'))
|
||||||
.set('@utils', path.resolve(__dirname, 'src/utils/*'))
|
.set('@utils', path.resolve(__dirname, 'src/utils/*'))
|
||||||
|
|||||||
2
now.txt
@@ -1 +1 @@
|
|||||||
TERMINA DI LAVORARE SU piuchebuono.app: (Sovrascrivo !)
|
TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "riso",
|
"name": "piuchebuono",
|
||||||
"version": "0.6.1",
|
"version": "2.0.1",
|
||||||
"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.",
|
"description": "PiuCheBuono",
|
||||||
"productName": "Riso",
|
"productName": "PiuCheBuono",
|
||||||
"author": "Paolo Arena",
|
"author": "Paolo Arena",
|
||||||
"private": true,
|
"private": true,
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
@@ -43,6 +43,7 @@
|
|||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
"chart.js": "^4.4.2",
|
"chart.js": "^4.4.2",
|
||||||
"core-js": "^3.36.1",
|
"core-js": "^3.36.1",
|
||||||
|
"crypto": "^1.0.1",
|
||||||
"crypto-browserify": "^3.12.0",
|
"crypto-browserify": "^3.12.0",
|
||||||
"date-fns": "^3.6.0",
|
"date-fns": "^3.6.0",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 42 KiB |
BIN
public/images/foto1.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 87 KiB |
BIN
public/images/foto2.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 140 KiB |
BIN
public/images/foto3.jpg
Executable file → Normal file
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 165 KiB |
|
Before Width: | Height: | Size: 10 KiB |
BIN
public/images/kolibrilab-logo-full.png
Executable file
|
After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 618 B |
BIN
public/images/marocco_foto1.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
BIN
public/images/noi4.jpg
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
public/images/nuda_e_cruda.jpeg
Normal file
|
After Width: | Height: | Size: 311 KiB |
BIN
public/images/pcb-android-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/pcb-android-icon-192x192.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
public/images/pcb-android-icon-36x36.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
public/images/pcb-android-icon-48x48.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
public/images/pcb-android-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/images/pcb-android-icon-96x96.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/images/pcb-apple-icon-114x114.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/images/pcb-apple-icon-120x120.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
public/images/pcb-apple-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/pcb-apple-icon-152x152.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/pcb-apple-icon-180x180.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
public/images/pcb-apple-icon-57x57.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
public/images/pcb-apple-icon-60x60.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
public/images/pcb-apple-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/images/pcb-apple-icon-76x76.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/pcb-apple-icon.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
public/images/piuchebuono-logo-full.png
Normal file
|
After Width: | Height: | Size: 163 KiB |
BIN
public/images/piuchebuono.jpg
Normal file
|
After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 634 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 258 KiB |
|
Before Width: | Height: | Size: 124 KiB |
@@ -68,7 +68,6 @@ module.exports = configure((ctx) => ({
|
|||||||
views: path.resolve(__dirname, 'src/views/index.ts'),
|
views: path.resolve(__dirname, 'src/views/index.ts'),
|
||||||
icons: path.resolve(__dirname, 'src/assets/icons'),
|
icons: path.resolve(__dirname, 'src/assets/icons'),
|
||||||
images: path.resolve(__dirname, 'src/assets/images'),
|
images: path.resolve(__dirname, 'src/assets/images'),
|
||||||
maps: path.resolve(__dirname, 'src/public/maps'),
|
|
||||||
classes: path.resolve(__dirname, 'src/classes/index.ts'),
|
classes: path.resolve(__dirname, 'src/classes/index.ts'),
|
||||||
fonts: path.resolve(__dirname, 'src/assets/fonts'),
|
fonts: path.resolve(__dirname, 'src/assets/fonts'),
|
||||||
utils: path.resolve(__dirname, 'src/utils/index.ts'),
|
utils: path.resolve(__dirname, 'src/utils/index.ts'),
|
||||||
@@ -95,6 +94,7 @@ module.exports = configure((ctx) => ({
|
|||||||
transpileDependencies: [
|
transpileDependencies: [
|
||||||
/quasar-ui-qcalendar[\\/]src/
|
/quasar-ui-qcalendar[\\/]src/
|
||||||
],
|
],
|
||||||
|
devtool: 'source-map',
|
||||||
|
|
||||||
chainWebpack(chain, { isServer, isClient }) {
|
chainWebpack(chain, { isServer, isClient }) {
|
||||||
chain.resolve.alias
|
chain.resolve.alias
|
||||||
@@ -108,7 +108,6 @@ module.exports = configure((ctx) => ({
|
|||||||
.set('@css', path.resolve(__dirname, 'src/public/css/variables.scss'))
|
.set('@css', path.resolve(__dirname, 'src/public/css/variables.scss'))
|
||||||
.set('@icons', path.resolve(__dirname, 'src/public/icons/*'))
|
.set('@icons', path.resolve(__dirname, 'src/public/icons/*'))
|
||||||
.set('@images', path.resolve(__dirname, 'src/public/images/*'))
|
.set('@images', path.resolve(__dirname, 'src/public/images/*'))
|
||||||
.set('@maps', path.resolve(__dirname, 'src/public/maps/*'))
|
|
||||||
.set('@classes', path.resolve(__dirname, 'src/classes/index.ts'))
|
.set('@classes', path.resolve(__dirname, 'src/classes/index.ts'))
|
||||||
.set('@utils', path.resolve(__dirname, 'src/utils/index.ts'))
|
.set('@utils', path.resolve(__dirname, 'src/utils/index.ts'))
|
||||||
.set('@utils', path.resolve(__dirname, 'src/utils/*'))
|
.set('@utils', path.resolve(__dirname, 'src/utils/*'))
|
||||||
@@ -149,9 +148,8 @@ module.exports = configure((ctx) => ({
|
|||||||
},
|
},
|
||||||
devServer: {
|
devServer: {
|
||||||
https: false,
|
https: false,
|
||||||
port: 8084,
|
port: 8088,
|
||||||
open: false, // opens browser window automatically
|
open: false, // opens browser window automatically
|
||||||
hot: false, // Disable hot module replacement
|
|
||||||
headers: {
|
headers: {
|
||||||
'Access-Control-Allow-Origin': '*',
|
'Access-Control-Allow-Origin': '*',
|
||||||
'Access-Control-Allow-Headers': '*',
|
'Access-Control-Allow-Headers': '*',
|
||||||
@@ -297,8 +295,8 @@ module.exports = configure((ctx) => ({
|
|||||||
workboxPluginMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
|
workboxPluginMode: 'InjectManifest', // 'GenerateSW' or 'InjectManifest'
|
||||||
workboxOptions: {}, // only for GenerateSW
|
workboxOptions: {}, // only for GenerateSW
|
||||||
extendGenerateSWOptions(cfg) {
|
extendGenerateSWOptions(cfg) {
|
||||||
cfg.skipWaiting = false
|
cfg.skipWaiting = true
|
||||||
cfg.clientsClaim = false
|
cfg.clientsClaim = true
|
||||||
},
|
},
|
||||||
// for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts])
|
// for the custom service worker ONLY (/src-pwa/custom-service-worker.[js|ts])
|
||||||
// if using workbox in InjectManifest mode
|
// if using workbox in InjectManifest mode
|
||||||
@@ -308,9 +306,9 @@ module.exports = configure((ctx) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
manifest: {
|
manifest: {
|
||||||
name: 'Riso',
|
name: 'Più che Buono',
|
||||||
short_name: 'Riso',
|
short_name: 'PiuCheBuono',
|
||||||
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.',
|
description: 'PiuCheBuono è un GAS e Bottega',
|
||||||
display: 'standalone',
|
display: 'standalone',
|
||||||
orientation: 'portrait',
|
orientation: 'portrait',
|
||||||
background_color: '#fff',
|
background_color: '#fff',
|
||||||
@@ -320,54 +318,54 @@ module.exports = configure((ctx) => ({
|
|||||||
start_url: "/?homescreen=1",
|
start_url: "/?homescreen=1",
|
||||||
icons: [
|
icons: [
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-512x512.png',
|
src: 'images/pcb-android-icon-512x512.png',
|
||||||
sizes: '512x512',
|
sizes: '512x512',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-384x384.png',
|
src: 'images/pcb-android-icon-384x384.png',
|
||||||
sizes: '384x384',
|
sizes: '384x384',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-192x192.png',
|
src: 'images/pcb-android-icon-192x192.png',
|
||||||
sizes: '192x192',
|
sizes: '192x192',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-144x144.png',
|
src: 'images/pcb-android-icon-144x144.png',
|
||||||
sizes: '144x144',
|
sizes: '144x144',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-android-icon-96x96.png',
|
src: 'images/pcb-android-icon-96x96.png',
|
||||||
sizes: '96x96',
|
sizes: '96x96',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-120x120.png',
|
src: 'images/pcb-apple-icon-120x120.png',
|
||||||
sizes: '120x120',
|
sizes: '120x120',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-144x144.png',
|
src: 'images/pcb-apple-icon-144x144.png',
|
||||||
sizes: '144x144',
|
sizes: '144x144',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-152x152.png',
|
src: 'images/pcb-apple-icon-152x152.png',
|
||||||
sizes: '152x152',
|
sizes: '152x152',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
src: 'images/riso-apple-icon-180x180.png',
|
src: 'images/pcb-apple-icon-180x180.png',
|
||||||
sizes: '180x180',
|
sizes: '180x180',
|
||||||
type: 'image/png',
|
type: 'image/png',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
related_applications: [{
|
related_applications: [{
|
||||||
"platform": "webapp",
|
"platform": "webapp",
|
||||||
"url": "https://www.riso.app/manifest.json"
|
"url": "https://www.piuchebuono.app/manifest.json"
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -402,7 +400,7 @@ module.exports = configure((ctx) => ({
|
|||||||
builder: {
|
builder: {
|
||||||
// https://www.electron.build/configuration/configuration
|
// https://www.electron.build/configuration/configuration
|
||||||
|
|
||||||
appId: 'Riso',
|
appId: 'PiuCheBuono',
|
||||||
},
|
},
|
||||||
|
|
||||||
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
|
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
|
||||||
|
|||||||
@@ -468,6 +468,7 @@ self.addEventListener('sync', function (event) {
|
|||||||
let table = multiparams[1]
|
let table = multiparams[1]
|
||||||
let method = multiparams[2]
|
let method = multiparams[2]
|
||||||
let token = multiparams[3]
|
let token = multiparams[3]
|
||||||
|
let refreshToken = multiparams[4]
|
||||||
// let lang = multiparams[3]
|
// let lang = multiparams[3]
|
||||||
|
|
||||||
if (cmd === 'sync-todos') {
|
if (cmd === 'sync-todos') {
|
||||||
@@ -477,6 +478,7 @@ self.addEventListener('sync', function (event) {
|
|||||||
headers.append('content-Type', 'application/json')
|
headers.append('content-Type', 'application/json')
|
||||||
headers.append('Accept', 'application/json')
|
headers.append('Accept', 'application/json')
|
||||||
headers.append('x-auth', token)
|
headers.append('x-auth', token)
|
||||||
|
headers.append('x-refrTok', refreshToken)
|
||||||
|
|
||||||
|
|
||||||
// console.log('A1) INIZIO.............................................................');
|
// console.log('A1) INIZIO.............................................................');
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ function handle(status: number, exclude: number[]) {
|
|||||||
return exclude.find(o => o === status) === undefined
|
return exclude.find(o => o === status) === undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function UseAxios(router: any) { // VueRouter
|
export function UseAxios(router: any) { // VueRouter
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@@ -42,10 +43,10 @@ export function UseAxios(router: any) { // VueRouter
|
|||||||
return config
|
return config
|
||||||
})
|
})
|
||||||
|
|
||||||
axios.interceptors.response.use(undefined, (config: AxiosError) => {
|
axios.interceptors.response.use(undefined, (error: AxiosError) => {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const { response } = config
|
const { response } = error
|
||||||
const exclude = (<IRequestConfig>config.config).ignore || []
|
const exclude = (<IRequestConfig>error.config).ignore || []
|
||||||
|
|
||||||
if (response) {
|
if (response) {
|
||||||
if (response.status === 401 && handle(response.status, exclude)) {
|
if (response.status === 401 && handle(response.status, exclude)) {
|
||||||
@@ -59,10 +60,11 @@ export function UseAxios(router: any) { // VueRouter
|
|||||||
|
|
||||||
if (response.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN && handle(response.status, exclude)) {
|
if (response.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN && handle(response.status, exclude)) {
|
||||||
window.setTimeout(() => router.replace('/forbidden'), 200)
|
window.setTimeout(() => router.replace('/forbidden'), 200)
|
||||||
|
// } else if (response.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return config
|
return error
|
||||||
})
|
})
|
||||||
|
|
||||||
initialized = true
|
initialized = true
|
||||||
|
|||||||
@@ -4,47 +4,40 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<q-card class="dialog_card q-mb-lg" v-if="myrec">
|
<q-card class="dialog_card q-mb-lg" v-if="myrec">
|
||||||
<q-footer
|
<q-footer class="bg-white small-screen-only text-center" bordered>
|
||||||
class="bg-white small-screen-only text-center"
|
|
||||||
bordered
|
|
||||||
>
|
|
||||||
<q-btn push rounded color="primary" icon="close" label="Chiudi" v-close-popup></q-btn>
|
<q-btn push rounded color="primary" icon="close" label="Chiudi" v-close-popup></q-btn>
|
||||||
|
|
||||||
</q-footer>
|
</q-footer>
|
||||||
<q-bar dense class="bg-primary text-white">
|
<q-bar dense class="bg-primary text-white">
|
||||||
{{ myrec.title }} ({{ myrec.groupname }})
|
{{ myrec.title }} ({{ myrec.groupname }})
|
||||||
<q-space/>
|
<q-space />
|
||||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||||
</q-bar>
|
</q-bar>
|
||||||
<q-card-section class="inset-shadow">
|
<q-card-section class="inset-shadow">
|
||||||
<!-- Per ora visualizzo solo la Prima Immagine -->
|
<!-- Per ora visualizzo solo la Prima Immagine -->
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
|
|
||||||
<q-img
|
<q-img
|
||||||
v-if="tools.getValue(myrec, 'photos', '')"
|
v-if="tools.getValue(myrec, 'photos', '')"
|
||||||
:src="tools.getFullFileName(tools.getValue(myrec, 'photos', ''), table, myrec.username, myrec.groupname)"
|
:src="tools.getFullFileName(tools.getValue(myrec, 'photos', ''), table, myrec.username, myrec.groupname)"
|
||||||
class="img"
|
class="img"
|
||||||
alt="immagine del gruppo"></q-img>
|
alt="immagine del gruppo"
|
||||||
|
></q-img>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--:title="t(mycol.label_trans)"-->
|
<!--:title="t(mycol.label_trans)"-->
|
||||||
|
|
||||||
<div v-for="(mycol, index) of col" :key="index">
|
<div v-for="(mycol, index) of col" :key="index">
|
||||||
<div
|
<div
|
||||||
v-if="(mycol.visible && (tools.checkIfShowField(mycol, tools.TIPOVIS_SHOW_RECORD, false, tools.getValue(myrec, mycol.field, mycol.subfield))))">
|
v-if="(mycol.visible && (tools.checkIfShowField(mycol, tools.TIPOVIS_SHOW_RECORD, false, tools.getValue(myrec, mycol.field, mycol.subfield))))"
|
||||||
<div v-if="mycol.fieldtype === costanti.FieldType.html && tools.getValue(myrec, mycol.field, mycol.subfield)">
|
>
|
||||||
<div class="note-bacheca"
|
<div
|
||||||
v-html="tools.getValue(myrec, mycol.field, mycol.subfield)">
|
v-if="mycol.fieldtype === costanti.FieldType.html && tools.getValue(myrec, mycol.field, mycol.subfield)"
|
||||||
|
>
|
||||||
</div>
|
<div class="note-bacheca" v-html="tools.getValue(myrec, mycol.field, mycol.subfield)"></div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="mycol.name === 'name'">
|
<div v-else-if="mycol.name === 'name'">
|
||||||
<div class="text-bacheca">
|
<div class="text-bacheca">{{ tools.getValue(myrec, mycol.field, mycol.subfield) }}</div>
|
||||||
{{ tools.getValue(myrec, mycol.field, mycol.subfield) }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div v-else-if="mycol.name === 'photos' && myrec.photos.length <= 1">
|
|
||||||
</div>
|
</div>
|
||||||
|
<div v-else-if="mycol.name === 'photos' && myrec.photos.length <= 1"></div>
|
||||||
<div v-else-if="mycol.name === 'admins'">
|
<div v-else-if="mycol.name === 'admins'">
|
||||||
<CMyFieldRec
|
<CMyFieldRec
|
||||||
title="Amministratori:"
|
title="Amministratori:"
|
||||||
@@ -53,9 +46,8 @@
|
|||||||
:rec="myrec"
|
:rec="myrec"
|
||||||
:field="mycol.field"
|
:field="mycol.field"
|
||||||
:canEdit="false"
|
:canEdit="false"
|
||||||
:canModify="false">
|
:canModify="false"
|
||||||
</CMyFieldRec>
|
></CMyFieldRec>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<CMyFieldRec
|
<CMyFieldRec
|
||||||
v-else
|
v-else
|
||||||
@@ -64,30 +56,35 @@
|
|||||||
:rec="myrec"
|
:rec="myrec"
|
||||||
:field="mycol.field"
|
:field="mycol.field"
|
||||||
:canEdit="false"
|
:canEdit="false"
|
||||||
:canModify="false">
|
:canModify="false"
|
||||||
</CMyFieldRec>
|
></CMyFieldRec>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row q-ma-sm q-pa-sm justify-center">
|
<div class="row q-ma-sm q-pa-sm justify-center">
|
||||||
<div class="q-ma-sm">
|
<div class="q-ma-sm">
|
||||||
<q-btn
|
<q-btn
|
||||||
icon="far fa-file-alt" label="Apri" color="primary" text-color="white"
|
icon="far fa-file-alt"
|
||||||
|
label="Apri"
|
||||||
|
color="primary"
|
||||||
|
text-color="white"
|
||||||
:to="tools.getToByCol(col, table, myrec)"
|
:to="tools.getToByCol(col, table, myrec)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="q-ma-sm">
|
<div class="q-ma-sm">
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="myrec._id"
|
v-if="myrec._id"
|
||||||
:text-color="$q.dark.isActive ? `white` : `black`" icon="fas fa-link"
|
:text-color="$q.dark.isActive ? `white` : `black`"
|
||||||
|
icon="fas fa-link"
|
||||||
label="Condividi"
|
label="Condividi"
|
||||||
@click="condividipag"></q-btn>
|
@click="condividipag"
|
||||||
|
></q-btn>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<br><br>
|
<br />
|
||||||
|
<br />
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
|
|
||||||
</q-card>
|
</q-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -95,6 +92,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import './CMyCardGrpPopup.scss';
|
@import "./CMyCardGrpPopup.scss";
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,8 @@ export default defineComponent({
|
|||||||
|
|
||||||
const neworder = ref(<number | undefined>0)
|
const neworder = ref(<number | undefined>0)
|
||||||
|
|
||||||
const myel = toRef(props, 'myelem')
|
const myel = ref(<IMyElem>{})
|
||||||
|
|
||||||
const newtype = ref(<any>'')
|
const newtype = ref(<any>'')
|
||||||
|
|
||||||
const isAppRunning = computed(() => globalStore.isAppRunning )
|
const isAppRunning = computed(() => globalStore.isAppRunning )
|
||||||
@@ -170,7 +171,7 @@ export default defineComponent({
|
|||||||
const newrec = props.myelem
|
const newrec = props.myelem
|
||||||
|
|
||||||
newrec._id = undefined
|
newrec._id = undefined
|
||||||
newrec.order = order ? order : newrec.order! + 10
|
newrec.order = order ? order : (newrec.order! + 10)
|
||||||
|
|
||||||
globalStore.addNewElem($q, t, newrec)
|
globalStore.addNewElem($q, t, newrec)
|
||||||
}
|
}
|
||||||
@@ -204,6 +205,9 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
function mounted() {
|
function mounted() {
|
||||||
|
console.log('mounted elem ')
|
||||||
|
console.log(props.myelem.type)
|
||||||
|
myel.value = props.myelem
|
||||||
neworder.value = props.myelem.order
|
neworder.value = props.myelem.order
|
||||||
|
|
||||||
if (props.myelem)
|
if (props.myelem)
|
||||||
@@ -240,7 +244,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
function showFit() {
|
function showFit() {
|
||||||
if (props.myelem.type)
|
if (props.myelem && props.myelem.type)
|
||||||
return [shared_consts.ELEMTYPE.TEXT].includes(props.myelem.type)
|
return [shared_consts.ELEMTYPE.TEXT].includes(props.myelem.type)
|
||||||
else
|
else
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"
|
"
|
||||||
@click="clickOnElem"
|
@click="clickOnElem"
|
||||||
>
|
>
|
||||||
<div>
|
<div v-if="myel.type">
|
||||||
<div v-if="myel.type === shared_consts.ELEMTYPE.TEXT">
|
<div v-if="myel.type === shared_consts.ELEMTYPE.TEXT">
|
||||||
<transition
|
<transition
|
||||||
appear
|
appear
|
||||||
@@ -636,7 +636,7 @@
|
|||||||
rounded
|
rounded
|
||||||
size="md"
|
size="md"
|
||||||
color="primary"
|
color="primary"
|
||||||
to="/registrati/" + tools.getInvitante()
|
:to="`/registrati/${tools.getInvitante()}`"
|
||||||
:label="$t('reg.submit')"
|
:label="$t('reg.submit')"
|
||||||
>
|
>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
|
|||||||
@@ -90,11 +90,12 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
|
|
||||||
function load() {
|
function load() {
|
||||||
// console.log('load', mypathin.value)
|
console.log('load', mypathin.value)
|
||||||
|
|
||||||
if (mypathin.value !== '') {
|
if (mypathin.value !== '') {
|
||||||
globalStore.loadPage('/' + mypathin.value, 'cmypageelem').then(ris => {
|
globalStore.loadPage('/' + mypathin.value, 'cmypageelem').then(ris => {
|
||||||
rec.value = ris
|
rec.value = ris
|
||||||
|
console.log('LoadPage', ris)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
@click="visuEditor = false; selElem = {};"
|
@click="visuEditor = false; selElem = {};"
|
||||||
></q-btn>
|
></q-btn>
|
||||||
</q-bar>
|
</q-bar>
|
||||||
|
|
||||||
<CMyEditElem
|
<CMyEditElem
|
||||||
:myelem="selElem"
|
:myelem="selElem"
|
||||||
:editOn="true"
|
:editOn="true"
|
||||||
@@ -75,6 +76,7 @@
|
|||||||
|
|
||||||
<div v-for="(myelem, ind) in myelems" :key="ind">
|
<div v-for="(myelem, ind) in myelems" :key="ind">
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<CMyElem
|
<CMyElem
|
||||||
v-if="(myelem.active || editOn) && !!rec.path"
|
v-if="(myelem.active || editOn) && !!rec.path"
|
||||||
:myelem="myelem"
|
:myelem="myelem"
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ const msg_website_enUs = {
|
|||||||
products: {
|
products: {
|
||||||
quantity: 'Quantità',
|
quantity: 'Quantità',
|
||||||
quantityAvailable: 'Disponibili',
|
quantityAvailable: 'Disponibili',
|
||||||
|
stockQty: 'In Magazzino',
|
||||||
|
stockBloccatiQty: 'Bloccati In Magazzino',
|
||||||
weight: 'Peso',
|
weight: 'Peso',
|
||||||
stars: 'Voto',
|
stars: 'Voto',
|
||||||
color: 'Colore',
|
color: 'Colore',
|
||||||
@@ -36,6 +38,7 @@ const msg_website_enUs = {
|
|||||||
productslist: 'Lista Prodotti',
|
productslist: 'Lista Prodotti',
|
||||||
collabora: 'Collabora',
|
collabora: 'Collabora',
|
||||||
storehouses: 'Magazzino',
|
storehouses: 'Magazzino',
|
||||||
|
providers: 'Fornitori',
|
||||||
departments: 'Uffici',
|
departments: 'Uffici',
|
||||||
orders: 'Ordini Ricevuti',
|
orders: 'Ordini Ricevuti',
|
||||||
orders2: 'Ordini Ricevuti',
|
orders2: 'Ordini Ricevuti',
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ const msg_website_es = {
|
|||||||
products: {
|
products: {
|
||||||
quantity: 'Quantità',
|
quantity: 'Quantità',
|
||||||
quantityAvailable: 'Disponibili',
|
quantityAvailable: 'Disponibili',
|
||||||
|
stockQty: 'In Magazzino',
|
||||||
weight: 'Peso',
|
weight: 'Peso',
|
||||||
stars: 'Voto',
|
stars: 'Voto',
|
||||||
color: 'Colore',
|
color: 'Colore',
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
const msg_website_it = {
|
const msg_website_it = {
|
||||||
ws: {
|
ws: {
|
||||||
sitename: 'Riso',
|
sitename: 'Più che Buono',
|
||||||
siteshortname: 'RISO',
|
siteshortname: 'Più che Buono',
|
||||||
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.',
|
description: '',
|
||||||
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
|
keywords: '',
|
||||||
},
|
},
|
||||||
hours: {
|
hours: {
|
||||||
descr: 'Descrizione',
|
descr: 'Descrizione',
|
||||||
@@ -16,23 +16,35 @@ const msg_website_it = {
|
|||||||
pages: {
|
pages: {
|
||||||
home: 'Home',
|
home: 'Home',
|
||||||
profile: 'Profilo',
|
profile: 'Profilo',
|
||||||
|
install_site: 'Installa Sito',
|
||||||
profile2: 'ProfiloU',
|
profile2: 'ProfiloU',
|
||||||
mypage2: 'mypage2',
|
mypage2: 'mypage2',
|
||||||
myservice2: 'myservice2',
|
myservice2: 'myservice2',
|
||||||
myhosps2: 'myhosps2',
|
myhosps2: 'myhosps2',
|
||||||
mygood2: 'mygood2',
|
mygood2: 'mygood2',
|
||||||
|
catalogo: 'Catalogo',
|
||||||
fundraising: 'Sostieni il Progetto',
|
fundraising: 'Sostieni il Progetto',
|
||||||
notifs: 'Configura le Notifiche',
|
notifs: 'Configura le Notifiche',
|
||||||
unsubscribe: 'Disiscriviti',
|
unsubscribe: 'Disiscriviti',
|
||||||
|
unsubscribe_user: 'Disiscriviti User',
|
||||||
test: 'Test',
|
test: 'Test',
|
||||||
projects: 'Progetti',
|
projects: 'Progetti',
|
||||||
report: 'Report Ore',
|
report: 'Report Ore',
|
||||||
producer: 'Produttore',
|
producer: 'Produttore',
|
||||||
orderinfo: 'Ordini Effettuati',
|
orderinfo: 'Ordini Effettuati',
|
||||||
products: 'Prodotti',
|
products: 'Prodotti',
|
||||||
|
cash: 'Cassa',
|
||||||
|
productInfos: 'Info Prodotti',
|
||||||
|
listinoprodotti: 'Listino Prodotti',
|
||||||
productslist: 'Lista Prodotti',
|
productslist: 'Lista Prodotti',
|
||||||
collabora: 'Collabora',
|
collabora: 'Collabora',
|
||||||
|
categories: 'Categorie',
|
||||||
storehouses: 'Magazzino',
|
storehouses: 'Magazzino',
|
||||||
|
providers: 'Fornitori',
|
||||||
|
catprods: 'Categorie',
|
||||||
|
subcatprods: 'Sotto-Categorie',
|
||||||
|
gasordine: 'Gas Ordine',
|
||||||
|
scontisticas: 'Scontistica',
|
||||||
departments: 'Uffici',
|
departments: 'Uffici',
|
||||||
orders: 'Ordini Ricevuti',
|
orders: 'Ordini Ricevuti',
|
||||||
orders2: 'Ordini Ricevuti',
|
orders2: 'Ordini Ricevuti',
|
||||||
@@ -121,9 +133,11 @@ const msg_website_it = {
|
|||||||
only_residenti: 'Solo Residenti',
|
only_residenti: 'Solo Residenti',
|
||||||
only_consiglio: 'Solo Consiglieri',
|
only_consiglio: 'Solo Consiglieri',
|
||||||
color: 'Colore',
|
color: 'Colore',
|
||||||
|
gasordini: 'Gas Ordini',
|
||||||
|
gestoreordini: 'Gestore Ordini',
|
||||||
},
|
},
|
||||||
msg: {
|
msg: {
|
||||||
myAppName: 'Riso',
|
myAppName: 'Più che Buono',
|
||||||
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',
|
||||||
underconstruction: 'App in costruzione...',
|
underconstruction: 'App in costruzione...',
|
||||||
myDescriz: '',
|
myDescriz: '',
|
||||||
|
|||||||
@@ -7,30 +7,6 @@ import {
|
|||||||
import { func } from '@store/Modules/fieldsTable'
|
import { func } from '@store/Modules/fieldsTable'
|
||||||
|
|
||||||
|
|
||||||
// const SHOW_PROJINTHEMENU = false
|
|
||||||
//
|
|
||||||
// let arrlistafavourite = []
|
|
||||||
// let arrlistaprojtutti = []
|
|
||||||
// let arrlistaprojmiei = []
|
|
||||||
// if (SHOW_PROJINTHEMENU) {
|
|
||||||
// arrlistaprojtutti = Projects.getters.listaprojects(RouteNames.projectsall)
|
|
||||||
// arrlistaprojmiei = Projects.getters.listaprojects(RouteNames.myprojects)
|
|
||||||
// arrlistafavourite = Projects.getters.listaprojects(RouteNames.favouriteprojects)
|
|
||||||
// }
|
|
||||||
// PROGETTI -> FAVORITI :
|
|
||||||
|
|
||||||
// if (arrlistafavourite.length > 0) {
|
|
||||||
// arrMenu.push({
|
|
||||||
// icon: 'favorite_border',
|
|
||||||
// nametranslate: 'pages.' + RouteNames.favouriteprojects,
|
|
||||||
// urlroute: RouteNames.favouriteprojects,
|
|
||||||
// level_parent: 0.0,
|
|
||||||
// level_child: 0.5,
|
|
||||||
// routes2: arrlistafavourite,
|
|
||||||
// idelem: ''
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
|
|
||||||
const firstPage = {
|
const firstPage = {
|
||||||
active: true,
|
active: true,
|
||||||
order: 5,
|
order: 5,
|
||||||
@@ -57,72 +33,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},
|
||||||
{
|
/*{
|
||||||
active: true,
|
|
||||||
order: 400,
|
|
||||||
path: '/test',
|
|
||||||
materialIcon: 'fas fa-test',
|
|
||||||
name: 'mypages.test',
|
|
||||||
component: () => import('@/views/testServer/testServer.vue'),
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 12,
|
|
||||||
path: '/goods',
|
|
||||||
materialIcon: 'fas fa-tshirt',
|
|
||||||
name: 'mypages.goods',
|
|
||||||
component: () => import('@/root/goods/goods.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/services',
|
|
||||||
materialIcon: 'fas fa-house-user',
|
|
||||||
name: 'mypages.services',
|
|
||||||
component: () => import('@/root/services/services.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/provapao',
|
|
||||||
materialIcon: 'fas fa-house-user',
|
|
||||||
name: 'mypages.provapao',
|
|
||||||
component: () => import('@/root/provapao/provapao.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: false,
|
|
||||||
infooter: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 15,
|
|
||||||
path: '/hosps',
|
|
||||||
materialIcon: 'fas fa-bed',
|
|
||||||
name: 'mypages.hosp',
|
|
||||||
component: () => import('@/root/hosp/hosp.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: site.confpages && site.confpages.enableCircuits,
|
|
||||||
order: 16,
|
|
||||||
path: '/circuits',
|
|
||||||
materialIcon: 'fas fa-coins',
|
|
||||||
name: 'mypages.circuits',
|
|
||||||
component: () => import('@/views/user/mycircuits/mycircuits.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
active: true,
|
||||||
order: 20,
|
order: 20,
|
||||||
path: '/events',
|
path: '/events',
|
||||||
@@ -132,6 +43,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
|
},*/
|
||||||
|
{
|
||||||
|
active: site.confpages && site.confpages.showProfile,
|
||||||
|
order: 120,
|
||||||
|
path: '/myprofile',
|
||||||
|
materialIcon: 'fas fa-user',
|
||||||
|
name: 'pages.profile',
|
||||||
|
component: () => import('@/views/user/myprofile/myprofile.vue'),
|
||||||
|
meta: { requiresAuth: true },
|
||||||
|
inmenu: true,
|
||||||
|
infooter: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
@@ -145,18 +67,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
infooter: false,
|
infooter: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: site.confpages && site.confpages.showProfile,
|
||||||
order: 120,
|
|
||||||
path: '/myprofile',
|
|
||||||
materialIcon: 'fas fa-user',
|
|
||||||
name: 'pages.profile',
|
|
||||||
component: () => import('@/views/user/myprofile/myprofile.vue'),
|
|
||||||
meta: { requiresAuth: true },
|
|
||||||
inmenu: true,
|
|
||||||
infooter: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
active: true,
|
|
||||||
order: 120,
|
order: 120,
|
||||||
path: '/editprofile',
|
path: '/editprofile',
|
||||||
materialIcon: 'fas fa-user',
|
materialIcon: 'fas fa-user',
|
||||||
@@ -167,7 +78,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
infooter: false,
|
infooter: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: site.confpages && site.confpages.showiscrittiMenu,
|
||||||
order: 130,
|
order: 130,
|
||||||
path: '/friends',
|
path: '/friends',
|
||||||
materialIcon: 'fas fa-user-friends',
|
materialIcon: 'fas fa-user-friends',
|
||||||
@@ -177,6 +88,19 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: true,
|
infooter: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
active: site.confpages && site.confpages.enableCircuits,
|
||||||
|
order: 16,
|
||||||
|
path: '/circuits',
|
||||||
|
materialIcon: 'fas fa-coins',
|
||||||
|
name: 'mypages.circuits',
|
||||||
|
component: () => import('@/views/user/mycircuits/mycircuits.vue'),
|
||||||
|
meta: { requiresAuth: true },
|
||||||
|
inmenu: true,
|
||||||
|
infooter: true,
|
||||||
|
onlyAdmin: true,
|
||||||
|
onlyManager: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
active: site.confpages && site.confpages.enableGroups,
|
active: site.confpages && site.confpages.enableGroups,
|
||||||
order: 132,
|
order: 132,
|
||||||
@@ -187,6 +111,8 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
|||||||
meta: { requiresAuth: true },
|
meta: { requiresAuth: true },
|
||||||
inmenu: true,
|
inmenu: true,
|
||||||
infooter: false,
|
infooter: false,
|
||||||
|
onlyAdmin: true,
|
||||||
|
onlyManager: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
active: true,
|
active: true,
|
||||||
|
|||||||
@@ -247,6 +247,7 @@ export interface IConfPages {
|
|||||||
enableTodos: boolean
|
enableTodos: boolean
|
||||||
enableRegByBot: boolean
|
enableRegByBot: boolean
|
||||||
enableRegMultiChoice: boolean
|
enableRegMultiChoice: boolean
|
||||||
|
enableTokenExpired: boolean
|
||||||
enableDebugOn: boolean
|
enableDebugOn: boolean
|
||||||
enabledRegNeedTelegram: boolean
|
enabledRegNeedTelegram: boolean
|
||||||
showViewGroups: boolean
|
showViewGroups: boolean
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ export interface IToken {
|
|||||||
access: string
|
access: string
|
||||||
// browser: string
|
// browser: string
|
||||||
token: string
|
token: string
|
||||||
|
refreshToken: string
|
||||||
data_login: Date
|
data_login: Date
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -633,6 +633,16 @@
|
|||||||
:type="costanti.FieldType.boolean"
|
:type="costanti.FieldType.boolean"
|
||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
|
<CMyFieldDb
|
||||||
|
table="sites"
|
||||||
|
:title="$t('confpages.enableTokenExpired')"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="confpages"
|
||||||
|
mysubkey="enableTokenExpired"
|
||||||
|
:type="costanti.FieldType.boolean"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
table="sites"
|
table="sites"
|
||||||
:title="$t('confpages.enableDebugOn')"
|
:title="$t('confpages.enableDebugOn')"
|
||||||
|
|||||||
@@ -436,7 +436,7 @@ export default defineComponent({
|
|||||||
strris += addfield(col, 'link', rec, {}); col++;
|
strris += addfield(col, 'link', rec, {}); col++;
|
||||||
|
|
||||||
strris += addfield(col, 'perc_iva', rec, {}); col++;
|
strris += addfield(col, 'perc_iva', rec, {}); col++;
|
||||||
strris += addfield(col, 'price_acquistato', rec, { isnumero: true }); col++;
|
strris += addfield(col, 'price_acquistato', rec, { isnumero: true, iseuro: true }); col++;
|
||||||
strris += addfield(col, 'minBuyQty', rec, { isnumero: true }); col++;
|
strris += addfield(col, 'minBuyQty', rec, { isnumero: true }); col++;
|
||||||
strris += addfield(col, 'minStepQty', rec, { isnumero: true }); col++;
|
strris += addfield(col, 'minStepQty', rec, { isnumero: true }); col++;
|
||||||
|
|
||||||
|
|||||||
@@ -1583,6 +1583,7 @@ const msg_it = {
|
|||||||
enableTodos: 'Mostra Todos',
|
enableTodos: 'Mostra Todos',
|
||||||
enableRegByBot: 'Registratione By Bot',
|
enableRegByBot: 'Registratione By Bot',
|
||||||
enableRegMultiChoice: 'Registratione a Scelta tra Email e Telegram',
|
enableRegMultiChoice: 'Registratione a Scelta tra Email e Telegram',
|
||||||
|
enableTokenExpired: 'Attiva Scadenza Token',
|
||||||
enableDebugOn: 'Attiva Debug',
|
enableDebugOn: 'Attiva Debug',
|
||||||
enabledRegNeedTelegram: 'Reg con Telegram',
|
enabledRegNeedTelegram: 'Reg con Telegram',
|
||||||
showViewGroups: 'Bott. Gruppi',
|
showViewGroups: 'Bott. Gruppi',
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ async function Request(type: string, path: string, payload: any): Promise<Types.
|
|||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'x-auth': userStore.x_auth_token,
|
'x-auth': userStore.x_auth_token,
|
||||||
|
'x-refrTok': userStore.refreshToken,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
ricevuto = true
|
ricevuto = true
|
||||||
@@ -75,20 +76,24 @@ async function Request(type: string, path: string, payload: any): Promise<Types.
|
|||||||
|
|
||||||
if (response && (response.status === 200)) {
|
if (response && (response.status === 200)) {
|
||||||
let x_auth_token = ''
|
let x_auth_token = ''
|
||||||
|
let refreshToken = ''
|
||||||
try {
|
try {
|
||||||
if (setAuthToken || (path === '/users/login')) {
|
if (setAuthToken || (path === '/users/login')) {
|
||||||
x_auth_token = String(response.headers['x-auth'])
|
x_auth_token = String(response.headers['x-auth'])
|
||||||
|
refreshToken = String(response.headers['x-refrTok'])
|
||||||
|
|
||||||
if (x_auth_token === '') {
|
if (x_auth_token === '') {
|
||||||
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
|
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
|
||||||
}
|
}
|
||||||
if (setAuthToken) {
|
if (setAuthToken) {
|
||||||
userStore.UpdatePwd(x_auth_token)
|
userStore.UpdatePwd(x_auth_token, refreshToken)
|
||||||
localStorage.setItem(toolsext.localStorage.token, x_auth_token)
|
localStorage.setItem(toolsext.localStorage.token, x_auth_token)
|
||||||
|
localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken)
|
||||||
}
|
}
|
||||||
|
|
||||||
userStore.setAuth(x_auth_token)
|
userStore.setAuth(x_auth_token, refreshToken)
|
||||||
localStorage.setItem(toolsext.localStorage.token, x_auth_token)
|
localStorage.setItem(toolsext.localStorage.token, x_auth_token)
|
||||||
|
localStorage.setItem(toolsext.localStorage.refreshToken, refreshToken)
|
||||||
}
|
}
|
||||||
|
|
||||||
globalStore.setStateConnection(ricevuto ? 'online' : 'offline')
|
globalStore.setStateConnection(ricevuto ? 'online' : 'offline')
|
||||||
@@ -96,7 +101,7 @@ async function Request(type: string, path: string, payload: any): Promise<Types.
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (setAuthToken) {
|
if (setAuthToken) {
|
||||||
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
|
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
|
||||||
userStore.setAuth('')
|
userStore.setAuth('', '')
|
||||||
}
|
}
|
||||||
globalStore.setStateConnection(ricevuto ? 'online' : 'offline')
|
globalStore.setStateConnection(ricevuto ? 'online' : 'offline')
|
||||||
return Promise.reject(new Types.AxiosError(serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN, null, toolsext.ERR_AUTHENTICATION))
|
return Promise.reject(new Types.AxiosError(serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN, null, toolsext.ERR_AUTHENTICATION))
|
||||||
@@ -112,6 +117,7 @@ async function Request(type: string, path: string, payload: any): Promise<Types.
|
|||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'x-auth': userStore.x_auth_token,
|
'x-auth': userStore.x_auth_token,
|
||||||
|
'x-refrTok': userStore.refreshToken,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
ricevuto = true
|
ricevuto = true
|
||||||
@@ -122,6 +128,7 @@ async function Request(type: string, path: string, payload: any): Promise<Types.
|
|||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'multipart/form-data',
|
'Content-Type': 'multipart/form-data',
|
||||||
'x-auth': userStore.x_auth_token,
|
'x-auth': userStore.x_auth_token,
|
||||||
|
'x-refrTok': userStore.refreshToken,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
ricevuto = true
|
ricevuto = true
|
||||||
|
|||||||
@@ -85,6 +85,38 @@ export const Api = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
async refreshToken() {
|
||||||
|
// Implementa la logica per ottenere un nuovo token utilizzando il refreshToken
|
||||||
|
// Potrebbe essere una chiamata al server simile a sendRequest()
|
||||||
|
// Se il refreshToken è valido, salva il nuovo token e restituiscilo
|
||||||
|
// Altrimenti, gestisci il caso di refreshToken scaduto o invalido, e.g., redirecting to login
|
||||||
|
|
||||||
|
try {
|
||||||
|
console.log('refreshToken')
|
||||||
|
const response = await axios.post('/users/newTok', {
|
||||||
|
refreshToken: localStorage.getItem(toolsext.localStorage.refreshToken)
|
||||||
|
});
|
||||||
|
|
||||||
|
// Save the new access token in local storage
|
||||||
|
localStorage.setItem(toolsext.localStorage.token, response.data.accessToken);
|
||||||
|
|
||||||
|
// Reset the refresh token if it was reset by the server
|
||||||
|
if (response.data.refreshToken) {
|
||||||
|
localStorage.setItem(toolsext.localStorage.refreshToken, response.data.refreshToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the new access token
|
||||||
|
return response.data.accessToken;
|
||||||
|
} catch (error) {
|
||||||
|
// Handle the error, for example by logging out the user
|
||||||
|
console.error(error);
|
||||||
|
localStorage.removeItem(toolsext.localStorage.token);
|
||||||
|
localStorage.removeItem(toolsext.localStorage.refreshToken);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
async SendReq(url: string, method: string, mydata: any, setAuthToken = false): Promise<Types.AxiosSuccess | Types.AxiosError> {
|
async SendReq(url: string, method: string, mydata: any, setAuthToken = false): Promise<Types.AxiosSuccess | Types.AxiosError> {
|
||||||
const mydataout = {
|
const mydataout = {
|
||||||
...mydata,
|
...mydata,
|
||||||
@@ -103,7 +135,7 @@ export const Api = {
|
|||||||
userStore.setResStatus(0)
|
userStore.setResStatus(0)
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
return new Promise((resolve, reject) => sendRequest(url, method, mydataout)
|
return new Promise((resolve, reject) => sendRequest(url, method, mydataout)
|
||||||
.then((res) => {
|
.then(async (res) => {
|
||||||
// console.log('status:', res.status)
|
// console.log('status:', res.status)
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@@ -121,9 +153,24 @@ export const Api = {
|
|||||||
// Forbidden
|
// Forbidden
|
||||||
// You probably is connectiong with other page...
|
// You probably is connectiong with other page...
|
||||||
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
|
userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
|
||||||
userStore.setAuth('')
|
userStore.setAuth('', '')
|
||||||
// $router.push('/signin')
|
// $router.push('/signin')
|
||||||
return reject({ code: toolsext.ERR_AUTHENTICATION })
|
return reject({ code: toolsext.ERR_AUTHENTICATION })
|
||||||
|
} else if (res.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) {
|
||||||
|
console.log('Token Expired')
|
||||||
|
// Prova ad ottenere un nuovo token di accesso
|
||||||
|
try {
|
||||||
|
// Se il token è scaduto, allora faccio la richiesta di un NUOVO TOKEN, passandogli refreshToken
|
||||||
|
const newAccessToken = await this.refreshToken();
|
||||||
|
userStore.setAuth(newAccessToken, userStore.refreshToken);
|
||||||
|
|
||||||
|
// Riprova l'originale SendReq con il nuovo token.
|
||||||
|
// Assicurati di evitare un loop infinito in caso di errori continui
|
||||||
|
return resolve(this.SendReq(url, method, mydata, setAuthToken));
|
||||||
|
} catch (error) {
|
||||||
|
// Gestisci errore di refresh token (es. redirect a signin)
|
||||||
|
return reject(error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tools.isDebug())
|
if (tools.isDebug())
|
||||||
@@ -162,7 +209,7 @@ export const Api = {
|
|||||||
let lettoqualcosa = false
|
let lettoqualcosa = false
|
||||||
|
|
||||||
// console.log('A1) INIZIO.............................................................')
|
// console.log('A1) INIZIO.............................................................')
|
||||||
return globalroutines( 'readall', tablesync, null)
|
return globalroutines('readall', tablesync, null)
|
||||||
.then((alldata) => {
|
.then((alldata) => {
|
||||||
if (alldata === undefined) {
|
if (alldata === undefined) {
|
||||||
console.log('alldata NON DEFINITA')
|
console.log('alldata NON DEFINITA')
|
||||||
@@ -184,10 +231,10 @@ export const Api = {
|
|||||||
.then((ris) => {
|
.then((ris) => {
|
||||||
ReceiveResponsefromServer(tablesync, nametab, method, ris.data)
|
ReceiveResponsefromServer(tablesync, nametab, method, ris.data)
|
||||||
lettoqualcosa = true
|
lettoqualcosa = true
|
||||||
return globalroutines( 'delete', tablesync, null, rec._id)
|
return globalroutines('delete', tablesync, null, rec._id)
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return globalroutines( 'delete', 'swmsg', null, mystrparam)
|
return globalroutines('delete', 'swmsg', null, mystrparam)
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
if (err.msgerr) {
|
if (err.msgerr) {
|
||||||
if (err.msgerr.message.includes('Failed to fetch') || err.msgerr.message.includes('Network Error')) {
|
if (err.msgerr.message.includes('Failed to fetch') || err.msgerr.message.includes('Network Error')) {
|
||||||
@@ -196,7 +243,7 @@ export const Api = {
|
|||||||
}
|
}
|
||||||
console.log(' [Alternative] !!!!!!!!!!!!!!! Error while sending data', err, errorfromserver, 'lettoqualcosa', lettoqualcosa)
|
console.log(' [Alternative] !!!!!!!!!!!!!!! Error while sending data', err, errorfromserver, 'lettoqualcosa', lettoqualcosa)
|
||||||
if (!errorfromserver) {
|
if (!errorfromserver) {
|
||||||
return globalroutines( 'delete', 'swmsg', null, mystrparam)
|
return globalroutines('delete', 'swmsg', null, mystrparam)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ export const serv_constants = {
|
|||||||
RIS_CODE_LOGIN_OK: 1,
|
RIS_CODE_LOGIN_OK: 1,
|
||||||
RIS_ISCRIZIONE_OK: 5,
|
RIS_ISCRIZIONE_OK: 5,
|
||||||
RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN: 403,
|
RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN: 403,
|
||||||
|
RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED: 408,
|
||||||
|
|
||||||
RIS_CODE_TOKEN_RESETPASSWORD_NOT_FOUND: -23,
|
RIS_CODE_TOKEN_RESETPASSWORD_NOT_FOUND: -23,
|
||||||
|
|
||||||
|
|||||||
@@ -4396,7 +4396,7 @@ export const tools = {
|
|||||||
},
|
},
|
||||||
getheaders() {
|
getheaders() {
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
return [{ name: 'x-auth', value: userStore.x_auth_token }]
|
return [{ name: 'x-auth', value: userStore.x_auth_token }, { name: 'x-refrTok', value: userStore.refreshToken }]
|
||||||
},
|
},
|
||||||
|
|
||||||
getextfile(filename: string) {
|
getextfile(filename: string) {
|
||||||
@@ -8510,8 +8510,12 @@ export const tools = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
getInvitante() {
|
getInvitante() {
|
||||||
const invitante = tools.getCookie(tools.APORTADOR_SOLIDARIO)
|
try {
|
||||||
return invitante ? invitante : ''
|
const invitante = tools.getCookie(tools.APORTADOR_SOLIDARIO, '')
|
||||||
|
return invitante ? invitante : ''
|
||||||
|
} catch (e) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
contieneSlash(str: string) {
|
contieneSlash(str: string) {
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ export const toolsext = {
|
|||||||
leftDrawerOpen: 'ldo',
|
leftDrawerOpen: 'ldo',
|
||||||
userId: 'uid',
|
userId: 'uid',
|
||||||
token: 'tk',
|
token: 'tk',
|
||||||
|
refreshToken: 'rt',
|
||||||
username: 'uname',
|
username: 'uname',
|
||||||
name: 'nm',
|
name: 'nm',
|
||||||
surname: 'sn',
|
surname: 'sn',
|
||||||
|
|||||||
@@ -196,6 +196,7 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
servercode: 0,
|
servercode: 0,
|
||||||
resStatus: 0,
|
resStatus: 0,
|
||||||
x_auth_token: '',
|
x_auth_token: '',
|
||||||
|
refreshToken: '',
|
||||||
isLogged: false,
|
isLogged: false,
|
||||||
isAdmin: false,
|
isAdmin: false,
|
||||||
isManager: false,
|
isManager: false,
|
||||||
@@ -803,6 +804,7 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
this.resStatus = 0
|
this.resStatus = 0
|
||||||
this.isLogged = false
|
this.isLogged = false
|
||||||
this.x_auth_token = ''
|
this.x_auth_token = ''
|
||||||
|
this.refreshToken = ''
|
||||||
|
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
@@ -1115,7 +1117,7 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
|
|
||||||
this.my.tokens = []
|
this.my.tokens = []
|
||||||
this.resetArrToken(this.my.tokens)
|
this.resetArrToken(this.my.tokens)
|
||||||
this.my.tokens.push({ access: 'auth', token: this.x_auth_token, data_login: tools.getDateNow() })
|
this.my.tokens.push({ access: 'auth', token: this.x_auth_token, refreshToken: this.refreshToken, data_login: tools.getDateNow() })
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('Error authUser: ' + e)
|
console.log('Error authUser: ' + e)
|
||||||
@@ -1139,6 +1141,7 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
if (myuser.profile !== undefined) tools.localStSetItem(toolsext.localStorage.img, (myuser.profile.img) ? String(myuser.profile.img) || '' : '')
|
if (myuser.profile !== undefined) tools.localStSetItem(toolsext.localStorage.img, (myuser.profile.img) ? String(myuser.profile.img) || '' : '')
|
||||||
else tools.localStSetItem(toolsext.localStorage.img, '')
|
else tools.localStSetItem(toolsext.localStorage.img, '')
|
||||||
localStorage.setItem(toolsext.localStorage.token, this.x_auth_token)
|
localStorage.setItem(toolsext.localStorage.token, this.x_auth_token)
|
||||||
|
localStorage.setItem(toolsext.localStorage.refreshToken, this.refreshToken)
|
||||||
localStorage.setItem(toolsext.localStorage.expirationDate, expirationDate.toString())
|
localStorage.setItem(toolsext.localStorage.expirationDate, expirationDate.toString())
|
||||||
tools.localStSetItem(toolsext.localStorage.isLogged, String(true))
|
tools.localStSetItem(toolsext.localStorage.isLogged, String(true))
|
||||||
tools.localStSetItem(toolsext.localStorage.verified_email, String(myuser.verified_email))
|
tools.localStSetItem(toolsext.localStorage.verified_email, String(myuser.verified_email))
|
||||||
@@ -1200,6 +1203,7 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
tools.localStSetItem(toolsext.localStorage.name, newuser.name)
|
tools.localStSetItem(toolsext.localStorage.name, newuser.name)
|
||||||
tools.localStSetItem(toolsext.localStorage.surname, newuser.surname)
|
tools.localStSetItem(toolsext.localStorage.surname, newuser.surname)
|
||||||
localStorage.setItem(toolsext.localStorage.token, this.x_auth_token)
|
localStorage.setItem(toolsext.localStorage.token, this.x_auth_token)
|
||||||
|
localStorage.setItem(toolsext.localStorage.refreshToken, this.refreshToken)
|
||||||
localStorage.setItem(toolsext.localStorage.expirationDate, expirationDate.toString())
|
localStorage.setItem(toolsext.localStorage.expirationDate, expirationDate.toString())
|
||||||
tools.localStSetItem(toolsext.localStorage.verified_email, String(false))
|
tools.localStSetItem(toolsext.localStorage.verified_email, String(false))
|
||||||
tools.localStSetItem(toolsext.localStorage.verified_by_aportador, String(false))
|
tools.localStSetItem(toolsext.localStorage.verified_by_aportador, String(false))
|
||||||
@@ -1223,12 +1227,13 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
UpdatePwd(x_auth_token: string) {
|
UpdatePwd(x_auth_token: string, refreshToken: string) {
|
||||||
this.x_auth_token = x_auth_token
|
this.x_auth_token = x_auth_token
|
||||||
|
this.refreshToken = refreshToken
|
||||||
if (!this.my.tokens) {
|
if (!this.my.tokens) {
|
||||||
this.my.tokens = []
|
this.my.tokens = []
|
||||||
}
|
}
|
||||||
this.my.tokens.push({ access: 'auth', token: x_auth_token, data_login: tools.getDateNow() })
|
this.my.tokens.push({ access: 'auth', token: x_auth_token, refreshToken, data_login: tools.getDateNow() })
|
||||||
},
|
},
|
||||||
|
|
||||||
setServerCode(num: number) {
|
setServerCode(num: number) {
|
||||||
@@ -1239,8 +1244,9 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
this.resStatus = status
|
this.resStatus = status
|
||||||
},
|
},
|
||||||
|
|
||||||
setAuth(x_auth_token: string) {
|
setAuth(x_auth_token: string, refreshToken: string) {
|
||||||
this.x_auth_token = x_auth_token
|
this.x_auth_token = x_auth_token
|
||||||
|
this.refreshToken = refreshToken
|
||||||
},
|
},
|
||||||
|
|
||||||
resetArrToken(arrtokens: IToken[]) {
|
resetArrToken(arrtokens: IToken[]) {
|
||||||
@@ -1297,7 +1303,7 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
},
|
},
|
||||||
|
|
||||||
async signin(router: Router, authData: ISigninOptions) {
|
async signin(router: Router, authData: ISigninOptions) {
|
||||||
console.log('LOGIN signin')
|
// console.log('LOGIN signin')
|
||||||
const globalStore = useGlobalStore()
|
const globalStore = useGlobalStore()
|
||||||
|
|
||||||
const options = {
|
const options = {
|
||||||
@@ -1324,7 +1330,7 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
|
|
||||||
let myres: any
|
let myres: any
|
||||||
|
|
||||||
console.log('executing login...')
|
// console.log('executing login...')
|
||||||
|
|
||||||
return await Api.SendReq('/users/login', 'POST', usertosend, true)
|
return await Api.SendReq('/users/login', 'POST', usertosend, true)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
@@ -1435,7 +1441,7 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
|
|
||||||
this.isLogged = isok && isLogged
|
this.isLogged = isok && isLogged
|
||||||
|
|
||||||
// console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged)
|
console.log('this.isLogged', this.isLogged, 'isok', isok, 'isLogged', isLogged)
|
||||||
|
|
||||||
if (globalStore.site.confpages && globalStore.site.confpages.enableTodos)
|
if (globalStore.site.confpages && globalStore.site.confpages.enableTodos)
|
||||||
await todos.dbLoad({ checkPending: true })
|
await todos.dbLoad({ checkPending: true })
|
||||||
@@ -1476,17 +1482,20 @@ export const useUserStore = defineStore('UserStore', {
|
|||||||
this.lang = tools.getItemLS(toolsext.localStorage.lang)
|
this.lang = tools.getItemLS(toolsext.localStorage.lang)
|
||||||
|
|
||||||
const token = localStorage.getItem(toolsext.localStorage.token)
|
const token = localStorage.getItem(toolsext.localStorage.token)
|
||||||
|
let refreshToken = localStorage.getItem(toolsext.localStorage.refreshToken)
|
||||||
|
if (!refreshToken)
|
||||||
|
refreshToken = ''
|
||||||
|
|
||||||
if (token) {
|
if (token) {
|
||||||
const expirationDateStr = localStorage.getItem(toolsext.localStorage.expirationDate)
|
this.setAuth(token, refreshToken)
|
||||||
const expirationDate = new Date(String(expirationDateStr))
|
if (globalStore.site.confpages.enableTokenExpired) {
|
||||||
const now = tools.getDateNow()
|
if (token && refreshToken) {
|
||||||
if (now < expirationDate) {
|
isLogged = true
|
||||||
this.setAuth(token)
|
} else {
|
||||||
isLogged = true
|
if (token) {
|
||||||
|
isLogged = true
|
||||||
} else {
|
}
|
||||||
// ++ ?? che fare qui
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
isLogged = tools.isLogged()
|
isLogged = tools.isLogged()
|
||||||
|
|||||||
@@ -180,6 +180,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
|||||||
enableTodos: false,
|
enableTodos: false,
|
||||||
enableRegByBot: false,
|
enableRegByBot: false,
|
||||||
enableRegMultiChoice: false,
|
enableRegMultiChoice: false,
|
||||||
|
enableTokenExpired: false,
|
||||||
enabledRegNeedTelegram: false,
|
enabledRegNeedTelegram: false,
|
||||||
enableDebugOn: false,
|
enableDebugOn: false,
|
||||||
showButtHome: false,
|
showButtHome: false,
|
||||||
@@ -874,7 +875,11 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
|||||||
async deleteSubscriptionToServer() {
|
async deleteSubscriptionToServer() {
|
||||||
console.log('DeleteSubscriptionToServer: ')
|
console.log('DeleteSubscriptionToServer: ')
|
||||||
|
|
||||||
|
try {
|
||||||
return Api.SendReq('/subscribe/del', 'DELETE', null)
|
return Api.SendReq('/subscribe/del', 'DELETE', null)
|
||||||
|
}catch (e) {
|
||||||
|
console.error('deleteSubscriptionToServer')
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
async clearDataAfterLogout() {
|
async clearDataAfterLogout() {
|
||||||
@@ -946,7 +951,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
|||||||
},
|
},
|
||||||
|
|
||||||
async checkUpdates() {
|
async checkUpdates() {
|
||||||
// console.log('checkUpdates')
|
console.log('checkUpdates')
|
||||||
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
|
||||||
|
|||||||
@@ -216,6 +216,10 @@ export default defineComponent({
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getlinkpage() {
|
||||||
|
return tools.getFullCurrentUrl()
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(mounted)
|
onMounted(mounted)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -263,6 +267,7 @@ export default defineComponent({
|
|||||||
circuitIndex,
|
circuitIndex,
|
||||||
circuitslistOpt,
|
circuitslistOpt,
|
||||||
filtroeventsgroup,
|
filtroeventsgroup,
|
||||||
|
getlinkpage,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -4,9 +4,8 @@
|
|||||||
<div v-if="!mygrp && !loading">
|
<div v-if="!mygrp && !loading">
|
||||||
<div v-if="mystatus === 403">
|
<div v-if="mystatus === 403">
|
||||||
<h3>
|
<h3>
|
||||||
Non hai i permessi per accedere al Gruppo.<br />
|
Non hai i permessi per accedere al Gruppo.
|
||||||
|
<br />Occorre prima registrarsi alla App
|
||||||
Occorre prima registrarsi alla App
|
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
@@ -19,7 +18,7 @@
|
|||||||
v-if="mygrp.descr"
|
v-if="mygrp.descr"
|
||||||
class="fit column no-wrap justify-evenly items-center content-start"
|
class="fit column no-wrap justify-evenly items-center content-start"
|
||||||
>
|
>
|
||||||
<div class="">
|
<div class>
|
||||||
<q-avatar size="140px">
|
<q-avatar size="140px">
|
||||||
<q-img
|
<q-img
|
||||||
:src="getImgGrp()"
|
:src="getImgGrp()"
|
||||||
@@ -32,14 +31,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="text-h6">
|
<div class="text-h6">
|
||||||
<span v-if="checkifShow('name')"> {{ mygrp.title }}</span>
|
<span v-if="checkifShow('name')">{{ mygrp.title }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="mygrp.title !== mygrp.groupname"
|
v-if="mygrp.title !== mygrp.groupname"
|
||||||
class="col-12 text-h7 text-blue text-shadow-2"
|
class="col-12 text-h7 text-blue text-shadow-2"
|
||||||
>
|
>{{ mygrp.groupname }}</div>
|
||||||
{{ mygrp.groupname }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<q-banner
|
<q-banner
|
||||||
v-if="userStore.IsRefusedGroupByGroupname(mygrp.groupname)"
|
v-if="userStore.IsRefusedGroupByGroupname(mygrp.groupname)"
|
||||||
@@ -47,8 +44,8 @@
|
|||||||
class="bg-red text-white"
|
class="bg-red text-white"
|
||||||
style="text-align: center"
|
style="text-align: center"
|
||||||
>
|
>
|
||||||
<em style="font-weight: bold">{{ $t('db.youarerefusedgroup') }}</em
|
<em style="font-weight: bold">{{ $t('db.youarerefusedgroup') }}</em>
|
||||||
><br />
|
<br />
|
||||||
</q-banner>
|
</q-banner>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@@ -95,9 +92,11 @@
|
|||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<q-icon color="negative" name="fas fa-user-minus" />
|
<q-icon color="negative" name="fas fa-user-minus" />
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>{{
|
<q-item-section>
|
||||||
$t('groups.exit_group')
|
{{
|
||||||
}}</q-item-section>
|
$t('groups.exit_group')
|
||||||
|
}}
|
||||||
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
|
|
||||||
<q-list
|
<q-list
|
||||||
@@ -123,9 +122,11 @@
|
|||||||
<q-item-section avatar>
|
<q-item-section avatar>
|
||||||
<q-icon color="negative" name="fas fa-trash-alt" />
|
<q-icon color="negative" name="fas fa-trash-alt" />
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>{{
|
<q-item-section>
|
||||||
$t('groups.delete_group')
|
{{
|
||||||
}}</q-item-section>
|
$t('groups.delete_group')
|
||||||
|
}}
|
||||||
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
</q-list>
|
</q-list>
|
||||||
</q-list>
|
</q-list>
|
||||||
@@ -151,10 +152,20 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="absolute-top-right q-mr-sm q-my-md q-pt-lg">
|
||||||
v-if="mygrp.descr"
|
<div class="column">
|
||||||
class="no-wrap justify-evenly items-center content-start"
|
<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">
|
||||||
<!--
|
<!--
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="tools.iAmAdminGroup(groupname)" icon="fas fa-pencil-alt"
|
v-if="tools.iAmAdminGroup(groupname)" icon="fas fa-pencil-alt"
|
||||||
@@ -166,11 +177,7 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<q-tabs v-model="tabgrp" class="text-blue">
|
<q-tabs v-model="tabgrp" class="text-blue">
|
||||||
<q-tab
|
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
|
||||||
:label="t('shared.info1')"
|
|
||||||
name="info"
|
|
||||||
icon="fas fa-info"
|
|
||||||
></q-tab>
|
|
||||||
<q-tab
|
<q-tab
|
||||||
v-if="
|
v-if="
|
||||||
tools.iCanShowGroupsMember(mygrp) ||
|
tools.iCanShowGroupsMember(mygrp) ||
|
||||||
@@ -189,11 +196,7 @@
|
|||||||
name="circuits"
|
name="circuits"
|
||||||
icon="fas fa-coins"
|
icon="fas fa-coins"
|
||||||
></q-tab>
|
></q-tab>
|
||||||
<q-tab
|
<q-tab :label="t('groups.events')" name="events" icon="fas fa-bullhorn"></q-tab>
|
||||||
:label="t('groups.events')"
|
|
||||||
name="events"
|
|
||||||
icon="fas fa-bullhorn"
|
|
||||||
></q-tab>
|
|
||||||
</q-tabs>
|
</q-tabs>
|
||||||
|
|
||||||
<q-tab-panels v-model="tabgrp" animated>
|
<q-tab-panels v-model="tabgrp" animated>
|
||||||
@@ -220,7 +223,7 @@
|
|||||||
v-if="
|
v-if="
|
||||||
!!mygrp.date_updated &&
|
!!mygrp.date_updated &&
|
||||||
tools.getstrshortDate(mygrp.date_updated) !==
|
tools.getstrshortDate(mygrp.date_updated) !==
|
||||||
tools.getstrshortDate(mygrp.createdBy)
|
tools.getstrshortDate(mygrp.createdBy)
|
||||||
"
|
"
|
||||||
class="element"
|
class="element"
|
||||||
>
|
>
|
||||||
@@ -244,9 +247,7 @@
|
|||||||
<q-icon name="fas fa-lock"></q-icon>
|
<q-icon name="fas fa-lock"></q-icon>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="title_param">
|
<div class="title_param">{{ $t('groups.private') }}</div>
|
||||||
{{ $t('groups.private') }}
|
|
||||||
</div>
|
|
||||||
{{ $t('groups.private_descr') }}
|
{{ $t('groups.private_descr') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -274,9 +275,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="title_param">
|
<div class="title_param">
|
||||||
<div v-for="(city, index) of cities" :key="index">
|
<div
|
||||||
{{ city.comune }} ({{ city.prov }})
|
v-for="(city, index) of cities"
|
||||||
</div>
|
:key="index"
|
||||||
|
>{{ city.comune }} ({{ city.prov }})</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -304,8 +306,7 @@
|
|||||||
:mycontact="user"
|
:mycontact="user"
|
||||||
:visu="costanti.FIND_PEOPLE"
|
:visu="costanti.FIND_PEOPLE"
|
||||||
@setCmd="tools.setCmd"
|
@setCmd="tools.setCmd"
|
||||||
>
|
></CMyUser>
|
||||||
</CMyUser>
|
|
||||||
</div>
|
</div>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
</q-card>
|
</q-card>
|
||||||
@@ -334,8 +335,7 @@
|
|||||||
:label="$t('msgs.telegrammsg')"
|
:label="$t('msgs.telegrammsg')"
|
||||||
:href="getLinkGrpTelegram()"
|
:href="getLinkGrpTelegram()"
|
||||||
target="__blank"
|
target="__blank"
|
||||||
>
|
></q-btn>
|
||||||
</q-btn>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6 q-ma-xs">
|
<div class="col-6 q-ma-xs">
|
||||||
<q-btn
|
<q-btn
|
||||||
@@ -348,8 +348,7 @@
|
|||||||
:label="$t('reg.website')"
|
:label="$t('reg.website')"
|
||||||
:href="getLinkWebSite()"
|
:href="getLinkWebSite()"
|
||||||
target="__blank"
|
target="__blank"
|
||||||
>
|
></q-btn>
|
||||||
</q-btn>
|
|
||||||
</div>
|
</div>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
</q-card>
|
</q-card>
|
||||||
@@ -400,10 +399,10 @@
|
|||||||
<q-tab-panel name="rich">
|
<q-tab-panel name="rich">
|
||||||
<CGridTableRec
|
<CGridTableRec
|
||||||
prop_mytable="mygroups"
|
prop_mytable="mygroups"
|
||||||
prop_mytitle=""
|
prop_mytitle
|
||||||
:prop_mycolumns="colmyUserPeople"
|
:prop_mycolumns="colmyUserPeople"
|
||||||
prop_colkey="_id"
|
prop_colkey="_id"
|
||||||
col_title=""
|
col_title
|
||||||
:vertical="costanti.VISUTABLE_USER_TABGROUP"
|
:vertical="costanti.VISUTABLE_USER_TABGROUP"
|
||||||
nodataLabel="Nessuna Richiesta in sospeso"
|
nodataLabel="Nessuna Richiesta in sospeso"
|
||||||
:prop_search="false"
|
:prop_search="false"
|
||||||
@@ -422,16 +421,15 @@
|
|||||||
:extraparams="extraparams_rich()"
|
:extraparams="extraparams_rich()"
|
||||||
:extrafield="groupname"
|
:extrafield="groupname"
|
||||||
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
|
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
|
||||||
>
|
></CGridTableRec>
|
||||||
</CGridTableRec>
|
|
||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
<q-tab-panel name="refused">
|
<q-tab-panel name="refused">
|
||||||
<CGridTableRec
|
<CGridTableRec
|
||||||
prop_mytable="mygroups"
|
prop_mytable="mygroups"
|
||||||
prop_mytitle=""
|
prop_mytitle
|
||||||
:prop_mycolumns="colmyUserPeople"
|
:prop_mycolumns="colmyUserPeople"
|
||||||
prop_colkey="_id"
|
prop_colkey="_id"
|
||||||
col_title=""
|
col_title
|
||||||
:vertical="costanti.VISUTABLE_SCHEDA_GROUP"
|
:vertical="costanti.VISUTABLE_SCHEDA_GROUP"
|
||||||
nodataLabel="Nessun utente Rifiutato"
|
nodataLabel="Nessun utente Rifiutato"
|
||||||
:prop_search="false"
|
:prop_search="false"
|
||||||
@@ -450,8 +448,7 @@
|
|||||||
:extraparams="extraparams_refused()"
|
:extraparams="extraparams_refused()"
|
||||||
:extrafield="groupname"
|
:extrafield="groupname"
|
||||||
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
|
:visufind="costanti.REQ_ADD_USER_TO_GROUP"
|
||||||
>
|
></CGridTableRec>
|
||||||
</CGridTableRec>
|
|
||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
</q-tab-panels>
|
</q-tab-panels>
|
||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
@@ -464,7 +461,7 @@
|
|||||||
map-options
|
map-options
|
||||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||||
>
|
>
|
||||||
<template v-slot:prepend> </template>
|
<template v-slot:prepend></template>
|
||||||
<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>
|
||||||
@@ -480,19 +477,11 @@
|
|||||||
class="text-blue"
|
class="text-blue"
|
||||||
no-caps
|
no-caps
|
||||||
>
|
>
|
||||||
<q-tab
|
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
|
||||||
:label="t('shared.info1')"
|
<q-tab :label="t('circuit.movements')" name="mov" icon="fas fa-coins"></q-tab>
|
||||||
name="info"
|
|
||||||
icon="fas fa-info"
|
|
||||||
></q-tab>
|
|
||||||
<q-tab
|
|
||||||
:label="t('circuit.movements')"
|
|
||||||
name="mov"
|
|
||||||
icon="fas fa-coins"
|
|
||||||
></q-tab>
|
|
||||||
</q-tabs>
|
</q-tabs>
|
||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
<q-tab-panel name="events"> </q-tab-panel>
|
<q-tab-panel name="events"></q-tab-panel>
|
||||||
</q-tab-panels>
|
</q-tab-panels>
|
||||||
|
|
||||||
<div v-if="tabgrp === 'circuits' && tabcircuit === 'info'">
|
<div v-if="tabgrp === 'circuits' && tabcircuit === 'info'">
|
||||||
@@ -517,7 +506,7 @@
|
|||||||
<CGridTableRec
|
<CGridTableRec
|
||||||
v-if="tabellare && !loading"
|
v-if="tabellare && !loading"
|
||||||
prop_mytable="movements"
|
prop_mytable="movements"
|
||||||
prop_mytitle=""
|
prop_mytitle
|
||||||
:prop_mycolumns="colmyMovementTable"
|
:prop_mycolumns="colmyMovementTable"
|
||||||
prop_colkey="_id"
|
prop_colkey="_id"
|
||||||
col_title="Lista Movimenti"
|
col_title="Lista Movimenti"
|
||||||
@@ -532,7 +521,7 @@
|
|||||||
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
|
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
|
||||||
:butt_modif_new="false"
|
:butt_modif_new="false"
|
||||||
noresultLabel="movimenti non trovati con questa ricerca"
|
noresultLabel="movimenti non trovati con questa ricerca"
|
||||||
filterextra=""
|
filterextra
|
||||||
:prop_pagination="{
|
:prop_pagination="{
|
||||||
sortBy: 'transactionDate',
|
sortBy: 'transactionDate',
|
||||||
descending: true,
|
descending: true,
|
||||||
@@ -546,14 +535,13 @@
|
|||||||
:extraparams="
|
:extraparams="
|
||||||
getExtraparams_movs_grp(circuitslist[circuitIndex])
|
getExtraparams_movs_grp(circuitslist[circuitIndex])
|
||||||
"
|
"
|
||||||
extrafield=""
|
extrafield
|
||||||
:visufind="costanti.FRIENDS"
|
:visufind="costanti.FRIENDS"
|
||||||
>
|
></CGridTableRec>
|
||||||
</CGridTableRec>
|
|
||||||
<CGridTableRec
|
<CGridTableRec
|
||||||
v-else-if="!loading"
|
v-else-if="!loading"
|
||||||
prop_mytable="movements"
|
prop_mytable="movements"
|
||||||
prop_mytitle=""
|
prop_mytitle
|
||||||
:prop_mycolumns="colmyMovement"
|
:prop_mycolumns="colmyMovement"
|
||||||
prop_colkey="_id"
|
prop_colkey="_id"
|
||||||
col_title="Lista Movimenti"
|
col_title="Lista Movimenti"
|
||||||
@@ -581,10 +569,9 @@
|
|||||||
:extraparams="
|
:extraparams="
|
||||||
getExtraparams_movs_grp(circuitslist[circuitIndex])
|
getExtraparams_movs_grp(circuitslist[circuitIndex])
|
||||||
"
|
"
|
||||||
extrafield=""
|
extrafield
|
||||||
:visufind="costanti.FRIENDS"
|
:visufind="costanti.FRIENDS"
|
||||||
>
|
></CGridTableRec>
|
||||||
</CGridTableRec>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="tabgrp === 'events'">
|
<div v-if="tabgrp === 'events'">
|
||||||
@@ -603,7 +590,7 @@
|
|||||||
<CGridTableRec
|
<CGridTableRec
|
||||||
ref="tabMembri"
|
ref="tabMembri"
|
||||||
prop_mytable="users"
|
prop_mytable="users"
|
||||||
prop_mytitle=""
|
prop_mytitle
|
||||||
:prop_mycolumns="colmyUserPeople"
|
:prop_mycolumns="colmyUserPeople"
|
||||||
prop_colkey="_id"
|
prop_colkey="_id"
|
||||||
col_title="username"
|
col_title="username"
|
||||||
@@ -629,27 +616,16 @@
|
|||||||
? costanti.REQ_REMOVE_USER_TO_GROUP
|
? costanti.REQ_REMOVE_USER_TO_GROUP
|
||||||
: costanti.FIND_PEOPLE
|
: costanti.FIND_PEOPLE
|
||||||
"
|
"
|
||||||
>
|
></CGridTableRec>
|
||||||
</CGridTableRec>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div v-else class="fit column no-wrap justify-evenly items-center content-start">
|
||||||
v-else
|
<q-skeleton type="QAvatar" size="140px" height="140px" animation="fade" />
|
||||||
class="fit column no-wrap justify-evenly items-center content-start"
|
|
||||||
>
|
|
||||||
<q-skeleton
|
|
||||||
type="QAvatar"
|
|
||||||
size="140px"
|
|
||||||
height="140px"
|
|
||||||
animation="fade"
|
|
||||||
/>
|
|
||||||
<q-card flat bordered style="width: 250px">
|
<q-card flat bordered style="width: 250px">
|
||||||
<div class="text-h6">
|
<div class="text-h6">
|
||||||
<q-skeleton :animation="animation" />
|
<q-skeleton :animation="animation" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 text-h7 text-grey text-center">
|
<div class="col-12 text-h7 text-grey text-center">{{ groupname }}</div>
|
||||||
{{ groupname }}
|
|
||||||
</div>
|
|
||||||
<div class="col-12 text-h7">
|
<div class="col-12 text-h7">
|
||||||
<q-skeleton :animation="animation" />
|
<q-skeleton :animation="animation" />
|
||||||
</div>
|
</div>
|
||||||
@@ -677,6 +653,6 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import './mygroup.scss';
|
@import "./mygroup.scss";
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -5508,11 +5508,6 @@ crypto-random-string@^4.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
type-fest "^1.0.1"
|
type-fest "^1.0.1"
|
||||||
|
|
||||||
crypto@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/crypto/-/crypto-1.0.1.tgz#2af1b7cad8175d24c8a1b0778255794a21803037"
|
|
||||||
integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==
|
|
||||||
|
|
||||||
css-color-names@0.0.4:
|
css-color-names@0.0.4:
|
||||||
version "0.0.4"
|
version "0.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
|
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
|
||||||
@@ -14842,6 +14837,7 @@ workbox-window@6.6.1:
|
|||||||
workbox-core "6.6.1"
|
workbox-core "6.6.1"
|
||||||
|
|
||||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
||||||
|
name wrap-ansi-cjs
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||||
|
|||||||