- corretto scheda prodotto, record salvato

This commit is contained in:
Surya Paolo
2025-05-01 00:20:02 +02:00
parent 358f0d6816
commit 721d2ac38c
32 changed files with 296 additions and 177 deletions

4
.env
View File

@@ -1,6 +1,6 @@
VITE_APP_VERSION="1.2.33" VITE_APP_VERSION="1.2.34"
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.33.js" VITE_SERVICE_WORKER_FILE="sw-1.2.34.js"
VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a" VITE_PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
VITE_VUE_ROUTER_MODE="history" VITE_VUE_ROUTER_MODE="history"

View File

@@ -1,13 +1,11 @@
VITE_APP_ID="18" VITE_APP_ID="18"
VITE_APP_URL="https://gruppomacro.app" VITE_APP_URL="https://test.gruppomacro.app"
VITE_MONGODB_HOST="https://api.gruppomacro.app" VITE_MONGODB_HOST="https://testapi.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="0" VITE_DEBUG="1"
VITE_VUE_APP_ISTEST="0" VITE_VUE_APP_ISTEST="1"
DIRECTORY_LOCAL="myprojplanet_vite" DIRECTORY_LOCAL="myprojplanet_vite"
DIRECTORY_SERVER="/var/www/nodejs_piuchebuono_server" DIRECTORY_SERVER="/var/www/nodejs_test.piuchebuono_server"
SERVERDIR_WEBSITE="/var/www/gruppomacro.app" SERVERDIR_WEBSITE="/var/www/test.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.33"> <meta name="version" content="1.2.34">
<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.33", "version": "1.2.34",
"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.33' quasar dev", "dev": "PORT=8089 APP_VERSION='1.2.34' 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.33' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.34' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.33' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.34' 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.33' quasar build -m spa", "buildspa": "APP_VERSION='1.2.34' 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.33' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.34' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.33' quasar dev", "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.34' 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.33", "version": "1.2.34",
"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.33' quasar dev", "dev": "PORT=8083 APP_VERSION='1.2.34' 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.33' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.34' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.33' quasar dev", "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.34' 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.33", "version": "1.2.34",
"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.33' quasar dev", "dev": "PORT=8087 APP_VERSION='1.2.34' 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.33' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.34' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.33' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.34' 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.33' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.34' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.33' quasar dev", "spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.34' 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.33", "version": "1.2.34",
"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.33' quasar dev", "dev": "PORT=8089 APP_VERSION='1.2.34' 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.33' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.34' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.33' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.34' 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.33' quasar build -m spa", "buildspa": "APP_VERSION='1.2.34' 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.33' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.34' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.33' quasar dev", "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.34' 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.33", "version": "1.2.34",
"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.33' quasar dev", "dev": "PORT=8083 APP_VERSION='1.2.34' 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.33' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.34' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.33' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.34' 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.33' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.34' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.33' quasar dev", "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.34' 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": "piuchebuono", "name": "piuchebuono",
"version": "1.2.33", "version": "1.2.34",
"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.33' quasar dev", "dev": "PORT=8085 APP_VERSION='1.2.34' 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.33' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.34' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.33' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.34' 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.33' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.34' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.33' quasar dev", "spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.34' 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.33", "version": "1.2.34",
"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.33' PORT=8084 quasar dev", "dev": "APP_VERSION='1.2.34' 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.33' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.34' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.33' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.34' 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.33' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.34' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.33' quasar dev", "spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.34' 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.33"; const VITE_APP_VERSION = "1.2.34";
// Costanti di configurazione // Costanti di configurazione
const DYNAMIC_CACHE = 'dynamic-cache-v2'; const DYNAMIC_CACHE = 'dynamic-cache-v2';

View File

