- 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:
4
.env
4
.env
@@ -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"
|
||||||
@@ -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<% } %>">
|
||||||
|
|
||||||
|
|||||||
14
package.json
14
package.json
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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 };
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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',
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)',
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user