- ho migliorato la grafica della generazione del PDF e PDF Stampa.

This commit is contained in:
Surya Paolo
2025-05-15 19:18:50 +02:00
parent 9e0634da05
commit 685bc34bd0
16 changed files with 570 additions and 476 deletions

4
.env
View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
{ {
"name": "gruppomacro", "name": "gruppomacro",
"version": "1.2.44", "version": "1.2.46",
"description": "Gruppo Macro", "description": "Gruppo Macro",
"productName": "Gruppo Macro", "productName": "Gruppo Macro",
"author": "Surya", "author": "Surya",
@@ -9,20 +9,20 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8089 APP_VERSION='1.2.44' quasar dev", "dev": "PORT=8089 APP_VERSION='1.2.46' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "APP_VERSION='1.2.44' quasar build -m spa", "buildspa": "APP_VERSION='1.2.46' quasar build -m spa",
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.44' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.46' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.44' quasar dev", "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.46' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "cnm", "name": "cnm",
"version": "1.2.44", "version": "1.2.46",
"description": "Comunita Nuovo Mondo", "description": "Comunita Nuovo Mondo",
"productName": "ComunitaNuovoMondo", "productName": "ComunitaNuovoMondo",
"author": "Surya", "author": "Surya",
@@ -9,7 +9,7 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8083 APP_VERSION='1.2.44' quasar dev", "dev": "PORT=8083 APP_VERSION='1.2.46' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production quasar build -m pwa", "buildpwa": "NODE_ENV=production quasar build -m pwa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.44' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.46' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.44' quasar dev", "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.46' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "freeplanet", "name": "freeplanet",
"version": "1.2.44", "version": "1.2.46",
"description": "freeplanet", "description": "freeplanet",
"productName": "freeplanet", "productName": "freeplanet",
"author": "Surya", "author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8087 APP_VERSION='1.2.44' quasar dev", "dev": "PORT=8087 APP_VERSION='1.2.46' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa", "buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.44' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.46' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.44' quasar dev", "spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.46' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "gruppomacro", "name": "gruppomacro",
"version": "1.2.44", "version": "1.2.46",
"description": "Gruppo Macro", "description": "Gruppo Macro",
"productName": "Gruppo Macro", "productName": "Gruppo Macro",
"author": "Surya", "author": "Surya",
@@ -9,20 +9,20 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8089 APP_VERSION='1.2.44' quasar dev", "dev": "PORT=8089 APP_VERSION='1.2.46' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "APP_VERSION='1.2.44' quasar build -m spa", "buildspa": "APP_VERSION='1.2.46' quasar build -m spa",
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.44' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.46' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.44' quasar dev", "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.46' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "kolibrilab", "name": "kolibrilab",
"version": "1.2.44", "version": "1.2.46",
"description": "kolibrilab", "description": "kolibrilab",
"productName": "kolibrilab", "productName": "kolibrilab",
"author": "Surya Paolo", "author": "Surya Paolo",
@@ -8,11 +8,11 @@
"keywords": [], "keywords": [],
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"dev": "PORT=8083 APP_VERSION='1.2.44' quasar dev", "dev": "PORT=8083 APP_VERSION='1.2.46' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa", "buildspa": "quasar build -m spa",
@@ -20,8 +20,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt", "fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.44' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.46' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.44' quasar dev", "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.46' quasar dev",
"spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa", "spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js" "generate-sw": "workbox generateSW workbox-config.js"

View File

@@ -1,6 +1,6 @@
{ {
"name": "nutriben", "name": "nutriben",
"version": "1.2.44", "version": "1.2.46",
"description": "Nutriben", "description": "Nutriben",
"productName": "Nutriben", "productName": "Nutriben",
"author": "Surya", "author": "Surya",
@@ -9,20 +9,20 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8093 APP_VERSION='1.2.44' quasar dev", "dev": "PORT=8093 APP_VERSION='1.2.46' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "APP_VERSION='1.2.44' quasar build -m spa", "buildspa": "APP_VERSION='1.2.46' quasar build -m spa",
"lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"", "lint": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\"",
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.44' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.46' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.44' quasar dev", "spa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.46' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "piuchebuono", "name": "piuchebuono",
"version": "1.2.44", "version": "1.2.46",
"description": "PiuCheBuono", "description": "PiuCheBuono",
"productName": "PiuCheBuono", "productName": "PiuCheBuono",
"author": "Surya", "author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "PORT=8085 APP_VERSION='1.2.44' quasar dev", "dev": "PORT=8085 APP_VERSION='1.2.46' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa", "buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.44' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.46' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.44' quasar dev", "spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.46' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{ {
"name": "riso", "name": "riso",
"version": "1.2.44", "version": "1.2.46",
"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": "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", "productName": "Riso",
"author": "Surya", "author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "APP_VERSION='1.2.44' PORT=8084 quasar dev", "dev": "APP_VERSION='1.2.46' PORT=8084 quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev", "dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build", "build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.44' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.46' quasar build -m pwa",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch", "type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa", "buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt", "lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt", "fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.44' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.46' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.44' quasar dev", "spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.46' quasar dev",
"debug": "quasar dev --mode debug", "debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0", "test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js", "generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -3,7 +3,7 @@
/* global workbox */ /* global workbox */
/* global cfgenv */ /* global cfgenv */
const VITE_APP_VERSION = '1.2.44'; const VITE_APP_VERSION = '1.2.46';
// Costanti di configurazione // Costanti di configurazione
const DYNAMIC_CACHE = 'dynamic-cache-v2'; const DYNAMIC_CACHE = 'dynamic-cache-v2';
@@ -83,6 +83,7 @@ cleanupOutdatedCaches();
self.addEventListener('install', () => { self.addEventListener('install', () => {
console.log('[Service Worker] Installing ...'); console.log('[Service Worker] Installing ...');
self.skipWaiting(); self.skipWaiting();
clientsClaim(); clientsClaim();
}); });

View File

@@ -1,40 +1,54 @@
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar';
import { import {
defineComponent, onBeforeMount, onBeforeUnmount, onMounted, ref, toRefs, watch, inject, computed, nextTick, defineComponent,
} from 'vue' onBeforeMount,
onBeforeUnmount,
onMounted,
ref,
toRefs,
watch,
inject,
computed,
nextTick,
} from 'vue';
import { tools } from '@tools' import { tools } from '@tools';
import { shared_consts } from '@src/common/shared_vuejs' import { shared_consts } from '@src/common/shared_vuejs';
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n';
import { boot } from 'quasar/wrappers' import { boot } from 'quasar/wrappers';
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router';
import { static_data } from '@src/db/static_data' import { static_data } from '@src/db/static_data';
import messagePopover from '../../layouts/toolbar/messagePopover/messagePopover.vue' import messagePopover from '../../layouts/toolbar/messagePopover/messagePopover.vue';
import notifPopover from '../../layouts/toolbar/notifPopover/notifPopover.vue' import notifPopover from '../../layouts/toolbar/notifPopover/notifPopover.vue';
import coinsPopover from '../../layouts/toolbar/coinsPopover/coinsPopover.vue' import coinsPopover from '../../layouts/toolbar/coinsPopover/coinsPopover.vue';
import drawer from '../../layouts/drawer/drawer.vue' import drawer from '../../layouts/drawer/drawer.vue';
import { CMyAvatar } from '@src/components/CMyAvatar' import { CMyAvatar } from '@src/components/CMyAvatar';
import { CMyFieldDb } from '@src/components/CMyFieldDb' import { CMyFieldDb } from '@src/components/CMyFieldDb';
import { CSelectUserActive } from '@src/components/CSelectUserActive' import { CSelectUserActive } from '@src/components/CSelectUserActive';
import { toolsext } from '@store/Modules/toolsext' import { toolsext } from '@store/Modules/toolsext';
import { useGlobalStore } from '@store/globalStore' import { useGlobalStore } from '@store/globalStore';
import { useUserStore } from '@store/UserStore' import { useUserStore } from '@store/UserStore';
import { useProducts } from '@store/Products' import { useProducts } from '@store/Products';
import MixinUsers from '../../mixins/mixin-users'
import { CMyCart, CSigninNoreg } from '@src/components'
import { costanti } from '@costanti'
import { useNotifStore } from '@src/store/NotifStore'
import MixinUsers from '../../mixins/mixin-users';
import { CMyCart, CSigninNoreg } from '@src/components';
import { costanti } from '@costanti';
import { useNotifStore } from '@src/store/NotifStore';
import { Platform } from 'quasar'; import { Platform } from 'quasar';
export default defineComponent({ export default defineComponent({
name: 'MyHeader', name: 'MyHeader',
components: { components: {
drawer, messagePopover, drawer,
CMyFieldDb, CMyAvatar, CSigninNoreg, CMyCart, notifPopover, coinsPopover, messagePopover,
CMyFieldDb,
CMyAvatar,
CSigninNoreg,
CMyCart,
notifPopover,
coinsPopover,
CSelectUserActive, CSelectUserActive,
}, },
props: { props: {
@@ -49,131 +63,143 @@ export default defineComponent({
}, },
setup() { setup() {
const $q = useQuasar() const $q = useQuasar();
const { t } = useI18n() const { t } = useI18n();
const $router = useRouter() const $router = useRouter();
const isUserNotAuth = ref(false) const isUserNotAuth = ref(false);
const iconConn = ref('wifi') const iconConn = ref('wifi');
const clIconConn = ref('clIconOnline') const clIconConn = ref('clIconOnline');
const strConn = ref('') const strConn = ref('');
const langshort = ref('') const langshort = ref('');
const clCloudUpload = ref('') const clCloudUpload = ref('');
const clCloudDownload = ref('') const clCloudDownload = ref('');
const clCloudUp_Indexeddb = ref('') const clCloudUp_Indexeddb = ref('');
const tabcmd = ref('') const tabcmd = ref('');
const clCloudDown_Indexeddb = ref('clIndexeddbsend') const clCloudDown_Indexeddb = ref('clIndexeddbsend');
const photo = ref('') const photo = ref('');
const visuimg = ref(true) const visuimg = ref(true);
const userStore = useUserStore() const userStore = useUserStore();
const globalStore = useGlobalStore() const globalStore = useGlobalStore();
const products = useProducts() const products = useProducts();
const notifStore = useNotifStore() const notifStore = useNotifStore();
const { getnumItemsCart } = MixinUsers() const { getnumItemsCart } = MixinUsers();
const site = computed(() => globalStore.site) const site = computed(() => globalStore.site);
const isfinishLoading = computed(() => globalStore.finishLoading) const isfinishLoading = computed(() => globalStore.finishLoading);
const dark = ref(false) const dark = ref(false);
const leftDrawerOpen = ref(globalStore.leftDrawerOpen) const leftDrawerOpen = ref(globalStore.leftDrawerOpen);
const editOn = computed({ const editOn = computed({
get: () => globalStore.editOn, get: () => globalStore.editOn,
set: val => { set: (val) => {
tools.updateEditOn(val) tools.updateEditOn(val);
}, },
}) });
const getClassColorHeader = computed(() => { const getClassColorHeader = computed(() => {
// if (tools.isTest()) return 'bg-light-blue' // if (tools.isTest()) return 'bg-light-blue'
// if (tools.isDebug()) return 'bg-info' // if (tools.isDebug()) return 'bg-info'
if (globalStore.site && globalStore.site.confpages?.col_toolbar) if (globalStore.site && globalStore.site.confpages?.col_toolbar)
return 'bg-' + globalStore.site.confpages?.col_toolbar return 'bg-' + globalStore.site.confpages?.col_toolbar;
else { else {
if (globalStore.homescreen) { if (globalStore.homescreen) {
return 'bg-blue' return 'bg-blue';
} else { } else {
return 'bg-light-blue' return 'bg-light-blue';
} }
} }
});
})
const getColorText = computed(() => { const getColorText = computed(() => {
if (globalStore.site && globalStore.site.confpages?.col_toolbar === 'white') if (globalStore.site && globalStore.site.confpages?.col_toolbar === 'white') return 'black';
return 'black' else return 'white';
else });
return 'white'
})
watch(() => dark.value, (value: any, oldval: any) => { watch(
() => dark.value,
(value: any, oldval: any) => {
if (isfinishLoading.value) { if (isfinishLoading.value) {
$q.dark.set(value) $q.dark.set(value);
tools.setCookie('darkmode', value ? '-1' : '0') tools.setCookie('darkmode', value ? '-1' : '0');
} }
}) }
);
function setDarkMode() { function setDarkMode() {
dark.value = tools.getCookie('darkmode', false, false, false) === '-1' dark.value = tools.getCookie('darkmode', false, false, false) === '-1';
$q.dark.set(dark.value) $q.dark.set(dark.value);
} }
function uploadStart() { function uploadStart() {
BeforeMount();
BeforeMount()
} }
watch(() => globalStore.finishLoading, (value: any, oldval: any) => { watch(
() => globalStore.finishLoading,
(value: any, oldval: any) => {
if (value) { if (value) {
uploadStart() uploadStart();
} }
}) }
);
const data = ref({ const data = ref({
registration: null, registration: null,
updateExists: false, updateExists: false,
} as any) } as any);
const refreshing = ref(false) const refreshing = ref(false);
const stateconn = ref(globalStore.stateConnection) const stateconn = ref(globalStore.stateConnection);
function updateAvailable(event: any) { function updateAvailable(event: any) {
console.log(event) console.log(event);
data.value.registration = event.detail data.value.registration = event.detail;
data.value.updateExists = true data.value.updateExists = true;
RefreshApp() // update automatically RefreshApp(); // update automatically
} }
function created() { function created() {
if (isfinishLoading.value) { if (isfinishLoading.value) {
uploadStart() uploadStart();
} }
try { try {
if (window) { if (window) {
window.addEventListener('swUpdated', updateAvailable, { once: true }) // Ascolta evento custom 'swUpdated' per notifica aggiornamento
window.addEventListener(
'swUpdated',
async (event) => {
// Chiedi conferma allutente (qui con confirm, sostituisci con dialog Quasar se vuoi)
const doUpdate = confirm('È disponibile una nuova versione. Vuoi aggiornare ora?');
if (doUpdate) {
// Invia messaggio al service worker per skipWaiting
if (event.detail?.swWaiting) {
event.detail.swWaiting.postMessage({ action: 'skipWaiting' });
}
}
},
{ once: true }
);
if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
navigator.serviceWorker.addEventListener('controllerchange', () => { navigator.serviceWorker.addEventListener('controllerchange', () => {
// We'll also need to add 'refreshing' to our data originally set to false. if (refreshing.value) return;
if (refreshing.value) refreshing.value = true;
return window.location.reload();
refreshing.value = true });
// Here the actual reload of the page occurs
window.location.reload()
})
} }
} }
} catch (e) { } catch (e) {
console.error('Err', e.message) console.error('Err', e.message);
} }
} }
const { const {
@@ -194,76 +220,76 @@ export default defineComponent({
getNumMsg, getNumMsg,
getNumMsgUnread, getNumMsgUnread,
getMsgText, getMsgText,
paotest } = MixinUsers() paotest,
} = MixinUsers();
function isonline() { function isonline() {
return globalStore.stateConnection === 'online' return globalStore.stateConnection === 'online';
} }
function isAdmin() { function isAdmin() {
return userStore.isAdmin return userStore.isAdmin;
} }
function isManager() { function isManager() {
return userStore.isManager return userStore.isManager;
} }
function isEditor() { function isEditor() {
return userStore.isEditor return userStore.isEditor;
} }
const isSocio = computed(() => userStore.my.profile.socio) const isSocio = computed(() => userStore.my.profile.socio);
function isSocioResidente() { function isSocioResidente() {
return userStore.my.profile.socioresidente return userStore.my.profile.socioresidente;
} }
function isConsiglio() { function isConsiglio() {
return userStore.my.profile.consiglio return userStore.my.profile.consiglio;
} }
function getcolormenu() { function getcolormenu() {
return isSocio.value ? 'green-7' : 'white' return isSocio.value ? 'green-7' : 'white';
} }
function isFacilitatore() { function isFacilitatore() {
return userStore.isFacilitatore return userStore.isFacilitatore;
} }
function isZoomeri() { function isZoomeri() {
return userStore.isZoomeri return userStore.isZoomeri;
} }
function isTratuttrici() { function isTratuttrici() {
return userStore.isTratuttrici return userStore.isTratuttrici;
} }
function conndata_changed() { function conndata_changed() {
return globalStore.connData return globalStore.connData;
} }
function snakeToCamel(str: string) { function snakeToCamel(str: string) {
return str.replace(/(-\w)/g, (m) => m[1].toUpperCase()) return str.replace(/(-\w)/g, (m) => m[1].toUpperCase());
} }
function setshortlang(mylang: string) { function setshortlang(mylang: string) {
static_data.lang_available.forEach((langavail: any) => { static_data.lang_available.forEach((langavail: any) => {
if (langavail.value === mylang) { if (langavail.value === mylang) {
langshort.value = langavail.short langshort.value = langavail.short;
return langshort.value return langshort.value;
} }
}) });
} }
function isNewVersionAvailable() { function isNewVersionAvailable() {
return globalStore.isNewVersionAvailable return globalStore.isNewVersionAvailable;
} }
function closeAll() { function closeAll() {
globalStore.rightNotifOpen = false globalStore.rightNotifOpen = false;
globalStore.rightCartOpen = false globalStore.rightCartOpen = false;
globalStore.rightDrawerOpen = false globalStore.rightDrawerOpen = false;
globalStore.rightCoinsOpen = false globalStore.rightCoinsOpen = false;
} }
/*const leftDrawerOpen = computed({ /*const leftDrawerOpen = computed({
@@ -276,73 +302,71 @@ export default defineComponent({
const rightDrawerOpen = computed({ const rightDrawerOpen = computed({
get: () => globalStore.rightDrawerOpen, get: () => globalStore.rightDrawerOpen,
set: val => { set: (val) => {
closeAll() closeAll();
globalStore.rightDrawerOpen = val globalStore.rightDrawerOpen = val;
}, },
}) });
const rightCartOpen = computed({ const rightCartOpen = computed({
get: () => globalStore.rightCartOpen, get: () => globalStore.rightCartOpen,
set: val => { set: (val) => {
closeAll() closeAll();
globalStore.rightCartOpen = val globalStore.rightCartOpen = val;
}, },
}) });
const rightNotifOpen = computed({ const rightNotifOpen = computed({
get: () => globalStore.rightNotifOpen, get: () => globalStore.rightNotifOpen,
set: val => { set: (val) => {
closeAll() closeAll();
globalStore.rightNotifOpen = val globalStore.rightNotifOpen = val;
}, },
}) });
const rightCoinsOpen = computed({ const rightCoinsOpen = computed({
get: () => globalStore.rightCoinsOpen, get: () => globalStore.rightCoinsOpen,
set: val => { set: (val) => {
closeAll() closeAll();
globalStore.rightCoinsOpen = val globalStore.rightCoinsOpen = val;
}, },
}) });
const lang = computed({ const lang = computed({
get: () => $q.lang.isoName, get: () => $q.lang.isoName,
set: mylang => { set: (mylang) => {
// console.log('set lang', $q.lang.getLocale(), 'passato', mylang) // console.log('set lang', $q.lang.getLocale(), 'passato', mylang)
$q.lang.set(snakeToCamel(mylang)) $q.lang.set(snakeToCamel(mylang));
// tools.showNotif($q, 'IMPOSTA LANG= ' + $i18n.locale) // tools.showNotif($q, 'IMPOSTA LANG= ' + $i18n.locale)
// console.log('IMPOSTA LANG= ' + $i18n.locale) // console.log('IMPOSTA LANG= ' + $i18n.locale)
let mylangtopass = mylang let mylangtopass = mylang;
mylangtopass = toolsext.checkLangPassed($q, $router, mylangtopass) mylangtopass = toolsext.checkLangPassed($q, $router, mylangtopass);
userStore.setlang($q, $router, mylangtopass) userStore.setlang($q, $router, mylangtopass);
setshortlang(mylangtopass) setshortlang(mylangtopass);
tools.setLangAtt($q, $router, mylangtopass) tools.setLangAtt($q, $router, mylangtopass);
userStore.setLangServer() userStore.setLangServer();
}, },
}) });
watch(() =>
stateconn,
// @ts-ignore
(value: string, oldValue: string) => {
globalStore.stateConnection = value
},
)
watch( watch(
conndata_changed, () => stateconn,
(value, oldValue) => { // @ts-ignore
clCloudUpload.value = (value.uploading_server === 1) ? 'clCloudUpload send' : 'clCloudUpload' (value: string, oldValue: string) => {
clCloudUpload.value = (value.downloading_server === 1) ? 'clCloudUpload receive' : 'clCloudUpload' globalStore.stateConnection = value;
clCloudUp_Indexeddb.value = (value.uploading_indexeddb === 1) ? 'clIndexeddb send' : 'clIndexeddb' }
clCloudUp_Indexeddb.value = (value.downloading_indexeddb === 1) ? 'clIndexeddb receive' : 'clIndexeddb' );
watch(conndata_changed, (value, oldValue) => {
clCloudUpload.value = value.uploading_server === 1 ? 'clCloudUpload send' : 'clCloudUpload';
clCloudUpload.value = value.downloading_server === 1 ? 'clCloudUpload receive' : 'clCloudUpload';
clCloudUp_Indexeddb.value = value.uploading_indexeddb === 1 ? 'clIndexeddb send' : 'clIndexeddb';
clCloudUp_Indexeddb.value = value.downloading_indexeddb === 1 ? 'clIndexeddb receive' : 'clIndexeddb';
/* clCloudUpload.value = (value.uploading_server === -1) ? 'clCloudUpload error' : clCloudUpload /* clCloudUpload.value = (value.uploading_server === -1) ? 'clCloudUpload error' : clCloudUpload
clCloudUpload.value = (value.downloading_server === -1) ? 'clCloudUpload error' : clCloudDownload clCloudUpload.value = (value.downloading_server === -1) ? 'clCloudUpload error' : clCloudDownload
@@ -350,8 +374,7 @@ export default defineComponent({
clCloudUp_Indexeddb.value = (value.downloading_indexeddb === -1) ? 'clIndexeddb error' : clCloudDown_Indexeddb clCloudUp_Indexeddb.value = (value.downloading_indexeddb === -1) ? 'clIndexeddb error' : clCloudDown_Indexeddb
*/ */
}, });
)
/* /*
@Watch('conn_changed', { immediate: true, deep: true }) @Watch('conn_changed', { immediate: true, deep: true })
@@ -380,82 +403,78 @@ export default defineComponent({
*/ */
function RefreshApp() { function RefreshApp() {
if (Platform.is.ios) { if (Platform.is.ios) {
// Unregister Service Worker // Unregister Service Worker
if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then((registrations) => { navigator.serviceWorker.getRegistrations().then((registrations) => {
for (const registration of registrations) { for (const registration of registrations) {
registration.unregister() registration.unregister();
} }
}) });
} }
// window.location.reload() // window.location.reload()
} else { } else {
data.value.updateExists = false;
data.value.updateExists = false
// Make sure we only send a 'skip waiting' message if the SW is waiting // Make sure we only send a 'skip waiting' message if the SW is waiting
if (!data.value.registration || !data.value.registration.waiting) return if (!data.value.registration || !data.value.registration.waiting) return;
// Send message to SW to skip the waiting and activate the new SW // Send message to SW to skip the waiting and activate the new SW
data.value.registration.waiting.postMessage({ type: 'SKIP_WAITING' }) data.value.registration.waiting.postMessage({ type: 'SKIP_WAITING' });
} }
} }
function changeIconConn() { function changeIconConn() {
iconConn.value = globalStore.stateConnection === 'online' ? 'wifi' : 'wifi_off' iconConn.value = globalStore.stateConnection === 'online' ? 'wifi' : 'wifi_off';
clIconConn.value = globalStore.stateConnection === 'online' ? 'clIconOnline' : 'clIconOffline' clIconConn.value = globalStore.stateConnection === 'online' ? 'clIconOnline' : 'clIconOffline';
} }
function getAppVersion() { function getAppVersion() {
// return "AA" // return "AA"
let strv = '' let strv = '';
if (import.meta.env.DEV) { if (import.meta.env.DEV) {
strv = 'DEV ' strv = 'DEV ';
} else if (tools.isTest()) { } else if (tools.isTest()) {
strv = 'TEST ' strv = 'TEST ';
} }
return `${strv}v. ${import.meta.env.VITE_APP_VERSION}` return `${strv}v. ${import.meta.env.VITE_APP_VERSION}`;
} }
function getLangAtt() { function getLangAtt() {
return $q.lang.isoName return $q.lang.isoName;
} }
function BeforeMount() { function BeforeMount() {
setDarkMode() setDarkMode();
// Estrai la Lang dal Localstorage // Estrai la Lang dal Localstorage
if (!globalStore.finishLoading) if (!globalStore.finishLoading) return;
return;
// console.log('$q.i18n=', $q.i18n, '$q.getLocale()=', $q.lang.isoName) // console.log('$q.i18n=', $q.i18n, '$q.getLocale()=', $q.lang.isoName)
const mybrowserLang = getLangAtt() const mybrowserLang = getLangAtt();
// tools.showNotif($q, 'prima: ' + String(my)) // tools.showNotif($q, 'prima: ' + String(my))
let mylang = tools.getItemLS(toolsext.localStorage.lang) let mylang = tools.getItemLS(toolsext.localStorage.lang);
if (mylang === '') { if (mylang === '') {
if (navigator) { if (navigator) {
mylang = navigator.language mylang = navigator.language;
// console.log(`LANG2 NAVIGATOR ${mylang}`) // console.log(`LANG2 NAVIGATOR ${mylang}`)
} else { } else {
mylang = $q.lang.isoName mylang = $q.lang.isoName;
} }
// console.log('IMPOSTA LANGMY', mylang) // console.log('IMPOSTA LANGMY', mylang)
} }
mylang = toolsext.checkLangPassed($q, $router, mylang) mylang = toolsext.checkLangPassed($q, $router, mylang);
tools.setLangAtt($q, $router, mylang) tools.setLangAtt($q, $router, mylang);
setshortlang(mylang) setshortlang(mylang);
} }
function mounted() { function mounted() {
// Test this by running the code snippet below and then // Test this by running the code snippet below and then
// use the "TableOnlyView" checkbox in DevTools Network panel // use the "TableOnlyView" checkbox in DevTools Network panel
// console.log('Event LOAD') // console.log('Event LOAD')
if (window) { if (window) {
window.addEventListener('load', () => { window.addEventListener('load', () => {
@@ -463,78 +482,73 @@ export default defineComponent({
function updateOnlineStatus(event: any) { function updateOnlineStatus(event: any) {
if (navigator.onLine) { if (navigator.onLine) {
console.log('EVENT ONLINE!') console.log('EVENT ONLINE!');
// handle online status // handle online status
globalStore.setStateConnection('online') globalStore.setStateConnection('online');
// mychangeIconConn() // mychangeIconConn()
} else { } else {
console.log('EVENT OFFLINE!') console.log('EVENT OFFLINE!');
// handle offline status // handle offline status
globalStore.setStateConnection('offline') globalStore.setStateConnection('offline');
// mychangeIconConn() // mychangeIconConn()
} }
} }
window.addEventListener('online', updateOnlineStatus) window.addEventListener('online', updateOnlineStatus);
window.addEventListener('offline', updateOnlineStatus) window.addEventListener('offline', updateOnlineStatus);
}) });
} }
nextTick(() => { nextTick(() => {
if (tools.getCookie('menu3oriz') === '1') { if (tools.getCookie('menu3oriz') === '1') {
if ($q.screen.width < 800) { if ($q.screen.width < 800) {
leftDrawerOpen.value = false leftDrawerOpen.value = false;
// globalStore.leftDrawerOpen = false // globalStore.leftDrawerOpen = false
} else { } else {
leftDrawerOpen.value = true leftDrawerOpen.value = true;
globalStore.leftDrawerOpen = true globalStore.leftDrawerOpen = true;
} }
} else if (tools.getCookie('menu3oriz') === '0') {
leftDrawerOpen.value = false;
globalStore.leftDrawerOpen = false;
} }
else if (tools.getCookie('menu3oriz') === '0') { });
leftDrawerOpen.value = false
globalStore.leftDrawerOpen = false
}
})
} }
function imglogo() { function imglogo() {
return `../../${tools.getimglogo()}` return `../../${tools.getimglogo()}`;
} }
function getappname() { function getappname() {
return tools.getappname(tools.isMobile()) return tools.getappname(tools.isMobile());
} }
function toggleanimation() { function toggleanimation() {
console.log('toggleanimation') console.log('toggleanimation');
visuimg.value = false visuimg.value = false;
setTimeout(() => { setTimeout(() => {
visuimg.value = true visuimg.value = true;
}, 100) }, 100);
} }
function logoutHandler() { function logoutHandler() {
userStore.logout() userStore.logout().then(() => {
.then(() => {
// $router.replace('/logout') // $router.replace('/logout')
// //
// setTimeout(() => { // setTimeout(() => {
// $router.replace('/') // $router.replace('/')
// }, 1000) // }, 1000)
tools.showNotif($q, t('logout.uscito'), { icon: 'exit_to_app' }) tools.showNotif($q, t('logout.uscito'), { icon: 'exit_to_app' });
}) });
} }
function clickregister() { function clickregister() {
rightDrawerOpen.value = false rightDrawerOpen.value = false;
$router.replace('/signup') $router.replace('/signup');
} }
function getnumOrdersCart() { function getnumOrdersCart() {
/* const arrorderscart = Products.orders.filter((rec) => rec.status < shared_consts.OrderStatus.COMPLETED) /* const arrorderscart = Products.orders.filter((rec) => rec.status < shared_consts.OrderStatus.COMPLETED)
// const arrorderscart = Products.orders // const arrorderscart = Products.orders
@@ -543,36 +557,34 @@ export default defineComponent({
} }
*/ */
return 0 return 0;
} }
function getcart() { function getcart() {
// return Products.cart // return Products.cart
return null return null;
} }
function toHome() { function toHome() {
$router.push('/') $router.push('/');
} }
function changecmd(value: any) { function changecmd(value: any) {
console.log('changecmd', value) console.log('changecmd', value);
globalStore.changeCmdClick(value) globalStore.changeCmdClick(value);
} }
function clickMenu3Orizz() { function clickMenu3Orizz() {
leftDrawerOpen.value = !leftDrawerOpen.value;
globalStore.leftDrawerOpen = leftDrawerOpen.value;
leftDrawerOpen.value = !leftDrawerOpen.value tools.setCookie('menu3oriz', globalStore.leftDrawerOpen ? '1' : '0');
globalStore.leftDrawerOpen = leftDrawerOpen.value
tools.setCookie('menu3oriz', globalStore.leftDrawerOpen ? '1' : '0')
} }
onBeforeMount(BeforeMount) onBeforeMount(BeforeMount);
onMounted(mounted) onMounted(mounted);
created() created();
return { return {
static_data, static_data,
@@ -588,7 +600,11 @@ export default defineComponent({
t, t,
isonline, isonline,
isAdmin, isAdmin,
isManager, isSocio, isSocioResidente, isConsiglio, getcolormenu, isManager,
isSocio,
isSocioResidente,
isConsiglio,
getcolormenu,
isNewVersionAvailable, isNewVersionAvailable,
getAppVersion, getAppVersion,
RefreshApp, RefreshApp,
@@ -637,7 +653,6 @@ export default defineComponent({
clickMenu3Orizz, clickMenu3Orizz,
isEditor, isEditor,
editOn, editOn,
} };
}, },
});
})

View File

@@ -8396,6 +8396,8 @@ export const tools = {
console.log('beforeinstallprompt !'); console.log('beforeinstallprompt !');
// Stash the event so it can be triggered later. // Stash the event so it can be triggered later.
globalStore.deferredPrompt = event; globalStore.deferredPrompt = event;
// showInstallButton(true);
}); });
} catch (e) { } catch (e) {
console.error('err', e); console.error('err', e);

View File

@@ -14,6 +14,7 @@ import { shared_consts } from '@src/common/shared_vuejs';
import { CProductCard } from '@src/components/CProductCard'; import { CProductCard } from '@src/components/CProductCard';
import { CMyDialog } from '@src/components/CMyDialog'; import { CMyDialog } from '@src/components/CMyDialog';
import { CTitleBanner } from '@src/components/CTitleBanner';
import { CMySelect } from '@src/components/CMySelect'; import { CMySelect } from '@src/components/CMySelect';
import { CMyValueDb } from '@src/components/CMyValueDb'; import { CMyValueDb } from '@src/components/CMyValueDb';
import { CProductTable } from '@src/components/CProductTable'; import { CProductTable } from '@src/components/CProductTable';
@@ -57,6 +58,7 @@ export default defineComponent({
CSearchProduct, CSearchProduct,
CMyDialog, CMyDialog,
CMyValueDb, CMyValueDb,
CTitleBanner,
}, },
emits: ['update:modelValue', 'updateCatalogo'], emits: ['update:modelValue', 'updateCatalogo'],
props: { props: {
@@ -90,7 +92,33 @@ export default defineComponent({
const heightpdf = ref('12.31'); const heightpdf = ref('12.31');
const compressionepdf = ref('prepress'); const compressionepdf = ref('prepress');
const ismounting = ref(false) const ismounting = ref(false);
const pdfColumns = [
{ name: 'name', label: 'Nome', field: 'name', align: 'left' },
{ name: 'pdf', label: 'PDF', field: 'pdf', align: 'left' },
{ name: 'data', label: 'Data', field: 'data', align: 'left' },
{ name: 'azioni', label: 'Azioni', field: 'azioni', align: 'center' },
];
const pdfRows = computed(() => [
{
name: 'PDF Generato',
pdf: getCatalogoByMyPage.value.pdf_generato,
data: getCatalogoByMyPage.value.data_generato,
showButton: getCatalogoByMyPage.value.data_generato !== getCatalogoByMyPage.value.data_online,
buttonLabel: 'Pubblica PDF OnLine',
action: pubblicaPDF,
},
{
name: 'PDF Generato Stampa',
pdf: getCatalogoByMyPage.value.pdf_generato_stampa,
data: getCatalogoByMyPage.value.data_generato_stampa,
showButton: getCatalogoByMyPage.value.data_generato_stampa !== getCatalogoByMyPage.value.data_online_stampa,
buttonLabel: 'Pubblica PDF Stampa',
action: pubblicaPDFStampa,
},
]);
const optDisp = ref([ const optDisp = ref([
{ label: 'Tutti', value: costanti.DISP.TUTTI }, { label: 'Tutti', value: costanti.DISP.TUTTI },
@@ -585,14 +613,20 @@ export default defineComponent({
if (optcatalogo.value) { if (optcatalogo.value) {
// LINK PAGINA // LINK PAGINA
if (optcatalogo.value.dimensioni_def.linkIdTemplate) { if (optcatalogo.value.dimensioni_def.linkIdTemplate) {
const reccatalog = globalStore.sovrascriviPaginaDefaultFromTemplate(optcatalogo.value.dimensioni_def.linkIdTemplate, optcatalogo.value.dimensioni_def); const reccatalog = globalStore.sovrascriviPaginaDefaultFromTemplate(
optcatalogo.value.dimensioni_def.linkIdTemplate,
optcatalogo.value.dimensioni_def
);
if (reccatalog) { if (reccatalog) {
optcatalogo.value.dimensioni_def.pagina = { ...reccatalog.dimensioni_def.pagina}; optcatalogo.value.dimensioni_def.pagina = { ...reccatalog.dimensioni_def.pagina };
} }
} }
if (optcatalogo.value.print_linkIdTemplate) { if (optcatalogo.value.print_linkIdTemplate) {
const reccat2 = globalStore.sovrascriviAreadistampaFromTemplate(optcatalogo.value.print_linkIdTemplate, optcatalogo.value); const reccat2 = globalStore.sovrascriviAreadistampaFromTemplate(
optcatalogo.value.print_linkIdTemplate,
optcatalogo.value
);
if (reccat2) { if (reccat2) {
const optcatalogo2 = { ...optcatalogo.value }; const optcatalogo2 = { ...optcatalogo.value };
// optcatalogo2.areadistampa = { ...reccat2.areadistampa}; // optcatalogo2.areadistampa = { ...reccat2.areadistampa};
@@ -847,7 +881,6 @@ export default defineComponent({
await productStore.loadProducts(true); await productStore.loadProducts(true);
} }
if (!loadpage.value) return; if (!loadpage.value) return;
generatinglist.value = true; generatinglist.value = true;
@@ -1333,7 +1366,7 @@ export default defineComponent({
async function mounted() { async function mounted() {
// console.log('mounted Catalogo') // console.log('mounted Catalogo')
ismounting.value = true ismounting.value = true;
generatinglist.value = true; generatinglist.value = true;
if (optcatalogo.value.showListaArgomenti) cat.value = tools.getCookie(getKeyCatAtLoad(), ''); if (optcatalogo.value.showListaArgomenti) cat.value = tools.getCookie(getKeyCatAtLoad(), '');
@@ -1400,7 +1433,7 @@ export default defineComponent({
calcArrProducts(); calcArrProducts();
ismounting.value = false ismounting.value = false;
} }
function loaddata() { function loaddata() {
@@ -1752,13 +1785,14 @@ export default defineComponent({
if (element) { if (element) {
// add this record to lista_prodotti // add this record to lista_prodotti
if (getCatalogoByMyPage.value && !getCatalogoByMyPage.value.lista_prodotti?.some((p) => p._id === element._id)) { if (
getCatalogoByMyPage.value &&
!getCatalogoByMyPage.value.lista_prodotti?.some((p) => p._id === element._id)
) {
// inserire il record in cima // inserire il record in cima
const arr = getCatalogoByMyPage.value.lista_prodotti || []; const arr = getCatalogoByMyPage.value.lista_prodotti || [];
if (where === shared_consts.WHERE_INSERT.ONTOP) if (where === shared_consts.WHERE_INSERT.ONTOP) arr.unshift(element);
arr.unshift(element); else if (where === shared_consts.WHERE_INSERT.ONBOTTOM) arr.push(element);
else if (where === shared_consts.WHERE_INSERT.ONBOTTOM)
arr.push(element)
updateProducts(arr); updateProducts(arr);
@@ -1989,6 +2023,21 @@ export default defineComponent({
const pubblicaPDF = async () => { const pubblicaPDF = async () => {
const catalog = getCatalogoByMyPage.value; const catalog = getCatalogoByMyPage.value;
const confirm = await $q
.dialog({
title: 'Conferma',
message: 'Vuoi pubblicare OnLine questo PDF?',
ok: {
label: 'S ',
push: true,
},
cancel: {
label: 'Annulla',
},
})
.onOk(async () => {
if (!confirm) return;
const ris = await globalStore.execOnlinePDF({ id_catalog: catalog._id, stampa: false }); const ris = await globalStore.execOnlinePDF({ id_catalog: catalog._id, stampa: false });
if (ris) { if (ris) {
@@ -2009,11 +2058,25 @@ export default defineComponent({
icon: 'error', icon: 'error',
}); });
} }
});
}; };
const pubblicaPDFStampa = async () => { const pubblicaPDFStampa = async () => {
const catalog = getCatalogoByMyPage.value; const catalog = getCatalogoByMyPage.value;
const confirm = await $q
.dialog({
title: 'Conferma',
message: 'Vuoi pubblicare OnLine questo PDF di STAMPA ?',
ok: {
label: 'S ',
push: true,
},
cancel: {
label: 'Annulla',
},
})
.onOk(async () => {
const ris = await globalStore.execOnlinePDF({ id_catalog: catalog._id, stampa: true }); const ris = await globalStore.execOnlinePDF({ id_catalog: catalog._id, stampa: true });
if (ris) { if (ris) {
@@ -2034,6 +2097,7 @@ export default defineComponent({
icon: 'error', icon: 'error',
}); });
} }
});
// await saveCatalog(); // await saveCatalog();
}; };
@@ -2118,6 +2182,8 @@ export default defineComponent({
pubblicaPDF, pubblicaPDF,
pubblicaPDFStampa, pubblicaPDFStampa,
ismounting, ismounting,
pdfColumns,
pdfRows,
}; };
}, },
}); });

View File

@@ -298,21 +298,142 @@
>1</q-badge >1</q-badge
> >
</q-tab> </q-tab>
<q-tab
v-if="!tools.isUtente()"
name="visu"
icon="fas fa-book-reader"
label="Catalogo"
>
</q-tab>
<q-tab
v-if="!tools.isUtente()"
name="genera"
icon="fas fa-file-pdf"
label="Genera PDF"
>
</q-tab>
</q-tabs> </q-tabs>
<CTitleBanner
v-show="tabcatalogo === 'visu'"
class="q-pa-xs"
title="Genera PDF"
bgcolor="bg-blue"
clcolor="text-white"
mystyle=""
myclass="myshad"
:canopen="true"
:visible="false"
>
<div v-if="tabcatalogo === 'visu'">
<div
v-if="!tools.isUtente()"
class="row justify-center"
>
<q-btn
v-if="optcatalogo.pdf && !optcatalogo.generazionePDFInCorso"
:label="`1) PREPARA PDF`"
@click="preparePDF"
></q-btn>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
<q-btn
v-if="optcatalogo.pdf && optcatalogo.generazionePDFInCorso"
:label="`2) Genera PDF ` + getPdfFilename()"
@click="generatePDF()"
color="positive"
></q-btn>
<q-btn
v-if="tools.isAdmin() && false"
label="Debug"
@click="toggleDebug()"
:push="optcatalogo.indebug"
:color="optcatalogo.indebug ? `positive` : 'primary'"
></q-btn>
</div>
<div
v-if="getCatalogoByMyPage.pdf_generato"
class="bg-green-1 q-ma-sm q-pa-sm"
>
<div class="bg-blue-1 text-red text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF generati Temporanei</strong>
</div>
<q-table
:rows="pdfRows"
:columns="pdfColumns"
flat
bordered
dense
row-key="name"
>
<template v-slot:body-cell-pdf="props">
<q-td :props="props">
<a
v-if="props.row.pdf"
:href="tools.getHost() + props.row.pdf"
target="_blank"
class="text-bold"
>
{{ tools.getHost() + props.row.pdf }}
</a>
<span v-else>-</span>
</q-td>
</template>
<template v-slot:body-cell-data="props">
<q-td :props="props">
{{ tools.getstrDateTime(props.row.data) }}
</q-td>
</template>
<template v-slot:body-cell-azioni="props">
<q-td :props="props">
<q-btn
v-if="props.row.showButton"
rounded
color="positive"
size="md"
:label="props.row.buttonLabel"
@click="props.row.action"
/>
</q-td>
</template>
</q-table>
<div class="bg-red-1 q-pa-md q-mt-md">
<div class="bg-blue-1 text-green text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF Pubblicati OnLine</strong>
</div>
<table class="q-table q-table--flat q-table--dense q-ma-none q-pa-none">
<tbody>
<tr>
<td><strong>PDF OnLine:</strong></td>
<td>
<a
v-if="getCatalogoByMyPage.pdf_online"
:href="tools.getHost() + getCatalogoByMyPage.pdf_online"
target="_blank"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_online }}
</a>
<span v-else>-</span>
</td>
<td>{{ tools.getstrDateTime(getCatalogoByMyPage.data_online) }}</td>
</tr>
<tr>
<td><strong>PDF OnLine Stampa:</strong></td>
<td>
<a
v-if="getCatalogoByMyPage.pdf_online_stampa"
:href="tools.getHost() + getCatalogoByMyPage.pdf_online_stampa"
target="_blank"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_online_stampa }}
</a>
<span v-else>-</span>
</td>
<td>{{ tools.getstrDateTime(getCatalogoByMyPage.data_online_stampa) }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</CTitleBanner>
<q-tab-panels <q-tab-panels
v-model="tabvisu" v-model="tabvisu"
animated animated
@@ -404,119 +525,6 @@
/>--> />-->
</q-toolbar> </q-toolbar>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="genera">
<div
v-if="!tools.isUtente()"
class="row justify-center"
>
<q-btn
v-if="optcatalogo.pdf && !optcatalogo.generazionePDFInCorso"
:label="`1) PREPARA PDF`"
@click="preparePDF"
></q-btn>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
<q-btn
v-if="optcatalogo.pdf && optcatalogo.generazionePDFInCorso"
:label="`2) Genera PDF ` + getPdfFilename()"
@click="generatePDF()"
color="positive"
></q-btn>
<q-btn
v-if="tools.isAdmin() && false"
label="Debug"
@click="toggleDebug()"
:push="optcatalogo.indebug"
:color="optcatalogo.indebug ? `positive` : 'primary'"
></q-btn>
</div>
<div
v-if="getCatalogoByMyPage.pdf_generato"
class="bg-green-1 q-ma-sm q-pa-sm"
>
<div class="bg-blue-1 text-red text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF generati Temporanei</strong>
</div>
<div v-if="getCatalogoByMyPage.data_generato !== getCatalogoByMyPage.data_online">
PDF Generato:
<a
:href="tools.getHost() + getCatalogoByMyPage.pdf_generato"
target="_blank"
v-if="getCatalogoByMyPage.pdf_generato"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_generato }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getCatalogoByMyPage.data_generato) }})
<br />
<q-btn
v-if="getCatalogoByMyPage.data_generato !== getCatalogoByMyPage.data_online"
rounded
label="Pubblica PDF OnLine"
color="positive"
@click="pubblicaPDF()"
></q-btn>
</div>
<br />
<div v-if="getCatalogoByMyPage.data_generato_stampa !== getCatalogoByMyPage.data_online_stampa">
PDF Generato Stampa:
<a
:href="tools.getHost() + getCatalogoByMyPage.pdf_generato_stampa"
target="_blank"
v-if="getCatalogoByMyPage.pdf_generato_stampa"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_generato_stampa }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getCatalogoByMyPage.data_generato_stampa) }})
<br />
<q-btn
v-if="getCatalogoByMyPage.data_generato_stampa !== getCatalogoByMyPage.data_online_stampa"
rounded
label="Pubblica PDF Stampa"
color="positive"
@click="pubblicaPDFStampa()"
></q-btn>
</div>
<div class="bg-green-1">
<div class="bg-blue-1 text-green text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF Pubblicati OnLine</strong>
</div>
<div>
PDF OnLine:
<a
:href="tools.getHost() + getCatalogoByMyPage.pdf_online"
target="_blank"
v-if="getCatalogoByMyPage.pdf_online"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_online }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getCatalogoByMyPage.data_online) }})
</div>
<br />
<div>
PDF OnLine Stampa:
<a
:href="tools.getHost() + getCatalogoByMyPage.pdf_online_stampa"
target="_blank"
v-if="getCatalogoByMyPage.pdf_online_stampa"
class="text-bold"
>
{{ tools.getHost() + getCatalogoByMyPage.pdf_online_stampa }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getCatalogoByMyPage.data_online_stampa) }})
</div>
</div>
</div>
</q-tab-panel>
<q-tab-panel name="ricerca"> <q-tab-panel name="ricerca">
<div <div
class="col" class="col"