@@ -128,13 +128,13 @@
> >
<q-item-section avatar> <q-item-section avatar>
<q-avatar <q-avatar
icon="fas fa-pencil-alt" icon="fas fa-file-alt"
color="primary" color="primary"
text-color="white" text-color="white"
/> />
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label>Modifica</q-item-label> <q-item-label>Scheda Libro</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item <q-item
@@ -149,7 +149,7 @@
> >
<q-item-section avatar> <q-item-section avatar>
<q-avatar <q-avatar
icon="fas fa-pencil-alt" icon="fas fa-align-left"
color="primary" color="primary"
text-color="white" text-color="white"
/> />
@@ -188,13 +188,13 @@
> >
<q-item-section avatar> <q-item-section avatar>
<q-avatar <q-avatar
icon="fas fa-pencil-alt" icon="fas fa-cloud-download-alt"
color="accent" color="accent"
text-color="white" text-color="white"
/> />
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label>Riaggiorna il Libro da GM</q-item-label> <q-item-label>Carica dati del Libro (da GM)</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item <q-item
@@ -207,13 +207,13 @@
> >
<q-item-section avatar> <q-item-section avatar>
<q-avatar <q-avatar
icon="fas fa-pencil-alt" icon="fas fa-database"
color="accent" color="accent"
text-color="white" text-color="white"
/> />
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label>Riaggiorna il Libro da DBLocale</q-item-label> <q-item-label>Carica dati del Libro (dal DB Locale)</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<!--<q-item <!--<q-item
@@ -312,13 +312,13 @@
> >
<q-item-section avatar> <q-item-section avatar>
<q-avatar <q-avatar
icon="fas fa-eye" icon="fas fa-boxes"
color="orange" color="orange"
text-color="white" text-color="white"
/> />
</q-item-section> </q-item-section>
<q-item-section> <q-item-section>
<q-item-label>Visualizza su GM (Tutti i campi)</q-item-label> <q-item-label>Visualizza su GM (con le Quantità in Magazzino)</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@@ -691,7 +691,7 @@
:type="costanti.FieldType.editor_nohtml" :type="costanti.FieldType.editor_nohtml"
@updateproductmodif="updateproductmodif" @updateproductmodif="updateproductmodif"
@close="modifTrafiletto = false" @close="modifTrafiletto = false"
:maxlength="800" :maxlength="680"
> >
</CModifTrafiletto> </CModifTrafiletto>

View File

