- Per generare la sinossi è possibile estrarre con 1 click la descrizione sia da Amazon che da GruppoMacro.

- corretto piccolo bug sul catalogo.
This commit is contained in:
Surya Paolo
2025-05-20 12:21:31 +02:00
parent 8ff204657e
commit fea40922cb
26 changed files with 406 additions and 125 deletions

4
.env
View File

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

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.47"> <meta name="version" content="1.2.48">
<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.47", "version": "1.2.48",
"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.47' quasar dev", "dev": "PORT=8089 APP_VERSION='1.2.48' 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.47' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.48' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.47' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.48' 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.47' quasar build -m spa", "buildspa": "APP_VERSION='1.2.48' 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.47' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.48' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.47' quasar dev", "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.48' 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.47", "version": "1.2.48",
"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.47' quasar dev", "dev": "PORT=8083 APP_VERSION='1.2.48' 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.47' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.48' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.47' quasar dev", "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.48' 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.47", "version": "1.2.48",
"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.47' quasar dev", "dev": "PORT=8087 APP_VERSION='1.2.48' 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.47' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.48' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.47' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.48' 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.47' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.48' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.47' quasar dev", "spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.48' 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.47", "version": "1.2.48",
"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.47' quasar dev", "dev": "PORT=8089 APP_VERSION='1.2.48' 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.47' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.48' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.47' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.48' 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.47' quasar build -m spa", "buildspa": "APP_VERSION='1.2.48' 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.47' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.48' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.47' quasar dev", "spa": "NODE_ENV=development PORT=8089 APP_VERSION='1.2.48' 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.47", "version": "1.2.48",
"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.47' quasar dev", "dev": "PORT=8083 APP_VERSION='1.2.48' 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.47' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.48' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.47' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.48' 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.47' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.48' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.47' quasar dev", "spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.48' 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.47", "version": "1.2.48",
"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.47' quasar dev", "dev": "PORT=8093 APP_VERSION='1.2.48' 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.47' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.48' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.47' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.48' 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.47' quasar build -m spa", "buildspa": "APP_VERSION='1.2.48' 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.47' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8099 APP_VERSION='1.2.48' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.47' quasar dev", "spa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.48' 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.47", "version": "1.2.48",
"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.47' quasar dev", "dev": "PORT=8085 APP_VERSION='1.2.48' 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.47' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.48' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.47' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.48' 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.47' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.48' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.47' quasar dev", "spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.48' 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.47", "version": "1.2.48",
"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.47' PORT=8084 quasar dev", "dev": "APP_VERSION='1.2.48' 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.47' quasar build -m pwa", "buildpwa": "NODE_ENV=production APP_VERSION='1.2.48' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.47' quasar build -m pwa", "buildpwatest": "NODE_ENV=production APP_VERSION='1.2.48' 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.47' quasar dev -m pwa", "pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.48' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.47' quasar dev", "spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.48' 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.47'; const VITE_APP_VERSION = '1.2.48';
// Costanti di configurazione // Costanti di configurazione
const DYNAMIC_CACHE = 'dynamic-cache-v2'; const DYNAMIC_CACHE = 'dynamic-cache-v2';

View File

