- Cataloghi: pagine, schede, formato

This commit is contained in:
Surya Paolo
2024-11-19 19:19:14 +01:00
parent 90ed545070
commit 5cd9bd40f6
103 changed files with 3593115 additions and 1603 deletions

View File

@@ -1,17 +1,18 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="18"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"
DIRECTORY_SERVER="freeplanet_serverside" DIRECTORY_SERVER="freeplanet_serverside"
SERVERDIR_WEBSITE="" SERVERDIR_WEBSITE=""
SERVERPW_WEBSITE="" SERVERPW_WEBSITE=""
APP_URL="https://localhost" APP_URL="https://localhost"
URL_FACEBOOK="https://www.facebook.com/freeplanetapp" URL_FACEBOOK="https://www.facebook.com/freeplanetapp"
PROVA_PAOLO="PROVA ENV FUNZIONA!"
LANG_DEFAULT="it" LANG_DEFAULT="it"
PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF" PAO_APP_ID="KKPPAA5KJK435J3KSS9F9D8S9F8SD98F9SDF"
MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T" MASTER_KEY="KKPPSS5KJK435J3KSS9F9D8S9F8SD3CR3T"
MONGODB_HOST="https://localhost:3000" MONGODB_HOST="https://localhost:3000"
LOGO_REG='riso-logo-full.png' LOGO_REG='gruppomacro-logo-full.png'
TEST_NAME="Paolo" TEST_NAME="Paolo"
TEST_SURNAME="Arena" TEST_SURNAME="Arena"
TEST_EMAIL="" TEST_EMAIL=""
@@ -24,5 +25,5 @@ DEBUG="1"
TELEGRAM_SUPPORT="" TELEGRAM_SUPPORT=""
PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a" PROJECT_ID_MAIN="5cc0a13fe5c9d156728f400a"
TEST_CELL="" TEST_CELL=""
VUE_APP_ISTEST="1" VUE_APP_ISTEST=1
VUE_APP_INLOCALE="1" VUE_APP_INLOCALE=1

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18" APP_ID="18"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="19" APP_ID="19"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18" APP_ID="18"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="19" APP_ID="19"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,6 +1,6 @@
{ {
"name": "abitaregliiblei", "name": "abitaregliiblei",
"version": "1.1.11", "version": "1.1.12",
"description": "Abitare Gli Iblei", "description": "Abitare Gli Iblei",
"productName": "AbitareGliIblei", "productName": "AbitareGliIblei",
"author": "Paolo Arena", "author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16" APP_ID="16"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "riso", "name": "riso",
"version": "1.1.11", "version": "1.1.12",
"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": "Paolo Arena", "author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15" APP_ID="15"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="15" APP_ID="15"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "fioredellavita", "name": "fioredellavita",
"version": "1.1.11", "version": "1.1.12",
"description": "Fiore Della Vita", "description": "Fiore Della Vita",
"productName": "Fiore Della Vita", "productName": "Fiore Della Vita",
"author": "Paolo Arena", "author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="18" APP_ID="18"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16" APP_ID="16"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "gruppomacro", "name": "gruppomacro",
"version": "1.1.11", "version": "1.1.12",
"description": "GruppoMacro", "description": "GruppoMacro",
"productName": "Gruppo Macro", "productName": "Gruppo Macro",
"author": "Paolo Arena", "author": "Paolo Arena",
@@ -57,6 +57,7 @@
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"html2pdf.js": "^0.10.2", "html2pdf.js": "^0.10.2",
"jquery": "^3.7.1", "jquery": "^3.7.1",
"jsbarcode": "^3.11.6",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"jspdf": "^2.5.2", "jspdf": "^2.5.2",
"leaflet": "^1.9.4", "leaflet": "^1.9.4",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="17" APP_ID="17"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,6 +1,6 @@
{ {
"name": "piuchebuono", "name": "piuchebuono",
"version": "1.1.11", "version": "1.1.12",
"description": "PiuCheBuono", "description": "PiuCheBuono",
"productName": "PiuCheBuono", "productName": "PiuCheBuono",
"author": "Paolo Arena", "author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.11" APP_VERSION="1.1.12"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="16" APP_ID="16"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,6 +1,6 @@
{ {
"name": "riso", "name": "riso",
"version": "1.1.11", "version": "1.1.12",
"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": "Paolo Arena", "author": "Paolo Arena",

View File

@@ -1,8 +1,8 @@
{ {
"name": "riso", "name": "gruppomacro",
"version": "1.1.11", "version": "1.1.12",
"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": "GruppoMacro",
"productName": "Riso", "productName": "Gruppo Macro",
"author": "Paolo Arena", "author": "Paolo Arena",
"private": true, "private": true,
"keywords": [], "keywords": [],
@@ -54,9 +54,12 @@
"graphql": "^16.9.0", "graphql": "^16.9.0",
"graphql-tag": "^2.12.6", "graphql-tag": "^2.12.6",
"gsap": "^3.12.5", "gsap": "^3.12.5",
"html2canvas": "^1.4.1",
"html2pdf.js": "^0.10.2", "html2pdf.js": "^0.10.2",
"jquery": "^3.7.1", "jquery": "^3.7.1",
"jsbarcode": "^3.11.6",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"jspdf": "^2.5.2",
"leaflet": "^1.9.4", "leaflet": "^1.9.4",
"leaflet-routing-machine": "^3.2.12", "leaflet-routing-machine": "^3.2.12",
"leaflet.markercluster": "^1.5.3", "leaflet.markercluster": "^1.5.3",
@@ -127,7 +130,6 @@
"jest": "^29.7.0", "jest": "^29.7.0",
"json-loader": "^0.5.7", "json-loader": "^0.5.7",
"node-sass": "^9.0.0", "node-sass": "^9.0.0",
"nodemon": "^3.1.7",
"npm-check-updates": "^17.1.3", "npm-check-updates": "^17.1.3",
"optimize-css-assets-webpack-plugin": "^6.0.1", "optimize-css-assets-webpack-plugin": "^6.0.1",
"parcel": "^2.12.0", "parcel": "^2.12.0",

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 634 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

View File

@@ -17,8 +17,6 @@ const webpack = require('webpack')
const helpers = require('./helpers') const helpers = require('./helpers')
const envparser = require('./config/envparser') const envparser = require('./config/envparser')
const package = require('./package.json');
// const ESLintPlugin = require('eslint-webpack-plugin') // const ESLintPlugin = require('eslint-webpack-plugin')
module.exports = configure((ctx) => ({ module.exports = configure((ctx) => ({
@@ -89,7 +87,6 @@ module.exports = configure((ctx) => ({
// Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
build: { build: {
env: envparser(), env: envparser(),
versionCode: package.version,
vueRouterMode: 'history', vueRouterMode: 'history',
vueCompiler: true, vueCompiler: true,
gzip: false, // gzip true gzip: false, // gzip true
@@ -152,9 +149,9 @@ module.exports = configure((ctx) => ({
}, },
devServer: { devServer: {
https: false, https: false,
port: 8084, port: 8089,
open: false, // opens browser window automatically open: false, // opens browser window automatically
hot: false, // Disable hot module replacement hot: true, // Disable hot module replacement
headers: { headers: {
'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*', 'Access-Control-Allow-Headers': '*',
@@ -251,8 +248,6 @@ module.exports = configure((ctx) => ({
'Cookies', 'Cookies',
'Loading', 'Loading',
'AppVisibility', 'AppVisibility',
'LocalStorage',
'SessionStorage',
], ],
get plugins_1() { get plugins_1() {
return this._plugins; return this._plugins;
@@ -313,9 +308,9 @@ module.exports = configure((ctx) => ({
}, },
manifest: { manifest: {
name: 'Riso', name: 'Gruppo Macro',
short_name: 'Riso', short_name: 'GruppoMacro',
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: '',
display: 'standalone', display: 'standalone',
orientation: 'portrait', orientation: 'portrait',
background_color: '#fff', background_color: '#fff',
@@ -325,54 +320,24 @@ module.exports = configure((ctx) => ({
start_url: "/?homescreen=1", start_url: "/?homescreen=1",
icons: [ icons: [
{ {
src: 'images/riso-android-icon-512x512.png', src: 'images/gm-android-icon-512x512.png',
sizes: '512x512', sizes: '512x512',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-android-icon-384x384.png', src: 'images/gm-android-icon-192x192.png',
sizes: '384x384',
type: 'image/png',
},
{
src: 'images/riso-android-icon-192x192.png',
sizes: '192x192', sizes: '192x192',
type: 'image/png', type: 'image/png',
}, },
{ {
src: 'images/riso-android-icon-144x144.png', src: 'images/gm-apple-touch-icon.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/riso-android-icon-96x96.png',
sizes: '96x96',
type: 'image/png',
},
{
src: 'images/riso-apple-icon-120x120.png',
sizes: '120x120',
type: 'image/png',
},
{
src: 'images/riso-apple-icon-144x144.png',
sizes: '144x144',
type: 'image/png',
},
{
src: 'images/riso-apple-icon-152x152.png',
sizes: '152x152',
type: 'image/png',
},
{
src: 'images/riso-apple-icon-180x180.png',
sizes: '180x180', sizes: '180x180',
type: 'image/png', type: 'image/png',
}, },
], ],
related_applications: [{ related_applications: [{
"platform": "webapp", "platform": "webapp",
"url": "https://www.riso.app/manifest.json" "url": "https://www.gruppomacro.app/manifest.json"
}] }]
}, },
}, },
@@ -407,7 +372,7 @@ module.exports = configure((ctx) => ({
builder: { builder: {
// https://www.electron.build/configuration/configuration // https://www.electron.build/configuration/configuration
appId: 'Riso', appId: 'GruppoMacro',
}, },
// "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain // "chain" is a webpack-chain object https://github.com/neutrinojs/webpack-chain

View File

@@ -34,7 +34,7 @@ self.addEventListener('activate', (event) => {
}); });
const APP_VERSION = "1.1.11"; const APP_VERSION = "1.1.12";
console.log(' [ VER-' + APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker'); console.log(' [ VER-' + APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker');

View File

@@ -0,0 +1,10 @@
.barcode-container {
padding: 10px;
display: flex;
justify-content: center;
align-items: center;
}
.text-barcode {
font-size: 0.75rem;
}

View File

@@ -0,0 +1,83 @@
import { defineComponent, onMounted, ref, toRef, watch, toRefs } from 'vue'
import { tools } from '@src/store/Modules/tools'
import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { toolsext } from '@store/Modules/toolsext'
import JsBarcode from 'jsbarcode'
export default defineComponent({
name: 'CBarCode',
props: {
value: {
type: String,
required: true,
},
format: {
type: String,
required: false,
default: 'CODE128',
},
text: {
type: String,
required: false,
default: '',
},
width: {
type: Number,
required: false,
default: 2,
},
height: {
type: Number,
required: false,
default: 100,
},
fontsize: {
type: Number,
required: false,
default: 16,
},
},
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n();
// Converti le props in riferimenti reattivi
const { value, format, width, height, fontsize } = toRefs(props);
// Funzione per disegnare il codice a barre
const drawBarcode = () => {
JsBarcode("#C" + value.value, value.value, {
format: format.value,
width: width.value,
height: height.value,
displayValue: true,
lineColor: "#000",
font: "monospace",
margin: 1,
textMargin: 0,
marginTop: 0,
fontSize: fontsize.value,
textPosition:"bottom",
});
}
// Chiamato quando il componente è montato
onMounted(() => {
drawBarcode();
})
// Watcher per aggiornamenti delle proprietà
watch([value, format, width, height, fontsize], () => {
drawBarcode();
})
return {
tools,
toolsext,
fontsize,
}
},
})

View File

@@ -0,0 +1,13 @@
<template>
<div class="row barcode-container justify-center">
<div class="text-center " :style="`font-size: ${fontsize}px`">{{text}}</div>
<svg :id="`C${value}`"></svg>
</div>
</template>
<script lang="ts" src="./CBarCode.ts">
</script>
<style lang="scss" scoped>
@import './CBarCode.scss';
</style>

View File

@@ -0,0 +1 @@
export {default as CBarCode} from './CBarCode.vue'

View File

@@ -10,12 +10,12 @@
{{ label }} {{ label }}
</q-banner> </q-banner>
<div class="row"> <div v-if="internalModel" class="column">
<CMySlider <CMySlider
label="Top:" label="Top:"
v-model="internalModel.top" v-model="internalModel.top"
:min="10" :min="10"
:max="3000" :max="1000"
color="green" color="green"
addstr="px" addstr="px"
@update:model-value="modifValueTop" @update:model-value="modifValueTop"
@@ -24,7 +24,7 @@
label="Bottom:" label="Bottom:"
v-model="internalModel.bottom" v-model="internalModel.bottom"
:min="10" :min="10"
:max="3000" :max="1000"
color="red" color="red"
addstr="px" addstr="px"
@update:model-value="modifValueBottom" @update:model-value="modifValueBottom"
@@ -33,7 +33,7 @@
label="Left:" label="Left:"
v-model="internalModel.left" v-model="internalModel.left"
:min="10" :min="10"
:max="3000" :max="1000"
color="orange" color="orange"
addstr="px" addstr="px"
@update:model-value="modifValueLeft" @update:model-value="modifValueLeft"
@@ -42,7 +42,7 @@
label="Right:" label="Right:"
v-model="internalModel.right" v-model="internalModel.right"
:min="10" :min="10"
:max="3000" :max="1000"
color="fuchsia" color="fuchsia"
addstr="px" addstr="px"
@update:model-value="modifValueRight" @update:model-value="modifValueRight"

View File

@@ -19,7 +19,6 @@ export default defineComponent({
Categoria: [], Categoria: [],
Editore: [], Editore: [],
pdf: false, pdf: false,
backgroundimage: '',
}), }),
}, },
}, },

View File

@@ -9,6 +9,7 @@ import { CCardState } from '../CCardState'
import { CCopyBtn } from '../CCopyBtn' import { CCopyBtn } from '../CCopyBtn'
import { CMyValueDb } from '../CMyValueDb' import { CMyValueDb } from '../CMyValueDb'
import { CPrice } from '../CPrice' import { CPrice } from '../CPrice'
import { CBarCode } from '../CBarCode'
import { func_tools, toolsext } from '@store/Modules/toolsext' import { func_tools, toolsext } from '@store/Modules/toolsext'
@@ -77,7 +78,7 @@ export default defineComponent({
}), }),
}, },
}, },
components: { CTitleBanner, CCardState, CCopyBtn, CMyValueDb, VuePdfApp, CPrice }, components: { CTitleBanner, CCardState, CCopyBtn, CMyValueDb, VuePdfApp, CPrice, CBarCode },
setup(props, { emit }) { setup(props, { emit }) {
const $q = useQuasar() const $q = useQuasar()
const { t } = useI18n() const { t } = useI18n()

View File

@@ -4,12 +4,11 @@
' items-start q-gutter-sm': true, ' items-start q-gutter-sm': true,
}" }"
:style=" :style="
scheda.height scheda.height ? ' height: ' + scheda.height + 'px !important; ' : ''
? ' height: ' + scheda.height + 'px !important; '
: ''
" "
> >
<q-spinner v-if="!endload" color="primary" size="3em" :thickness="2" /> <q-spinner v-if="!endload" color="primary" size="3em" :thickness="2" />
<div <div
v-if="!!myproduct && !!myproduct.productInfo" v-if="!!myproduct && !!myproduct.productInfo"
:class="{ :class="{
@@ -57,7 +56,7 @@
justifyContent: 'center', justifyContent: 'center',
alignItems: 'flex-start', alignItems: 'flex-start',
gap: '0.5rem', gap: '0.5rem',
width: '100%', width: scheda.dimensioni?.scheda_prodotto?.size.width ?? '100%',
}" }"
> >
<q-img <q-img
@@ -82,8 +81,10 @@
scheda.posiz_text === costanti.POSIZ_TESTO.IN_BASSO scheda.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
? '50%' ? '50%'
: '45%', : '45%',
...(scheda.dimensioni.immagine_prodotto.width && { ...(scheda.dimensioni?.immagine_prodotto?.size?.width && {
width: scheda.dimensioni.immagine_prodotto.width + ' !important', width:
scheda.dimensioni?.immagine_prodotto.size?.width +
' !important',
}), }),
display: 'block', display: 'block',
}" }"
@@ -120,8 +121,34 @@
}" }"
> >
<div <div
v-if="scheda.testo_right"
:style="`line-height: ${scheda.line_height}%; `" :style="`line-height: ${scheda.line_height}%; `"
v-html="products.replaceKeyWordsByProduct(myproduct, scheda.text)" v-html="products.replaceKeyWordsByProduct(myproduct, scheda.testo_right)"
></div>
<div v-if="scheda.barcode && scheda.barcode.show">
<CBarCode
:value="myproduct.productInfo.code"
:format="scheda.barcode.format"
:fontsize="scheda.barcode.font?.size"
:width="parseInt(scheda.barcode.size.width)"
:height="parseInt(scheda.barcode.size.height)"
:text="`ISBN: ${myproduct.productInfo.code}`"
>
</CBarCode>
</div>
</div>
<div
v-if="scheda.testo_bottom && scheda.testo_bottom.contenuto"
:style="{
width: '100%',
textAlign: 'center',
marginTop: '1rem',
}"
>
<div
:style="`line-height: ${scheda.line_height}%; `"
v-html="products.replaceKeyWordsByProduct(myproduct, scheda.testo_bottom)"
></div> ></div>
</div> </div>
</div> </div>

View File

@@ -53,7 +53,6 @@ export default defineComponent({
Categoria: [], Categoria: [],
Editore: [], Editore: [],
pdf: false, pdf: false,
backgroundimage: '',
}), }),
}, },
scheda: { scheda: {

View File

@@ -84,6 +84,24 @@ export default defineComponent({
{ label: 'In basso', value: costanti.POSIZ_TESTO.IN_BASSO }, { label: 'In basso', value: costanti.POSIZ_TESTO.IN_BASSO },
{ label: 'A Destra', value: costanti.POSIZ_TESTO.A_DESTRA }, { label: 'A Destra', value: costanti.POSIZ_TESTO.A_DESTRA },
]) ])
const formatOptions = ref([
{ label: 'auto', value: 'CODE128' },
{ label: 'EAN-13', value: 'EAN-13' },
{ label: 'UPC', value: 'upc' },
])
const fontSizeOptions = ref([
{ label: '9', value: '9' },
{ label: '10', value: '10' },
{ label: '11', value: '11' },
{ label: '12', value: '12' },
{ label: '13', value: '13' },
{ label: '14', value: '14' },
{ label: '15', value: '15' },
{ label: '16', value: '16' },
{ label: '18', value: '18' },
{ label: '20', value: '20' },
{ label: '22', value: '22' },
])
const animare = ref(0) const animare = ref(0)
const slide = ref(0) const slide = ref(0)
@@ -247,6 +265,62 @@ export default defineComponent({
selectedClasses.value = myel.value.class4.split(' ').filter(Boolean) selectedClasses.value = myel.value.class4.split(' ').filter(Boolean)
} }
if (myel.value.catalogo && myel.value.catalogo?.arrSchede) {
for (const recscheda of myel.value.catalogo?.arrSchede) {
if (recscheda.scheda && (!recscheda.scheda?.testo_bottom)) {
recscheda.scheda.testo_bottom = {contenuto: '', maxlength: 100}
}
if (recscheda.scheda && (!recscheda.scheda?.testo_right)) {
recscheda.scheda.testo_right = {contenuto: ''}
}
if (recscheda.scheda && (!recscheda.scheda?.barcode || !recscheda.scheda?.barcode.font)) {
recscheda.scheda.barcode = {
show: false,
format: '',
size: {
width: '2',
height: '100',
},
font: {
name: '',
size: 16,
}
}
}
}
}
if (myel.value.catalogo && !myel.value.catalogo.imgsfondo_def) {
myel.value.catalogo.imgsfondo_def = {
imagefile: '',
fit: '',
}
}
if (myel.value.catalogo && !myel.value.catalogo.dimensioni_def) {
myel.value.catalogo.dimensioni_def = {
pagina: {
size: {
width: '',
height: '',
},
margini: {
left: '',
top: '',
right: '',
bottom: '',
},
padding: {
left: '',
top: '',
right: '',
bottom: '',
},
}
}
}
} }
function clickOnElem() { function clickOnElem() {
@@ -267,7 +341,7 @@ export default defineComponent({
let maxorder = 0 let maxorder = 0
myel.value.catalogo!.arrSchede?.forEach(scheda => { myel.value.catalogo!.arrSchede?.forEach(scheda => {
if (scheda.order > maxorder) { if (scheda?.order! > maxorder) {
maxorder = scheda.order maxorder = scheda.order
} }
}) })
@@ -332,22 +406,24 @@ export default defineComponent({
right: '0px', right: '0px',
}, },
}, },
immagine_prodotto: {size: { immagine_prodotto: {
width: '150px', size: {
height: '235px', width: '150px',
height: '235px',
},
margini: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},
padding: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},
}, },
margini: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},
padding: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},},
} }
let newscheda: IMyScheda = { let newscheda: IMyScheda = {
@@ -359,9 +435,25 @@ export default defineComponent({
line_height: 100, line_height: 100,
numschede_perRiga: 2, numschede_perRiga: 2,
numschede_perCol: 2, numschede_perCol: 2,
text: '',
posiz_text: costanti.POSIZ_TESTO.A_DESTRA, posiz_text: costanti.POSIZ_TESTO.A_DESTRA,
testo_right: {
contenuto: '',
},
testo_bottom: {
contenuto: '',
},
barcode: {
show: false,
format: '',
size: {
width: '2',
height: '100',
},
font: {
name: 'monospace',
size: 16,
}
},
productTypes: [], productTypes: [],
excludeproductTypes: [], excludeproductTypes: [],
editore: [], editore: [],
@@ -480,6 +572,7 @@ export default defineComponent({
let iscatalogo = costanti.CATALOGO_FIELDS.includes(col.name) let iscatalogo = costanti.CATALOGO_FIELDS.includes(col.name)
let isscheda = costanti.SCHEDA_FIELDS.includes(col.name) let isscheda = costanti.SCHEDA_FIELDS.includes(col.name)
let isIImg = costanti.IMG_FIELDS.includes(col.name) && (col.fieldtype === costanti.FieldType.image)
if (col.fieldtype === costanti.FieldType.image) { if (col.fieldtype === costanti.FieldType.image) {
if (iscatalogo) { if (iscatalogo) {
@@ -487,6 +580,11 @@ export default defineComponent({
//console.log('SALVATO IN', col.name, newval.imagefile, 'RIS', myel.value.catalogo[col.name]) //console.log('SALVATO IN', col.name, newval.imagefile, 'RIS', myel.value.catalogo[col.name])
} else if (isscheda) { } else if (isscheda) {
rec[col.name] = newval.imagefile rec[col.name] = newval.imagefile
} else if (isIImg) {
if (!rec[col.name]) {
rec[col.name] = {}
}
rec[col.name].imagefile = newval.imagefile
} else { } else {
myel.value[col.name] = newval.imagefile myel.value[col.name] = newval.imagefile
} }
@@ -757,6 +855,8 @@ export default defineComponent({
delRecScheda, delRecScheda,
SchedeOpt, SchedeOpt,
addProdSpeciale, addProdSpeciale,
formatOptions,
fontSizeOptions,
} }
}, },

View File

@@ -1352,6 +1352,17 @@
@update:model-value="modifElem" @update:model-value="modifElem"
> >
</q-toggle> </q-toggle>
<q-input
dense
label="NomeFile PDF"
@update:model-value="modifElem"
v-model="myel.catalogo.pdf_filename"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<br /> <br />
<!--++AddCATALOGO_FIELDS--> <!--++AddCATALOGO_FIELDS-->
@@ -1414,6 +1425,34 @@
</q-select> </q-select>
</div> </div>
</q-expansion-item> </q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Pagina di Default"
icon="fas fa-play-circle"
>
<div
v-if="myel.catalogo.dimensioni_def"
class="sfondo_margine row"
>
<CMySize
label="Pagina:"
v-model="myel.catalogo.dimensioni_def.pagina.size"
@update:model-value="modifElem"
></CMySize>
<CBorders
label="Margini Pagina:"
v-model="myel.catalogo.dimensioni_def.pagina.margini"
@update:model-value="modifElem"
></CBorders>
<CBorders
label="Padding Pagina:"
v-model="myel.catalogo.dimensioni_def.pagina.padding"
@update:model-value="modifElem"
></CBorders>
</div>
</q-expansion-item>
<q-expansion-item <q-expansion-item
dense dense
dense-toggle dense-toggle
@@ -1421,27 +1460,29 @@
label="Sfondi" label="Sfondi"
icon="fas fa-play-circle" icon="fas fa-play-circle"
> >
Nome File Web: {{ myel.catalogo.backgroundimage }}<br /> Immagine Sfondo di default:
<CMyFieldRec {{ myel.catalogo.imgsfondo_def?.imagefile }}<br />
title="Per Web:"
table="catalogo" <q-select
:rec="myel.catalogo" v-model="myel.catalogo.imgsfondo_def.fit"
field="backgroundimage" :options="tools.SelectListFit"
@update:model-value="modifElem" label="Dimensione Img"
:canEdit="true" options-dense
:canModify="true" dense
:fieldtype="costanti.FieldType.image" emit-value
@save="saveFieldElem" map-options
> style="width: 100px"
</CMyFieldRec> @update:model-value="modifElem"
fill-input
text-color="white"
>
</q-select>
Nome File Printable:
{{ myel.catalogo.backgroundimage_printable }}
<CMyFieldRec <CMyFieldRec
title="Sfondo:" title="Immagine Sfondo di default:"
table="catalogo" table="catalogo"
:rec="myel.catalogo" :rec="myel.catalogo"
field="backgroundimage_printable" field="imgsfondo_def"
@update:model-value="modifElem" @update:model-value="modifElem"
:canEdit="true" :canEdit="true"
:canModify="true" :canModify="true"
@@ -1722,7 +1763,7 @@
<q-select <q-select
v-model="recscheda.scheda.bgSize" v-model="recscheda.scheda.bgSize"
:options="bgSizeOpt" :options="tools.SelectListFit"
label="Dimensione Img" label="Dimensione Img"
options-dense options-dense
dense dense
@@ -1735,13 +1776,12 @@
> >
</q-select> </q-select>
Nome File Printable: {{ recscheda.scheda.dimensioni.imgsfondo }}
{{ recscheda.scheda.bgimg_printable }}
<CMyFieldRec <CMyFieldRec
title="Sfondo:" title="Sfondo:"
table="myschedas" table="imgs"
:rec="recscheda.scheda" :rec="recscheda.scheda.dimensioni"
field="bgimg_printable" field="imgsfondo"
@update:model-value="modifElem" @update:model-value="modifElem"
:canEdit="true" :canEdit="true"
:canModify="true" :canModify="true"
@@ -1802,7 +1842,6 @@
" "
@update:model-value="modifElem" @update:model-value="modifElem"
></CMySize> ></CMySize>
</div> </div>
</q-expansion-item> </q-expansion-item>
@@ -1836,11 +1875,29 @@
@update:model-value="modifElem" @update:model-value="modifElem"
></CMySlider> ></CMySlider>
<div>
Parole Chiave: {autore} {titolo} {descrizione}
{descrizione_estesa} {prezzo}
</div>
<CMyFieldRec <CMyFieldRec
title="Testo:" title="Testo a Destra:"
table="myschedas" table="text"
:rec="recscheda.scheda" :rec="recscheda.scheda.testo_right"
field="text" field="contenuto"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.html"
@save="saveFieldElem"
@update_col="update_col"
>
</CMyFieldRec>
<CMyFieldRec
title="Testo in Basso :"
table="text"
:rec="recscheda.scheda.testo_bottom"
field="contenuto"
@update:model-value="modifElem" @update:model-value="modifElem"
:canEdit="true" :canEdit="true"
:canModify="true" :canModify="true"
@@ -1851,7 +1908,56 @@
</CMyFieldRec> </CMyFieldRec>
</q-expansion-item> </q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Codice a Barre"
icon="fas fa-play-circle"
>
<q-toggle
v-model="recscheda.scheda.barcode.show"
color="positive"
icon="fas fa-file-pdf"
label="Mostra Codice a Barre"
@update:model-value="modifElem"
>
</q-toggle>
<q-select
v-model="recscheda.scheda.barcode.format"
:options="formatOptions"
label="Formato"
options-dense
dense
emit-value
map-options
style="width: 100px"
@update:model-value="modifElem"
fill-input
text-color="white"
>
</q-select>
<q-select
v-model="recscheda.scheda.barcode.font.size"
:options="fontSizeOptions"
label="Font Size"
options-dense
dense
emit-value
map-options
style="width: 100px"
@update:model-value="modifElem"
fill-input
text-color="white"
>
</q-select>
<CMySize
label="Dimensioni:"
v-model="recscheda.scheda.barcode.size"
@update:model-value="modifElem"
:addstr="false"
></CMySize>
</q-expansion-item>
</div> </div>
</q-tab-panel> </q-tab-panel>
</q-tab-panels> </q-tab-panels>
@@ -1872,7 +1978,7 @@
label="Altezza:" label="Altezza:"
v-model="myel.catalogo.first_page_height" v-model="myel.catalogo.first_page_height"
:min="0" :min="0"
:max="4000" :max="1200"
color="red" color="red"
@update:model-value="modifElem" @update:model-value="modifElem"
></CMySlider> ></CMySlider>
@@ -1880,7 +1986,7 @@
label="Larghezza:" label="Larghezza:"
v-model="myel.catalogo.first_page_width" v-model="myel.catalogo.first_page_width"
:min="0" :min="0"
:max="4000" :max="1200"
color="red" color="red"
@update:model-value="modifElem" @update:model-value="modifElem"
></CMySlider> ></CMySlider>
@@ -1928,7 +2034,7 @@
label="Altezza:" label="Altezza:"
v-model="myel.catalogo.last_page_height" v-model="myel.catalogo.last_page_height"
:min="0" :min="0"
:max="4000" :max="1200"
color="red" color="red"
@update:model-value="modifElem" @update:model-value="modifElem"
></CMySlider> ></CMySlider>
@@ -1936,7 +2042,7 @@
label="Larghezza:" label="Larghezza:"
v-model="myel.catalogo.last_page_width" v-model="myel.catalogo.last_page_width"
:min="0" :min="0"
:max="4000" :max="1200"
color="red" color="red"
@update:model-value="modifElem" @update:model-value="modifElem"
></CMySlider> ></CMySlider>
@@ -1988,38 +2094,6 @@
@update:model-value="modifElem" @update:model-value="modifElem"
> >
</q-toggle> </q-toggle>
<CMySlider
label="Margine per Pagina Stampa"
v-model="myel.catalogo.margine_paginaPrintable"
:disable="!myel.catalogo.printable"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Margine per Riga"
v-model="myel.catalogo.margine_rigaPrintable"
:disable="!myel.catalogo.printable"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Pagina Stampa:"
v-model="myel.catalogo.widthpagPrintable"
:disable="!myel.catalogo.printable"
:min="0"
:max="4000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
</div> </div>
</q-expansion-item> </q-expansion-item>
</div> </div>

View File

@@ -30,6 +30,11 @@ export default defineComponent({
required: false, required: false,
default: false, default: false,
}, },
addstr: {
type: Boolean,
required: false,
default: true,
},
}, },
setup(props, { emit }) { setup(props, { emit }) {
const $q = useQuasar() const $q = useQuasar()

View File

@@ -10,23 +10,23 @@
{{ label }} {{ label }}
</q-banner> </q-banner>
<div class="row"> <div v-if="internalModel" class="column">
<CMySlider <CMySlider
label="Width:" label="Width:"
v-model="internalModel.width" v-model="internalModel.width"
:min="10" :min="10"
:max="3000" :max="1000"
color="green" color="green"
addstr="px" :addstr="addstr ? 'px' : ''"
@update:model-value="modifValueWidth" @update:model-value="modifValueWidth"
></CMySlider> ></CMySlider>
<CMySlider <CMySlider
label="Height:" label="Height:"
v-model="internalModel.height" v-model="internalModel.height"
:min="10" :min="10"
:max="3000" :max="1000"
color="red" color="red"
addstr="px" :addstr="addstr ? 'px' : ''"
@update:model-value="modifValueHeight" @update:model-value="modifValueHeight"
></CMySlider> ></CMySlider>
</div> </div>

View File

@@ -51,13 +51,46 @@ export default defineComponent({
let mystr = props.modelValue + '' let mystr = props.modelValue + ''
return mystr.replace(props.addstr, '') return mystr.replace(props.addstr, '')
}, },
set: (value) => emit('update:modelValue', value + props.addstr) set: (value) => emit('update:modelValue', value ? value + props.addstr : '')
}) })
function valoreinc() {
let mioval = parseFloat(sliderValue.value)
if (mioval >= 1000) {
return 20
} else if (mioval >= 500) {
return 10
} else if (mioval >= 100) {
return 5
} else {
return 1
}
}
function incrementValue() {
if (!sliderValue.value) {
sliderValue.value = '1'
} else {
sliderValue.value = (parseFloat(sliderValue.value) + valoreinc()) + ''; // Aumenta il valore
}
}
function decrementValue() {
if (sliderValue.value === '0') {
sliderValue.value = ''
} else if (!sliderValue.value) {
// niente
} else {
sliderValue.value = (parseFloat(sliderValue.value) - valoreinc()) + ''; // Diminuisci il valore
}
}
return { return {
t, t,
shared_consts, shared_consts,
sliderValue, sliderValue,
incrementValue,
decrementValue
} }
} }
}) })

View File

@@ -1,17 +1,29 @@
<template> <template>
<div class="q-pa-xs" style="width: 170px"> <q-badge color="primary"> {{ label }} {{ modelValue }} </q-badge>
<q-badge color="primary"> {{ label }} {{ modelValue }} </q-badge> <div class="q-pa-xs row no-wrap">
<q-btn
icon="fas fa-minus"
@click="decrementValue"
:disable="disable || !sliderValue"
flat
/>
<q-input <q-input
style="width: 150px"
dense dense
v-model="sliderValue" v-model="sliderValue"
filled filled
:disable="disable" :disable="disable"
> >
</q-input> </q-input>
<q-btn icon="fas fa-plus" @click="incrementValue" :disable="disable" flat />
<q-slider :disable="disable" v-model="sliderValue" :min="min" :max="max" :color="color" /> <q-slider
:disable="disable"
v-model="sliderValue"
:min="min"
:max="max"
:color="color"
/>
</div> </div>
</template> </template>

View File

@@ -8,10 +8,9 @@ import { CTitleBanner } from '../CTitleBanner'
import { CCardState } from '../CCardState' import { CCardState } from '../CCardState'
import { CCopyBtn } from '../CCopyBtn' import { CCopyBtn } from '../CCopyBtn'
import { CMyFieldRec } from '../CMyFieldRec' import { CMyFieldRec } from '../CMyFieldRec'
import { CBarCode } from '../CBarCode'
import { CMyValueDb } from '../CMyValueDb' import { CMyValueDb } from '../CMyValueDb'
import VueBarcode from 'vue-barcode'
import { func_tools, toolsext } from '@store/Modules/toolsext' import { func_tools, toolsext } from '@store/Modules/toolsext'
import { IBaseOrder, IGasordine, IOrder, IOrderCart, IProduct } from '@src/model' import { IBaseOrder, IGasordine, IOrder, IOrderCart, IProduct } from '@src/model'
@@ -52,7 +51,10 @@ export default defineComponent({
default: false, default: false,
}, },
}, },
components: { CTitleBanner, CCardState, CCopyBtn, CMyFieldRec, CMyValueDb, VuePdfApp }, components: {
CTitleBanner, CCardState, CCopyBtn,
CMyFieldRec, CMyValueDb, VuePdfApp, CBarCode,
},
setup(props, { emit }) { setup(props, { emit }) {
const $q = useQuasar() const $q = useQuasar()
const { t } = useI18n() const { t } = useI18n()

View File

@@ -231,9 +231,9 @@
&nbsp; {{ t('ecomm.codice') }}: {{ myproduct.productInfo.code }} &nbsp; {{ t('ecomm.codice') }}: {{ myproduct.productInfo.code }}
</div> </div>
<div v-if="false" class="barcode"> <div v-if="false" class="barcode">
<barcode :value="myproduct.productInfo.code" format="EAN-13"> <CBarCode :value="myproduct.productInfo.code" format="EAN-13" text="ISBN:">
</barcode> </CBarCode>
<vue-barcode></vue-barcode>
</div> </div>
<div <div
v-if=" v-if="

View File

@@ -2473,6 +2473,7 @@ body.body--dark {
flex-direction: row; /* Allineamento orizzontale */ flex-direction: row; /* Allineamento orizzontale */
flex-wrap: wrap; flex-wrap: wrap;
gap: 10px; /* Spaziatura tra gli elementi */ gap: 10px; /* Spaziatura tra gli elementi */
justify-content: space-evenly;
} }
.flex-item-book { .flex-item-book {
@@ -2480,7 +2481,7 @@ body.body--dark {
justify-content: center; /* Allineamento orizzontale al centro */ justify-content: center; /* Allineamento orizzontale al centro */
align-items: center; /* Allineamento verticale al centro */ align-items: center; /* Allineamento verticale al centro */
padding: 0px; padding: 0px;
flex-grow: 1; /* Opzionale: permette agli elementi di crescere uniformemente */ flex-grow: 0; /* Opzionale: permette agli elementi di crescere uniformemente */
break-inside: avoid; break-inside: avoid;
page-break-inside: avoid; page-break-inside: avoid;
@@ -2499,7 +2500,6 @@ body.body--dark {
.cards-container { .cards-container {
display: flex; display: flex;
flex-direction: column !important; flex-direction: column !important;
width: 100% !important;
} }
.sfondo_print{ .sfondo_print{

View File

@@ -1,9 +1,9 @@
const msg_website_it = { const msg_website_it = {
ws: { ws: {
sitename: 'Riso', sitename: 'Gruppo Macro',
siteshortname: 'RISO', siteshortname: 'Gruppo Macro',
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: '',
keywords: 'riso, piattaforma di scambio, rete italiana scambio orizzontale, riso app, riso piattaforma, scambio e baratto, momenta RIS', keywords: '',
}, },
hours: { hours: {
descr: 'Descrizione', descr: 'Descrizione',
@@ -16,23 +16,35 @@ const msg_website_it = {
pages: { pages: {
home: 'Home', home: 'Home',
profile: 'Profilo', profile: 'Profilo',
install_site: 'Installa Sito',
profile2: 'ProfiloU', profile2: 'ProfiloU',
mypage2: 'mypage2', mypage2: 'mypage2',
myservice2: 'myservice2', myservice2: 'myservice2',
myhosps2: 'myhosps2', myhosps2: 'myhosps2',
mygood2: 'mygood2', mygood2: 'mygood2',
catalogo: 'Catalogo',
fundraising: 'Sostieni il Progetto', fundraising: 'Sostieni il Progetto',
notifs: 'Configura le Notifiche', notifs: 'Configura le Notifiche',
unsubscribe: 'Disiscriviti', unsubscribe: 'Disiscriviti',
unsubscribe_user: 'Disiscriviti User',
test: 'Test', test: 'Test',
projects: 'Progetti', projects: 'Progetti',
report: 'Report Ore', report: 'Report Ore',
producer: 'Produttore', producer: 'Produttore',
orderinfo: 'Ordini Effettuati', orderinfo: 'Ordini Effettuati',
products: 'Prodotti', products: 'Prodotti',
cash: 'Cassa',
productInfos: 'Info Prodotti',
listinoprodotti: 'Listino Prodotti',
productslist: 'Lista Prodotti', productslist: 'Lista Prodotti',
collabora: 'Collabora', collabora: 'Collabora',
categories: 'Categorie',
storehouses: 'Magazzino', storehouses: 'Magazzino',
providers: 'Fornitori',
catprods: 'Categorie',
subcatprods: 'Sotto-Categorie',
gasordine: 'Gas Ordine',
scontisticas: 'Scontistica',
departments: 'Uffici', departments: 'Uffici',
orders: 'Ordini Ricevuti', orders: 'Ordini Ricevuti',
orders2: 'Ordini Ricevuti', orders2: 'Ordini Ricevuti',
@@ -121,15 +133,11 @@ const msg_website_it = {
only_residenti: 'Solo Residenti', only_residenti: 'Solo Residenti',
only_consiglio: 'Solo Consiglieri', only_consiglio: 'Solo Consiglieri',
color: 'Colore', color: 'Colore',
mainMenu: 'Menu Principale', gasordini: 'Gas Ordini',
subtitle: 'Sottotitolo', gestoreordini: 'Gestore Ordini',
lang: 'Lingua',
keywords: 'Parole Chiave',
desctiption: 'Descrizione',
heightimg: 'Altezza Immagine',
}, },
msg: { msg: {
myAppName: 'Riso', myAppName: 'Più che Buono',
myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito', myAppDescription: 'Il primo Vero Social Libero, Equo e Solidale, dove Vive Consapevolezza e Aiuto Comunitario. Gratuito',
underconstruction: 'App in costruzione...', underconstruction: 'App in costruzione...',
myDescriz: '', myDescriz: '',

View File

@@ -67,39 +67,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{
active: true,
order: 12,
path: '/goods',
materialIcon: 'fas fa-tshirt',
name: 'mypages.goods',
component: () => import('@/root/goods/goods.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/services',
materialIcon: 'fas fa-house-user',
name: 'mypages.services',
component: () => import('@/root/services/services.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{
active: true,
order: 15,
path: '/activities',
materialIcon: 'fas fa-house-user',
name: 'mypages.activities',
component: () => import('@/root/activities/activities.vue'),
meta: { requiresAuth: true },
inmenu: false,
infooter: false,
},
{ {
active: true, active: true,
order: 15, order: 15,
@@ -111,17 +78,6 @@ function getDynamicPages(site: ISites): IListRoutes[] {
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{
active: true,
order: 15,
path: '/hosps',
materialIcon: 'fas fa-bed',
name: 'mypages.hosp',
component: () => import('@/root/hosp/hosp.vue'),
meta: { requiresAuth: true },
inmenu: true,
infooter: true,
},
{ {
active: site.confpages && site.confpages.enableCircuits, active: site.confpages && site.confpages.enableCircuits,
order: 16, order: 16,
@@ -209,7 +165,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
meta: { requiresAuth: true, newpage: true }, meta: { requiresAuth: true, newpage: true },
inmenu: false, inmenu: false,
infooter: false, infooter: false,
}, },
{ {
active: true, active: true,
order: 137, order: 137,
@@ -276,7 +232,7 @@ function getDynamicPages(site: ISites): IListRoutes[] {
{ {
active: true, active: true,
order: 150, order: 150,
path: '/sostieniilprogetto', path: '/fundraising',
materialIcon: 'fas fa-hand-holding-heart', materialIcon: 'fas fa-hand-holding-heart',
name: 'pages.fundraising', name: 'pages.fundraising',
component: () => import('@src/root/fundraising/fundraising.vue'), component: () => import('@src/root/fundraising/fundraising.vue'),

View File

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

View File

@@ -688,6 +688,10 @@ export interface ISize {
width?: string width?: string
height?: string height?: string
} }
export interface IFont {
name?: string
size?: number
}
export interface IBorder { export interface IBorder {
top?: string top?: string
@@ -695,15 +699,33 @@ export interface IBorder {
left?: string left?: string
right?: string right?: string
} }
export interface IImg {
imagefile?: string
fit?: string
}
export interface IBarCode {
show?: boolean
format?: string
size?: ISize
font?: IFont
}
export interface IDimensioni { export interface IDimensioni {
size?: ISize size?: ISize
margini?: IBorder margini?: IBorder
padding?: IBorder padding?: IBorder
imgsfondo?: IImg
} }
export interface IElementiPagina { export interface IElementiPagina {
pagina: IDimensioni pagina: IDimensioni
riga: IDimensioni }
export interface IText {
contenuto?: string
maxlength?: number
} }
export interface IElementiScheda { export interface IElementiScheda {
@@ -721,16 +743,12 @@ export interface IMyScheda {
line_height?: number line_height?: number
numschede_perRiga?: number numschede_perRiga?: number
numschede_perCol?: number numschede_perCol?: number
text?: string testo_right?: IText
testo_bottom?: IText
posiz_text?: number posiz_text?: number
barcode?: IBarCode,
dimensioni: IElementiScheda dimensioni: IElementiScheda
bgimg?: string
bgimg_printable?: string
bgSize?: string
bgSize_printable?: string
productTypes?: number[] productTypes?: number[]
excludeproductTypes?: number[] excludeproductTypes?: number[]
editore?: string[] editore?: string[]
@@ -747,7 +765,7 @@ export interface ISchedaSingola {
numSchede?: number, numSchede?: number,
// In Memoria // In Memoria
arrProdToShow?: IProduct[][] arrProdToShow?: IProduct[][][]
} }
export interface ICatalogo { export interface ICatalogo {
@@ -758,15 +776,9 @@ export interface ICatalogo {
Categoria: string[] Categoria: string[]
Editore: string[] Editore: string[]
pdf: boolean pdf: boolean
pdf_filename?: string
printable?: boolean printable?: boolean
dimensioni: IElementiPagina,
backgroundimage?: string
backgroundimage_printable?: string
backgroundSize?: string
backgroundSize_printable?: string
first_page_img?: string first_page_img?: string
first_page_html?: string first_page_html?: string
first_page_height?: number first_page_height?: number
@@ -776,6 +788,9 @@ export interface ICatalogo {
last_page_height?: number last_page_height?: number
last_page_width?: number last_page_width?: number
imgsfondo_def?: IImg
dimensioni_def?: IElementiPagina
arrSchede?: ISchedaSingola[] arrSchede?: ISchedaSingola[]
} }

View File

@@ -38,7 +38,7 @@ export interface IProductInfo {
publisher?: IPublisher publisher?: IPublisher
date_publishing?: Date date_publishing?: Date
date_publishing_ts: number date_publishing_ts: number
numpages?: number pagine?: number
productTypes?: number[] productTypes?: number[]
versioneGM?: string versioneGM?: string
short_descr: string short_descr: string
@@ -52,8 +52,8 @@ export interface IVariazione {
sale_price?: number sale_price?: number
quantita?: number quantita?: number
availability?: number availability?: number
numpages?: number
formato?: string formato?: string
misure?: string
tipologia?: string tipologia?: string
edizione?: string edizione?: string
preOrderDate?: Date preOrderDate?: Date

View File

@@ -1900,6 +1900,11 @@ const msg_it = {
area_personale: 'Area Personale', area_personale: 'Area Personale',
}, },
catalogo: {
text: 'Testo',
imgsfondo_def: 'Immagine di sfondo',
}
}, },
}; };

View File

@@ -180,16 +180,19 @@ export const Api = {
if (error.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) { if (error.status === serv_constants.RIS_CODE__HTTP_FORBIDDEN_TOKEN_EXPIRED) {
try { try {
console.log('Token Scaduto.')
const newAccessToken = await this.refreshToken(); const newAccessToken = await this.refreshToken();
if (newAccessToken) { if (newAccessToken) {
userStore.setAuth(newAccessToken, userStore.refreshToken); userStore.setAuth(newAccessToken, userStore.refreshToken);
if (!evitaloop) if (!evitaloop) {
console.log('uso il RefreshToken...')
return resolve(this.SendReq(url, method, mydata, setAuthToken, true)); return resolve(this.SendReq(url, method, mydata, setAuthToken, true));
}
} else { } else {
$router.push('/signin') $router.push('/signin')
} }
} catch (err2: any) { } catch (err2: any) {
console.error('err2', err2) console.error('err2, Token Invalido', err2)
if (err2?.code === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) { if (err2?.code === serv_constants.RIS_CODE__HTTP_FORBIDDEN_INVALID_TOKEN) {
userStore.setServerCode(toolsext.ERR_AUTHENTICATION) userStore.setServerCode(toolsext.ERR_AUTHENTICATION)
userStore.setAuth('', '') userStore.setAuth('', '')
@@ -241,7 +244,7 @@ export const Api = {
mydata: any, mydata: any,
setAuthToken = false, setAuthToken = false,
evitaloop = false, evitaloop = false,
retryCount = 5, retryCount = 3,
retryDelay = 5000 retryDelay = 5000
): Promise<Types.AxiosSuccess | Types.AxiosError> { ): Promise<Types.AxiosSuccess | Types.AxiosError> {
try { try {

View File

@@ -27,25 +27,13 @@ export const costanti = {
CATALOGO_FIELDS: [ CATALOGO_FIELDS: [
'productTypes', 'productTypes',
'excludeproductTypes', 'excludeproductTypes',
'formato', 'misure',
'Categoria', 'Categoria',
'Editore', 'Editore',
'pdf', 'pdf',
'printable',
'backgroundimage',
'backgroundimage_printable',
'width',
'widthscheda',
'widthpag',
'Printable', 'Printable',
'height',
'height_Printable',
'numschede_perCol', 'numschede_perCol',
'numschede_perRiga', 'numschede_perRiga',
'margine_pagina',
'margine_riga',
'margine_paginaPrintable',
'margine_rigaPrintable',
'first_page_img', 'first_page_img',
'first_page_html', 'first_page_html',
'first_page_height', 'first_page_height',
@@ -56,10 +44,12 @@ export const costanti = {
], ],
SCHEDA_FIELDS: [ SCHEDA_FIELDS: [
'bgimg', // 'imgsfondo',
'bgimg_printable', ],
'bgSize',
'bgSize_printable', IMG_FIELDS: [
'imgsfondo',
'imgsfondo_def',
], ],
TIPOFAVBOOK: { TIPOFAVBOOK: {

View File

@@ -158,6 +158,14 @@ export const colISize = [
AddCol({ name: 'width', label_trans: 'size.width', fieldtype: costanti.FieldType.string }), AddCol({ name: 'width', label_trans: 'size.width', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'height', label_trans: 'size.height', fieldtype: costanti.FieldType.string }), AddCol({ name: 'height', label_trans: 'size.height', fieldtype: costanti.FieldType.string }),
] ]
export const colIText = [
AddCol({ name: 'contenuto', label_trans: 'catalogo.contenuto', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'maxlength', label_trans: 'catalogo.maxlength', fieldtype: costanti.FieldType.number }),
]
export const colmyIImg = [
AddCol({ name: 'filename', label_trans: 'iimg.filename', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'fit', label_trans: 'iimg.fit', fieldtype: costanti.FieldType.string }),
]
export const colmyScheda = [ export const colmyScheda = [
AddCol({ name: 'name', label_trans: 'scheda.name', fieldtype: costanti.FieldType.string }), AddCol({ name: 'name', label_trans: 'scheda.name', fieldtype: costanti.FieldType.string }),
@@ -171,19 +179,10 @@ export const colmyScheda = [
AddCol({ name: 'numschede_perRiga', label_trans: 'scheda.numschede_perRiga', fieldtype: costanti.FieldType.number }), AddCol({ name: 'numschede_perRiga', label_trans: 'scheda.numschede_perRiga', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'margine_top', label_trans: 'scheda.margine_top', fieldtype: costanti.FieldType.number }), AddCol({ name: 'margine_top', label_trans: 'scheda.margine_top', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'margine_pagina', label_trans: 'scheda.margine_pagina', fieldtype: costanti.FieldType.string }), AddCol({ name: 'margine_pagina', label_trans: 'scheda.margine_pagina', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_paginaPrintable', label_trans: 'scheda.margine_paginaPrintable', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_riga', label_trans: 'scheda.margine_riga', fieldtype: costanti.FieldType.string }), AddCol({ name: 'margine_riga', label_trans: 'scheda.margine_riga', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_rigaPrintable', label_trans: 'scheda.margine_rigaPrintable', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'text', label_trans: 'catalogo.text', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'posiz_text', label_trans: 'catalogo.posiz_text', fieldtype: costanti.FieldType.number }), AddCol({ name: 'posiz_text', label_trans: 'catalogo.posiz_text', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'line_height', label_trans: 'catalogo.line_height', fieldtype: costanti.FieldType.number }), AddCol({ name: 'line_height', label_trans: 'catalogo.line_height', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'bgimg', label_trans: 'scheda.bgimg', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'bgimg_printable', label_trans: 'scheda.bgimg_printable', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'bgSize', label_trans: 'scheda.bgimg', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'bgSize_printable', label_trans: 'scheda.bgSize', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'widthPPrintable', label_trans: 'scheda.widthPPrintable', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'productTypes', label_trans: 'productTypes', fieldtype: costanti.FieldType.number }), AddCol({ name: 'productTypes', label_trans: 'productTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'excludeproductTypes', label_trans: 'excludeproductTypes', fieldtype: costanti.FieldType.number }), AddCol({ name: 'excludeproductTypes', label_trans: 'excludeproductTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'Editore', label_trans: 'Editore' }), AddCol({ name: 'Editore', label_trans: 'Editore' }),
@@ -196,14 +195,13 @@ export const colmyelCatalogo = [
AddCol({ name: 'productTypes', label_trans: 'productTypes', fieldtype: costanti.FieldType.number }), AddCol({ name: 'productTypes', label_trans: 'productTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'excludeproductTypes', label_trans: 'excludeproductTypes', fieldtype: costanti.FieldType.number }), AddCol({ name: 'excludeproductTypes', label_trans: 'excludeproductTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'pdf', label_trans: 'pdf' }), AddCol({ name: 'pdf', label_trans: 'pdf' }),
AddCol({ name: 'pdf_filename', label_trans: 'pdf_filename' }),
AddCol({ name: 'Editore', label_trans: 'Editore' }), AddCol({ name: 'Editore', label_trans: 'Editore' }),
AddCol({ name: 'width', label_trans: 'width', fieldtype: costanti.FieldType.string }), AddCol({ name: 'width', label_trans: 'width', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'height', label_trans: 'height', fieldtype: costanti.FieldType.string }), AddCol({ name: 'height', label_trans: 'height', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'optcatalogo.', label_trans: 'catalogo.optcatalogo.', fieldtype: costanti.FieldType.number }), AddCol({ name: 'optcatalogo.', label_trans: 'catalogo.optcatalogo.', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'margine_pagina', label_trans: 'margine_pagina', fieldtype: costanti.FieldType.string }), AddCol({ name: 'margine_pagina', label_trans: 'margine_pagina', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_paginaPrintable', label_trans: 'margine_paginaPrintable', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_riga', label_trans: 'margine_riga', fieldtype: costanti.FieldType.string }), AddCol({ name: 'margine_riga', label_trans: 'margine_riga', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_rigaPrintable', label_trans: 'margine_rigaPrintable', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'first_page_img', label_trans: 'catalogo.first_page_img', fieldtype: costanti.FieldType.image }), AddCol({ name: 'first_page_img', label_trans: 'catalogo.first_page_img', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'last_page_img', label_trans: 'catalogo.last_page_img', fieldtype: costanti.FieldType.image }), AddCol({ name: 'last_page_img', label_trans: 'catalogo.last_page_img', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'first_page_html', label_trans: 'catalogo.first_page_html', fieldtype: costanti.FieldType.html }), AddCol({ name: 'first_page_html', label_trans: 'catalogo.first_page_html', fieldtype: costanti.FieldType.html }),
@@ -211,12 +209,8 @@ export const colmyelCatalogo = [
AddCol({ name: 'last_page_height', label_trans: 'catalogo.last_page_html', fieldtype: costanti.FieldType.number }), AddCol({ name: 'last_page_height', label_trans: 'catalogo.last_page_html', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'last_page_html', label_trans: 'catalogo.last_page_html', fieldtype: costanti.FieldType.html }), AddCol({ name: 'last_page_html', label_trans: 'catalogo.last_page_html', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'backgroundimage', label_trans: 'backgroundimage', fieldtype: costanti.FieldType.image }), AddCol({ name: 'imgsfondo_def', label_trans: 'catalogo.imgsfondo_def', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'backgroundimage_printable', label_trans: 'backgroundimage_printable', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'backgroundSize', label_trans: 'scheda.bgimg', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'backgroundSize_printable', label_trans: 'scheda.bgSize', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'widthpagPrintable', label_trans: 'widthpag', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'widthpagPrintable', label_trans: 'widthpagPrintable', fieldtype: costanti.FieldType.number }),
] ]
export const colmyelems = [ export const colmyelems = [
@@ -2336,7 +2330,7 @@ export const colTableProductInfos = [
AddCol({ name: 'collezione', label_trans: 'products.collezione', fieldtype: costanti.FieldType.string }), AddCol({ name: 'collezione', label_trans: 'products.collezione', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'date_publishing', label_trans: 'products.date_publishing', fieldtype: costanti.FieldType.onlydate }), AddCol({ name: 'date_publishing', label_trans: 'products.date_publishing', fieldtype: costanti.FieldType.onlydate }),
AddCol({ name: 'publisher', label_trans: 'products.publisher', fieldtype: costanti.FieldType.string }), AddCol({ name: 'publisher', label_trans: 'products.publisher', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'numpages', label_trans: 'products.numpages', fieldtype: costanti.FieldType.number }), AddCol({ name: 'pagine', label_trans: 'products.pagine', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'note', label_trans: 'products.note', fieldtype: costanti.FieldType.html }), AddCol({ name: 'note', label_trans: 'products.note', fieldtype: costanti.FieldType.html }),
AddCol(DeleteRec), AddCol(DeleteRec),
AddCol(DuplicateRec), AddCol(DuplicateRec),
@@ -3044,6 +3038,7 @@ export const colTableUsers = [
titlepopupedit: 'Permessi' titlepopupedit: 'Permessi'
}), }),
AddCol({ name: 'ipaddr', label_trans: 'reg.ipaddr' }), AddCol({ name: 'ipaddr', label_trans: 'reg.ipaddr' }),
AddCol({ name: 'banIp', label_trans: 'reg.banIp', fieldtype: costanti.FieldType.boolean }),
AddCol(DeleteRec), AddCol(DeleteRec),
AddCol(DuplicateRec), AddCol(DuplicateRec),
] ]
@@ -3470,6 +3465,7 @@ export const colTableUsersISP = [
titlepopupedit: 'Notifiche' titlepopupedit: 'Notifiche'
}), }),
AddCol({ name: 'ipaddr', label_trans: 'reg.ipaddr' }), AddCol({ name: 'ipaddr', label_trans: 'reg.ipaddr' }),
AddCol({ name: 'banIp', label_trans: 'reg.banIp', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'deleted', label_trans: 'reg.deleted', fieldtype: costanti.FieldType.boolean }), AddCol({ name: 'deleted', label_trans: 'reg.deleted', fieldtype: costanti.FieldType.boolean }),
AddCol(DeleteRec), AddCol(DeleteRec),
AddCol(DuplicateRec), AddCol(DuplicateRec),
@@ -4217,6 +4213,20 @@ export const fieldsTable = {
colkey: '_id', colkey: '_id',
collabel: 'name', collabel: 'name',
}, },
{
value: 'text',
label: 'Testo',
columns: colIText,
colkey: 'contenuto',
collabel: 'contenuto',
},
{
value: 'imgs',
label: 'Immagini',
columns: colmyIImg,
colkey: 'filename',
collabel: 'filename',
},
{ {
value: 'listcards', value: 'listcards',
label: 'Elementi', label: 'Elementi',

View File

@@ -227,7 +227,7 @@ export const useNotifStore = defineStore('NotifStore', {
async updateNotifDataFromServer({ username, lastdataread }: { username: string, lastdataread: Date }) { async updateNotifDataFromServer({ username, lastdataread }: { username: string, lastdataread: Date }) {
console.log('updateNotifDataFromServer', username, lastdataread) console.log('updateNotifDataFromServer', username, lastdataread)
return Api.SendReq(`/sendnotif/${username}/${lastdataread}/${process.env.APP_ID}`, 'GET', null) return Api.SendReq(`/sendnotif/${username}/${lastdataread}/${process.env.APP_ID}`, 'GET', null, false, false, 0)
.then((res) => { .then((res) => {
// console.log('res', res) // console.log('res', res)
if (!!res.data) { if (!!res.data) {

View File

@@ -1,4 +1,4 @@
import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd } from 'model' import { IBaseOrder, ICart, IOrder, IOrderCart, IProduct, IProductsState, IProductInfo, ICatProd, IUserShort, IGasordine, IAuthor, ISubCatProd, IText } from 'model'
import { Api } from '@api' import { Api } from '@api'
import { serv_constants } from '@src/store/Modules/serv_constants' import { serv_constants } from '@src/store/Modules/serv_constants'
@@ -1267,32 +1267,46 @@ export const useProducts = defineStore('Products', {
return authorString return authorString
}, },
replaceKeyWordsByProduct(myproduct: IProduct, text_html: string) { replaceKeyWordsByProduct(myproduct: IProduct, testo: IText) {
if (!myproduct || !text_html) { if (!myproduct || !testo.contenuto) {
return text_html; return testo.contenuto;
} }
const autori = this.getAutoriByArrayAuthors(myproduct.productInfo.authors) const autori = this.getAutoriByArrayAuthors(myproduct.productInfo.authors)
const maxDescriptionLength = 100; const maxDescriptionLength = testo.maxlength ?? 100;
const description = myproduct.productInfo.short_descr || ''; const description = myproduct.productInfo.short_descr || '';
const long_descr = myproduct.productInfo.description || '';
const truncatedDescription = description.length > maxDescriptionLength const truncatedDescription = description.length > maxDescriptionLength
? description.substring(0, description.lastIndexOf(' ', maxDescriptionLength)) + '...' ? description.substring(0, description.lastIndexOf(' ', maxDescriptionLength)) + '...'
: description; : description;
const truncatedlongDescription = long_descr.length > maxDescriptionLength
? long_descr.substring(0, long_descr.lastIndexOf(' ', maxDescriptionLength)) + '...'
: long_descr;
const prezzo = myproduct.arrvariazioni ? myproduct.arrvariazioni[0].price?.toFixed(2) : '' const prezzo = myproduct.arrvariazioni ? myproduct.arrvariazioni[0].price?.toFixed(2) : ''
const prezzo_scontato = myproduct.arrvariazioni ? myproduct.arrvariazioni[0].sale_price?.toFixed(2) : ''
const misure = myproduct.arrvariazioni ? myproduct.arrvariazioni[0].misure : ''
const formato = myproduct.arrvariazioni ? myproduct.arrvariazioni[0].formato : ''
const pagine = myproduct.arrvariazioni ? myproduct.arrvariazioni[0].pagine : ''
// Crea una mappa di sostituzioni // Crea una mappa di sostituzioni
const replacements = { const replacements = {
'{autore}': autori || '', '{autore}': autori || '',
'{titolo}': myproduct.productInfo.name || '', '{titolo}': myproduct.productInfo.name || '',
'{descrizione}': truncatedDescription || '', '{descrizione}': truncatedDescription || '',
'{descrizione_estesa}': truncatedlongDescription || '',
'{pagine}': pagine || '',
'{misure}': misure || '',
'{formato}': formato || '',
'{prezzo}': prezzo || '', '{prezzo}': prezzo || '',
'{prezzo_scontato}': prezzo_scontato || '',
}; };
// Esegue le sostituzioni // Esegue le sostituzioni
let result = text_html; let result = testo.contenuto;
for (const [key, value] of Object.entries(replacements)) { for (const [key, value] of Object.entries(replacements)) {
result = result.replace(new RegExp(key, 'g'), value); result = result.replace(new RegExp(key, 'g'), value);
} }

View File

@@ -900,7 +900,7 @@ export const useUserStore = defineStore('UserStore', {
mydata.repeatPassword = '' mydata.repeatPassword = ''
mydata.password = String(hashedPassword) mydata.password = String(hashedPassword)
return Api.SendReq('/updatepwd', 'POST', mydata, true) return Api.SendReq('/updatepwd', 'POST', mydata, true, false, 1)
.then((res) => { .then((res) => {
return { code: res.data.code, msg: res.data.msg } return { code: res.data.code, msg: res.data.msg }
}) })
@@ -1425,7 +1425,7 @@ export const useUserStore = defineStore('UserStore', {
// console.log('executing login...') // console.log('executing login...')
return await Api.SendReq('/users/login', 'POST', usertosend, true) return await Api.SendReq('/users/login', 'POST', usertosend, true, false, 0)
.then((res) => { .then((res) => {
myres = res myres = res
@@ -1867,7 +1867,7 @@ export const useUserStore = defineStore('UserStore', {
}, },
async setCircuitCmd($q: any, t: any, usernameOrig: string, circuitname: string, cmd: number, value: any, extrarec?: any) { async setCircuitCmd($q: any, t: any, usernameOrig: string, circuitname: string, cmd: number, value: any, extrarec?: any) {
return await Api.SendReq('/users/circuits/cmd', 'POST', { usernameOrig, circuitname, cmd, value, extrarec }) return await Api.SendReq('/users/circuits/cmd', 'POST', { usernameOrig, circuitname, cmd, value, extrarec }, false, false, 0)
.then((res) => { .then((res) => {
this.updateTables = true this.updateTables = true
const notifStore = useNotifStore() const notifStore = useNotifStore()

View File

@@ -2163,7 +2163,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
for (let i = 0; i < this.myelems.length; i++) { for (let i = 0; i < this.myelems.length; i++) {
if (this.myelems[i]._id === newelem._id) { if (this.myelems[i]._id === newelem._id) {
this.myelems[i] = newelem; this.myelems[i] = newelem;
console.log('SALVATO', this.myelems[i]) console.log('SALVATO', this.myelems[i])
break; break;
} }
@@ -2239,7 +2239,13 @@ export const useGlobalStore = defineStore('GlobalStore', {
Categoria: [], Categoria: [],
Editore: [], Editore: [],
pdf: false, pdf: false,
backgroundimage: '', dimensioni_def: {
pagina: {
size: { width: '', height: '' },
margini: {left: '', top: '', right: '', bottom: ''},
padding: {left: '', top: '', right: '', bottom: ''},
},
},
} }
} }

View File

@@ -56,6 +56,9 @@ $heightBtn: 100%;
.fixed-width { .fixed-width {
width: var(--width) !important; /* Usa una variabile CSS */ width: var(--width) !important; /* Usa una variabile CSS */
} }
.fixed-height {
height: var(--height) !important; /* Usa una variabile CSS */
}
.break { .break {
flex-basis: 100%; flex-basis: 100%;

View File

@@ -190,7 +190,7 @@ export default defineComponent({
} }
function calcArrProducts() { function calcArrProducts() {
console.log('calcArrProducts') // console.log('calcArrProducts')
// eventuali titoli specifici estratti dall'array di Prodotti Selezionati // eventuali titoli specifici estratti dall'array di Prodotti Selezionati
//const searchtext = getSearchText() //const searchtext = getSearchText()
@@ -412,16 +412,16 @@ export default defineComponent({
} }
} }
function getProdBySchedaRigaCol(recscheda: ISchedaSingola, riga: number, col: number) { function getProdBySchedaRigaCol(recscheda: ISchedaSingola, pagina: number, riga: number, col: number) {
try { try {
return recscheda.arrProdToShow![riga][col] return recscheda.arrProdToShow![pagina][riga][col]
} catch (e) { } catch (e) {
return null return null
} }
} }
function generatearrProdToViewSorted() { function generatearrProdToViewSorted() {
console.log('generatearrProdToViewSorted') // console.log('generatearrProdToViewSorted')
// Svuota // Svuota
arrProdToView.value = [] arrProdToView.value = []
@@ -438,31 +438,38 @@ export default defineComponent({
let indadded = 0 let indadded = 0
recscheda.arrProdToShow = [] recscheda.arrProdToShow = []
for (let giro = 0; giro < schedePerPagina; giro++) { for (let pagina = 0; pagina < 100; pagina++) {
// Aggiunge il prossimo prodotto che non è stato ancora inserito indadded = 0
const result = addNextProductToTheView(arrProdFiltrati, indprod); if (!recscheda.arrProdToShow[pagina]) {
if (result.end) { recscheda.arrProdToShow[pagina] = [];
break; // Esci dal ciclo se non ci sono più prodotti disponibili }
} else {
if (result.indprod)
indprod = result.indprod // Aggiorna indprod per il prossimo giro
if (result.myrec) {
let riga = Math.floor(indadded / schedePerCol) for (let giro = 0; giro < schedePerPagina; giro++) {
let col = indadded % schedePerCol // Aggiunge il prossimo prodotto che non è stato ancora inserito
const result = addNextProductToTheView(arrProdFiltrati, indprod);
if (result.end) {
break; // Esci dal ciclo se non ci sono più prodotti disponibili
} else {
if (result.indprod)
indprod = result.indprod // Aggiorna indprod per il prossimo giro
if (result.myrec) {
if (!recscheda.arrProdToShow[riga]) { let riga = Math.floor(indadded / schedePerCol)
recscheda.arrProdToShow[riga] = []; let col = indadded % schedePerCol
if (!recscheda.arrProdToShow[pagina][riga]) {
recscheda.arrProdToShow[pagina][riga] = [];
}
recscheda.arrProdToShow[pagina][riga][col] = result.myrec
indadded++
} }
recscheda.arrProdToShow[riga][col] = result.myrec
indadded++
} }
} }
} }
console.log('*** arrProdToShow', recscheda.arrProdToShow) // console.log('*** arrProdToShow', recscheda.arrProdToShow)
} }
} }
} }
@@ -635,7 +642,7 @@ export default defineComponent({
const element = document.getElementById('pdf-content') const element = document.getElementById('pdf-content')
const opt = { const opt = {
margin: [0.1, 0.1, 0.1, 0.1], margin: [0.1, 0.1, 0.1, 0.1],
filename: 'catalogo_completo.pdf', filename: (props.optcatalogo.pdf_filename ?? 'catalogo_completo') + '.pdf',
image: { image: {
type: 'jpeg', type: 'jpeg',
quality: 0.98 quality: 0.98
@@ -687,11 +694,11 @@ export default defineComponent({
const page = [] const page = []
// Crea le righe per questa pagina // Crea le righe per questa pagina
for (let rowStart = 0; rowStart < schedePerCol; rowStart++) { for (let rowStart = 0; rowStart < schedePerRiga; rowStart++) {
const row = [] const row = []
// Riempi ogni riga con il numero corretto di prodotti // Riempi ogni riga con il numero corretto di prodotti
for (let col = 0; col < schedePerRiga; col++) { for (let col = 0; col < schedePerCol; col++) {
const productIndex = pageStart + (rowStart * schedePerRiga) + col const productIndex = pageStart + (rowStart * schedePerRiga) + col
row.push(indiceprodotto) row.push(indiceprodotto)
indiceprodotto++ indiceprodotto++
@@ -711,53 +718,89 @@ export default defineComponent({
} }
function generateStyleCatalogo(optcatalogo: ICatalogo) { function generateStyleCatalogo(optcatalogo: ICatalogo) {
const fileimg = (optcatalogo.printable
? optcatalogo.backgroundimage_printable
: optcatalogo.backgroundimage)
const marginBottom = optcatalogo.dimensioni.pagina.margini!.bottom || ''
const backgroundImage = fileimg ? `url(${costanti.DIR_UPLOAD +
costanti.DIR_CATALOGO + fileimg})` : ''
const backgroundSize = `${optcatalogo.printable
? optcatalogo.backgroundSize_printable
: optcatalogo.backgroundSize}`;
const width = optcatalogo.dimensioni.pagina.size?.width
return { return {
backgroundImage,
backgroundSize, }
marginBottom,
'--width': width
};
} }
function generateStylePageScheda(optcatalogo: ICatalogo, scheda: IMyScheda) { function generateStylePageScheda(optcatalogo: ICatalogo, scheda: IMyScheda) {
const marginTop = `${scheda.dimensioni.pagina.margini!.top}` const marginTop = scheda.dimensioni?.pagina?.margini?.top ? scheda.dimensioni?.pagina?.margini?.top : (optcatalogo.dimensioni_def?.pagina?.margini?.top ?? '')
const marginBottom = scheda.dimensioni?.pagina?.margini?.bottom ? scheda.dimensioni?.pagina?.margini?.bottom : (optcatalogo.dimensioni_def?.pagina?.margini?.bottom ?? '')
const marginLeft = scheda.dimensioni?.pagina?.margini?.left ? scheda.dimensioni?.pagina?.margini?.left : (optcatalogo.dimensioni_def?.pagina?.margini?.left ?? '')
const marginRight = scheda.dimensioni?.pagina?.margini?.right ? scheda.dimensioni?.pagina?.margini?.right : (optcatalogo.dimensioni_def?.pagina?.margini?.right ?? '')
const marginBottom = scheda.dimensioni.pagina.margini!.bottom const paddingTop = scheda.dimensioni?.pagina?.padding?.top ? scheda.dimensioni?.pagina?.padding?.top : (optcatalogo.dimensioni_def?.pagina?.padding?.top ?? '')
const paddingBottom = scheda.dimensioni?.pagina?.padding?.bottom ? scheda.dimensioni?.pagina?.padding?.bottom : (optcatalogo.dimensioni_def?.pagina?.padding?.bottom ?? '')
const paddingLeft = scheda.dimensioni?.pagina?.padding?.left ? scheda.dimensioni?.pagina?.padding?.left : (optcatalogo.dimensioni_def?.pagina?.padding?.left ?? '')
const paddingRight = scheda.dimensioni?.pagina?.padding?.right ? scheda.dimensioni?.pagina?.padding?.right : (optcatalogo.dimensioni_def?.pagina?.padding?.right ?? '')
const fileimg = (optcatalogo.printable // Esiste un immagine di sfondo specifica della singola pagina ?
? scheda.bgimg_printable let fileimg = scheda.dimensioni?.pagina?.imgsfondo?.imagefile
: scheda.bgimg) let backgroundSize = scheda.dimensioni?.pagina?.imgsfondo?.fit
if (fileimg) {
fileimg = fileimg ? `url(${costanti.DIR_UPLOAD + costanti.DIR_SCHEDA + fileimg})` : ''
}
const backgroundImage = fileimg ? `url(${costanti.DIR_UPLOAD + if (!fileimg) {
costanti.DIR_SCHEDA + fileimg})` : '' // Esiste un immagine di sfondo uguali per tutte le pagine ?
fileimg = optcatalogo.imgsfondo_def?.imagefile
backgroundSize = optcatalogo.imgsfondo_def?.fit
fileimg = fileimg ? `url(${costanti.DIR_UPLOAD + costanti.DIR_CATALOGO + fileimg})` : ''
}
const backgroundSize = `${optcatalogo.printable let backgroundImage = fileimg ?? ''
? scheda.bgSize_printable
: scheda.bgSize}`;
const width = scheda.dimensioni.pagina.size?.width const width = scheda.dimensioni?.pagina?.size?.width ? scheda.dimensioni?.pagina?.size?.width : (optcatalogo.dimensioni_def?.pagina?.size?.width ?? '')
const height = scheda.dimensioni?.pagina?.size?.height ? scheda.dimensioni?.pagina?.size?.height : (optcatalogo.dimensioni_def?.pagina?.size?.height ?? '')
return { return {
marginBottom, marginBottom,
marginTop, marginTop,
marginLeft,
marginRight,
paddingBottom,
paddingTop,
paddingLeft,
paddingRight,
backgroundImage, backgroundImage,
backgroundSize, backgroundSize,
'--width': width '--width': width,
'--height': height,
...(width ? { width: `${width} !important;` } : {}),
...(height ? { height: `${height} !important;` } : {}) // Aggiungi l'altezza solo se è valorizzata
};
}
function getWidthPagina(optcatalogo: ICatalogo, scheda: IMyScheda) {
return scheda.dimensioni?.pagina?.size?.width ? scheda.dimensioni?.pagina?.size?.width : (optcatalogo.dimensioni_def?.pagina?.size?.width ?? '')
}
function getHeightPagina(optcatalogo: ICatalogo, scheda: IMyScheda) {
return scheda.dimensioni?.pagina?.size?.height ? scheda.dimensioni?.pagina?.size?.height : (optcatalogo.dimensioni_def?.pagina?.size?.height ?? '')
}
function getStyleRow(recscheda: ISchedaSingola) {
const placeContent = 'center';
const width = recscheda.scheda?.dimensioni?.scheda_prodotto?.size?.width ?? '100px';
const height = recscheda.scheda?.dimensioni?.scheda_prodotto?.size?.height;
const marginTop = recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.top ?? '0px';
const marginBottom = recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.bottom ?? '0px';
const marginLeft = recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.left ?? '0px';
const marginRight = recscheda.scheda?.dimensioni?.scheda_prodotto?.margini?.right ?? '0px';
const paddingTop = recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.top ?? '0px';
const paddingBottom = recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.bottom ?? '0px';
const paddingLeft = recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.left ?? '0px';
const paddingRight = recscheda.scheda?.dimensioni?.scheda_prodotto?.padding?.right ?? '0px';
return {
placeContent,
flex: `0 1 ${width} !important;`,
margin: `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`,
padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`,
...(height ? { height: `${height} !important;` } : {}) // Aggiungi l'altezza solo se è valorizzata
}; };
} }
@@ -805,6 +848,9 @@ export default defineComponent({
getProdBySchedaRigaCol, getProdBySchedaRigaCol,
generateStylePageScheda, generateStylePageScheda,
generateStyleCatalogo, generateStyleCatalogo,
getStyleRow,
getWidthPagina,
getHeightPagina,
} }
} }
}) })

View File

@@ -15,7 +15,7 @@
<q-tab-panel name="visu"> <q-tab-panel name="visu">
<q-btn <q-btn
v-if="optcatalogo.pdf" v-if="optcatalogo.pdf"
label="Crea PDF" :label="`Crea PDF ${optcatalogo.pdf_filename}`"
@click="generatePDF" @click="generatePDF"
></q-btn> ></q-btn>
<div class="row q-gutter-xs justify-center q-mx-auto bg-blue-1"> <div class="row q-gutter-xs justify-center q-mx-auto bg-blue-1">
@@ -229,7 +229,7 @@
class="first_page" class="first_page"
v-html="optcatalogo.first_page_html" v-html="optcatalogo.first_page_html"
></div> ></div>
</div> \ </div>
<div :style="generateStyleCatalogo(optcatalogo)"> <div :style="generateStyleCatalogo(optcatalogo)">
<div class="flex-container-book"> <div class="flex-container-book">
<q-infinite-scroll <q-infinite-scroll
@@ -298,7 +298,7 @@
recscheda.scheda recscheda.scheda
)" )"
:key="pageIndex" :key="pageIndex"
:class="{ 'fixed-width': true, 'card-page': true }" :class="{ 'fixed-width': getWidthPagina(optcatalogo, recscheda.scheda), 'fixed-height': getHeightPagina(optcatalogo, recscheda.scheda), 'card-page': true }"
:style=" :style="
generateStylePageScheda( generateStylePageScheda(
optcatalogo, optcatalogo,
@@ -311,33 +311,32 @@
v-for="(row, rowIndex) in page" v-for="(row, rowIndex) in page"
:key="`${pageIndex}-${rowIndex}`" :key="`${pageIndex}-${rowIndex}`"
class="card-row" class="card-row"
:style="`margin-bottom: ${ :style="
scheda.dimensioni.riga.bottom 'margin-bottom: ' +
? scheda.dimensioni.riga.bottom (scheda?.dimensioni?.riga?.bottom ?? '0px') +
: optcatalogo.dimensioni.riga.bottom ';'
};`" "
> >
<!-- Itera sui prodotti di ogni riga --> <!-- Itera sui prodotti di ogni riga -->
<div <div
v-for="(indprod, colIndex) in row" v-for="(indprod, colIndex) in row"
:key="`${pageIndex}-${rowIndex}-${colIndex}`" :key="`${pageIndex}-${rowIndex}-${colIndex}`"
class="flex-item-book image-container" class="flex-item-book image-container"
:style=" :style="getStyleRow(recscheda)"
'place-content: center; ' +
('flex: 0 1 ' +
recscheda.scheda.dimensioni.scheda_prodotto.width
|| '100px' + '; ')
"
> >
<!--pag: {{pageIndex}} - riga: {{rowIndex}} - col: {{colIndex}} - -->
<CContainerCatalogoCard <CContainerCatalogoCard
v-if=" v-if="
getProdBySchedaRigaCol( getProdBySchedaRigaCol(
recscheda, recscheda,
pageIndex,
rowIndex, rowIndex,
colIndex colIndex
) && ) &&
getProdBySchedaRigaCol( getProdBySchedaRigaCol(
recscheda, recscheda,
pageIndex,
rowIndex, rowIndex,
colIndex colIndex
).active ).active
@@ -345,6 +344,7 @@
:id=" :id="
getProdBySchedaRigaCol( getProdBySchedaRigaCol(
recscheda, recscheda,
pageIndex,
rowIndex, rowIndex,
colIndex colIndex
)._id )._id
@@ -366,11 +366,13 @@
v-else-if=" v-else-if="
getProdBySchedaRigaCol( getProdBySchedaRigaCol(
recscheda, recscheda,
pageIndex,
rowIndex, rowIndex,
colIndex colIndex
) && ) &&
(getProdBySchedaRigaCol( (getProdBySchedaRigaCol(
recscheda, recscheda,
pageIndex,
rowIndex, rowIndex,
colIndex colIndex
).active || ).active ||
@@ -379,6 +381,7 @@
:id=" :id="
getProdBySchedaRigaCol( getProdBySchedaRigaCol(
recscheda, recscheda,
pageIndex,
rowIndex, rowIndex,
colIndex colIndex
)._id )._id
@@ -430,33 +433,16 @@
{{ {{
costanti.DIR_UPLOAD + costanti.DIR_UPLOAD +
costanti.DIR_CATALOGO + costanti.DIR_CATALOGO +
optcatalogo.backgroundimage optcatalogo.imgsfondo_def?.imagefile
}} }}
</div> </div>
<q-img <q-img
v-if="optcatalogo.backgroundimage" v-if="optcatalogo.imgsfondo_def?.imagefile"
:src=" :src="
costanti.DIR_UPLOAD + costanti.DIR_UPLOAD +
costanti.DIR_CATALOGO + costanti.DIR_CATALOGO +
optcatalogo.backgroundimage optcatalogo.imgsfondo_def?.imagefile
"
>
</q-img>
<div v-if="optcatalogo.backgroundimage_printable">
Sfondo Stampa:
{{
costanti.DIR_UPLOAD +
costanti.DIR_CATALOGO +
optcatalogo.backgroundimage_printable
}}
</div>
<q-img
:src="
costanti.DIR_UPLOAD +
costanti.DIR_CATALOGO +
optcatalogo.backgroundimage_printable
" "
> >
</q-img> </q-img>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Some files were not shown because too many files have changed in this diff Show More