- Sistemato link pdf che ogni volta che si aggiorna prendeva il PDF dalla cache...

- Raccolta Cataloghi, procedura che li AUTO genera in automatico.
This commit is contained in:
Surya Paolo
2025-06-13 17:45:57 +02:00
parent 286cc4e3a7
commit f146b36173
24 changed files with 353 additions and 188 deletions

4
.env
View File

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

View File

@@ -10,7 +10,7 @@
<meta name="description" content="<%= productDescription %>">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="version" content="1.2.54">
<meta name="version" content="1.2.56">
<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<% } %>">

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "cnm",
"version": "1.2.54",
"version": "1.2.56",
"description": "Comunita Nuovo Mondo",
"productName": "ComunitaNuovoMondo",
"author": "Surya",
@@ -9,7 +9,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"dev": "PORT=8083 APP_VERSION='1.2.54' quasar dev",
"dev": "PORT=8083 APP_VERSION='1.2.56' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production quasar build -m pwa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.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",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.54' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.54' quasar dev",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.56' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.56' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{
"name": "freeplanet",
"version": "1.2.54",
"version": "1.2.56",
"description": "freeplanet",
"productName": "freeplanet",
"author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT",
"type": "module",
"scripts": {
"dev": "PORT=8087 APP_VERSION='1.2.54' quasar dev",
"dev": "PORT=8087 APP_VERSION='1.2.56' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.54' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.54' quasar build -m pwa",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.56' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.56' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.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",
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.54' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.54' quasar dev",
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.56' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.56' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "kolibrilab",
"version": "1.2.54",
"version": "1.2.56",
"description": "kolibrilab",
"productName": "kolibrilab",
"author": "Surya Paolo",
@@ -8,11 +8,11 @@
"keywords": [],
"license": "MIT",
"scripts": {
"dev": "PORT=8083 APP_VERSION='1.2.54' quasar dev",
"dev": "PORT=8083 APP_VERSION='1.2.56' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.54' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.54' quasar build -m pwa",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.56' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.56' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -20,8 +20,8 @@
"lintfile": "eslint --ext .js,.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",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.54' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.54' quasar dev",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.56' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.56' quasar dev",
"spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js"

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "piuchebuono",
"version": "1.2.54",
"version": "1.2.56",
"description": "PiuCheBuono",
"productName": "PiuCheBuono",
"author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT",
"type": "module",
"scripts": {
"dev": "PORT=8085 APP_VERSION='1.2.54' quasar dev",
"dev": "PORT=8085 APP_VERSION='1.2.56' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.54' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.54' quasar build -m pwa",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.56' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.56' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.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",
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.54' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.54' quasar dev",
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.56' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.56' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "1.2.54",
"version": "1.2.56",
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
"productName": "Riso",
"author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT",
"type": "module",
"scripts": {
"dev": "APP_VERSION='1.2.54' PORT=8084 quasar dev",
"dev": "APP_VERSION='1.2.56' PORT=8084 quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.54' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.54' quasar build -m pwa",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.56' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.56' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.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",
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.54' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.54' quasar dev",
"pwa": "NODE_ENV=development PORT=8094 APP_VERSION='1.2.56' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8084 APP_VERSION='1.2.56' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -3,7 +3,7 @@
/* global workbox */
/* global cfgenv */
const VITE_APP_VERSION = '1.2.54';
const VITE_APP_VERSION = '1.2.56';
// Costanti di configurazione
const DYNAMIC_CACHE = 'dynamic-cache-v2';

View File

@@ -137,7 +137,7 @@
: undefined,
display: 'block',
}"
@click.stop.prevent="naviga(`/product/` + myproduct._id)"
@click.stop.prevent="tools.openUrl(myproduct.productInfo.link_macro)"
>
</q-img>
</a>

View File

@@ -187,7 +187,7 @@ export default defineComponent({
function getPrompt() {
// Prompt:
let mydescr = 'Scrivimi la sinossi del libro che ti indicherò, che andrà in un catalogo libri, la lunghezza del testo finale dev\'essere compresa tra 760 e 780 caratteri, 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';
let mydescr = 'Scrivimi la sinossi del libro che ti indicherò, che andrà in un catalogo libri, la lunghezza del testo finale dev\'essere compresa tra 760 e 780 caratteri, senza spiegazione, senza titolo iniziale, solo la sinossi. Togli eventuali riferimenti a chi ha fatto la prefazione. Rendilo un po\' accattivante, ma non troppo. Senza immagine. Non inserire nessun link o riferimenti esterni o citazioni esterne. L\'output è solo la sinossi, senza altre spiegazioni. \n\n';
return mydescr
}
@@ -199,7 +199,7 @@ export default defineComponent({
mydescr = getPrompt()
mydescr += 'Titolo Libro: ' + data.titolo + '\n';
mydescr += 'Autore Libro: ' + data.autore + '\n';
mydescr += 'Autore Libro: ' + (data?.autore.trim() ? data?.autore.trim() : products.getAutoriByArrayAuthors(myproduct?.value.productInfo?.authors)) + '\n';
mydescr += 'DESCRIZIONE LIBRO: \n';
mydescr += data.descrizione_lunga;
@@ -212,7 +212,7 @@ export default defineComponent({
mydescr = getPrompt()
mydescr += 'Titolo Libro: ' + myproduct?.value.productInfo?.name + '\n';
mydescr += 'Autore Libro: ' + products.getAutoriByArrayAuthors(myproduct?.productInfo?.authors) + '\n';
mydescr += 'Autore Libro: ' + products.getAutoriByArrayAuthors(myproduct?.value.productInfo?.authors) + '\n';
mydescr += 'DESCRIZIONE LIBRO: \n';
mydescr += myproduct?.value.productInfo?.descrizione_completa_macro;

View File

@@ -175,7 +175,7 @@
color="primary"
icon="fas fa-file-pdf"
:label="`Apri PDF`"
:href="tools.getURLByHostAndFilePath(myrec.pdf_online)"
:href="tools.getURLByHostAndFilePath(myrec.pdf_online, myrec.data_online ? (new Date(myrec.data_online)).getTime() : undefined)"
size="md"
class="hover-lift"
/>
@@ -186,7 +186,7 @@
color="primary"
icon="download"
:label="`Scarica PDF`"
:href="tools.getURLByHostAndFilePath(myrec.pdf_online)"
:href="tools.getURLByHostAndFilePath(myrec.pdf_online, myrec.data_online ? (new Date(myrec.data_online)).getTime() : undefined)"
download
size="md"
class="hover-lift"
@@ -207,13 +207,6 @@
:label="$t('reg.elimina')"
icon="fas fa-trash-alt"
/>
<q-fab-action
v-if="tools.isAdmin()"
@click="cmdExt(costanti.CMD_CLONE, myrec._id, null)"
color="accent"
:label="$t('event.duplicate')"
icon="fas fa-copy"
/>
<q-fab-action
v-if="tools.canModifyThisRec(myrec, table) || editOn"
:disable="!pagina_collegata"

View File

@@ -51,6 +51,11 @@ export default defineComponent({
type: Array,
required: true,
},
lista_prod_confronto: {
type: Array,
required: false,
default: [],
},
table: {
type: String,
required: true,
@@ -872,7 +877,7 @@ export default defineComponent({
};
// 3. Funzione per verificare se una colonna è visibile (isColumnVisible)
const isColumnVisible = (column: string, real?: boolean) => {
const isColumnVisible = (column: string, real?: boolean, element?: any) => {
if (column === 'actions' && !real) {
return false;
}
@@ -886,12 +891,14 @@ export default defineComponent({
(!props.optcatalogo.showListaArgomenti ||
(props.optcatalogo.showListaArgomenti && !isEditColumn(column)));
if (props.options?.showbuttAdd && column === 'addtolist') {
if (props.options?.showbuttAdd && column === 'addtolist'
&& (!element || !props.lista_prod_confronto.some((prod: any) => prod._id === element?._id))
) {
if (tools.isCollaboratore())
ok = true
}
if (!props.options?.showbuttAdd && column === 'addtolist') {
if (!props.options?.showbuttAdd && column === 'addtolist' && (element && props.lista_prod_confronto.some((prod: any) => prod._id === element?._id))) {
ok = false
}

View File

@@ -160,7 +160,7 @@
>
</q-btn>
</td>
<td v-else-if="field.name === 'addtolist' && isColumnVisible('addtolist')">
<td v-else-if="field.name === 'addtolist' && isColumnVisible('addtolist', false, element)">
<q-btn
icon="fas fa-plus"
color="primary"

View File

@@ -5,7 +5,7 @@ import { i18n } from 'src/boot/i18n' // Importa l'istanza di i18n configurata in
import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { useQuasar } from 'quasar'
import type { ICatalog, IDataPass, IProduct, IProductInfo, ISpecialField, IVariazione } from '@model';
import type { ICatalog, IDataPass, IProduct, IProductInfo, IRaccoltaCatalogo, ISpecialField, IVariazione } from '@model';
import { tools } from '../store/Modules/tools'
import { costanti } from '@costanti'
import { fieldsTable } from '@store/Modules/fieldsTable'

View File

@@ -799,8 +799,6 @@ export interface IAreaDiStampa {
export interface IElementiPagina {
isTemplate?: boolean,
linkIdTemplate?: string,
scalexscheda?: number
scaleyscheda?: number
name?: string,
pagina: IDimensioni
}
@@ -828,6 +826,8 @@ export interface IMyScheda {
name?: string,
numschede_perRiga?: number
numschede_perCol?: number
scalexscheda?: number
scaleyscheda?: number
show_separatore: boolean
testo_right_attaccato?: IText
testo_right?: IText

View File

@@ -129,7 +129,7 @@ export const useCatalogStore = defineStore('CatalogStore', {
if (catalog) {
// Update catalog from server
const indelem = this.catalogs.findIndex(
(reccatalog: ICatalogCompleto) => reccatalog._id === catalog._id
(reccatalog: ICatalog) => reccatalog._id === catalog._id
);
if (indelem >= 0) {
this.catalogs[indelem] = { ...catalog };
@@ -137,5 +137,21 @@ export const useCatalogStore = defineStore('CatalogStore', {
}
}
},
async updateRecordInMem(table: string, mydata: any) {
if (table === shared_consts.TABLES_RACCOLTACATALOGHIS) {
const index = this.raccoltacataloghis.findIndex(
(item) => item._id === mydata._id
);
if (index !== -1) {
this.raccoltacataloghis.splice(index, 1, mydata);
} else {
console.error('Non trovo il record da aggiornare', mydata);
}
}
}
},
});

View File

@@ -10682,11 +10682,11 @@ export const tools = {
return 0;
}
},
getURLByHostAndFilePath(filepath: string) {
getURLByHostAndFilePath(filepath: string, timestamp: string = '') {
try {
let myurl = filepath.startsWith('/')
? tools.getHost() + filepath
: tools.getHost() + '/' + filepath;
: tools.getHost() + '/' + filepath + `?ts=${timestamp}`;
return myurl;
} catch (e) {
return filepath;

View File

@@ -2493,24 +2493,7 @@ export default defineComponent({
if (ris && !ris.error) {
const catalog = myCatalog.value;
if (catalog) {
if (instampa) {
catalog.pdf_generato_stampa = ris.fileout;
catalog.pdf_generato_stampa_compressed = ris.fileout_compressed;
catalog.pdf_generato_stampa_size = ris.filesize;
catalog.pdf_generato_stampa_compr_size = ris.filesize_compressed;
catalog.data_generato_stampa = tools.getDateNow();
} else {
catalog.pdf_generato_compressed = ris.fileout_compressed;
catalog.pdf_generato = ris.fileout;
catalog.pdf_generato_size = ris.filesize;
catalog.pdf_generato_compr_size = ris.filesize_compressed;
catalog.data_generato = tools.getDateNow();
}
await saveCatalog();
} else {
strout.value = JSON.stringify(ris, null, 2);
}

View File

@@ -577,7 +577,7 @@
<q-td :props="props">
<a
v-if="props.row.pdf"
:href="tools.getURLByHostAndFilePath(props.row.pdf)"
:href="tools.getURLByHostAndFilePath(props.row.pdf, props.row.data ? (new Date(props.row.data)).getTime() : undefined)"
target="_blank"
class="text-bold"
>
@@ -681,7 +681,7 @@
color="primary"
icon="fas fa-file-pdf"
:label="`Apri PDF`"
:href="tools.getURLByHostAndFilePath(myCatalog.pdf_online)"
:href="tools.getURLByHostAndFilePath(myCatalog.pdf_online, myCatalog.data_online ? (new Date(myCatalog.data_online)).getTime() : undefined)"
size="md"
class="hover-lift"
/>
@@ -692,7 +692,7 @@
color="primary"
icon="download"
:label="`Scarica PDF`"
:href="tools.getURLByHostAndFilePath(myCatalog.pdf_online)"
:href="tools.getURLByHostAndFilePath(myCatalog.pdf_online, myCatalog.data_online ? (new Date(myCatalog.data_online)).getTime() : undefined)"
download
size="md"
class="hover-lift"
@@ -764,7 +764,7 @@
icon="fas fa-file-pdf"
:label="`Apri PDF`"
:href="
tools.getURLByHostAndFilePath(myCatalog.pdf_online_stampa)
tools.getURLByHostAndFilePath(myCatalog.pdf_online_stampa, myCatalog.data_online_stampa ? (new Date(myCatalog.data_online_stampa)).getTime() : undefined)
"
size="md"
class="hover-lift"
@@ -777,7 +777,7 @@
icon="download"
:label="`Scarica PDF`"
:href="
tools.getURLByHostAndFilePath(myCatalog.pdf_online_stampa)
tools.getURLByHostAndFilePath(myCatalog.pdf_online_stampa, myCatalog.data_online_stampa ? (new Date(myCatalog.data_online_stampa)).getTime() : undefined)
"
download
size="md"
@@ -1282,9 +1282,7 @@
null,
optcatalogo.arrSchede[0],
true
) +
' ' +
pageIndex
)
"
></div>
</div>
@@ -1714,6 +1712,7 @@
<CProductTable
v-if="arrListaTemporanea?.length > 0"
:lista_prodotti="arrListaTemporanea"
:lista_prod_confronto="myCatalog?.lista_prodotti"
:options="{ showbuttAdd: true }"
:optcatalogo="optcatalogo"
table="products"

View File

@@ -1,5 +1,13 @@
import type { PropType } from 'vue';
import { defineComponent, onMounted, ref, watch, computed, onBeforeUnmount, nextTick } from 'vue';
import {
defineComponent,
onMounted,
ref,
watch,
computed,
onBeforeUnmount,
nextTick,
} from 'vue';
import { tools } from '@tools';
import { useUserStore } from '@store/UserStore';
import { useRouter } from 'vue-router';
@@ -37,6 +45,7 @@ import type {
ICollana,
IOptRigenera,
IOpAndOr,
IRaccoltaCatalogo,
} from 'model';
import { IMyPage } from 'model';
@@ -80,7 +89,7 @@ export default defineComponent({
const search = ref('');
const optauthors = ref(<any>[]);
const loadpage = ref(false)
const loadpage = ref(false);
const pdfContent = ref(null);
const addnewProd = ref(false);
@@ -92,10 +101,11 @@ export default defineComponent({
const optcatalogo = ref(<IOptCatalogo>{ ...props.modelValue });
const getRaccoltaCataloghiByMyPage = computed(() => {
return catalogStore.raccoltacataloghis?.find((raccolta: IRaccoltaCatalogo) => raccolta.idPageAssigned === props.idPage);
return catalogStore.raccoltacataloghis?.find(
(raccolta: IRaccoltaCatalogo) => raccolta.idPageAssigned === props.idPage
);
});
const lista_cataloghi = computed(() => {
const arr = catalogStore.raccoltacataloghis?.find(
(raccolta: IRaccoltaCatalogo) => raccolta.idPageAssigned === props.idPage
@@ -135,13 +145,6 @@ export default defineComponent({
return lab;
});
const arrLoaded = computed(() => {
if (arrCataloghi.value && numRecLoaded.value) return arrCataloghi.value.slice(0, numRecLoaded.value);
else {
return [];
}
});
function getTitoloRaccolta(): string {
const trovatoraccolta = getRaccoltaCataloghiByMyPage.value;
@@ -168,7 +171,9 @@ export default defineComponent({
if (!imagefile && mypage) {
imagefile = mypage.imgsfondo!.imagefile!;
imagefile = imagefile ? `url("${tools.getDirUpload() + costanti.DIR_CATALOGO + imagefile}")` : '';
imagefile = imagefile
? `url("${tools.getDirUpload() + costanti.DIR_CATALOGO + imagefile}")`
: '';
fit = mypage.imgsfondo!.fit!;
}
@@ -184,15 +189,23 @@ export default defineComponent({
function salvaListaRaccolte(ricarica: boolean) {
// Estrai solo gli ID dei prodotti filtrati
const myarr = [...getRaccoltaCataloghiByMyPage.value.lista_cataloghi];
const catalogoIds = myarr.map((catalog) => (catalog._id ? catalog._id : null)).filter((id) => id !== null);
const catalogoIds = myarr
.map((catalog) => (catalog._id ? catalog._id : null))
.filter((id) => id !== null);
let mydata = {
lista_cataloghi: catalogoIds,
};
// Salva gli ID dei prodotti nel catalogo
tools.saveFieldToServer($q, 'raccoltacataloghis', getRaccoltaCataloghiByMyPage.value._id, mydata, true, false);
tools.saveFieldToServer(
$q,
'raccoltacataloghis',
getRaccoltaCataloghiByMyPage.value._id,
mydata,
true,
false
);
}
async function mounted() {
@@ -240,14 +253,15 @@ export default defineComponent({
// add this record to lista_cataloghi
if (
getRaccoltaCataloghiByMyPage.value &&
element._id && !getRaccoltaCataloghiByMyPage.value.lista_cataloghi?.some((p) => p?._id === element._id)
element._id &&
!getRaccoltaCataloghiByMyPage.value.lista_cataloghi?.some(
(p) => p?._id === element._id
)
) {
// inserire il record in cima
const arr = getRaccoltaCataloghiByMyPage.value.lista_cataloghi || [];
if (where === shared_consts.WHERE_INSERT.ONTOP)
arr.unshift(element);
else if (where === shared_consts.WHERE_INSERT.ONBOTTOM)
arr.push(element)
if (where === shared_consts.WHERE_INSERT.ONTOP) arr.unshift(element);
else if (where === shared_consts.WHERE_INSERT.ONBOTTOM) arr.push(element);
updateRaccolta(arr);
@@ -256,6 +270,77 @@ export default defineComponent({
}
}
async function rigeneraTUTTI(stampa: boolean) {
const msg = stampa ? 'stampa' : '';
if (getRaccoltaCataloghiByMyPage.value) {
const confirm = await $q
.dialog({
title: 'Conferma',
message: `Generare TUTTI i Cataloghi in PDF ${msg}?`,
ok: {
label: 'Sì',
push: true,
},
cancel: {
label: 'Annulla',
},
})
.onOk(async () => {
/*$q.loading.show({
message: `Generazione di TUTTI i Cataloghi in PDF ${msg} in corso, attendere ...`,
});*/
userStore.eseguiFunzSulServer({
dbop: 'GeneraPdfRaccolta',
options: {
idRaccolta: getRaccoltaCataloghiByMyPage.value._id,
comprimi: true,
stampa,
path: 'upload/cataloghi/',
compressione: 'printer',
},
});
});
}
}
async function onlineTUTTI(stampa: boolean) {
const msg = stampa ? 'stampa' : '';
if (getRaccoltaCataloghiByMyPage.value) {
const confirm = await $q
.dialog({
title: 'Conferma',
message: `Mettere ONLINE TUTTI i PDF dei Cataloghi ${msg}?`,
ok: {
label: 'Sì',
push: true,
},
cancel: {
label: 'Annulla',
},
})
.onOk(async () => {
/*$q.loading.show({
message: `Generazione di TUTTI i Cataloghi in PDF ${msg} in corso, attendere ...`,
});*/
userStore.eseguiFunzSulServer({
dbop: 'onlinePdfRaccolta',
options: {
idRaccolta: getRaccoltaCataloghiByMyPage.value._id,
stampa,
},
});
});
}
}
function clickaddNewBook() {
addnewProd.value = true;
}
@@ -265,8 +350,7 @@ export default defineComponent({
}
const preparePDF = (stampa: boolean) => {
let addstr = stampa ? ' per la STAMPA' : ''
let addstr = stampa ? ' per la STAMPA' : '';
$q.dialog({
message: `Generare il PDF ${addstr}?`,
ok: {
@@ -283,7 +367,7 @@ export default defineComponent({
};
async function saveRaccolta() {
const raccolta = getRaccoltaCataloghiByMyPage.value
const raccolta = getRaccoltaCataloghiByMyPage.value;
const mydata = {
table: 'raccoltacataloghis',
data: raccolta,
@@ -292,7 +376,6 @@ export default defineComponent({
await globalStore.saveTable(mydata);
}
async function generaPDF(stampa: boolean) {
$q.loading.show({
message: 'Generazione della Raccolta Catalogo in PDF in corso ...',
@@ -304,23 +387,11 @@ export default defineComponent({
stampa,
metti_online: false,
dir_out: '/upload/raccolte/',
}
const ris = await globalStore.execJoinPDF({options});
};
const ris = await globalStore.execJoinPDF({ options });
if (ris) {
const raccolta = getRaccoltaCataloghiByMyPage.value;
if (!stampa && ris.raccolta.pdf_generato) {
raccolta.pdf_generato = ris.raccolta.pdf_generato;
raccolta.pdf_generato_size = ris.raccolta.pdf_generato_size;
raccolta.data_generato = tools.getDateNow();
}
if (stampa && ris.raccolta.pdf_generato_stampa) {
raccolta.pdf_generato_stampa = ris.raccolta.pdf_generato_stampa;
raccolta.pdf_generato_stampa_size = ris.raccolta.pdf_generato_stampa_size;
raccolta.data_generato_stampa = tools.getDateNow();
}
await saveRaccolta();
await catalogStore.updateRecordInMem(shared_consts.TABLES_CATALOG, ris.raccolta)
}
$q.loading.hide();
@@ -343,7 +414,10 @@ export default defineComponent({
const pubblicaPDF = async () => {
const raccolta = getRaccoltaCataloghiByMyPage.value;
const ris = await globalStore.execOnlinePDF({ id_raccolta: raccolta._id, stampa: false });
const ris = await globalStore.execOnlinePDF({
id_raccolta: raccolta._id,
stampa: false,
});
if (ris) {
if (ris.record?.pdf_online) {
@@ -369,15 +443,12 @@ export default defineComponent({
const pubblicaPDFStampa = async () => {
const raccolta = getRaccoltaCataloghiByMyPage.value;
const ris = await globalStore.execOnlinePDF({ id_raccolta: raccolta._id, stampa: true });
const ris = await globalStore.execOnlinePDF({
id_raccolta: raccolta._id,
stampa: true,
});
if (ris) {
if (ris.record.pdf_online_stampa) {
raccolta.pdf_online_stampa = ris.record.pdf_online_stampa;
raccolta.data_online_stampa = ris.record.data_online_stampa;
}
await saveRaccolta();
$q.notify({
color: 'positive',
@@ -392,8 +463,7 @@ export default defineComponent({
icon: 'error',
});
}
}
};
onMounted(mounted);
@@ -409,7 +479,6 @@ export default defineComponent({
componentToFixRef,
isFixed,
numRecLoaded,
arrLoaded,
mycolumns,
tabraccolta,
naviga,
@@ -427,6 +496,8 @@ export default defineComponent({
loadpage,
ispageCatalogata,
optcatalogo,
rigeneraTUTTI,
onlineTUTTI,
};
},
});

View File

@@ -32,9 +32,7 @@
class=""
keep-alive
>
<q-tab-panel
name="lista"
>
<q-tab-panel name="lista">
<q-btn
rounded
label="Aggiungi"
@@ -56,23 +54,65 @@
<q-tab-panel name="genera">
<div
v-if="!tools.isUtente()"
class="row justify-center"
class="column justify-center"
>
<q-btn
v-if="!optcatalogo.generazionePDFInCorso"
:label="`GENERA PDF per WEB`"
@click="preparePDF(false)"
></q-btn>
<q-btn
v-if="!optcatalogo.generazionePDFInCorso"
:label="`GENERA PDF per STAMPA`"
@click="preparePDF(true)"
></q-btn>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
<div class="row justify-center">
<q-btn
rounded
label="Rigenera TUTTI i Cataloghi"
icon="fas fa-redo"
color="primary"
@click="rigeneraTUTTI()"
></q-btn>
<q-btn
rounded
label="Online TUTTI i Cataloghi"
icon="fas fa-redo"
color="positive"
@click="onlineTUTTI()"
></q-btn>
</div>
<br />
<div class="row justify-center">
<q-btn
rounded
label="Rigenera TUTTI per STAMPA"
icon="fas fa-print"
color="primary"
@click="rigeneraTUTTI(true)"
></q-btn>
<q-btn
rounded
label="Online TUTTI per STAMPA"
icon="fas fa-redo"
color="positive"
@click="onlineTUTTI(true)"
></q-btn>
</div>
<br /><br />
<div class="row justify-center">
<q-btn
v-if="!optcatalogo.generazionePDFInCorso"
:label="`GENERA PDF ` + getTitoloRaccolta()"
color="red"
@click="preparePDF(false)"
rounded
></q-btn>
<q-btn
v-if="!optcatalogo.generazionePDFInCorso"
:label="`GENERA PDF ${getTitoloRaccolta()} per STAMPA`"
@click="preparePDF(true)"
color="orange"
rounded
></q-btn>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
</div>
</div>
<div
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato"
@@ -81,21 +121,38 @@
<div class="bg-blue-1 text-red text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF generati Temporanei</strong>
</div>
<div v-if="getRaccoltaCataloghiByMyPage?.data_generato !== getRaccoltaCataloghiByMyPage?.data_online">
<div
v-if="
getRaccoltaCataloghiByMyPage?.data_generato !==
getRaccoltaCataloghiByMyPage?.data_online
"
>
PDF Generato:
<a
:href="tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_generato)"
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato
)
"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato"
class="text-bold"
>
{{ tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_generato) }}
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato
)
}}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato) }})
<br />(del
{{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato) }})
<br />
<q-btn
v-if="getRaccoltaCataloghiByMyPage?.data_generato !== getRaccoltaCataloghiByMyPage?.data_online"
v-if="
getRaccoltaCataloghiByMyPage?.data_generato !==
getRaccoltaCataloghiByMyPage?.data_online
"
rounded
label="Pubblica PDF OnLine"
color="positive"
@@ -103,21 +160,40 @@
></q-btn>
</div>
<br />
<div v-if="getRaccoltaCataloghiByMyPage?.data_generato_stampa !== getRaccoltaCataloghiByMyPage?.data_online_stampa">
<div
v-if="
getRaccoltaCataloghiByMyPage?.data_generato_stampa !==
getRaccoltaCataloghiByMyPage?.data_online_stampa
"
>
PDF Generato Stampa:
<a
:href="tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_generato_stampa)"
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato_stampa
)
"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato_stampa"
class="text-bold"
>
{{ tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_generato_stampa) }}
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_generato_stampa
)
}}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato_stampa) }})
<br />(del
{{
tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato_stampa)
}})
<br />
<q-btn
v-if="getRaccoltaCataloghiByMyPage?.data_generato_stampa !== getRaccoltaCataloghiByMyPage?.data_online_stampa"
v-if="
getRaccoltaCataloghiByMyPage?.data_generato_stampa !==
getRaccoltaCataloghiByMyPage?.data_online_stampa
"
rounded
label="Pubblica PDF Stampa"
color="positive"
@@ -131,29 +207,49 @@
<div v-if="getRaccoltaCataloghiByMyPage?.data_online">
PDF OnLine:
<a
:href="tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_online)"
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_online
)
"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_online"
class="text-bold"
>
{{ tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_online) }}
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_online
)
}}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_online) }})
<br />(del
{{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_online) }})
</div>
<br />
<div v-if="getRaccoltaCataloghiByMyPage?.data_online_stampa">>
PDF OnLine Stampa:
<div v-if="getRaccoltaCataloghiByMyPage?.data_online_stampa">
> PDF OnLine Stampa:
<a
:href="tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_online_stampa)"
:href="
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_online_stampa
)
"
target="_blank"
class="text-bold"
v-if="getRaccoltaCataloghiByMyPage?.pdf_online_stampa"
>
{{ tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_online_stampa) }}
{{
tools.getURLByHostAndFilePath(
getRaccoltaCataloghiByMyPage?.pdf_online_stampa
)
}}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_online_stampa) }})
<br />(del
{{
tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_online_stampa)
}})
</div>
</div>
</div>