@@ -779,6 +779,7 @@ export default defineComponent({
const options = { const options = {
update, update,
aggiornasoloSeVuoti, aggiornasoloSeVuoti,
forzaricarica: true,
}; };
const myparam = { product_id: myproduct.value._id, options }; const myparam = { product_id: myproduct.value._id, options };
@@ -787,14 +788,22 @@ export default defineComponent({
const dataupdated = await globalStore const dataupdated = await globalStore
.scrapingBook(myparam) .scrapingBook(myparam)
.then((dataupdated) => { .then((dataupdated) => {
if (dataupdated) { if (dataupdated && update) {
tools.showPositiveNotif($q, t('dbgm.scrapingOkUpdated')); tools.showPositiveNotif($q, t('dbgm.scrapingOkUpdated'));
} }
if (!dataupdated) {
tools.showNegativeNotif($q, t('dbgm.dati_non_estratti'));
visudataextracted.value = false
}
return dataupdated; return dataupdated;
}) })
.catch((e) => { .catch((e) => {
console.error('Errore aggiornamento singolo libro:', e); if (update) {
tools.showNegativeNotif($q, t('dbgm.updateLocalDb_ERROR')); console.error('Errore aggiornamento singolo libro:', e);
tools.showNegativeNotif($q, t('dbgm.updateLocalDb_ERROR'));
} else {
tools.showNegativeNotif($q, t('dbgm.err_extraction'));
}
loading.value = false; loading.value = false;
}); });
loading.value = false; loading.value = false;
@@ -803,7 +812,6 @@ export default defineComponent({
} }
async function getDataExtracted() { async function getDataExtracted() {
visudataextracted.value = true; visudataextracted.value = true;
loading.value = true; loading.value = true;
@@ -814,8 +822,9 @@ export default defineComponent({
const html = tools.generateHtmlTableFromObject(data); const html = tools.generateHtmlTableFromObject(data);
dataextractedWeb.value = html; dataextractedWeb.value = html;
} catch (error) { } catch (error) {
console.error('Errore durante l\'estrazione dei dati:', error); console.error("Errore durante l'estrazione dei dati:", error);
dataextractedWeb.value = 'Errore nel caricamento dei dati.'; dataextractedWeb.value = 'Errore nel caricamento dei dati.';
visudataextracted.value = false;
} finally { } finally {
loading.value = false; loading.value = false;
} }

View File

@@ -885,7 +885,7 @@
> >
<q-card class="dialog_card"> <q-card class="dialog_card">
<q-toolbar class="bg-primary text-white"> <q-toolbar class="bg-primary text-white">
<q-toolbar-title> Visu </q-toolbar-title> <q-toolbar-title> Visu dati Estratti </q-toolbar-title>
<q-btn <q-btn
flat flat
round round
@@ -895,7 +895,8 @@
></q-btn> ></q-btn>
</q-toolbar> </q-toolbar>
<q-card-section class="q-pa-xs inset-shadow"> <q-card-section class="q-pa-xs inset-shadow">
<div class="row justify-center">Dati</div><br> <div class="row justify-center"><h3>Dati Estratti</h3></div>
<br />
<q-inner-loading <q-inner-loading
id="spinner" id="spinner"
:showing="loading" :showing="loading"
@@ -909,6 +910,28 @@
<div v-html="dataextractedWeb"></div> <div v-html="dataextractedWeb"></div>
</q-card-section> </q-card-section>
<q-card-actions class="justify-center">
<q-btn
v-if="tools.isAdmin()"
rounded
:disabled="loading"
class="q-ma-sm"
color="accent"
icon="fas fa-save"
label="Aggiorna (solo Vuoti)"
@click="scrapingBook(true, true)"
></q-btn>
<q-btn
v-if="tools.isAdmin()"
rounded
:disabled="loading"
class="q-ma-sm"
color="negative"
icon="fas fa-database"
label="Sovrascrivi Tutti i Dati"
@click="scrapingBook(true, false)"
></q-btn>
</q-card-actions>
</q-card> </q-card>
</q-dialog> </q-dialog>
<q-dialog <q-dialog

View File

@@ -1,31 +1,34 @@
import { PropType, computed, defineComponent, onMounted, ref, watch } from "vue"; import {
import draggable from 'vuedraggable' PropType,
computed,
defineComponent,
onMounted,
ref,
watch,
} from 'vue';
import draggable from 'vuedraggable';
import { tools } from '@tools' import { tools } from '@tools';
import { useGlobalStore } from '@src/store/globalStore' import { useGlobalStore } from '@src/store/globalStore';
import { CMyEditorAI } from '@src/components/CMyEditorAI' import { CMyEditorAI } from '@src/components/CMyEditorAI';
import { CAITools } from '@src/components/CAITools' import { CAITools } from '@src/components/CAITools';
import { costanti } from '@costanti' import { costanti } from '@costanti';
import type {
IMyScheda,
IProduct,
IRecFields
} from '@src/model';
import { shared_consts } from "app/src/common/shared_vuejs";
import { useProducts } from "app/src/store/Products";
import { useI18n } from "vue-i18n";
import { useQuasar } from "quasar";
import type { IMyScheda, IProduct, IRecFields } from '@src/model';
import { shared_consts } from 'app/src/common/shared_vuejs';
import { useProducts } from 'app/src/store/Products';
import { useI18n } from 'vue-i18n';
import { useQuasar } from 'quasar';
export default defineComponent({ export default defineComponent({
name: "CModifTrafiletto", name: 'CModifTrafiletto',
emits: ['updateproductmodif', 'close', 'Savedb'], emits: ['updateproductmodif', 'close', 'Savedb'],
components: { components: {
CMyEditorAI, CAITools CMyEditorAI,
CAITools,
}, },
props: { props: {
modelValue: { modelValue: {
@@ -64,38 +67,57 @@ export default defineComponent({
type: Number, type: Number,
required: false, required: false,
default: 0, default: 0,
} },
}, },
setup(props, { emit }) { setup(props, { emit }) {
// Copia locale della lista_prodotti per manipolazione interna // Copia locale della lista_prodotti per manipolazione interna
const $q = useQuasar() const $q = useQuasar();
const { t } = useI18n() const { t } = useI18n();
const globalStore = useGlobalStore() const globalStore = useGlobalStore();
const products = useProducts() const products = useProducts();
const mytab = ref('descr') const mytab = ref('descr');
const loading = ref(false) const loading = ref(false);
const updatetogm = ref(false) const updatetogm = ref(false);
const field_updated_toGM = ref('') const field_updated_toGM = ref('');
const myproduct = ref<IProduct>({ ...props.modelValue }) const myproduct = ref<IProduct>({ ...props.modelValue });
const id = computed(() => myproduct.value.productInfo._id) const id = computed(() => myproduct.value.productInfo._id);
const myvalue = computed<string>(() => { const myvalue = computed<string>(() => {
return myproduct.value.productInfo[props.mykey] return myproduct.value.productInfo[props.mykey];
}) });
watch(() => props.modelValue, (newVal) => { watch(
myproduct.value = { ...newVal }; () => props.modelValue,
}, { deep: false }); (newVal) => {
myproduct.value = { ...newVal };
},
{ deep: false }
);
const loadMyScrapingBook = async () => {
loading.value = true;
try {
const myscrapingbook = await products.loadMyScrapingBook(
myproduct.value.isbn, false
);
myproduct.value.myscrapingbook = myscrapingbook;
} catch (error) {
console.error('Errore caricamento MyScrapingBook:', error);
} finally {
loading.value = false;
}
};
async function mounted() { async function mounted() {
// carico anche altri dati del product
await loadMyScrapingBook();
} }
/* /*
@@ -110,45 +132,94 @@ export default defineComponent({
function updateproductmodif(element: any) { function updateproductmodif(element: any) {
// console.log('CModifTrafiletto updateproductmodif ', element) // console.log('CModifTrafiletto updateproductmodif ', element)
emit('updateproductmodif', element) emit('updateproductmodif', element);
} }
function Savedb(element: any) { function Savedb(element: any) {
tools.saveInDBForTypes($q, props.mykey, element, props.type, true, props.table, props.mysubkey, id.value, null, ''); tools.saveInDBForTypes(
$q,
props.mykey,
element,
props.type,
true,
props.table,
props.mysubkey,
id.value,
null,
''
);
} }
async function updateproduct(load?: boolean) { async function updateproduct(load?: boolean) {
myproduct.value = await products.getProductById(myproduct.value._id, load) myproduct.value = await products.getProductById(
myproduct.value._id,
load
);
} }
const copyToClipboard = (text) => { const copyToClipboard = (text) => {
navigator.clipboard.writeText(text) navigator.clipboard
.writeText(text)
.then(() => { .then(() => {
$q.notify({ $q.notify({
message: 'Testo copiato negli appunti!', message: 'Testo copiato negli appunti!',
color: 'positive', color: 'positive',
icon: 'check', icon: 'check',
position: 'top' position: 'top',
}); });
}) })
.catch(err => { .catch((err) => {
console.error('Errore durante la copia:', err); console.error('Errore durante la copia:', err);
$q.notify({ $q.notify({
message: 'Errore nella copia', message: 'Errore nella copia',
color: 'negative', color: 'negative',
icon: 'error', icon: 'error',
position: 'top' position: 'top',
}); });
}); });
} };
function handleShowAndSave(payload: any) { function handleShowAndSave(payload: any) {
Savedb(payload); Savedb(payload);
updateproductmodif(payload); updateproductmodif(payload);
} }
onMounted(mounted) function getPrompt() {
// Prompt:
let mydescr = 'Scrivimi la sinossi del seguente libro, che andrà nel catalogo libri, di massimo 680 battute, senza spiegazione, senza titolo iniziale, solo la sinossi. Togli eventuali riferimenti a chi ha fatto la prefazione. Rendilo un po\' accattivante, ma non troppo. \n\n';
return mydescr
}
function copyDescrizioneFromScrapingData() {
let mydescr = '';
const data = myproduct?.value.myscrapingbook;
if (!data) return false;
mydescr = getPrompt()
mydescr += 'Titolo Libro: ' + data.titolo + '\n';
mydescr += 'Autore Libro: ' + data.autore + '\n';
mydescr += 'DESCRIZIONE LIBRO: \n';
mydescr += data.descrizione_lunga;
tools.copyStringToClipboard($q, mydescr, false);
}
function copyDescrizioneFromGruppoMacro() {
let mydescr = '';
mydescr = getPrompt()
mydescr += 'Titolo Libro: ' + myproduct?.value.productInfo?.name + '\n';
mydescr += 'Autore Libro: ' + products.getAutoriByArrayAuthors(myproduct?.productInfo?.authors) + '\n';
mydescr += 'DESCRIZIONE LIBRO: \n';
mydescr += myproduct?.value.productInfo?.descrizione_completa_macro;
tools.copyStringToClipboard($q, mydescr, false);
}
onMounted(mounted);
return { return {
tools, tools,
@@ -167,6 +238,9 @@ export default defineComponent({
copyToClipboard, copyToClipboard,
myvalue, myvalue,
handleShowAndSave, handleShowAndSave,
} copyDescrizioneFromScrapingData,
} copyDescrizioneFromGruppoMacro,
}) loading,
};
},
});

View File

@@ -1,7 +1,9 @@
<template> <template>
<q-card class="dialog_card"> <q-card class="dialog_card">
<q-toolbar class="bg-primary text-white"> <q-toolbar class="bg-primary text-white">
<q-toolbar-title> Modifica a {{ myproduct.productInfo.name }}</q-toolbar-title> <q-toolbar-title>
Modifica a '{{ myproduct.productInfo.name }}''</q-toolbar-title
>
<q-btn <q-btn
flat flat
round round
@@ -64,6 +66,60 @@
:maxlength="maxlength" :maxlength="maxlength"
> >
</CMyEditorAI> </CMyEditorAI>
<p
v-if="copied"
class="text-green q-ma-md"
>
Descrizione Copiata negli appunti!
</p>
<q-spinner
v-if="loading"
color="primary"
size="3em"
:thickness="2"
/>
<div v-if="!loading">
<div
v-if="myproduct?.myscrapingbook?.descrizione_lunga"
class="q-ma-xs q-pa-xs"
>
<div class="text-h6 q-mb-sm">
Descrizione Estratta da Amazon:
</div>
{{ myproduct?.myscrapingbook?.descrizione_lunga }}
<br />
<q-btn
rounded
color="primary"
label="Copia per ChatGPT"
icon="content_copy"
@click="copyDescrizioneFromScrapingData"
class="q-ma-md justify-center"
>
</q-btn>
</div>
<div
v-if="myproduct?.productInfo?.descrizione_completa_macro"
class="q-ma-xs q-pa-xs"
>
<div class="text-h6 q-mb-sm">
Descrizione Estratta dal sito GruppoMacro.com:
</div>
{{ myproduct?.productInfo?.descrizione_completa_macro }}
<br />
<q-btn
rounded
color="primary"
label="Copia per ChatGPT"
icon="content_copy"
@click="copyDescrizioneFromGruppoMacro"
class="q-ma-md justify-center"
>
</q-btn>
</div>
</div>
</q-tab-panel> </q-tab-panel>
</q-tab-panels> </q-tab-panels>
</div> </div>

View File

@@ -20,6 +20,7 @@ import { CMyValueDb } from '@src/components/CMyValueDb';
import { CSchedaProdotto } from '@src/components/CSchedaProdotto'; import { CSchedaProdotto } from '@src/components/CSchedaProdotto';
import { CSearchProduct } from '@src/components/CSearchProduct'; import { CSearchProduct } from '@src/components/CSearchProduct';
import { CMyDialog } from '@src/components/CMyDialog'; import { CMyDialog } from '@src/components/CMyDialog';
import { CModifTrafiletto } from '@src/components/CModifTrafiletto';
import { costanti } from '@costanti'; import { costanti } from '@costanti';
import { IAuthor, ICatProd } from 'app/src/model'; import { IAuthor, ICatProd } from 'app/src/model';
@@ -42,6 +43,7 @@ export default defineComponent({
CViewTable, CViewTable,
CLabel, CLabel,
CSchedaProdotto, CSchedaProdotto,
CModifTrafiletto,
}, },
props: { props: {
lista_prodotti: { lista_prodotti: {
@@ -90,6 +92,7 @@ export default defineComponent({
const field_updated_fromGM = ref(''); const field_updated_fromGM = ref('');
const modifOn = ref(false); const modifOn = ref(false);
const modifTrafiletto = ref(false);
const sortAttribute = ref(''); const sortAttribute = ref('');
const sortDirection = ref(1); const sortDirection = ref(1);
@@ -100,6 +103,10 @@ export default defineComponent({
function handleUpdate(newList) { function handleUpdate(newList) {
internalProducts.value = newList; internalProducts.value = newList;
riaggiornaListaProdAlGenitore()
}
function riaggiornaListaProdAlGenitore() {
emit('update:lista_prodotti', internalProducts.value); emit('update:lista_prodotti', internalProducts.value);
} }
@@ -545,8 +552,8 @@ export default defineComponent({
case 'trafiletto': case 'trafiletto':
return element.productInfo?.descr_trafiletto_catalogo?.length > return element.productInfo?.descr_trafiletto_catalogo?.length >
100 100
? 'SI' ? 'SI ✏️'
: 'NO'; : 'NO ✏️';
case 'catprods': case 'catprods':
return tools.formatCatProds(element.productInfo?.catprods); return tools.formatCatProds(element.productInfo?.catprods);
@@ -699,6 +706,11 @@ export default defineComponent({
if (!element) return {}; if (!element) return {};
switch (field.field) { switch (field.field) {
case 'trafiletto':
return {
cursor: 'pointer',
textAlign: 'center',
};
case 'prezzo': case 'prezzo':
case 'prezzo_sconto': case 'prezzo_sconto':
return { width: '55px', textAlign: 'right' }; return { width: '55px', textAlign: 'right' };
@@ -725,11 +737,6 @@ export default defineComponent({
textAlign: 'right', textAlign: 'right',
}; };
case 'trafiletto':
return {
textAlign: 'center',
};
default: default:
return {}; return {};
} }
@@ -910,6 +917,14 @@ export default defineComponent({
modifOn.value = true; modifOn.value = true;
} }
} }
function modifyTrafiletto(element: any) {
if (element) {
selProd.value = element;
cmd.value = shared_consts.SCHEDA_PRODOTTO.CMD_MODIFICA;
modifTrafiletto.value = true;
}
}
function updateProduct(element: any) { function updateProduct(element: any) {
selProd.value = element; selProd.value = element;
@@ -941,6 +956,7 @@ export default defineComponent({
} }
return prod; return prod;
}); });
riaggiornaListaProdAlGenitore()
} catch (e) { } catch (e) {
console.error('err', e); console.error('err', e);
} }
@@ -1014,6 +1030,8 @@ export default defineComponent({
function getFieldClick(element: any, field: any): (() => void) | null { function getFieldClick(element: any, field: any): (() => void) | null {
switch (field.field) { switch (field.field) {
case 'trafiletto':
return () => modifyTrafiletto(element);
case 'validato': case 'validato':
return () => modifyProduct(element); return () => modifyProduct(element);
case 'image': case 'image':
@@ -1124,6 +1142,7 @@ export default defineComponent({
loading, loading,
showQtaDisponibile, showQtaDisponibile,
modifOn, modifOn,
modifTrafiletto,
updateproductmodif, updateproductmodif,
optionscatalogo, optionscatalogo,
t, t,

View File

@@ -228,6 +228,25 @@
> >
</CSearchProduct> </CSearchProduct>
</CMyDialog> </CMyDialog>
<q-dialog
v-if="selProd && modifTrafiletto"
v-model="modifTrafiletto"
maximized
>
<CModifTrafiletto
v-model="selProd"
titolo="Sinossi"
table="productinfos"
mykey="descr_trafiletto_catalogo"
:canModify="true"
:type="costanti.FieldType.editor_nohtml"
@updateproductmodif="updateproductmodif"
@close="modifTrafiletto = false"
:maxlength="680"
>
</CModifTrafiletto>
</q-dialog>
<q-dialog <q-dialog
v-model="modifOn" v-model="modifOn"
maximized maximized

View File

@@ -21,3 +21,15 @@
} }
.fullscreen-container{
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0,0,0,0.5);
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
}

View File

@@ -613,6 +613,7 @@ export default defineComponent({
const options = { const options = {
update, update,
aggiornasoloSeVuoti, aggiornasoloSeVuoti,
forzaricarica: true,
} }
const myparam = { product_id: myproduct.value._id, options }; const myparam = { product_id: myproduct.value._id, options };

View File

@@ -1,5 +1,5 @@
<template> <template>
<q-card class="dialog_card"> <q-card class="dialog_card" :maximized="true">
<q-toolbar class="bg-primary text-white"> <q-toolbar class="bg-primary text-white">
<q-toolbar-title> Modifica a {{ myproduct.productInfo.name }}</q-toolbar-title> <q-toolbar-title> Modifica a {{ myproduct.productInfo.name }}</q-toolbar-title>
<q-btn <q-btn
@@ -72,8 +72,8 @@
</q-tab-panels> </q-tab-panels>
</div> </div>
</q-card-section> </q-card-section>
<q-card-actions> <q-card-actions class="fixed-bottom">
<div class=""> <div>
<q-btn <q-btn
rounded rounded
class="q-ma-sm" class="q-ma-sm"

View File

@@ -2072,6 +2072,8 @@ const msg_it = {
}, },
dbgm: { dbgm: {
err_extraction: 'Errore sull\'estrazione dei dati',
dati_non_estratti: 'Dati non estratti. Libro non trovato.',
updateLocalDb_OK: 'Dati Aggiornati in locale', updateLocalDb_OK: 'Dati Aggiornati in locale',
updateLocalDb_ERROR: 'Errore aggiornamento singolo libro', updateLocalDb_ERROR: 'Errore aggiornamento singolo libro',
scrapingOkUpdated: 'Dati Aggiornati prelevando dal Web', scrapingOkUpdated: 'Dati Aggiornati prelevando dal Web',
@@ -2121,6 +2123,25 @@ const msg_it = {
title: 'Titolo', title: 'Titolo',
numcataloghi: 'Numero di Cataloghi', numcataloghi: 'Numero di Cataloghi',
foto_raccolta: 'Foto Raccolta', foto_raccolta: 'Foto Raccolta',
},
myscrapingbook: {
isbn: 'ISBN',
fonte: 'Fonte',
titolo: 'Titolo',
titoloOriginale: 'Titolo Originale',
sottotitolo: 'Sottotitolo',
autore: 'Autore',
pagine: 'Pagine',
misure: 'Misure',
edizione: 'Edizione',
editore: 'Editore',
date_pub: 'Data Pubblicazione',
url: 'URL',
stelline: 'Stelline',
prezzo: 'Prezzo',
date_extraction: 'Data Estrazione',
descrizione_lunga: 'Descrizione Lunga',
} }
}, },

View File

@@ -95,7 +95,7 @@ export const useCatalogStore = defineStore('CatalogStore', {
updateDataCatalog(catalog: ICatalog) { updateDataCatalog(catalog: ICatalog) {
if (catalog) { if (catalog) {
// Update catalog from server // Update catalog from server
const indelem = this.catalogs.findIndex((catalog: ICatalogCompleto) => catalog._id === catalog._id); const indelem = this.catalogs.findIndex((reccatalog: ICatalogCompleto) => reccatalog._id === catalog._id);
if (indelem >= 0) { if (indelem >= 0) {
this.catalogs[indelem] = { ...catalog }; this.catalogs[indelem] = { ...catalog };
this.catalogs[indelem].prodotti_caricati_inmem = true; this.catalogs[indelem].prodotti_caricati_inmem = true;

View File

@@ -512,6 +512,25 @@ export const colmsg_templates = [
AddCol({ name: 'msg_fr', label_trans: 'FRA', fieldtype: costanti.FieldType.html }), AddCol({ name: 'msg_fr', label_trans: 'FRA', fieldtype: costanti.FieldType.html }),
] ]
export const colmyscrapingbook = [
AddCol({ name: 'isbn', label_trans: 'myscrapingbook.isbn', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'fonte', label_trans: 'myscrapingbook.fonte', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'titolo', label_trans: 'myscrapingbook.titolo', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'titoloOriginale', label_trans: 'myscrapingbook.titoloOriginale', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'sottotitolo', label_trans: 'myscrapingbook.sottotitolo', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'autore', label_trans: 'myscrapingbook.autore', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'pagine', label_trans: 'myscrapingbook.pagina', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'misure', label_trans: 'myscrapingbook.misure', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'edizione', label_trans: 'myscrapingbook.edizione', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'editore', label_trans: 'myscrapingbook.editore', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'date_pub', label_trans: 'myscrapingbook.date_pub', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'url', label_trans: 'myscrapingbook.url', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'stelline', label_trans: 'myscrapingbook.stelline', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'prezzo', label_trans: 'myscrapingbook.prezzo', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'date_extraction', label_trans: 'myscrapingbook.date_extraction', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'descrizione_lunga', label_trans: 'myscrapingbook.descrizione_lunga', fieldtype: costanti.FieldType.html }),
]
export const colmypage = [ export const colmypage = [
AddCol({ AddCol({
name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.string, name: '_id', label_trans: 'index', fieldtype: costanti.FieldType.string,
@@ -4439,6 +4458,13 @@ export const fieldsTable = {
colkey: 'path', colkey: 'path',
collabel: 'title', collabel: 'title',
}, },
{
value: 'myscrapingbooks',
label: 'Estratto Libri',
columns: colmyscrapingbook,
colkey: 'path',
collabel: 'title',
},
{ {
value: 'mypages_id', value: 'mypages_id',
label: 'Pagine Web (ID)', label: 'Pagine Web (ID)',

View File

@@ -843,6 +843,17 @@ export const useProducts = defineStore('Products', {
return prod ? prod : getRecordProductEmpty(); return prod ? prod : getRecordProductEmpty();
}, },
async loadMyScrapingBook(isbn: string, forzacaricamento: boolean) {
return await Api.SendReq('/myscraping', 'POST', { isbn, forzacaricamento })
.then((res) => {
if (res.data) {
return res.data.myscraping
}
})
return null
},
async loadProducts(loadonlyifempty?: boolean) { async loadProducts(loadonlyifempty?: boolean) {
const userStore = useUserStore(); const userStore = useUserStore();
const globalStore = useGlobalStore(); const globalStore = useGlobalStore();

View File

@@ -68,9 +68,14 @@
@click="EseguiFunz('removeProductInfoWithoutDateUpdatedFromGM')" @click="EseguiFunz('removeProductInfoWithoutDateUpdatedFromGM')"
></q-btn> ></q-btn>
<q-btn <q-btn
label="Estrapola ed Aggiorna TUTTI i dati da Amazon (Scraper)" label="Estrapola ed Aggiorna TUTTI i dati Mancanti da Amazon (Scraper)"
color="negative" color="negative"
@click="EseguiFunz('ScraperMultipleDataAmazon', {update: true, aggiornasoloSeVuoti: true})" @click="EseguiFunz('ScraperMultipleDataAmazon')"
></q-btn>
<q-btn
label="Aggiorna TUTTI i dati Mancanti dal DB Memorizzato (Scraper)"
color="negative"
@click="EseguiFunz('ScraperMultipleDataDBStored')"
></q-btn> ></q-btn>
<q-btn <q-btn
label="Esporta CSV Dati Mancanti (num.pagine, formato, DataPubbl.)" label="Esporta CSV Dati Mancanti (num.pagine, formato, DataPubbl.)"
@@ -83,10 +88,15 @@
@click="EseguiFunz('removeDuplicateVariations')" @click="EseguiFunz('removeDuplicateVariations')"
></q-btn> ></q-btn>
<q-btn <q-btn
label="Azzera flag 'Estratto' da i Products e ProductInfo" label="Azzera flag 'Estratto' da Tutti i Products"
color="negative" color="negative"
@click="EseguiFunz('ScraperAzzeraFlagProducts')" @click="EseguiFunz('ScraperAzzeraFlagProducts')"
></q-btn> ></q-btn>
<q-btn
label="Azzera flag 'Estratto' da i Products con ERRORI"
color="primary"
@click="EseguiFunz('ScraperAzzeraFlagErrori')"
></q-btn>
<!-- <!--
<q-btn <q-btn

View File

@@ -316,7 +316,7 @@
</q-tabs> </q-tabs>
<CTitleBanner <CTitleBanner
v-show="tabcatalogo === 'visu' && !tools.isUtente()" v-show="tabcatalogo === 'visu' && !tools.isUtente() && arrProducts?.length > 0"
class="q-pa-xs" class="q-pa-xs"
title="Genera PDF" title="Genera PDF"
bgcolor="bg-blue" bgcolor="bg-blue"