@@ -1647,7 +1647,7 @@ export default defineComponent({
} }
function SaveValue(newVal: any, valinitial: any) { function SaveValue(newVal: any, valinitial: any) {
console.log('SaveValue', newVal) // console.log('SaveValue', newVal)
// console.log('rowsel', rowsel, 'colsel', colsel.value) // console.log('rowsel', rowsel, 'colsel', colsel.value)
let myfield = '' let myfield = ''
let subf = '' let subf = ''

View File

@@ -49,7 +49,7 @@
v-tooltip="'Copia negli appunti'" v-tooltip="'Copia negli appunti'"
/> />
<CAITools></CAITools> <!--<CAITools></CAITools>-->
<CMyEditorAI <CMyEditorAI
v-if="modelValue" v-if="modelValue"

View File

@@ -1676,6 +1676,22 @@
map-options map-options
> >
</q-select> </q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
rounded
outlined
v-model="myel.catalogo.idTipoFormato"
:options="Products.tipoformato"
@update:model-value="modifElem"
multiple
label="Tipo Formato"
style="width: 300px"
option-value="IdTipoFormato"
option-label="Descrizione"
emit-value
map-options
>
</q-select>
<q-select <q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'" :behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="enableEdit" v-if="enableEdit"

View File

@@ -65,7 +65,7 @@ export default defineComponent({
const cmd = ref(shared_consts.SCHEDA_PRODOTTO.CMD_NONE) const cmd = ref(shared_consts.SCHEDA_PRODOTTO.CMD_NONE)
const showQtaDisponibile = ref(false) const showQtaDisponibile = ref(false)
const loading = ref(false) const loading = ref(true)
const visufromgm = ref(false) const visufromgm = ref(false)
const updatefromgm = ref(false) const updatefromgm = ref(false)
const field_updated_fromGM = ref('') const field_updated_fromGM = ref('')
@@ -77,6 +77,10 @@ export default defineComponent({
const optionscatalogo = ref(<any>{ maxlength: 0 }) const optionscatalogo = ref(<any>{ maxlength: 0 })
function handleUpdate(newList) {
internalProducts.value = newList
emit('update:lista_prodotti', internalProducts.value)
}
const editOn = computed({ const editOn = computed({
get(): boolean { get(): boolean {
@@ -90,10 +94,19 @@ export default defineComponent({
async function mounted() { async function mounted() {
console.log('mounted CProductTable')
loading.value = true
optionscatalogo.value = { optionscatalogo.value = {
maxlength: props.scheda?.testo_bottom?.maxlength maxlength: props.scheda?.testo_bottom?.maxlength
} }
const savedColumns = tools.getCookie("selColCat");
if (savedColumns) {
selectedColumns.value = savedColumns;
}
loading.value = false
} }
// Aggiorna la copia locale quando il prop cambia // Aggiorna la copia locale quando il prop cambia
@@ -102,7 +115,7 @@ export default defineComponent({
(newVal) => { (newVal) => {
internalProducts.value = [...newVal]; internalProducts.value = [...newVal];
} }
); ), { deep: true };
// Colonne della tabella // Colonne della tabella
const allColumns = [ const allColumns = [
@@ -119,6 +132,7 @@ export default defineComponent({
{ name: "idCollana", label: "Collana", field: "idCollana", align: "left" }, { name: "idCollana", label: "Collana", field: "idCollana", align: "left" },
{ name: "stato", label: "Stato", field: "stato", align: "left" }, { name: "stato", label: "Stato", field: "stato", align: "left" },
{ name: "tipologia", label: "Tipologia", field: "tipologia", align: "left" }, { name: "tipologia", label: "Tipologia", field: "tipologia", align: "left" },
{ name: "tipoformato", label: "Formato", field: "tipoformato", align: "left" },
{ name: "date_pub", label: "Pubblicato", field: "date_pub", align: "left" }, { name: "date_pub", label: "Pubblicato", field: "date_pub", align: "left" },
//{ name: "ranking", label: "Class.", field: "ranking", align: "right" }, //{ name: "ranking", label: "Class.", field: "ranking", align: "right" },
//{ name: "rank3M", label: "Class. 3M", field: "rank3M", align: "right", visu: costanti.VISUCAMPI.PER_EDITORE }, //{ name: "rank3M", label: "Class. 3M", field: "rank3M", align: "right", visu: costanti.VISUCAMPI.PER_EDITORE },
@@ -136,6 +150,10 @@ export default defineComponent({
]; ];
function getFieldValue(element: any, field: any): any { function getFieldValue(element: any, field: any): any {
if (!element)
return ''
try {
switch (field.field) { switch (field.field) {
case 'image': case 'image':
return element.productInfo?.imagefile return element.productInfo?.imagefile
@@ -214,9 +232,15 @@ export default defineComponent({
default: default:
return null; return null;
} }
} catch (e) {
console.error('Errore getFieldValue:', e, element, field);
return null;
}
} }
function getFieldClass(element: any, field: any): string { function getFieldClass(element: any, field: any): string {
if (!element)
return ''
switch (field.field) { switch (field.field) {
case 'trafiletto': case 'trafiletto':
return element.productInfo?.descr_trafiletto_catalogo?.length > 100 return element.productInfo?.descr_trafiletto_catalogo?.length > 100
@@ -265,6 +289,8 @@ export default defineComponent({
} }
function getFieldStyle(element: any, field: any): Record<string, string> { function getFieldStyle(element: any, field: any): Record<string, string> {
if (!element)
return ''
switch (field.field) { switch (field.field) {
case 'image': case 'image':
return { return {
@@ -357,13 +383,6 @@ export default defineComponent({
.join(", "); .join(", ");
} }
// Caricamento delle preferenze al mount del componente
onMounted(() => {
const savedColumns = tools.getCookie("selColCat");
if (savedColumns) {
selectedColumns.value = savedColumns;
}
});
function showProduct(element: any) { function showProduct(element: any) {
selProd.value = element selProd.value = element
@@ -524,6 +543,7 @@ export default defineComponent({
getFieldClass, getFieldClass,
getFieldStyle, getFieldStyle,
getFieldClick, getFieldClick,
handleUpdate,
} }
} }
}) })

View File

@@ -50,11 +50,13 @@
</thead> </thead>
<!-- Corpo della Tabella (Tbody) --> <!-- Corpo della Tabella (Tbody) -->
<draggable <draggable
v-model="internalProducts" v-if="!loading"
:model-value="internalProducts"
tag="tbody" tag="tbody"
handle=".drag-handle" handle=".drag-handle"
item-key="_id" item-key="_id"
@end="onDragEnd" @end="onDragEnd"
@update:modelValue="handleUpdate"
> >
<template #item="{ element }"> <template #item="{ element }">
<tr <tr

View File

@@ -296,6 +296,17 @@ export default defineComponent({
type: costanti.FieldType.string, type: costanti.FieldType.string,
dense: true, dense: true,
}, },
/*{
editOn: true,
label: "Pagine",
table: "arrvariazioni",
id: myproduct.value._id,
rec: myproduct.value,
mykey: "data_verifica",
debounce: "0",
type: costanti.FieldType.date,
dense: true,
},*/
{ {
editOn: false, editOn: false,
label: "Pubblicazione", label: "Pubblicazione",

View File

@@ -233,7 +233,6 @@
</div> </div>
<div v-if="tools.isLogged()" class="q-mt-lg"></div> <div v-if="tools.isLogged()" class="q-mt-lg"></div>
<slot></slot>
</q-drawer> </q-drawer>
</div> </div>
</template> </template>

View File

@@ -10,6 +10,7 @@ export interface ICatalog {
foto_collana?: IImg, foto_collana?: IImg,
idCollane?: string[] idCollane?: string[]
argomenti?: string[] argomenti?: string[]
idTipoFormato?: number[]
condition_andor: number, condition_andor: number,
editore?: string[] editore?: string[]
collana_info?: ICollana collana_info?: ICollana

View File

@@ -809,6 +809,7 @@ export interface IMyScheda {
productTypes?: number[] productTypes?: number[]
excludeproductTypes?: number[] excludeproductTypes?: number[]
idTipologie?: number[] idTipologie?: number[]
idTipoFormato?: number[]
editore?: string[] editore?: string[]
argomenti?: string[] argomenti?: string[]
idCollane?: string[] idCollane?: string[]
@@ -858,6 +859,7 @@ export interface IOptCatalogo {
excludeproductTypes?: number[] excludeproductTypes?: number[]
formato?: string[] formato?: string[]
idTipologie?: number[] idTipologie?: number[]
idTipoFormato?: number[]
Categoria?: string[] Categoria?: string[]
editore?: string[] editore?: string[]
argomenti?: string[] argomenti?: string[]

View File

@@ -1,5 +1,11 @@
import type { IUserFields, IUserShort } from './UserStore' import type { IUserFields, IUserShort } from './UserStore'
export interface IVerificaProd {
esito?: number
data?: Date
username?: string
note?: string
}
export interface IProductInfo { export interface IProductInfo {
_id?: any _id?: any

View File

@@ -2051,6 +2051,7 @@ const msg_it = {
pdf_generato_stampa: 'Pdf generato (per STAMPA)', pdf_generato_stampa: 'Pdf generato (per STAMPA)',
pdf_online_stampa: 'Pdf online Ufficiale (per STAMPA)', pdf_online_stampa: 'Pdf online Ufficiale (per STAMPA)',
argomenti: 'Argomenti', argomenti: 'Argomenti',
idTipoFormato: 'Tipo Formato',
numprodtot: 'Numero Prodotti', numprodtot: 'Numero Prodotti',
}, },

View File

@@ -27,10 +27,14 @@ export const costanti = {
CATALOGO_FIELDS: [ CATALOGO_FIELDS: [
'productTypes', 'productTypes',
'excludeproductTypes', 'excludeproductTypes',
'formato',
'idTipologie',
'idTipoFormato',
'misure', 'misure',
'Categoria', 'Categoria',
'idCollane',
'editore', 'editore',
'argomenti',
'idCollane',
'pdf', 'pdf',
'Printable', 'Printable',
'numschede_perCol', 'numschede_perCol',

View File

@@ -169,6 +169,12 @@ export const colTableCatalogList = [
fieldtype: costanti.FieldType.multiselect, fieldtype: costanti.FieldType.multiselect,
jointable: 'publishers_totali', jointable: 'publishers_totali',
}), }),
AddCol({
name: 'idTipoFormato',
label_trans: 'cataloglist.idTipoFormato',
fieldtype: costanti.FieldType.multiselect,
jointable: 't_web_tipiformatos',
}),
AddCol({ name: 'descr_introduttiva', label_trans: 'cataloglist.descr_introduttiva', fieldtype: costanti.FieldType.html, maxlength: 1300 }), AddCol({ name: 'descr_introduttiva', label_trans: 'cataloglist.descr_introduttiva', fieldtype: costanti.FieldType.html, maxlength: 1300 }),
AddCol({ name: 'pagina_introduttiva_sfondo_nero', label_trans: 'cataloglist.pagina_introduttiva_sfondo_nero', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'pagina_introduttiva_sfondo_nero', label_trans: 'cataloglist.pagina_introduttiva_sfondo_nero', fieldtype: costanti.FieldType.boolean }),
@@ -316,6 +322,12 @@ export const colmyScheda = [
AddCol({ name: 'productTypes', label_trans: 'productTypes', fieldtype: costanti.FieldType.number }), AddCol({ name: 'productTypes', label_trans: 'productTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'excludeproductTypes', label_trans: 'excludeproductTypes', fieldtype: costanti.FieldType.number }), AddCol({ name: 'excludeproductTypes', label_trans: 'excludeproductTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'idTipologie', label_trans: 'idTipologie', fieldtype: costanti.FieldType.number }), AddCol({ name: 'idTipologie', label_trans: 'idTipologie', fieldtype: costanti.FieldType.number }),
AddCol({
name: 'idTipoFormato',
label_trans: 'cataloglist.idTipoFormato',
fieldtype: costanti.FieldType.multiselect,
jointable: 't_web_tipiformatos',
}),
AddCol({ name: 'editore', label_trans: 'editore' }), AddCol({ name: 'editore', label_trans: 'editore' }),
AddCol({ name: 'author', label_trans: 'scheda.author' }), AddCol({ name: 'author', label_trans: 'scheda.author' }),
AddCol({ name: 'argomenti', label_trans: 'scheda.argomenti' }), AddCol({ name: 'argomenti', label_trans: 'scheda.argomenti' }),

View File

@@ -1529,7 +1529,7 @@ export const useProducts = defineStore('Products', {
replacements['{collana}'] = tools.formatCollane(myproduct.productInfo.idCollana) || ''; replacements['{collana}'] = tools.formatCollane(myproduct.productInfo.idCollana) || '';
} }
const maxDescriptionLength = testo.maxlength || 600; const maxDescriptionLength = testo.maxlength || 680;
if (testo.contenuto.includes('{descrizione_da_fdv}')) { if (testo.contenuto.includes('{descrizione_da_fdv}')) {
const description = myproduct.productInfo.short_descr || ''; const description = myproduct.productInfo.short_descr || '';
@@ -1569,11 +1569,12 @@ export const useProducts = defineStore('Products', {
: short_descr; : short_descr;
} }
if (testo.contenuto.includes('{descr_trafiletto_catalogo}')) { if (testo.contenuto.includes('{descr_trafiletto_catalogo}') || testo.contenuto.includes('{descrizione_completa_macro}')) {
const short_descr = myproduct.productInfo.descr_trafiletto_catalogo || ''; const short_descr = myproduct.productInfo.descr_trafiletto_catalogo || '';
replacements['{descr_trafiletto_catalogo}'] = short_descr.length > maxDescriptionLength && maxDescriptionLength > 0 replacements['{descr_trafiletto_catalogo}'] = short_descr.length > maxDescriptionLength && maxDescriptionLength > 0
? short_descr.substring(0, short_descr.lastIndexOf(' ', maxDescriptionLength)) + '...' ? short_descr.substring(0, short_descr.lastIndexOf(' ', maxDescriptionLength)) + '...'
: short_descr; : short_descr;
replacements['{descrizione_completa_macro}'] = replacements['{descr_trafiletto_catalogo}']
} }
if (testo.contenuto.includes('{prezzo}') || testo.contenuto.includes('{prezzo_scontato}')) { if (testo.contenuto.includes('{prezzo}') || testo.contenuto.includes('{prezzo_scontato}')) {
@@ -1666,7 +1667,7 @@ export const useProducts = defineStore('Products', {
case '{debug}': case '{debug}':
const date_pub = replacements['{date_pub}'] || ''; const date_pub = replacements['{date_pub}'] || '';
const fatLast6M = myproduct.productInfo.fatLast6M! || 0; const fatLast6M = myproduct.productInfo.fatLast6M! || 0;
const linkvenduti = `<a href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-ordini-by-idarticolo/${myproduct.productInfo.sku}" target="_blank">${replacements['{venduti}']}</a>`; const linkvenduti = `<a href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-ordini-by-idarticolo/${myproduct.productInfo.sku}" target="_blank">${myproduct.productInfo.totVen!}</a>`;
const vLast3M = myproduct.productInfo.vLast3M! || 0; const vLast3M = myproduct.productInfo.vLast3M! || 0;
const vLast6M = myproduct.productInfo.vLast6M! || 0; const vLast6M = myproduct.productInfo.vLast6M! || 0;
const linkfatturati = `<a href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-fatturati-by-idarticolo/${myproduct.productInfo.sku}" target="_blank">${myproduct.productInfo.totFat! || 0}</a>`; const linkfatturati = `<a href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-fatturati-by-idarticolo/${myproduct.productInfo.sku}" target="_blank">${myproduct.productInfo.totFat! || 0}</a>`;

View File

@@ -2674,6 +2674,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
try { try {
// aggiungi idapp ad options // aggiungi idapp ad options
options.idapp = tools.getEnv('VITE_APP_ID') options.idapp = tools.getEnv('VITE_APP_ID')
console.log('CHIAMATA fetchTableContent...', options)
return Api.SendReq('/apisqlsrv/view-table', 'POST', { options }) return Api.SendReq('/apisqlsrv/view-table', 'POST', { options })
.then((res) => { .then((res) => {
return res.data.data return res.data.data
@@ -2682,7 +2683,6 @@ export const useGlobalStore = defineStore('GlobalStore', {
}) })
} catch (error) { } catch (error) {
console.error("Errore nel recupero della tabella:", error); console.error("Errore nel recupero della tabella:", error);
throw error;
} }
}, },
@@ -2783,7 +2783,16 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (index !== -1 && index !== undefined) { if (index !== -1 && index !== undefined) {
// Aggiorna il record mantenendo reattività // Aggiorna il record mantenendo reattività
if (datain.table === 'catalogs') {
// salva lista_prodotti
const prec_lista_prodotti = mytablerec![index].lista_prodotti
mytablerec![index] = { ...mytablerec[index], ...resdata.rec } mytablerec![index] = { ...mytablerec[index], ...resdata.rec }
mytablerec![index].lista_prodotti = prec_lista_prodotti
} else {
mytablerec![index] = { ...mytablerec[index], ...resdata.rec }
console.log('Aggiorna il record mantenendo reattività')
}
} }
} }
} }

View File

@@ -62,7 +62,7 @@ export default defineComponent({
} }
function SaveValue(newVal: any, valinitial: any) { function SaveValue(newVal: any, valinitial: any) {
console.log('SaveValue', newVal) // console.log('SaveValue', newVal)
const mydata: ICfgServer = { const mydata: ICfgServer = {
chiave: keysel.value, chiave: keysel.value,

View File

@@ -11,6 +11,21 @@
@click="EseguiFunz('MigrateMSSQLToMongoDb', {tutte: true})" @click="EseguiFunz('MigrateMSSQLToMongoDb', {tutte: true})"
></q-btn> ></q-btn>
<q-btn
label="Migrazione del DB MSSQL su MongoDB (Parte 1)"
color="positive"
@click="EseguiFunz('MigrateMSSQLToMongoDb', {parte1: true})"
></q-btn>
<q-btn
label="Migrazione del DB MSSQL su MongoDB (Parte 2)"
color="positive"
@click="EseguiFunz('MigrateMSSQLToMongoDb', {parte2: true})"
></q-btn>
<q-btn
label="Migrazione del DB MSSQL su MongoDB (Parte 3)"
color="positive"
@click="EseguiFunz('MigrateMSSQLToMongoDb', {parte3: true})"
></q-btn>
<q-btn <q-btn
label="Migrazione del DB MSSQL su MongoDB (ALCUNE)" label="Migrazione del DB MSSQL su MongoDB (ALCUNE)"
color="positive" color="positive"

View File

@@ -112,6 +112,7 @@ body {
margin-bottom: calc(5 * var(--scalecatalog) * 1px); margin-bottom: calc(5 * var(--scalecatalog) * 1px);
font-size: calc(20 * var(--scalecatalog) * 1px); font-size: calc(20 * var(--scalecatalog) * 1px);
height: calc(380 * var(--scalecatalog) * 1px); height: calc(380 * var(--scalecatalog) * 1px);
line-height: 130%;
} }
.book-text-down { .book-text-down {
@@ -121,7 +122,6 @@ body {
.book-pagina-title { .book-pagina-title {
font-family: 'DINPro', sans-serif; font-family: 'DINPro', sans-serif;
color: white;
margin-top: calc(20 * var(--scalecatalog) * 1px); margin-top: calc(20 * var(--scalecatalog) * 1px);
margin-bottom: calc(5 * var(--scalecatalog) * 1px); margin-bottom: calc(5 * var(--scalecatalog) * 1px);
font-size: calc(35 * var(--scalecatalog) * 1px); font-size: calc(35 * var(--scalecatalog) * 1px);

View File

@@ -214,6 +214,16 @@ export default defineComponent({
let testo = getTextSostituito(recscheda.scheda!.dimensioni.pagina?.testo_title) let testo = getTextSostituito(recscheda.scheda!.dimensioni.pagina?.testo_title)
const catalog = getCatalogoByMyPage.value
let clcol = ''
if (catalog.pagina_introduttiva_sfondo_nero) {
clcol = `text-white`
}
testo = `<span class="book-pagina-title ${clcol}">` + testo + `</span>`
return testo return testo
}) })
@@ -489,6 +499,7 @@ export default defineComponent({
filtroProductTypes: number[], filtroProductTypes: number[],
filtroExcludeProductTypes: number[], filtroExcludeProductTypes: number[],
filtroidTipologie: number[], filtroidTipologie: number[],
filtroidTipoFormato: number[],
editore: string[], editore: string[],
idCollane: string[], idCollane: string[],
arrargomstr: any[], arrargomstr: any[],
@@ -507,6 +518,7 @@ export default defineComponent({
filtroProductTypes.length === 0 || (filtroProductTypes.length === 1 && filtroProductTypes[0] === 0); filtroProductTypes.length === 0 || (filtroProductTypes.length === 1 && filtroProductTypes[0] === 0);
const boolfiltroVuotoExcludeProductTypes = filtroExcludeProductTypes.length === 0; const boolfiltroVuotoExcludeProductTypes = filtroExcludeProductTypes.length === 0;
const boolfiltroVuotoidTipologie = filtroidTipologie.length === 0; const boolfiltroVuotoidTipologie = filtroidTipologie.length === 0;
const boolfiltroVuotoidTipoFormato = filtroidTipoFormato.length === 0;
const boolfiltroVuotoEditore = editore.length === 0; const boolfiltroVuotoEditore = editore.length === 0;
const boolfiltroVuotoCollane = idCollane.length === 0; const boolfiltroVuotoCollane = idCollane.length === 0;
const boolfiltroVuotoArgomenti = arrargomstr.length === 0; const boolfiltroVuotoArgomenti = arrargomstr.length === 0;
@@ -587,6 +599,10 @@ export default defineComponent({
? true ? true
: filtroidTipologie.includes(product.arrvariazioni?.[0].idTipologia); : filtroidTipologie.includes(product.arrvariazioni?.[0].idTipologia);
const hasidTipoFormato = boolfiltroVuotoidTipoFormato
? true
: filtroidTipoFormato.includes(product.arrvariazioni?.[0].idTipoFormato);
// Filtri per editore // Filtri per editore
const hasPublished = boolfiltroVuotoEditore const hasPublished = boolfiltroVuotoEditore
? se_tutti_veri ? se_tutti_veri
@@ -615,7 +631,7 @@ export default defineComponent({
const filtri = [hasArgomentiCat, hasCategoria, hasCollana, hasPublished]; const filtri = [hasArgomentiCat, hasCategoria, hasCollana, hasPublished];
// Decido se combinare in AND o OR sulla base della scelta globale // Decido se combinare in AND o OR sulla base della scelta globale
let risult = searchMatch && hasAuthor && productgassel && hasidTipologie let risult = searchMatch && hasAuthor && productgassel && hasidTipologie && hasidTipoFormato
if (op_andor.condition_andor === costanti.OP_ANDOR.OP_AND) { if (op_andor.condition_andor === costanti.OP_ANDOR.OP_AND) {
risult = risult && filtri.every(Boolean); // Tutti i gruppi devono essere veri risult = risult && filtri.every(Boolean); // Tutti i gruppi devono essere veri
@@ -653,6 +669,7 @@ export default defineComponent({
const filtroProductTypes = optcatalogo.value.productTypes || [0]; const filtroProductTypes = optcatalogo.value.productTypes || [0];
const filtroExcludeProductTypes = optcatalogo.value.excludeproductTypes || [0]; const filtroExcludeProductTypes = optcatalogo.value.excludeproductTypes || [0];
const filtroidTipologie = optcatalogo.value.idTipologie || []; const filtroidTipologie = optcatalogo.value.idTipologie || [];
const filtroidTipoFormato = optcatalogo.value.idTipoFormato || [];
const editore = getEditoreDaFiltrare(optcatalogo.value.editore); const editore = getEditoreDaFiltrare(optcatalogo.value.editore);
const filtroPublishers = editore || []; const filtroPublishers = editore || [];
const idCollane = getIdCollaneDaFiltrare(optcatalogo.value.idCollane); const idCollane = getIdCollaneDaFiltrare(optcatalogo.value.idCollane);
@@ -693,6 +710,7 @@ export default defineComponent({
filtroProductTypes, filtroProductTypes,
filtroExcludeProductTypes, filtroExcludeProductTypes,
filtroidTipologie, filtroidTipologie,
filtroidTipoFormato,
filtroPublishers, filtroPublishers,
filtroCollane, filtroCollane,
arrargomstr, arrargomstr,
@@ -752,6 +770,7 @@ export default defineComponent({
!arraysEqual(scheda.productTypes, schedaprec?.productTypes) || !arraysEqual(scheda.productTypes, schedaprec?.productTypes) ||
!arraysEqual(scheda.excludeproductTypes, schedaprec?.excludeproductTypes) || !arraysEqual(scheda.excludeproductTypes, schedaprec?.excludeproductTypes) ||
!arraysEqual(scheda.idTipologie, schedaprec?.idTipologie) || !arraysEqual(scheda.idTipologie, schedaprec?.idTipologie) ||
!arraysEqual(scheda.idTipoFormato, schedaprec?.idTipoFormato) ||
!arraysEqual(scheda.editore, schedaprec?.editore) || !arraysEqual(scheda.editore, schedaprec?.editore) ||
!arraysEqual(scheda.idCollane, schedaprec?.idCollane) !arraysEqual(scheda.idCollane, schedaprec?.idCollane)
; ;
@@ -767,6 +786,7 @@ export default defineComponent({
const filtroProductTypes = scheda.productTypes || [0]; const filtroProductTypes = scheda.productTypes || [0];
const filtroExcludeProductTypes = scheda.excludeproductTypes || [0]; const filtroExcludeProductTypes = scheda.excludeproductTypes || [0];
const filtroidTipologie = scheda.idTipologie || []; const filtroidTipologie = scheda.idTipologie || [];
const filtroidTipoFormato = scheda.idTipoFormato || [];
const editore = getEditoreDaFiltrare(scheda.editore); const editore = getEditoreDaFiltrare(scheda.editore);
const filtroPublishers = editore || []; const filtroPublishers = editore || [];
const idCollane = getIdCollaneDaFiltrare(scheda.idCollane); const idCollane = getIdCollaneDaFiltrare(scheda.idCollane);
@@ -795,6 +815,7 @@ export default defineComponent({
filtroProductTypes, filtroProductTypes,
filtroExcludeProductTypes, filtroExcludeProductTypes,
filtroidTipologie, filtroidTipologie,
filtroidTipoFormato,
filtroPublishers, filtroPublishers,
filtroCollane, filtroCollane,
arrargomstr, arrargomstr,
@@ -1091,7 +1112,11 @@ export default defineComponent({
if (showListaArgomenti.value) if (showListaArgomenti.value)
cat.value = tools.getCookie(getKeyCatAtLoad(), '') cat.value = tools.getCookie(getKeyCatAtLoad(), '')
if (getCatalogoByMyPage.value) {
tabcatalogo.value = tools.getCookie('TAB_CAT', 'visu') tabcatalogo.value = tools.getCookie('TAB_CAT', 'visu')
} else {
tabcatalogo.value = 'visu'
}
optrigenera.value.visibilitaDisp = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_DISP', costanti.DISP.DISPONIBILI) optrigenera.value.visibilitaDisp = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_DISP', costanti.DISP.DISPONIBILI)
optrigenera.value.stato = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_STATO', costanti.STATO.IN_COMMERCIO) optrigenera.value.stato = tools.getCookie((showListaArgomenti.value ? 'INC_ES_' : '') + 'VIS_STATO', costanti.STATO.IN_COMMERCIO)

View File

@@ -190,6 +190,7 @@
</div> </div>
<CProductTable <CProductTable
v-if="loadpage"
:lista_prodotti="lista_prodotti" :lista_prodotti="lista_prodotti"
@update:lista_prodotti="updateProducts" @update:lista_prodotti="updateProducts"
:optcatalogo="optcatalogo" :optcatalogo="optcatalogo"
@@ -698,37 +699,24 @@
<pre> <pre>
<strong>PASSI DA COMPIERE PER FARE AGGIORNAMENTI :</strong> <strong>PASSI DA COMPIERE PER FARE AGGIORNAMENTI :</strong>
1. Ottenere il file delle descrizioni aggiornato (da Matteo chiedere l'export di tutti i prodotti presenti su GruppoMacro - XML) 1. Ottenere il file delle descrizioni aggiornato (esportare tutti i prodotti presenti su GruppoMacro - XML)
<a
href="https://www.gruppomacro.com/admin/prodotti_esportazione.php"
target="_blank"
>Esporta Prodotti (XML)</a>
2. Eseguire "IMPORTA DESCRIZIONI E LINK DA SITO GRUPPOMACRO (XML)" - importa_descrizioni_e_link.xml 2. Eseguire "IMPORTA DESCRIZIONI E LINK DA SITO GRUPPOMACRO (XML)" - importa_descrizioni_e_link.xml
3. Visualizza 3. Visualizza:
<a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-articles-fatturati"
target="_blank"
>Ranking</a> -
<a <a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-articles-sales" href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-articles-sales"
target="_blank" target="_blank"
>(Ranking Ordini)</a> >Articoli Venduti</a>
e controlla se tutto ok e controlla se tutto ok
<br>
4. Esporta il file del Ranking ed importarlo con "IMPORTA RANKING DA JSON" 4 . GENERARE UN CATALOGO cliccando su "CREA CATALOGO ..."
<a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/export-articles-sales-json"
target="_blank"
>(Esporta Ranking Venduti e Fatturati)</a
>
5. Scarica Catalogo (<a
href="https://www.fioredellavita.it/wp-content/uploads/woo-feed/custom/json/primofeed-2.json"
target="_blank"
>Catalogo primofeed-2.json</a
>)
6. Esegui "Importa Cataloghi da JSON (ImportaMacro)"
7. GENERARE UN CATALOGO cliccando su "CREA CATALOGO ..."
8. <a 8. <a
href="https://gruppomacro.app/admin/convertPDF" href="https://gruppomacro.app/admin/convertPDF"
@@ -749,11 +737,6 @@
target="_blank" target="_blank"
>Tabella Argomenti </a> >Tabella Argomenti </a>
<a
href="https://www.fioredellavita.it/wp-admin/admin.php?page=webappick-manage-feeds"
target="_blank"
>Gestisci Campi Catalogo FDV (CTXFEED)</a
>
<a <a
href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-lista-ordini-totale/2024-11-01" href="http://vps-88271abb.vps.ovh.net/apimacro/public/view-lista-ordini-totale/2024-11-01"
target="_blank" target="_blank"
@@ -775,11 +758,27 @@
<CMyDialog <CMyDialog
v-model="rigeneraLibri" v-model="rigeneraLibri"
title="Rigenera Lista" title="Rigenera Lista"
class="q-ma-md" class="q-ma-sm"
> >
<q-card class="q-ma-md"> <q-card class="q-ma-sm">
<q-card-section> <q-card-section>
<div style="width: 600px; margin: 0 auto"> <div style="width: 800px; margin: 0 auto">
<CMyValueDb
v-if="getCatalogoByMyPage"
:editOn="true"
:title="t('cataloglist.idTipoFormato')"
table="catalogs"
:id="getCatalogoByMyPage._id"
:rec="getCatalogoByMyPage"
mykey="idTipoFormato"
debounce="1000"
:type="costanti.FieldType.multiselect"
jointable="t_web_tipiformatos"
class="q-mb-md"
:dense="false"
>
</CMyValueDb>
<div class="row"> <div class="row">
<CMyValueDb <CMyValueDb
v-if="getCatalogoByMyPage" v-if="getCatalogoByMyPage"
@@ -795,8 +794,6 @@
:dense="false" :dense="false"
> >
</CMyValueDb> </CMyValueDb>
</div>
<div>
<CMyValueDb <CMyValueDb
v-if="getCatalogoByMyPage" v-if="getCatalogoByMyPage"
:editOn="true" :editOn="true"