vers 1.1.6
- risolto problema cors ?!? - notifiche transazioni pendenti OK
@@ -1,18 +1,17 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="18"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
DIRECTORY_SERVER="freeplanet_serverside"
|
||||
SERVERDIR_WEBSITE=""
|
||||
SERVERPW_WEBSITE=""
|
||||
APP_URL="https://localhost"
|
||||
URL_FACEBOOK="https://www.facebook.com/freeplanetapp"
|
||||
PROVA_PAOLO="PROVA ENV FUNZIONA!"
|
||||
LANG_DEFAULT="it"
|
||||
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
||||
MONGODB_HOST="https://localhost:3000"
|
||||
LOGO_REG='gruppomacro-logo-full.png'
|
||||
LOGO_REG='riso-logo-full.png'
|
||||
TEST_NAME="Paolo"
|
||||
TEST_SURNAME="Arena"
|
||||
TEST_EMAIL=""
|
||||
@@ -25,5 +24,5 @@ DEBUG="1"
|
||||
TELEGRAM_SUPPORT=""
|
||||
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
|
||||
TEST_CELL=""
|
||||
VUE_APP_ISTEST=1
|
||||
VUE_APP_INLOCALE=1
|
||||
VUE_APP_ISTEST="1"
|
||||
VUE_APP_INLOCALE="1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="18"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="17"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
APP_VERSION="1.1.0"
|
||||
SERVICE_WORKER_FILE="service-worker_1.1.0.js"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
DIRECTORY_SERVER=freeplanet_serverside
|
||||
SERVERDIR_WEBSITE=riso.app
|
||||
SERVERPW_WEBSITE=pwdadmin@1AOK
|
||||
DIRECTORY_SERVER=/var/www/nodejs_riso_server
|
||||
SERVERDIR_WEBSITE="/var/www/riso.app"
|
||||
APP_URL="https://riso.app"
|
||||
URL_FACEBOOK=""
|
||||
PROVA_PAOLO=""
|
||||
LANG_DEFAULT="it"
|
||||
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
|
||||
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
|
||||
MONGODB_HOST="https://www.freeplanet.app:3000"
|
||||
MONGODB_HOST="https://api.riso.app"
|
||||
LOGO_REG='riso-logo-full.png'
|
||||
TEST_NAME=""
|
||||
TEST_SURNAME=""
|
||||
TEST_EMAIL=""
|
||||
TEST_USERNAME=""
|
||||
TEST_PASSWORD=""
|
||||
TEST_APORTADOR="------"
|
||||
PUBLICKEY_PUSH="BNM-cEpTbPVc_ujXf3QOC8ggf7b-X44P44esfJUWqNOFq1XhWCoZJpOi71_cbXC5SnfO9HassQ6OouAYgtBA9Pw"
|
||||
DEBUG="1"
|
||||
TEST_APORTADOR=""
|
||||
PUBLICKEY_PUSH="BGXRf1TgcqocqD6J7qnRgCG7AvM2lxAoW7peb7UEzB4SxBb6DxGRdJ0UvD9ewnrB9KrSrh0-aDCODXBm7sZ1DDs"
|
||||
IN_CONSTRUCTION="0"
|
||||
DEBUG="0"
|
||||
TELEGRAM_SUPPORT=""
|
||||
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
|
||||
TEST_CELL=""
|
||||
VUE_APP_ISTEST=0
|
||||
VUE_APP_ISTEST=0
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="19"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="18"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="17"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="19"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "abitaregliiblei",
|
||||
"version": "1.1.4",
|
||||
"version": "1.1.6",
|
||||
"description": "Abitare Gli Iblei",
|
||||
"productName": "AbitareGliIblei",
|
||||
"author": "Paolo Arena",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="15"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="15"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "fioredellavita",
|
||||
"version": "1.1.4",
|
||||
"version": "1.1.6",
|
||||
"description": "Fiore Della Vita",
|
||||
"productName": "Fiore Della Vita",
|
||||
"author": "Paolo Arena",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="18"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="16"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gruppomacro",
|
||||
"version": "1.1.4",
|
||||
"version": "1.1.6",
|
||||
"description": "GruppoMacro",
|
||||
"productName": "Gruppo Macro",
|
||||
"author": "Paolo Arena",
|
||||
@@ -54,9 +54,11 @@
|
||||
"graphql": "^16.9.0",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"gsap": "^3.12.5",
|
||||
"html2canvas": "^1.4.1",
|
||||
"html2pdf.js": "^0.10.2",
|
||||
"jquery": "^3.7.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jspdf": "^2.5.2",
|
||||
"leaflet": "^1.9.4",
|
||||
"leaflet-routing-machine": "^3.2.12",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
@@ -66,6 +68,7 @@
|
||||
"npm": "^10.8.3",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.2.4",
|
||||
"qrcode-vue3": "^1.7.1",
|
||||
"quasar": "^2.17.0",
|
||||
"quasar-extras": "^2.0.9",
|
||||
"register-service-worker": "^1.7.2",
|
||||
@@ -87,6 +90,7 @@
|
||||
"vue-timeago3": "^2.3.2",
|
||||
"vue2-dragula": "^2.5.5",
|
||||
"vue3-pdf-app": "^1.0.3",
|
||||
"vue3-qr-reader": "^1.0.0",
|
||||
"vuex": "^4.1.0",
|
||||
"vuex-router-sync": "^6.0.0-rc.1"
|
||||
},
|
||||
@@ -162,4 +166,4 @@
|
||||
"npm": ">= 6.14.8",
|
||||
"yarn": ">= 1.21.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="17"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="17"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "piuchebuono",
|
||||
"version": "1.1.4",
|
||||
"version": "1.1.6",
|
||||
"description": "PiuCheBuono",
|
||||
"productName": "PiuCheBuono",
|
||||
"author": "Paolo Arena",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="1.1.4"
|
||||
APP_VERSION="1.1.6"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="16"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "riso",
|
||||
"version": "1.1.4",
|
||||
"version": "1.1.6",
|
||||
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
||||
"productName": "Riso",
|
||||
"author": "Paolo Arena",
|
||||
|
||||
29
deploy_on_prod_riso.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
source ./.env.prod.riso
|
||||
|
||||
msg="*** Sincronizzazione ??? $DIRECTORY_LOCAL e $SERVERDIR_WEBSITE (Y/N) ? "
|
||||
|
||||
if [ "$1" = "" ]; then
|
||||
read -p "$msg" risposta
|
||||
else
|
||||
risposta=$1
|
||||
fi
|
||||
|
||||
cp .env.production .env.prod.bak
|
||||
cp .env.prod.riso .env.production
|
||||
|
||||
sleep 1
|
||||
|
||||
npm run buildpwa
|
||||
|
||||
echo "Sincronizzazione $SERVERDIR_WEBSITE in remoto..."
|
||||
rsync -e 'ssh -p 8822' -a --exclude 'upload' dist/pwa/ pcbuser@pcb:$SERVERDIR_WEBSITE
|
||||
rsync -e 'ssh -p 8822' -a dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
|
||||
|
||||
|
||||
cp .env.prod.bak .env.production
|
||||
|
||||
sleep 1
|
||||
|
||||
echo "Finito $SERVERDIR_WEBSITE"
|
||||
2
now.txt
@@ -1 +1 @@
|
||||
TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !)
|
||||
TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo !)
|
||||
|
||||
11
package.json
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "gruppomacro",
|
||||
"version": "1.1.4",
|
||||
"description": "GruppoMacro",
|
||||
"productName": "Gruppo Macro",
|
||||
"name": "riso",
|
||||
"version": "1.1.6",
|
||||
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
||||
"productName": "Riso",
|
||||
"author": "Paolo Arena",
|
||||
"private": true,
|
||||
"keywords": [],
|
||||
@@ -54,11 +54,9 @@
|
||||
"graphql": "^16.9.0",
|
||||
"graphql-tag": "^2.12.6",
|
||||
"gsap": "^3.12.5",
|
||||
"html2canvas": "^1.4.1",
|
||||
"html2pdf.js": "^0.10.2",
|
||||
"jquery": "^3.7.1",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jspdf": "^2.5.2",
|
||||
"leaflet": "^1.9.4",
|
||||
"leaflet-routing-machine": "^3.2.12",
|
||||
"leaflet.markercluster": "^1.5.3",
|
||||
@@ -129,6 +127,7 @@
|
||||
"jest": "^29.7.0",
|
||||
"json-loader": "^0.5.7",
|
||||
"node-sass": "^9.0.0",
|
||||
"nodemon": "^3.1.7",
|
||||
"npm-check-updates": "^17.1.3",
|
||||
"optimize-css-assets-webpack-plugin": "^6.0.1",
|
||||
"parcel": "^2.12.0",
|
||||
|
||||
BIN
public/images/ferrara.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/images/freeplanet-logo-full.odg
Executable file
1186
public/images/freeplanet-logo-full.svg
Executable file
|
After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 81 KiB |
BIN
public/images/riso-android-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/riso-android-icon-192x192.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/images/riso-android-icon-36x36.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
public/images/riso-android-icon-384x384.png
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
public/images/riso-android-icon-48x48.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
public/images/riso-android-icon-512x512.png
Normal file
|
After Width: | Height: | Size: 185 KiB |
BIN
public/images/riso-android-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/images/riso-android-icon-96x96.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/images/riso-apple-icon-114x114.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
public/images/riso-apple-icon-120x120.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/images/riso-apple-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/riso-apple-icon-152x152.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/images/riso-apple-icon-180x180.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/images/riso-apple-icon-57x57.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
public/images/riso-apple-icon-60x60.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
public/images/riso-apple-icon-72x72.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/images/riso-apple-icon-76x76.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/riso-apple-icon.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/images/riso-logo-full.png
Normal file
|
After Width: | Height: | Size: 634 KiB |
BIN
public/images/riso_home.png
Normal file
|
After Width: | Height: | Size: 279 KiB |
BIN
public/images/riso_home_dark.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
BIN
public/images/riso_services.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
@@ -17,6 +17,8 @@ const webpack = require('webpack')
|
||||
const helpers = require('./helpers')
|
||||
const envparser = require('./config/envparser')
|
||||
|
||||
const package = require('./package.json');
|
||||
|
||||
// const ESLintPlugin = require('eslint-webpack-plugin')
|
||||
|
||||
module.exports = configure((ctx) => ({
|
||||
@@ -87,6 +89,7 @@ module.exports = configure((ctx) => ({
|
||||
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
|
||||
build: {
|
||||
env: envparser(),
|
||||
versionCode: package.version,
|
||||
vueRouterMode: 'history',
|
||||
vueCompiler: true,
|
||||
gzip: false, // gzip true
|
||||
@@ -149,9 +152,9 @@ module.exports = configure((ctx) => ({
|
||||
},
|
||||
devServer: {
|
||||
https: false,
|
||||
port: 8089,
|
||||
port: 8084,
|
||||
open: false, // opens browser window automatically
|
||||
hot: true, // Disable hot module replacement
|
||||
hot: false, // Disable hot module replacement
|
||||
headers: {
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Headers': '*',
|
||||
@@ -248,6 +251,8 @@ module.exports = configure((ctx) => ({
|
||||
'Cookies',
|
||||
'Loading',
|
||||
'AppVisibility',
|
||||
'LocalStorage',
|
||||
'SessionStorage',
|
||||
],
|
||||
get plugins_1() {
|
||||
return this._plugins;
|
||||
@@ -308,9 +313,9 @@ module.exports = configure((ctx) => ({
|
||||
},
|
||||
|
||||
manifest: {
|
||||
name: 'Gruppo Macro',
|
||||
short_name: 'GruppoMacro',
|
||||
description: '',
|
||||
name: 'Riso',
|
||||
short_name: 'Riso',
|
||||
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.',
|
||||
display: 'standalone',
|
||||
orientation: 'portrait',
|
||||
background_color: '#fff',
|
||||
@@ -320,24 +325,54 @@ module.exports = configure((ctx) => ({
|
||||
start_url: "/?homescreen=1",
|
||||
icons: [
|
||||
{
|
||||
src: 'images/gm-android-icon-512x512.png',
|
||||
src: 'images/riso-android-icon-512x512.png',
|
||||
sizes: '512x512',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/gm-android-icon-192x192.png',
|
||||
src: 'images/riso-android-icon-384x384.png',
|
||||
sizes: '384x384',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/riso-android-icon-192x192.png',
|
||||
sizes: '192x192',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/gm-apple-touch-icon.png',
|
||||
src: 'images/riso-android-icon-144x144.png',
|
||||
sizes: '144x144',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/riso-android-icon-96x96.png',
|
||||
sizes: '96x96',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/riso-apple-icon-120x120.png',
|
||||
sizes: '120x120',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/riso-apple-icon-144x144.png',
|
||||
sizes: '144x144',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/riso-apple-icon-152x152.png',
|
||||
sizes: '152x152',
|
||||
type: 'image/png',
|
||||
},
|
||||
{
|
||||
src: 'images/riso-apple-icon-180x180.png',
|
||||
sizes: '180x180',
|
||||
type: 'image/png',
|
||||
},
|
||||
],
|
||||
related_applications: [{
|
||||
"platform": "webapp",
|
||||
"url": "https://www.gruppomacro.app/manifest.json"
|
||||
"url": "https://www.riso.app/manifest.json"
|
||||
}]
|
||||
},
|
||||
},
|
||||
@@ -372,7 +407,7 @@ module.exports = configure((ctx) => ({
|
||||
builder: {
|
||||
// https://www.electron.build/configuration/configuration
|
||||
|
||||
appId: 'GruppoMacro',
|
||||
appId: 'Riso',
|
||||
},
|
||||
|
||||
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain
|
||||
|
||||
@@ -34,13 +34,15 @@ self.addEventListener('activate', (event) => {
|
||||
});
|
||||
|
||||
|
||||
const APP_VERSION = "1.1.4";
|
||||
const APP_VERSION = "1.1.6";
|
||||
|
||||
console.log(' [ VER-' + APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker');
|
||||
|
||||
importScripts('js/idb.js', 'js/storage.js');
|
||||
|
||||
let port = self.location.hostname.startsWith('test') ? 3001 : 3000;
|
||||
let ISTEST = self.location.hostname.startsWith('test');
|
||||
let ISLOCALE = self.location.hostname.startsWith('localhost');
|
||||
console.log('SW- app ver ' + APP_VERSION + ' on port ' + port);
|
||||
|
||||
|
||||
@@ -172,8 +174,169 @@ if (workbox) {
|
||||
console.log(event.data);
|
||||
});
|
||||
|
||||
// Costanti di configurazione
|
||||
const DYNAMIC_CACHE = 'dynamic-cache-v1';
|
||||
const ENABLE_DYNAMIC_CACHING = true;
|
||||
const baseUrl = self.location.origin;
|
||||
console.log('baseUrl', baseUrl);
|
||||
const APP_DOMAIN = extractDomain(baseUrl);
|
||||
let API_DOMAIN = '';
|
||||
if (ISTEST) {
|
||||
API_DOMAIN = 'testapi.' + removeTestPrefix(APP_DOMAIN);
|
||||
} else {
|
||||
API_DOMAIN = 'api.' + APP_DOMAIN;
|
||||
}
|
||||
|
||||
function removeTestPrefix(str) {
|
||||
return str.startsWith('test.') ? str.slice(5) : str;
|
||||
}
|
||||
|
||||
function extractDomain(url) {
|
||||
return url.replace(/^https?:\/\//, '');
|
||||
}
|
||||
|
||||
// Funzione per verificare se una richiesta è cross-origin
|
||||
function isCrossOrigin(url) {
|
||||
try {
|
||||
const requestUrl = new URL(url);
|
||||
const baseUrl = self.location.origin;
|
||||
return requestUrl.origin !== baseUrl;
|
||||
} catch (e) {
|
||||
console.error('Error parsing URL:', e);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Funzione per gestire specificamente le richieste API
|
||||
async function handleApiRequest(request) {
|
||||
const modifiedRequest = new Request(request.url, {
|
||||
method: request.method,
|
||||
headers: {
|
||||
...Object.fromEntries(request.headers.entries()),
|
||||
'Origin': `https://${APP_DOMAIN}`,
|
||||
'Accept': 'application/json',
|
||||
},
|
||||
mode: 'cors',
|
||||
// credentials: 'include'
|
||||
});
|
||||
|
||||
try {
|
||||
const response = await fetch(modifiedRequest);
|
||||
|
||||
// Se la risposta è ok, restituiscila
|
||||
if (response.ok) {
|
||||
return response;
|
||||
}
|
||||
|
||||
// Se riceviamo un errore CORS, prova con una richiesta no-cors
|
||||
if (response.status === 0 || response.type === 'opaque') {
|
||||
console.log('[Service Worker] Fallback to no-cors mode for:', request.url);
|
||||
return fetch(new Request(request.url, {
|
||||
method: 'GET',
|
||||
mode: 'no-cors',
|
||||
// credentials: 'include'
|
||||
}));
|
||||
}
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('[Service Worker] API request error:', error);
|
||||
return new Response(JSON.stringify({
|
||||
error: 'Network error',
|
||||
message: 'Unable to fetch from API'
|
||||
}), {
|
||||
status: 503,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin': `https://${APP_DOMAIN}`,
|
||||
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
|
||||
'Access-Control-Allow-Headers': 'Content-Type'
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Funzione principale per gestire il fetch
|
||||
async function handleFetch(request) {
|
||||
try {
|
||||
// Verifica se è una richiesta all'API
|
||||
const url = new URL(request.url);
|
||||
const isApiRequest = url.hostname === API_DOMAIN;
|
||||
|
||||
// Se è una richiesta API, gestiscila separatamente
|
||||
if (isApiRequest) {
|
||||
return handleApiRequest(request);
|
||||
}
|
||||
|
||||
// Per le altre richieste, prova prima la cache
|
||||
const cachedResponse = await caches.match(request);
|
||||
if (cachedResponse) {
|
||||
return cachedResponse;
|
||||
}
|
||||
|
||||
// Se non è in cache, fai la richiesta di rete
|
||||
const response = await fetch(request);
|
||||
|
||||
// Verifica la validità della risposta
|
||||
if (!response || (!response.ok && response.type !== 'opaque')) {
|
||||
console.warn('[Service Worker] Invalid response for:', request.url);
|
||||
return response;
|
||||
}
|
||||
|
||||
// Cache solo le risorse dello stesso origine
|
||||
if (ENABLE_DYNAMIC_CACHING && !isCrossOrigin(request.url)) {
|
||||
try {
|
||||
const cache = await caches.open(DYNAMIC_CACHE);
|
||||
cache.put(request, response.clone());
|
||||
} catch (cacheError) {
|
||||
console.error('[Service Worker] Cache error:', cacheError);
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('[Service Worker] Fetch error:', error);
|
||||
|
||||
// Personalizza la risposta di errore in base al tipo di richiesta
|
||||
if (request.headers.get('Accept')?.includes('application/json')) {
|
||||
return new Response(JSON.stringify({
|
||||
error: 'Network error',
|
||||
message: 'Service unavailable'
|
||||
}), {
|
||||
status: 503,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin': `https://${APP_DOMAIN}`
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return new Response('Network error', {
|
||||
status: 503,
|
||||
statusText: 'Service Unavailable'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Event listener per il fetch
|
||||
self.addEventListener('fetch', event => {
|
||||
// Ignora le richieste non-GET
|
||||
// Gestione delle richieste OPTIONS per CORS
|
||||
if (event.request.method === 'OPTIONS') {
|
||||
event.respondWith(
|
||||
new Response(null, {
|
||||
status: 204,
|
||||
headers: {
|
||||
'Access-Control-Allow-Origin': `https://${APP_DOMAIN}`,
|
||||
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
|
||||
'Access-Control-Allow-Headers': 'Content-Type',
|
||||
'Access-Control-Max-Age': '86400'
|
||||
}
|
||||
})
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Ignora le richieste non-GET che non sono OPTIONS
|
||||
if (event.request.method !== 'GET') return;
|
||||
|
||||
// Gestisci il caso 'only-if-cached'
|
||||
@@ -184,35 +347,15 @@ if (workbox) {
|
||||
event.respondWith(handleFetch(event.request));
|
||||
});
|
||||
|
||||
async function handleFetch(request) {
|
||||
try {
|
||||
// Prova prima a ottenere dalla cache
|
||||
const cachedResponse = await caches.match(request);
|
||||
if (cachedResponse) {
|
||||
return cachedResponse;
|
||||
}
|
||||
|
||||
// Se non è in cache, fai la richiesta di rete
|
||||
const response = await fetch(request);
|
||||
|
||||
// Controlla se la risposta è valida
|
||||
if (!response || response.status !== 200 || response.type !== 'basic') {
|
||||
return response;
|
||||
}
|
||||
|
||||
// Salva in cache se il caching dinamico è abilitato
|
||||
if (ENABLE_DYNAMIC_CACHING) {
|
||||
const cache = await caches.open(DYNAMIC_CACHE);
|
||||
cache.put(request, response.clone());
|
||||
}
|
||||
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('[Service Worker] Fetch error:', error);
|
||||
return new Response('Network error', { status: 503, statusText: 'Service Unavailable' });
|
||||
}
|
||||
}
|
||||
// Gestione degli errori non catturati
|
||||
self.addEventListener('unhandledrejection', event => {
|
||||
console.error('[Service Worker] Unhandled rejection:', event.reason);
|
||||
});
|
||||
|
||||
// Gestione degli errori globali
|
||||
self.addEventListener('error', event => {
|
||||
console.error('[Service Worker] Global error:', event.error);
|
||||
});
|
||||
// Funzione di utilità per il logging (decommentare se necessario)
|
||||
// function logFetchDetails(request) {
|
||||
// console.log('[Service Worker] Fetching:', request.url);
|
||||
|
||||
@@ -230,7 +230,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function searchval(newval: any, table: any, tablesel: any) {
|
||||
console.log('REFRR searchval', newval, table, 'tablesel', tablesel)
|
||||
// console.log('REFRR searchval', newval, table, 'tablesel', tablesel)
|
||||
|
||||
globalStore.myselector = { table, data: newval }
|
||||
// console.log('globalStore.myselector', globalStore.myselector)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div v-if="small">
|
||||
<q-chip
|
||||
dense
|
||||
class="cltexth4 chipbooked shadow-5 q-pa-sm2"
|
||||
class="cltexth4 shadow-5 q-pa-sm2"
|
||||
size="md"
|
||||
:color="modelValue > 0 ? `green` : modelValue === 0 ? `gray` : `red`"
|
||||
text-color="white"
|
||||
@@ -15,15 +15,15 @@
|
||||
>{{ symbol }}</em
|
||||
></span
|
||||
>
|
||||
<q-icon
|
||||
<!--<q-icon
|
||||
v-if="symbol === 'RIS'"
|
||||
name="img: images/1ris_rosso_100.png"
|
||||
:size="small ? `xs` : `sm`"
|
||||
/>
|
||||
/>-->
|
||||
<div
|
||||
v-if="myrecparam && myrecparam.fidoConcesso > 0 && !paramTypeAccount"
|
||||
>
|
||||
<q-icon
|
||||
v-if="myrecparam && myrecparam.fidoConcesso > 0 && !paramTypeAccount"
|
||||
:color="myrecparam.fidoConcesso > 0 ? 'blue' : 'grey'"
|
||||
name="fas fa-house-user"
|
||||
class="vertical-baseline q-ml-xs"
|
||||
|
||||
@@ -473,7 +473,7 @@ export default defineComponent({
|
||||
})*/
|
||||
|
||||
onBeforeRouteLeave((to: any, from: any, next: any) => {
|
||||
console.log('onBeforeRouteLeave', 'to', to, 'from', from, 'next', next)
|
||||
// console.log('onBeforeRouteLeave', 'to', to, 'from', from, 'next', next)
|
||||
if ((editRecordBool.value || newRecordBool.value) && checkForChanges()) {
|
||||
const answer = window.confirm(t('dialog.uscire'))
|
||||
if (answer) {
|
||||
@@ -609,7 +609,7 @@ export default defineComponent({
|
||||
}
|
||||
})
|
||||
|
||||
router.beforeResolve((to: any) => {
|
||||
/* router.beforeResolve((to: any) => {
|
||||
console.log('beforeResolve', visupagedialog.value, 'to', to)
|
||||
|
||||
if (visupagedialog.value && !to.meta.newpage) {
|
||||
@@ -617,7 +617,7 @@ export default defineComponent({
|
||||
// return false
|
||||
}
|
||||
|
||||
})
|
||||
})*/
|
||||
|
||||
function setCategBySector(tablecat: string, tabsector: string, newval: any) {
|
||||
console.log('setCategBySector', tablecat, tabsector, newval)
|
||||
@@ -704,7 +704,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function searchval(newval: any, table: any) {
|
||||
console.log('REFRR searchval', newval, table, 'mytable', mytable.value)
|
||||
// console.log('REFRR searchval', newval, table, 'mytable', mytable.value)
|
||||
const myrecfilt = searchList.value.find((rec) => rec.table === table)
|
||||
let keycookie = tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table
|
||||
if (myrecfilt && myrecfilt.keycookie)
|
||||
@@ -1404,7 +1404,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
watch(() => mycodeid.value, (newval, oldval) => {
|
||||
console.log('REFRR - mycodeid.value', newval)
|
||||
// console.log('REFRR - mycodeid.value', newval)
|
||||
refresh()
|
||||
})
|
||||
|
||||
|
||||
@@ -434,7 +434,7 @@ export default defineComponent({
|
||||
watch(() => searchList.value, (to: any, from: any) => {
|
||||
// console.log('watch searchlist', to)
|
||||
if (searchList.value && !changetable.value) {
|
||||
console.log('REFRR searchList.value', to)
|
||||
// console.log('REFRR searchList.value', to)
|
||||
refresh()
|
||||
}
|
||||
})
|
||||
@@ -461,7 +461,7 @@ export default defineComponent({
|
||||
watch(() => props.filtercustom, (to: any, from: any) => {
|
||||
// console.log('filtercustom', to)
|
||||
if (JSON.stringify(to) !== JSON.stringify(from)) {
|
||||
console.log('REFRR props.filtercustom', to, from)
|
||||
// console.log('REFRR props.filtercustom', to, from)
|
||||
refresh()
|
||||
}
|
||||
})
|
||||
@@ -568,7 +568,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function searchval(newval: any, table: any) {
|
||||
console.log('REFRR searchval', newval, table)
|
||||
// console.log('REFRR searchval', newval, table)
|
||||
const myrecfilt = searchList.value.find((rec) => rec.table === table)
|
||||
let keycookie = tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP
|
||||
if (myrecfilt && myrecfilt.keycookie)
|
||||
@@ -1224,7 +1224,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
watch(() => mycodeid.value, (newval, oldval) => {
|
||||
console.log('REFRR - mycodeid.value', newval)
|
||||
// console.log('REFRR - mycodeid.value', newval)
|
||||
refresh()
|
||||
})
|
||||
|
||||
@@ -1235,7 +1235,7 @@ export default defineComponent({
|
||||
myvertical.value === costanti.VISUTABLE_SCHEDA_USER ||
|
||||
(props.showType === costanti.SHOW_USERINFO))) {
|
||||
|
||||
console.log('REFRR - updateTables.value', newval)
|
||||
// console.log('REFRR - updateTables.value', newval)
|
||||
refresh()
|
||||
|
||||
userStore.updateTables = false
|
||||
|
||||
@@ -17,6 +17,7 @@ import { CMyPage } from '@src/components/CMyPage'
|
||||
import { CMyPageIntro } from '@src/components/CMyPageIntro'
|
||||
import { CEventsCalendar } from '@src/components/CEventsCalendar'
|
||||
import { CMyEditor } from '@src/components/CMyEditor'
|
||||
import { CMySlider } from '@src/components/CMySlider'
|
||||
import { CMyFieldRec } from '@src/components/CMyFieldRec'
|
||||
import { CSelectImage } from '@src/components/CSelectImage'
|
||||
import { CSelectAnimation } from '@src/components/CSelectAnimation'
|
||||
@@ -37,7 +38,7 @@ export default defineComponent({
|
||||
components: {
|
||||
CImgTitle, CTitle, LandingFooter, CEventsCalendar,
|
||||
CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro, CMyEditor, CMyFieldRec,
|
||||
CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation
|
||||
CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation, CMySlider
|
||||
},
|
||||
emits: ['saveElem', 'selElemClick', 'toggleSize', 'deleteElem'],
|
||||
props: {
|
||||
|
||||
@@ -159,52 +159,38 @@
|
||||
icon="fas fa-expand-alt"
|
||||
>
|
||||
<div class="row">
|
||||
<q-select
|
||||
<CMySlider
|
||||
label="Lunghezza:"
|
||||
v-model="myel.widthimg"
|
||||
emit-value
|
||||
map-options
|
||||
:options="generateSizeOptions()"
|
||||
use-input
|
||||
use-chips
|
||||
@input="modifElem"
|
||||
@new-value="updateSizeWidth"
|
||||
filled
|
||||
dense
|
||||
style="width: 150px"
|
||||
/>
|
||||
<q-select
|
||||
:min="10"
|
||||
:max="1000"
|
||||
color="green"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
|
||||
<CMySlider
|
||||
label="Altezza:"
|
||||
v-model="myel.heightimg"
|
||||
emit-value
|
||||
map-options
|
||||
:options="generateSizeOptions()"
|
||||
use-input
|
||||
use-chips
|
||||
@input="saveElem"
|
||||
filled
|
||||
dense
|
||||
@new-value="updateSizeHeight"
|
||||
style="width: 150px"
|
||||
/>
|
||||
<q-select
|
||||
label="Altezza Carosello:"
|
||||
:min="10"
|
||||
:max="1000"
|
||||
color="red"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
<CMySlider
|
||||
v-if="
|
||||
myel.type === shared_consts.ELEMTYPE.CARD ||
|
||||
myel.type === shared_consts.ELEMTYPE.GRID_ORIZ
|
||||
"
|
||||
label="Altezza Carosello:"
|
||||
v-model="myel.heightcarousel"
|
||||
emit-value
|
||||
map-options
|
||||
:options="generateSizeOptions()"
|
||||
use-input
|
||||
use-chips
|
||||
@input="saveElem"
|
||||
filled
|
||||
dense
|
||||
@new-value="updateSizeHeight"
|
||||
style="width: 150px"
|
||||
/>
|
||||
:min="10"
|
||||
:max="1000"
|
||||
color="fuchsia"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
</div>
|
||||
</q-expansion-item>
|
||||
|
||||
@@ -357,6 +343,15 @@
|
||||
v-else-if="myel.type === shared_consts.ELEMTYPE.CARD"
|
||||
:class="myel.span ? '' : ''"
|
||||
>
|
||||
<CSelectColor
|
||||
v-if="enableEdit"
|
||||
style="min-width: 150px"
|
||||
v-model="myel.color"
|
||||
@update:model-value="modifElem"
|
||||
title="Colore Sfondo"
|
||||
>
|
||||
</CSelectColor>
|
||||
|
||||
<q-select
|
||||
v-model="myel.num2"
|
||||
:options="[
|
||||
@@ -1333,7 +1328,7 @@
|
||||
@update:model-value="modifElem"
|
||||
>
|
||||
</q-toggle>
|
||||
<br>
|
||||
<br />
|
||||
|
||||
<!--++AddCATALOGO_FIELDS-->
|
||||
<q-select
|
||||
@@ -1390,115 +1385,83 @@
|
||||
>
|
||||
</q-select>
|
||||
|
||||
<q-select
|
||||
label="Largh. Schede:"
|
||||
<CMySlider
|
||||
label="Larghezza Schede:"
|
||||
v-model="myel.catalogo.widthscheda"
|
||||
emit-value
|
||||
map-options
|
||||
:options="generateSizeOptions()"
|
||||
use-input
|
||||
use-chips
|
||||
@input="modifElem"
|
||||
@new-value="updateCatalogoSizeWidthScheda"
|
||||
filled
|
||||
dense
|
||||
style="width: 150px"
|
||||
/>
|
||||
<q-select
|
||||
label="Largh. Pagina:"
|
||||
:min="10"
|
||||
:max="1000"
|
||||
color="green"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
|
||||
<CMySlider
|
||||
label="Larghezza Pagina:"
|
||||
v-model="myel.catalogo.widthpag"
|
||||
emit-value
|
||||
map-options
|
||||
:options="generateSizeOptions(false)"
|
||||
use-input
|
||||
use-chips
|
||||
@input="modifElem"
|
||||
@new-value="updateCatalogoSizeWidthPag"
|
||||
filled
|
||||
dense
|
||||
style="width: 180px"
|
||||
/>
|
||||
<q-select
|
||||
label="Largh. Immagini:"
|
||||
:min="10"
|
||||
:max="1000"
|
||||
color="green"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
|
||||
<CMySlider
|
||||
label="Larghezza Immagini:"
|
||||
v-model="myel.catalogo.width"
|
||||
emit-value
|
||||
map-options
|
||||
:options="generateSizeOptions()"
|
||||
use-input
|
||||
use-chips
|
||||
@input="modifElem"
|
||||
@new-value="updateCatalogoSizeWidth"
|
||||
filled
|
||||
dense
|
||||
style="width: 180px"
|
||||
/>
|
||||
<q-select
|
||||
:min="10"
|
||||
:max="1000"
|
||||
color="green"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
|
||||
<CMySlider
|
||||
label="Altezza Schede:"
|
||||
v-model="myel.catalogo.height"
|
||||
emit-value
|
||||
map-options
|
||||
:options="generateSizeOptions()"
|
||||
use-input
|
||||
use-chips
|
||||
@input="modifElem"
|
||||
@new-value="updateCatalogoSizeHeight"
|
||||
filled
|
||||
dense
|
||||
style="width: 180px"
|
||||
/>
|
||||
:min="10"
|
||||
:max="1000"
|
||||
color="red"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
</div>
|
||||
<div class="sfondo_margine">
|
||||
Margini:<br />
|
||||
<q-select
|
||||
<CMySlider
|
||||
label="Schede per Riga"
|
||||
v-model="myel.catalogo.numschede_perRiga"
|
||||
emit-value
|
||||
map-options
|
||||
:options="[
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||
]"
|
||||
use-input
|
||||
use-chips
|
||||
@input="modifElem"
|
||||
@new-value="updateCatalogoNumSchedePerRiga"
|
||||
filled
|
||||
dense
|
||||
style="width: 180px"
|
||||
/>
|
||||
<q-select
|
||||
:min="1"
|
||||
:max="10"
|
||||
color="green"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
<CMySlider
|
||||
label="Schede per Colonna"
|
||||
v-model="myel.catalogo.numschede_perCol"
|
||||
emit-value
|
||||
map-options
|
||||
:options="[
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||
]"
|
||||
use-input
|
||||
use-chips
|
||||
@input="modifElem"
|
||||
@new-value="updateCatalogoNumSchedePerCol"
|
||||
filled
|
||||
dense
|
||||
style="width: 180px"
|
||||
/>
|
||||
<q-input
|
||||
dense
|
||||
label="Margine per Pagina:"
|
||||
:min="1"
|
||||
:max="10"
|
||||
color="red"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
|
||||
<CMySlider
|
||||
label="Margine per Pagina"
|
||||
v-model="myel.catalogo.margine_pagina"
|
||||
filled
|
||||
v-on:keyup.enter="saveFieldElem"
|
||||
>
|
||||
</q-input>
|
||||
<q-input
|
||||
dense
|
||||
label="Margine per Riga:"
|
||||
:min="0"
|
||||
:max="1000"
|
||||
color="red"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
|
||||
<CMySlider
|
||||
label="Margine per Riga"
|
||||
v-model="myel.catalogo.margine_riga"
|
||||
filled
|
||||
v-on:keyup.enter="saveFieldElem"
|
||||
>
|
||||
</q-input>
|
||||
:min="0"
|
||||
:max="1000"
|
||||
color="red"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
</div>
|
||||
<div>Sfondo:</div>
|
||||
<div v-if="enableEdit">
|
||||
@@ -1545,6 +1508,15 @@
|
||||
v-on:keyup.enter="saveFieldElem"
|
||||
>
|
||||
</q-input>
|
||||
<CMySlider
|
||||
label="Larghezza Pagina Stampa:"
|
||||
v-model="myel.catalogo.widthpagPrintable"
|
||||
:min="0"
|
||||
:max="1000"
|
||||
color="red"
|
||||
addstr="px"
|
||||
@update:model-value="modifElem"
|
||||
></CMySlider>
|
||||
|
||||
Nome File Printable: {{ myel.catalogo.backgroundimage_printable }}
|
||||
<CMyFieldRec
|
||||
@@ -1559,20 +1531,6 @@
|
||||
@save="saveFieldElem"
|
||||
>
|
||||
</CMyFieldRec>
|
||||
<q-select
|
||||
label="Largh. Pag. Stampa:"
|
||||
v-model="myel.catalogo.widthpagPrintable"
|
||||
emit-value
|
||||
map-options
|
||||
:options="generateSizeOptions(false)"
|
||||
use-input
|
||||
use-chips
|
||||
@input="modifElem"
|
||||
@new-value="updateCatalogoSizeWidthPagPrintable"
|
||||
filled
|
||||
dense
|
||||
style="width: 180px"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -33,6 +33,12 @@
|
||||
v-if="myel.type === shared_consts.ELEMTYPE.CARD"
|
||||
class="card-carousel-container"
|
||||
>
|
||||
<div
|
||||
v-if="editOn"
|
||||
class="elemEdit"
|
||||
>
|
||||
Card
|
||||
</div>
|
||||
<q-carousel
|
||||
swipeable
|
||||
animated
|
||||
@@ -45,7 +51,8 @@
|
||||
:height="myel.heightcarousel"
|
||||
width="100%"
|
||||
control-type="flat"
|
||||
class="bg-primary shadow-2 rounded-borders"
|
||||
class="shadow-2 rounded-borders"
|
||||
:style="`background-color: ${myel.color} !important`"
|
||||
@mouseenter="animare = false"
|
||||
@mouseleave="animare = true"
|
||||
@transition="handleTransition"
|
||||
@@ -105,7 +112,7 @@
|
||||
myel.heightimg || `300px`
|
||||
} !important; width: ${
|
||||
myel.widthimg || `300px`
|
||||
} !important;`
|
||||
} !important;`
|
||||
"
|
||||
@click="rec.link ? tools.openUrl(rec.link) : undefined"
|
||||
>
|
||||
@@ -122,13 +129,13 @@
|
||||
:src="tools.getImgFileByElem(myel, rec)"
|
||||
/>
|
||||
</div>
|
||||
<q-card-section>
|
||||
<q-card-section class="q-card-section-small">
|
||||
<div :class="rec.size" :style="`color: ` + rec.color">
|
||||
{{ tools.getText(rec.alt) }}
|
||||
</div>
|
||||
<div
|
||||
:class="
|
||||
`q-mt-sm q-mb-xs ` + tools.getClassAnim(myel.anim)
|
||||
`q-mt-xs q-mb-xs ` + tools.getClassAnim(myel.anim)
|
||||
"
|
||||
v-html="rec.content"
|
||||
></div>
|
||||
@@ -240,7 +247,7 @@
|
||||
</div>
|
||||
<div v-else-if="myel.type === shared_consts.ELEMTYPE.QRCODE">
|
||||
<div v-if="editOn" class="elemEdit">QRCODE:</div>
|
||||
<CQRCode
|
||||
<CQRCode
|
||||
:read="myel.parambool"
|
||||
:link="myel.container"
|
||||
:textlink="myel.container2"
|
||||
|
||||
@@ -143,7 +143,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function toggleSize() {
|
||||
mywidthEditor.value = mywidthEditor.value === 400 ? 1200 : 400
|
||||
mywidthEditor.value = mywidthEditor.value === 400 ? 1050 : 400
|
||||
}
|
||||
|
||||
function deleteElem() {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
v-model="visuEditor"
|
||||
v-if="selElem && editOn"
|
||||
show-if-above
|
||||
:breakpoint="800"
|
||||
:breakpoint="350"
|
||||
side="right"
|
||||
:width="tools.isMobile() ? 350 : mywidthEditor"
|
||||
elevated
|
||||
|
||||
@@ -188,7 +188,7 @@ export default defineComponent({
|
||||
)
|
||||
|
||||
function saveOptInCookie(arrval: any) {
|
||||
console.log('saveOptInCookie')
|
||||
// console.log('saveOptInCookie')
|
||||
|
||||
if (arrval) {
|
||||
for (const id of arrval) {
|
||||
@@ -230,7 +230,7 @@ export default defineComponent({
|
||||
|
||||
|
||||
function changeval(newval: any) {
|
||||
console.log(' ½½½½½½½ changeval', newval)
|
||||
// console.log(' ½½½½½½½ changeval', newval)
|
||||
if (props.multiple || props.multiselect_by_server) {
|
||||
// tools.localStSetItem(props.tablesel + '_' + newval, valori.value[newval])
|
||||
|
||||
@@ -549,9 +549,9 @@ export default defineComponent({
|
||||
function filterFn(val: any, update: any, abort: any) {
|
||||
update(
|
||||
async () => {
|
||||
console.log('Filter val:', val, 'len=', val.length)
|
||||
console.log('props.filter_extra', props.filter_extra)
|
||||
console.log('valori.value', valori.value)
|
||||
// console.log('Filter val:', val, 'len=', val.length)
|
||||
// console.log('props.filter_extra', props.filter_extra)
|
||||
// console.log('valori.value', valori.value)
|
||||
|
||||
let myarr: any = []
|
||||
|
||||
|
||||
0
src/components/CMySlider/CMySlider.scss
Executable file
58
src/components/CMySlider/CMySlider.ts
Executable file
@@ -0,0 +1,58 @@
|
||||
import { defineComponent, ref, computed, PropType, toRef } from 'vue'
|
||||
import { IOperators } from 'model'
|
||||
|
||||
import { useI18n } from '@/boot/i18n'
|
||||
import { useQuasar } from 'quasar'
|
||||
|
||||
import { shared_consts } from '@/common/shared_vuejs'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CMySlider',
|
||||
props: {
|
||||
modelValue: {
|
||||
type: [String, Number],
|
||||
required: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
min: {
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
max: {
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
addstr: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
color: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
},
|
||||
setup(props, { emit }) {
|
||||
const $q = useQuasar()
|
||||
const { t } = useI18n()
|
||||
|
||||
|
||||
const sliderValue = computed({
|
||||
get: () => {
|
||||
let mystr = props.modelValue + ''
|
||||
return mystr.replace(props.addstr, '')
|
||||
},
|
||||
set: (value) => emit('update:modelValue', value + props.addstr)
|
||||
})
|
||||
|
||||
return {
|
||||
t,
|
||||
shared_consts,
|
||||
sliderValue,
|
||||
}
|
||||
}
|
||||
})
|
||||
22
src/components/CMySlider/CMySlider.vue
Executable file
@@ -0,0 +1,22 @@
|
||||
<template>
|
||||
<div class="q-pa-xs" style="width: 300px">
|
||||
<q-badge color="primary"> {{ label }} {{ modelValue }} </q-badge>
|
||||
|
||||
<q-input
|
||||
dense
|
||||
v-model="sliderValue"
|
||||
filled
|
||||
>
|
||||
</q-input>
|
||||
|
||||
<q-slider v-model="sliderValue" :min="min" :max="max" :color="color" />
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CMySlider.ts">
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './CMySlider.scss';
|
||||
</style>
|
||||
1
src/components/CMySlider/index.ts
Executable file
@@ -0,0 +1 @@
|
||||
export {default as CMySlider} from './CMySlider.vue'
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<q-select
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
rounded
|
||||
outlined
|
||||
v-model="color"
|
||||
@@ -12,19 +12,14 @@
|
||||
map-options
|
||||
>
|
||||
<template v-slot:selected>
|
||||
<q-chip
|
||||
dense
|
||||
square
|
||||
color="white"
|
||||
class="q-my-none q-ml-xs q-mr-none"
|
||||
>
|
||||
<span :style="`color: `+ color">{{ color }}</span>
|
||||
<q-chip dense square color="white" class="q-my-none q-ml-xs q-mr-none">
|
||||
<span :style="`background-color: ${color}; color: white;`">{{ color }}</span>
|
||||
</q-chip>
|
||||
</template>
|
||||
<template v-slot:option="scope">
|
||||
<q-item v-bind="scope.itemProps">
|
||||
<q-item-section>
|
||||
<q-item-label :style="`color: ` + scope.opt.value">{{
|
||||
<q-item-label :style="`background-color: ${scope.opt.label}; color: white;`">{{
|
||||
scope.opt.label
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
|
||||
@@ -2273,7 +2273,7 @@ $coloreprincipale: lightblue;
|
||||
|
||||
.row.no-wrap {
|
||||
flex-wrap: nowrap !important;
|
||||
gap: 1rem;
|
||||
// gap: 1rem;
|
||||
}
|
||||
|
||||
.card-width-200 {
|
||||
@@ -2489,4 +2489,8 @@ body.body--dark {
|
||||
}
|
||||
.sfondo_margine{
|
||||
background-color: #d8f38a;
|
||||
}
|
||||
|
||||
.q-card-section-small {
|
||||
padding: 0px;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
const msg_website_it = {
|
||||
ws: {
|
||||
sitename: 'Gruppo Macro',
|
||||
siteshortname: 'Gruppo Macro',
|
||||
description: '',
|
||||
keywords: '',
|
||||
sitename: 'Riso',
|
||||
siteshortname: 'RISO',
|
||||
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.',
|
||||
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS',
|
||||
},
|
||||
hours: {
|
||||
descr: 'Descrizione',
|
||||
@@ -16,35 +16,23 @@ const msg_website_it = {
|
||||
pages: {
|
||||
home: 'Home',
|
||||
profile: 'Profilo',
|
||||
install_site: 'Installa Sito',
|
||||
profile2: 'ProfiloU',
|
||||
mypage2: 'mypage2',
|
||||
myservice2: 'myservice2',
|
||||
myhosps2: 'myhosps2',
|
||||
mygood2: 'mygood2',
|
||||
catalogo: 'Catalogo',
|
||||
fundraising: 'Sostieni il Progetto',
|
||||
notifs: 'Configura le Notifiche',
|
||||
unsubscribe: 'Disiscriviti',
|
||||
unsubscribe_user: 'Disiscriviti User',
|
||||
test: 'Test',
|
||||
projects: 'Progetti',
|
||||
report: 'Report Ore',
|
||||
producer: 'Produttore',
|
||||
orderinfo: 'Ordini Effettuati',
|
||||
products: 'Prodotti',
|
||||
cash: 'Cassa',
|
||||
productInfos: 'Info Prodotti',
|
||||
listinoprodotti: 'Listino Prodotti',
|
||||
productslist: 'Lista Prodotti',
|
||||
collabora: 'Collabora',
|
||||
categories: 'Categorie',
|
||||
storehouses: 'Magazzino',
|
||||
providers: 'Fornitori',
|
||||
catprods: 'Categorie',
|
||||
subcatprods: 'Sotto-Categorie',
|
||||
gasordine: 'Gas Ordine',
|
||||
scontisticas: 'Scontistica',
|
||||
departments: 'Uffici',
|
||||
orders: 'Ordini Ricevuti',
|
||||
orders2: 'Ordini Ricevuti',
|
||||
@@ -133,11 +121,15 @@ const msg_website_it = {
|
||||
only_residenti: 'Solo Residenti',
|
||||
only_consiglio: 'Solo Consiglieri',
|
||||
color: 'Colore',
|
||||
gasordini: 'Gas Ordini',
|
||||
gestoreordini: 'Gestore Ordini',
|
||||
mainMenu: 'Menu Principale',
|
||||
subtitle: 'Sottotitolo',
|
||||
lang: 'Lingua',
|
||||
keywords: 'Parole Chiave',
|
||||
desctiption: 'Descrizione',
|
||||
heightimg: 'Altezza Immagine',
|
||||
},
|
||||
msg: {
|
||||
myAppName: 'Più che Buono',
|
||||
myAppName: 'Riso',
|
||||
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
|
||||
underconstruction: 'App in costruzione...',
|
||||
myDescriz: '',
|
||||
|
||||
@@ -67,6 +67,39 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
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: '/activities',
|
||||
materialIcon: 'fas fa-house-user',
|
||||
name: 'mypages.activities',
|
||||
component: () => import('@/root/activities/activities.vue'),
|
||||
meta: { requiresAuth: true },
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 15,
|
||||
@@ -78,6 +111,17 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
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,
|
||||
@@ -165,7 +209,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
meta: { requiresAuth: true, newpage: true },
|
||||
inmenu: false,
|
||||
infooter: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
active: true,
|
||||
order: 137,
|
||||
@@ -232,7 +276,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
|
||||
{
|
||||
active: true,
|
||||
order: 150,
|
||||
path: '/fundraising',
|
||||
path: '/sostieniilprogetto',
|
||||
materialIcon: 'fas fa-hand-holding-heart',
|
||||
name: 'pages.fundraising',
|
||||
component: () => import('@src/root/fundraising/fundraising.vue'),
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<meta name="description" content="<%= productDescription %>">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="msapplication-tap-highlight" content="no">
|
||||
<meta name="version" content="1.1.4">
|
||||
<meta name="version" content="1.1.6">
|
||||
<meta name="viewport"
|
||||
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
|
||||
|
||||
|
||||
@@ -1778,7 +1778,7 @@ export const useUserStore = defineStore('UserStore', {
|
||||
},
|
||||
|
||||
updateDataFr(data: any) {
|
||||
console.log('updateDataFr', data)
|
||||
// console.log('updateDataFr', data)
|
||||
this.my.profile.friends = data.listFriends ? data.listFriends : []
|
||||
this.my.profile.req_friends = data.listRequestFriends ? data.listRequestFriends : []
|
||||
this.my.profile.asked_friends = data.listSentRequestFriends ? data.listSentRequestFriends : []
|
||||
|
||||