- Catalogo: Aggiunta di Schede

This commit is contained in:
Surya Paolo
2024-10-31 23:23:06 +01:00
parent b6f73019fe
commit 2ea6468100
123 changed files with 3382 additions and 3595327 deletions

View File

@@ -1,17 +1,18 @@
APP_VERSION="1.1.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6", "version": "1.1.7",
"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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6", "version": "1.1.7",
"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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6", "version": "1.1.7",
"description": "GruppoMacro", "description": "GruppoMacro",
"productName": "Gruppo Macro", "productName": "Gruppo Macro",
"author": "Paolo Arena", "author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6", "version": "1.1.7",
"description": "PiuCheBuono", "description": "PiuCheBuono",
"productName": "PiuCheBuono", "productName": "PiuCheBuono",
"author": "Paolo Arena", "author": "Paolo Arena",

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.1.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6" APP_VERSION="1.1.7"
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.6", "version": "1.1.7",
"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 +1 @@
TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo !) TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !)

View File

@@ -1,8 +1,8 @@
{ {
"name": "riso", "name": "gruppomacro",
"version": "1.1.6", "version": "1.1.7",
"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,11 @@
"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",
"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 +129,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",

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
public/fonts/DINPro-CondBlack.otf Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
public/fonts/DINPro.otf Normal file

Binary file not shown.

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.

Before

Width:  |  Height:  |  Size: 234 KiB

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.6"; const APP_VERSION = "1.1.7";
console.log(' [ VER-' + APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker'); console.log(' [ VER-' + APP_VERSION + ' ] _---------________------ PAO: this is my custom service worker');

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
src/assets/fonts/DINPro.otf Normal file

Binary file not shown.

View File

@@ -3,11 +3,11 @@
max-width: 200px; max-width: 200px;
min-width: 120px; min-width: 120px;
padding: 1rem 1rem; padding: 1rem 1rem;
box-shadow: none;
@media (max-width: 718px) { @media (max-width: 718px) {
// PER VERSIONE MOBILE // PER VERSIONE MOBILE
max-width: 150px; max-width: 150px;
padding: 0; padding: 0;
} }
box-shadow: none;
} }

View File

@@ -3,26 +3,28 @@
max-width: 200px; max-width: 200px;
min-width: 120px; min-width: 120px;
padding: 1rem 1rem; padding: 1rem 1rem;
@media (max-width: 718px) { box-shadow: none;
// PER VERSIONE MOBILE // PER VERSIONE MOBILE
@media (max-width: 718px) {
max-width: 150px; max-width: 150px;
padding: 0; padding: 0;
} }
box-shadow: none;
} }
.my-card-small-stat { .my-card-small-stat {
width: 100%; width: 100%;
max-width: 60px; max-width: 60px;
min-width: 40px; min-width: 40px;
box-shadow: none;
@media (max-width: 718px) { @media (max-width: 718px) {
// PER VERSIONE MOBILE // PER VERSIONE MOBILE
max-width: 50px; max-width: 50px;
min-width: 40px; min-width: 40px;
} }
box-shadow: none;
} }

View File

@@ -0,0 +1,600 @@
<template>
<div
:class="{
' items-start q-gutter-sm': true,
}"
:style="
optcatalogo.height
? ' height: ' + optcatalogo.height + ' !important; '
: ''
"
>
<q-spinner v-if="!endload" color="primary" size="3em" :thickness="2" />
<div
v-if="!!myproduct && !!myproduct.productInfo"
:class="{
'my-card-big book-details': complete,
'book-card': !complete && !optcatalogo.pdf,
colfix_prodotti_1: options.quante_col == 'c1' && !optcatalogo.pdf,
colfix_prodotti_2: options.quante_col == 'c2' && !optcatalogo.pdf,
colfix_prodotti_3: options.quante_col == 'c3' && !optcatalogo.pdf,
}"
>
<q-toggle
v-if="tools.isManager() && !optcatalogo.pdf"
v-model="editOn"
class="absolute-top-right"
color="green"
icon="fas fa-pencil-alt"
dense
>
</q-toggle>
<q-page-sticky
v-if="complete && !optcatalogo.pdf"
position="bottom-right"
:offset="[18, 0]"
style="z-index: 1000"
>
<q-btn
fab
icon="fas fa-arrow-up"
class="semi-transparent"
color="primary"
v-close-popup
/>
</q-page-sticky>
<q-card-section>
<div
:class="{
'flex q-pa-sm': !optcatalogo.pdf,
'shadow-2': options.in_3d,
'items-center': true, // Centrare verticalmente
}"
:style="'justify-items: center; '"
>
<q-img
v-if="myproduct.productInfo"
:src="
myproduct.productInfo.imagefile
? tools.getFullFileNameByImageFile(
'productInfos',
myproduct.productInfo.imagefile
)
: myproduct.productInfo.image_link
"
:alt="myproduct.productInfo.name"
:class="{
'book-image-fixed': complete,
'cursor-pointer': !complete,
'shadow-4': true,
'image-wrapper': optcatalogo.pdf,
'items-center': true,
}"
:style="
'place-items: center; ' +
(optcatalogo.width
? ' width: ' + optcatalogo.width + ' !important; '
: '')
"
@click="click_opendetail()"
>
<div
class="absolute transparent"
style="left: 90%; top: -18px; transform: translateX(-50%)"
>
<q-btn
v-if="!optcatalogo.pdf"
color="blue-6"
class="semi-transparent"
round
icon="search"
@click.stop="toggleFullScreen"
size="sm"
/>
</div>
</q-img>
<div v-if="false" class="scheda-book">
<div>
<span class="book-title" :data-col="options.quante_col">
<span
v-if="!complete"
class="cursor-pointer"
@click="click_opendetail()"
>{{ myproduct.productInfo.name }}
</span>
<span v-else>{{ myproduct.productInfo.name }} </span>
</span>
</div>
<div
v-if="myproduct.productInfo.authors"
class="book-author"
:data-col="options.quante_col"
>
di
<span
v-for="(author, index) in myproduct.productInfo.authors"
:key="author._id"
>
<span v-if="index > 0">, </span>
<span
class="author cursor-pointer text-primary"
@click="
click_author(author._id, author.name + ' ' + author.surname)
"
>{{ author.name }} {{ author.surname }}</span
>
</span>
</div>
<div
v-if="myproduct.productInfo.catprods && options.show_cat"
class="book-category"
>
<div
v-for="catprod in myproduct.productInfo.catprods"
:key="catprod._id"
>
<q-chip
dense
color="primary"
text-color="white"
icon="category"
>
{{ catprod.name }}
</q-chip>
</div>
</div>
<div
v-if="
options.show_short_descr && myproduct.productInfo.short_descr
"
class="book-short-descr"
>
{{
tools.firstchars(myproduct.productInfo.short_descr, 200, true)
}}
</div>
<div
v-if="myproduct.productInfo.numpages && complete"
class="book-pages"
>
Pagine: {{ myproduct.productInfo.numpages }}
</div>
<div v-if="myproduct.productInfo.publisher" class="book-pages">
{{ myproduct.productInfo.publisher.name }}
</div>
<div
v-if="myproduct.productInfo.date_publishing && complete"
class="book-data-pub"
>
Data Pubblicazione:
{{ tools.getstrDate(myproduct.productInfo.date_publishing) }}
</div>
<q-separator class="q-my-sm"></q-separator>
<div v-if="options.show_price">
<div
:class="{
'row items-center q-pa-nome block-variazione': true,
'block-variazione-selected': indvariazSel == index,
}"
v-for="(variazione, index) of myproduct.arrvariazioni"
:key="index"
@click="setvariazioneSelected(index)"
>
<div
v-if="checkIfVariazioneDaVisu(variazione)"
class="flex justify-between items-center q-mx-sm"
>
<q-badge
class="q-badge--large"
:color="
tools.getRecByVersioneProd(variazione.versione).color
"
>
<q-icon
v-if="variazione.versione > 0"
:name="tools.getIconByVersione(variazione.versione)"
color="white"
></q-icon
>&nbsp;
{{ tools.getRecByVersioneProd(variazione.versione).label }}
</q-badge>
<div v-if="variazione.formato && false">
formato: {{ variazione.formato }}
</div>
<div v-if="variazione.tipologia && false">
tipologia: {{ variazione.tipologia }}
</div>
<div v-if="variazione.status && false">
status: {{ variazione.status }}
</div>
<div v-if="variazione.preOrderDate">
preOrderDate: {{ variazione.preOrderDate }}
</div>
</div>
<q-item-section>
<q-item-label>
<CPrice
:sale_price="variazione.sale_price"
:price="variazione.price"
></CPrice>
<span v-if="!!myproduct.after_price">{{
myproduct.after_price
}}</span>
</q-item-label>
<q-item-label
v-if="
myproduct.scontisticas &&
myproduct.scontisticas.length > 0
"
>
<div
class="prod_sconti"
v-for="(sconti, index) of myproduct.scontisticas"
:key="index"
>
{{ sconti.description }}
</div>
</q-item-label>
</q-item-section>
<q-item-section side v-if="!!variazione.quantita">
<q-icon
v-if="variazione.quantita > 10"
:color="tools.colordisponib(variazione.quantita)"
name="fas fa-check"
/>
<q-icon
v-else-if="
variazione.quantita > 3 && variazione.quantita <= 10
"
:color="tools.colordisponib(variazione.quantita)"
name="fas fa-exclamation"
/>
<q-icon
v-else-if="
variazione.quantita > 0 && variazione.quantita <= 3
"
:color="tools.colordisponib(variazione.quantita)"
name="fas fa-exclamation"
/>
<q-icon
v-else-if="variazione.quantita === 0"
:color="tools.colordisponib(variazione.quantita)"
name="fas fa-times"
/>
</q-item-section>
</div>
<div
v-for="(variazione, index) of myproduct.arrvariazioni"
:key="index"
>
<div
v-show="
indvariazSel == index && checkIfVariazioneDaVisu(variazione)
"
>
<div
v-show="tools.disponibStr(variazione.quantita)"
class="row justify-center q-mt-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm"
>{{ $t('ecomm.disponibilita') }}:&nbsp;</span
>
<q-chip
size="md"
dense
text-color="white"
:color="tools.colordisponib(variazione.quantita)"
>{{ tools.disponibStr(variazione.quantita) }}</q-chip
>
</div>
<div
class="row justify-center vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.price') }}:</span>
<CPrice
:sale_price="variazione.sale_price"
:price="variazione.price"
bold="true"
></CPrice>
<span v-show="!!myproduct.after_price">{{
myproduct.after_price
}}</span>
</div>
<div
v-show="!!variazione.formato"
class="row justify-center q-ma-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.formato') }}:</span>
<q-badge
v-show="variazione.versione > 0"
:color="
tools.getRecByVersioneProd(variazione.versione).color
"
>{{ variazione.formato }}</q-badge
>
</div>
<div
v-show="!!variazione.edizione"
class="row justify-center q-ma-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.edizione') }}:</span>
{{ variazione.edizione }}
</div>
<div
v-show="!!myproduct.isbn"
class="row justify-center q-ma-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.isbn') }}:</span>
{{ myproduct.isbn }}
</div>
<div
v-show="!!myproduct.productInfo.publisher"
class="row justify-center q-ma-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.editore') }}:</span>
<q-badge
:color="
tools.getRecByVersioneProd(variazione.versione).color
"
>{{ myproduct.productInfo.publisher.name }}</q-badge
>
</div>
<div class="row justify-center q-mt-sm">
<q-btn
v-if="variazione.addtocart_link && true"
:href="variazione.addtocart_link"
target="_blank"
color="primary"
icon="fas fa-cart-plus"
class="q-mr-sm"
no-caps
:label="$t('products.addtocart_ext')"
></q-btn>
<q-btn
v-if="myproduct.productInfo.checkout_link && true"
:href="myproduct.productInfo.checkout_link"
target="_blank"
class="q-ml-sm"
color="white"
icon="fas fa-shopping-cart"
outline
text-color="black"
no-caps
:label="$t('ecomm.carrello')"
></q-btn>
</div>
</div>
</div>
</div>
</div>
</div>
</q-card-section>
<q-separator v-if="complete" class="q-my-sm"></q-separator>
<q-card-section v-if="complete && myproduct.productInfo.description">
<div class="title-descr text-blue row">Descrizione:</div>
<div class="row items-center">
<div class="text-title text-grey-9">
<span
class="text-grey-7"
v-html="myproduct.productInfo.description"
></span>
</div>
</div>
</q-card-section>
</div>
<q-dialog v-if="myproduct" v-model="openlistorders">
<q-card class="dialog_card">
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ t('ecomm.listaord') }} - {{ myproduct.productInfo.name }}
</q-toolbar-title>
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
</q-toolbar>
<q-card-section class="q-pa-xs inset-shadow">
<q-markup-table
wrap-cells
bordered
separator="horizontal"
class="listaev__table"
>
<thead>
<tr>
<th>Data</th>
<th>Persona</th>
<th>Stato</th>
<th>Quantita</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr
v-for="(ordcart, index) of listord"
:key="index"
class="listaev listaev__table"
>
<td class="text-center">
<div>
{{ func_tools.getDateTimeShortStr(ordcart.created_at) }}
</div>
</td>
<td class="text-center">
<strong>{{
tools.getNomeUtenteEUsernameByRecUser(ordcart.user)
}}</strong>
</td>
<td class="text-center">
<strong>{{
shared_consts.getStatusStr(ordcart.status)
}}</strong>
</td>
<td class="text-center">
<div v-for="(singleord, index) in ordcart.items" :key="index">
<span
v-if="
singleord.order.idProduct === myproduct._id &&
singleord.order.quantity > 0
"
>
{{ singleord.order.quantity }}</span
>
<span
v-if="
singleord.order.idProduct === myproduct._id &&
singleord.order.quantitypreordered > 0
"
>
{{ singleord.order.quantitypreordered }}</span
>
</div>
</td>
<td class="text-center">
{{ ordcart.note }}
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="text-center">
Totali:
<span class="totali">{{ sumval }}</span>
</td>
<td>&nbsp;</td>
</tr>
</tbody>
</q-markup-table>
</q-card-section>
</q-card>
</q-dialog>
<q-dialog
v-if="
true &&
myproduct &&
myproduct.productInfo &&
myproduct.productInfo.link_scheda
"
v-model="apriSchedaPDF"
maximized
>
<q-card>
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ myproduct.productInfo.name }}
</q-toolbar-title>
<q-btn
flat
round
color="white"
label="CHIUDI"
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<q-card-section>
<iframe
:src="myproduct.productInfo.link_scheda"
frameborder="0"
width="100%"
height="100%"
></iframe>
</q-card-section>
</q-card>
<q-card-actions align="bottom">
<q-btn color="primary" label="Chiudi" @click="apriSchedaPDF = false" />
</q-card-actions>
</q-dialog>
<q-dialog
v-if="
false &&
myproduct &&
myproduct.productInfo &&
myproduct.productInfo.link_scheda
"
v-model="apriSchedaPDF"
fullscreen
>
<q-toolbar class="bg-primary text-white">
<q-toolbar-title>
{{ myproduct.productInfo.name }}
</q-toolbar-title>
<q-btn
flat
round
color="white"
label="CHIUDI"
icon="close"
v-close-popup
></q-btn>
</q-toolbar>
<q-card-section>
<vue-pdf-app
:pdf="myproduct.productInfo.link_scheda"
style="height: 100vh"
></vue-pdf-app>
</q-card-section>
</q-dialog>
<q-dialog
v-model="isFullScreen"
position="top"
:maximized="true"
class="q-pt-none"
>
<div
v-if="isFullScreen"
class="fullscreen-container"
@touchmove.prevent
@click="toggleFullScreen"
>
<q-img
:src="
myproduct.productInfo.imagefile
? `` + myproduct.productInfo.imagefile
: myproduct.productInfo.image_link
"
:alt="myproduct.productInfo.name"
:fit="tools.isMobile() ? 'fill' : 'contain'"
class="fullscreen-image"
@touchstart="onTouchStart"
@touchmove="onTouchMove"
@touchend="onTouchEnd"
ref="fullscreenImage"
>
</q-img>
<br />
</div>
<div class="text-center">
<q-btn
class="q-ma-md"
@click="isFullScreen = false"
label="Chiudi"
rounded
color="primary"
icon="close"
></q-btn>
</div>
</q-dialog>
</div>
</template>
<script lang="ts" src="./CCatalogoCard.ts">
</script>
<style lang="scss" scoped>
@import './CCatalogoCard.scss';
</style>

View File

@@ -46,13 +46,19 @@
<q-card-section> <q-card-section>
<div <div
:class="{ :class="[
'flex q-pa-sm': !optcatalogo.pdf, 'flex q-pa-xs', // Classi comuni
'shadow-2': options.in_3d, { 'shadow-2': options.in_3d }, // Classe condizionale
'items-center': true, // Centrare verticalmente optcatalogo.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
? 'flex-col'
: 'flex-row', // Layout flessibile
]"
:style="{
justifyContent: 'center',
alignItems: 'flex-start',
gap: '0.5rem',
width: '100%',
}" }"
:style="'justify-items: center; '"
> >
<q-img <q-img
v-if="myproduct.productInfo" v-if="myproduct.productInfo"
@@ -70,14 +76,17 @@
'cursor-pointer': !complete, 'cursor-pointer': !complete,
'shadow-4': true, 'shadow-4': true,
'image-wrapper': optcatalogo.pdf, 'image-wrapper': optcatalogo.pdf,
'items-center': true,
}" }"
:style=" :style="{
'place-items: center; ' + width:
(optcatalogo.width optcatalogo.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
? ' width: ' + optcatalogo.width + ' !important; ' ? '50%'
: '') : '45%',
" ...(optcatalogo.width && {
width: optcatalogo.width + ' !important',
}),
display: 'block',
}"
@click="click_opendetail()" @click="click_opendetail()"
> >
<div <div
@@ -96,288 +105,24 @@
</div> </div>
</q-img> </q-img>
<div class="scheda-book"> <!-- Testo associato all'immagine -->
<q-card-title> <div
<span class="book-title" :data-col="options.quante_col"> :style="{
<span width:
v-if="!complete" optcatalogo.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
class="cursor-pointer" ? '100%'
@click="click_opendetail()" : '50%',
>{{ myproduct.productInfo.name }} textAlign: 'center',
</span> marginTop:
<span v-else>{{ myproduct.productInfo.name }} </span> optcatalogo.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
</span> ? '1rem'
</q-card-title> : '0',
<q-card-subtitle }"
v-if="myproduct.productInfo.authors" >
class="book-author"
:data-col="options.quante_col"
>
di
<span
v-for="(author, index) in myproduct.productInfo.authors"
:key="author._id"
>
<span v-if="index > 0">, </span>
<span
class="author cursor-pointer text-primary"
@click="
click_author(author._id, author.name + ' ' + author.surname)
"
>{{ author.name }} {{ author.surname }}</span
>
</span>
</q-card-subtitle>
<q-card-subtitle
v-if="myproduct.productInfo.catprods && options.show_cat"
class="book-category"
>
<div
v-for="catprod in myproduct.productInfo.catprods"
:key="catprod._id"
>
<q-chip
dense
color="primary"
text-color="white"
icon="category"
>
{{ catprod.name }}
</q-chip>
</div>
</q-card-subtitle>
<q-card-main
v-if="
options.show_short_descr && myproduct.productInfo.short_descr
"
class="book-short-descr"
>{{
tools.firstchars(myproduct.productInfo.short_descr, 200, true)
}}</q-card-main
>
<div <div
v-if="myproduct.productInfo.numpages && complete" :style="`line-height: ${optcatalogo.line_height}%; `"
class="book-pages" v-html="products.replaceKeyWordsByProduct(myproduct, optcatalogo.text)"
> ></div>
Pagine: {{ myproduct.productInfo.numpages }}
</div>
<div v-if="myproduct.productInfo.publisher" class="book-pages">
{{ myproduct.productInfo.publisher.name }}
</div>
<div
v-if="myproduct.productInfo.date_publishing && complete"
class="book-data-pub"
>
Data Pubblicazione:
{{ tools.getstrDate(myproduct.productInfo.date_publishing) }}
</div>
<q-separator class="q-my-sm"></q-separator>
<div v-if="options.show_price">
<div
:class="{
'row items-center q-pa-nome block-variazione': true,
'block-variazione-selected': indvariazSel == index,
}"
v-for="(variazione, index) of myproduct.arrvariazioni"
:key="index"
@click="setvariazioneSelected(index)"
>
<div
v-if="checkIfVariazioneDaVisu(variazione)"
class="flex justify-between items-center q-mx-sm"
>
<q-badge
class="q-badge--large"
:color="
tools.getRecByVersioneProd(variazione.versione).color
"
>
<q-icon
v-if="variazione.versione > 0"
:name="tools.getIconByVersione(variazione.versione)"
color="white"
></q-icon
>&nbsp;
{{ tools.getRecByVersioneProd(variazione.versione).label }}
</q-badge>
<div v-if="variazione.formato && false">
formato: {{ variazione.formato }}
</div>
<div v-if="variazione.tipologia && false">
tipologia: {{ variazione.tipologia }}
</div>
<div v-if="variazione.status && false">
status: {{ variazione.status }}
</div>
<div v-if="variazione.preOrderDate">
preOrderDate: {{ variazione.preOrderDate }}
</div>
</div>
<q-item-section>
<q-item-label>
<CPrice
:sale_price="variazione.sale_price"
:price="variazione.price"
></CPrice>
<span v-if="!!myproduct.after_price">{{
myproduct.after_price
}}</span>
</q-item-label>
<q-item-label
v-if="
myproduct.scontisticas &&
myproduct.scontisticas.length > 0
"
>
<div
class="prod_sconti"
v-for="(sconti, index) of myproduct.scontisticas"
:key="index"
>
{{ sconti.description }}
</div>
</q-item-label>
</q-item-section>
<q-item-section side v-if="!!variazione.quantita">
<q-icon
v-if="variazione.quantita > 10"
:color="tools.colordisponib(variazione.quantita)"
name="fas fa-check"
/>
<q-icon
v-else-if="
variazione.quantita > 3 && variazione.quantita <= 10
"
:color="tools.colordisponib(variazione.quantita)"
name="fas fa-exclamation"
/>
<q-icon
v-else-if="
variazione.quantita > 0 && variazione.quantita <= 3
"
:color="tools.colordisponib(variazione.quantita)"
name="fas fa-exclamation"
/>
<q-icon
v-else-if="variazione.quantita === 0"
:color="tools.colordisponib(variazione.quantita)"
name="fas fa-times"
/>
</q-item-section>
</div>
<div
v-for="(variazione, index) of myproduct.arrvariazioni"
:key="index"
>
<div
v-show="
indvariazSel == index && checkIfVariazioneDaVisu(variazione)
"
>
<div
v-show="tools.disponibStr(variazione.quantita)"
class="row justify-center q-mt-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm"
>{{ $t('ecomm.disponibilita') }}:&nbsp;</span
>
<q-chip
size="md"
dense
text-color="white"
:color="tools.colordisponib(variazione.quantita)"
>{{ tools.disponibStr(variazione.quantita) }}</q-chip
>
</div>
<div
class="row justify-center vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.price') }}:</span>
<CPrice
:sale_price="variazione.sale_price"
:price="variazione.price"
bold="true"
></CPrice>
<span v-show="!!myproduct.after_price">{{
myproduct.after_price
}}</span>
</div>
<div
v-show="!!variazione.formato"
class="row justify-center q-ma-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.formato') }}:</span>
<q-badge
v-show="variazione.versione > 0"
:color="
tools.getRecByVersioneProd(variazione.versione).color
"
>{{ variazione.formato }}</q-badge
>
</div>
<div
v-show="!!variazione.edizione"
class="row justify-center q-ma-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.edizione') }}:</span>
{{ variazione.edizione }}
</div>
<div
v-show="!!myproduct.isbn"
class="row justify-center q-ma-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.isbn') }}:</span>
{{ myproduct.isbn }}
</div>
<div
v-show="!!myproduct.productInfo.publisher"
class="row justify-center q-ma-sm vertical-middle"
style="align-items: center"
>
<span class="q-mr-sm">{{ $t('products.editore') }}:</span>
<q-badge
:color="
tools.getRecByVersioneProd(variazione.versione).color
"
>{{ myproduct.productInfo.publisher.name }}</q-badge
>
</div>
<div class="row justify-center q-mt-sm">
<q-btn
v-if="variazione.addtocart_link && true"
:href="variazione.addtocart_link"
target="_blank"
color="primary"
icon="fas fa-cart-plus"
class="q-mr-sm"
no-caps
:label="$t('products.addtocart_ext')"
></q-btn>
<q-btn
v-if="myproduct.productInfo.checkout_link && true"
:href="myproduct.productInfo.checkout_link"
target="_blank"
class="q-ml-sm"
color="white"
icon="fas fa-shopping-cart"
outline
text-color="black"
no-caps
:label="$t('ecomm.carrello')"
></q-btn>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
</q-card-section> </q-card-section>
@@ -411,11 +156,13 @@
class="listaev__table" class="listaev__table"
> >
<thead> <thead>
<th>Data</th> <tr>
<th>Persona</th> <th>Data</th>
<th>Stato</th> <th>Persona</th>
<th>Quantita</th> <th>Stato</th>
<th>Note</th> <th>Quantita</th>
<th>Note</th>
</tr>
</thead> </thead>
<tbody> <tbody>

View File

@@ -4,19 +4,19 @@
min-width: 120px; min-width: 120px;
padding: 1rem 1rem; padding: 1rem 1rem;
box-shadow: none;
@media (max-width: 718px) { @media (max-width: 718px) {
// PER VERSIONE MOBILE // PER VERSIONE MOBILE
max-width: 150px; max-width: 150px;
padding: 0; padding: 0;
} }
box-shadow: none;
} }
.my-card-small-stat { .my-card-small-stat {
width: 100%; width: 100%;
max-width: 60px; max-width: 60px;
min-width: 40px; min-width: 40px;
box-shadow: none;
@media (max-width: 718px) { @media (max-width: 718px) {
// PER VERSIONE MOBILE // PER VERSIONE MOBILE
@@ -24,7 +24,6 @@
min-width: 40px; min-width: 40px;
} }
box-shadow: none;
} }

View File

@@ -2,7 +2,7 @@ import {
defineComponent, onMounted, PropType, computed, ref, toRef, watch, defineComponent, onMounted, PropType, computed, ref, toRef, watch,
} from 'vue' } from 'vue'
import { IColGridTable, IElemText, IImgGallery, ILabelValue, IMyCard, IMyElem, IMyPage, IOperators } from '@src/model' import { IColGridTable, IElemText, IImgGallery, ILabelValue, IMyCard, IMyElem, IMyPage, IMyScheda, IOperators, ISchedaSingola } from '@src/model'
import { useGlobalStore } from '@store/globalStore' import { useGlobalStore } from '@store/globalStore'
import { CImgTitle } from '@/components/CImgTitle' import { CImgTitle } from '@/components/CImgTitle'
@@ -40,7 +40,7 @@ export default defineComponent({
CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro, CMyEditor, CMyFieldRec, CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro, CMyEditor, CMyFieldRec,
CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation, CMySlider CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation, CMySlider
}, },
emits: ['saveElem', 'selElemClick', 'toggleSize', 'deleteElem'], emits: ['saveElem', 'selElemClick', 'toggleSize', 'deleteElem', 'dupPage'],
props: { props: {
myelem: { myelem: {
type: Object as PropType<IMyElem>, type: Object as PropType<IMyElem>,
@@ -51,6 +51,11 @@ export default defineComponent({
required: false, required: false,
default: '', default: '',
}, },
IdPath: {
type: String,
required: false,
default: '',
},
editOn: { editOn: {
type: Boolean, type: Boolean,
required: false, required: false,
@@ -72,10 +77,16 @@ export default defineComponent({
const $q = useQuasar() const $q = useQuasar()
const { t } = useI18n() const { t } = useI18n()
const posizTextOptions = ref([
{ label: 'In basso', value: costanti.POSIZ_TESTO.IN_BASSO },
{ label: 'A Destra', value: costanti.POSIZ_TESTO.A_DESTRA },
])
const animare = ref(0) const animare = ref(0)
const slide = ref(0) const slide = ref(0)
const slide2 = ref(0) const slide2 = ref(0)
const tabCard = ref('card0') const tabCard = ref(0)
const tabScheda = ref(0)
const tabElemsText = ref('elem0') const tabElemsText = ref('elem0')
const arrPages = ref([] as any[]) const arrPages = ref([] as any[])
const disableSave = ref(true) const disableSave = ref(true)
@@ -161,6 +172,9 @@ export default defineComponent({
// emit('updateAll', newrec) // emit('updateAll', newrec)
} }
async function dupPage() {
emit('dupPage', null)
}
async function dupElem(order?: number) { async function dupElem(order?: number) {
const newrec: IMyElem = { ...props.myelem } const newrec: IMyElem = { ...props.myelem }
@@ -246,6 +260,77 @@ export default defineComponent({
} }
function addNewScheda() {
let maxorder = 0
myel.value.catalogo!.arrSchede?.forEach(scheda => {
if (scheda.order > maxorder) {
maxorder = scheda.order
}
})
let newscheda: IMyScheda = {
_id: objectId(),
idapp: tools.appid()!,
isTemplate: false,
name: 'Scheda Nuova',
widthscheda: '360px',
line_height: 100,
widthpag: 800,
width: 150,
height: 234,
numschede_perRiga: 2,
numschede_perCol: 2,
margine_top: 12,
margine_pagina: '92px',
margine_riga: '41px',
text: '',
posiz_text: costanti.POSIZ_TESTO.A_DESTRA,
productTypes: [],
excludeproductTypes: [],
editore: [],
author: '',
sort: costanti.SORT_PUBDATE,
arrProdottiSpeciali: [],
}
if (!myel.value.catalogo!.arrSchede)
myel.value.catalogo!.arrSchede = []
myel.value.catalogo!.arrSchede.push(
{
_id: objectId(),
scheda: { ...newscheda },
order: maxorder + 10,
numSchede: 1,
}
)
// console.log('arrschede', myel.value.catalogo!.arrSchede)
modifElem()
}
function dupNewScheda(id: string) {
if (!myel.value.catalogo!.arrSchede)
return
const myfindscheda = myel.value.catalogo!.arrSchede.find((scheda: ISchedaSingola) => scheda._id === id)
if (myfindscheda) {
let myscheda = { ...myfindscheda }
delete myscheda._id
myscheda._id = objectId()
const bakscheda = [...myel.value.catalogo!.arrSchede]
myel.value.catalogo!.arrSchede = []
myel.value.catalogo!.arrSchede = [...bakscheda, myscheda]
modifElem()
}
}
function dupNewCard() { function dupNewCard() {
if (!myel.value.listcards) if (!myel.value.listcards)
@@ -306,10 +391,17 @@ export default defineComponent({
myel.elemsText = myel.elemsText.filter((rec: IElemText) => rec._id !== id) myel.elemsText = myel.elemsText.filter((rec: IElemText) => rec._id !== id)
} }
}
function delRecScheda(id: string, myel: IMyElem) {
//
myel.catalogo!.arrSchede = myel.catalogo!.arrSchede!.filter((scheda: ISchedaSingola) => scheda._id !== id)
modifElem()
} }
function saveFieldElem(rec: any, newval: any, col: IColGridTable) { function saveFieldElem(rec: any, newval: any, col: IColGridTable) {
console.log('saveFieldElem', rec, 'newval', newval, 'col', col) //console.log('saveFieldElem', rec, 'newval', newval, 'col', col)
let iscatalogo = costanti.CATALOGO_FIELDS.includes(col.name) let iscatalogo = costanti.CATALOGO_FIELDS.includes(col.name)
@@ -366,7 +458,7 @@ export default defineComponent({
} }
modifElem() modifElem()
} }
function showAnimation() { function showAnimation() {
@@ -399,6 +491,20 @@ export default defineComponent({
return options; return options;
} }
function SchedeOpt() {
const arrschede = globalStore.getMySchede()
let arr: any = []
if (arrschede) {
arrschede.forEach(scheda => {
arr.push({ label: scheda.name, value: scheda._id })
});
}
return arr
}
function updateSizeWidth(value: any) { function updateSizeWidth(value: any) {
// Gestisce l'input dell'utente per un nuovo valore // Gestisce l'input dell'utente per un nuovo valore
myel.value.widthimg = value; // Aggiorna widthimg con il nuovo valore myel.value.widthimg = value; // Aggiorna widthimg con il nuovo valore
@@ -409,36 +515,6 @@ export default defineComponent({
myel.value.catalogo!.width = value // Aggiorna widthimg con il nuovo valore myel.value.catalogo!.width = value // Aggiorna widthimg con il nuovo valore
modifElem() modifElem()
} }
function updateCatalogoNumSchedePerCol(value: any) {
// Gestisce l'input dell'utente per un nuovo valore
myel.value.catalogo!.numschede_perCol = value // Aggiorna widthimg con il nuovo valore
modifElem()
}
function updateCatalogoNumSchedePerRiga(value: any) {
// Gestisce l'input dell'utente per un nuovo valore
myel.value.catalogo!.numschede_perRiga = value // Aggiorna widthimg con il nuovo valore
modifElem()
}
function updateCatalogoSizeWidthScheda(value: any) {
// Gestisce l'input dell'utente per un nuovo valore
myel.value.catalogo!.widthscheda = value // Aggiorna widthimg con il nuovo valore
modifElem()
}
function updateCatalogoSizeWidthPag(value: any) {
// Gestisce l'input dell'utente per un nuovo valore
myel.value.catalogo!.widthpag = value // Aggiorna widthimg con il nuovo valore
modifElem()
}
function updateCatalogoSizeWidthPagPrintable(value: any) {
// Gestisce l'input dell'utente per un nuovo valore
myel.value.catalogo!.widthpagPrintable = value // Aggiorna widthimg con il nuovo valore
modifElem()
}
function updateCatalogoSizeHeight(value: any) {
myel.value.catalogo!.height = value
modifElem()
}
function updateSizeHeight(value: any) { function updateSizeHeight(value: any) {
myel.value.heightimg = value; // Aggiorna widthimg con il nuovo valore myel.value.heightimg = value; // Aggiorna widthimg con il nuovo valore
modifElem() modifElem()
@@ -466,10 +542,14 @@ export default defineComponent({
neworder.value = rec neworder.value = rec
} }
function addProdSpeciale(rec: any) {
neworder.value = rec
}
async function moveElem(direz: any) { async function moveElem(direz: any) {
let myelem = props.myelem let myelem = props.myelem
const elemprec = globalStore.getMyElemPrecThisElemId(props.path, myelem._id) const elemprec = globalStore.getMyElemPrecThisElemId(props.path, myelem._id!)
const elemnext = globalStore.getMyElemNextThisElemId(props.path, myelem._id!) const elemnext = globalStore.getMyElemNextThisElemId(props.path, myelem._id!)
let neworder = 0 let neworder = 0
@@ -589,12 +669,14 @@ export default defineComponent({
classiImmagineOptions, classiImmagineOptions,
saveFieldElem, saveFieldElem,
updateCatalogoSizeWidth, updateCatalogoSizeWidth,
updateCatalogoSizeHeight, dupPage,
updateCatalogoSizeWidthScheda, posizTextOptions,
updateCatalogoSizeWidthPag, tabScheda,
updateCatalogoSizeWidthPagPrintable, addNewScheda,
updateCatalogoNumSchedePerCol, dupNewScheda,
updateCatalogoNumSchedePerRiga, delRecScheda,
SchedeOpt,
addProdSpeciale,
} }
}, },

View File

@@ -53,6 +53,15 @@
&nbsp; &nbsp;
<q-space /> <q-space />
<q-btn
icon="far fa-copy"
label="Duplica Pagina"
dense
size="sm"
color="fuchsia"
@click="dupPage()"
>
</q-btn>
<q-btn <q-btn
icon="fas fa-trash-alt" icon="fas fa-trash-alt"
color="negative" color="negative"
@@ -70,6 +79,15 @@
@click="dupElem(myel.order + 10 * direzadd)" @click="dupElem(myel.order + 10 * direzadd)"
> >
</q-btn> </q-btn>
<q-btn
dense
icon="fas fa-check"
color="positive"
label="Salva"
size="sm"
@click="saveElem"
>
</q-btn>
</q-bar> </q-bar>
<div class="fixed-button"> <div class="fixed-button">
<div class="justify-center row q-ma-xs"> <div class="justify-center row q-ma-xs">
@@ -403,7 +421,7 @@
rounded rounded
dense dense
color="primary" color="primary"
label="Scheda" label="Aggiungi"
icon="fas fa-plus" icon="fas fa-plus"
@click="addNewCard" @click="addNewCard"
> >
@@ -412,7 +430,7 @@
rounded rounded
dense dense
color="primary" color="primary"
label="Scheda" label="Duplica"
icon="fas fa-copy" icon="fas fa-copy"
@click="dupNewCard" @click="dupNewCard"
> >
@@ -1317,154 +1335,467 @@
</q-select> </q-select>
</div> </div>
<div v-else-if="myel.type === shared_consts.ELEMTYPE.CATALOGO"> <div v-else-if="myel.type === shared_consts.ELEMTYPE.CATALOGO">
<div v-if="enableEdit" class="row">
<div>Cataloghi:</div>
<br />
<q-toggle
v-model="myel.catalogo.pdf"
color="positive"
icon="fas fa-file-pdf"
label="Versione PDF"
@update:model-value="modifElem"
>
</q-toggle>
<br />
<!--++AddCATALOGO_FIELDS-->
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="enableEdit && myel.catalogo && myel.catalogo.productTypes"
rounded
outlined
v-model="myel.catalogo.productTypes"
:options="shared_consts.VERSIONI_PRODOTTO"
@update:model-value="modifElem"
multiple
dense
label="Includi"
style="width: 150px"
emit-value
map-options
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="
enableEdit && myel.catalogo && myel.catalogo.excludeproductTypes
"
rounded
outlined
v-model="myel.catalogo.excludeproductTypes"
:options="shared_consts.VERSIONI_PRODOTTO"
@update:model-value="modifElem"
multiple
dense
label="Escludi"
style="width: 150px"
emit-value
map-options
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="enableEdit"
rounded
outlined
v-model="myel.catalogo.Editore"
:options="Products.publishers"
@update:model-value="modifElem"
multiple
dense
label="Editori"
style="width: 150px"
emit-value
map-options
option-value="_id"
option-label="name"
>
</q-select>
<CMySlider
label="Larghezza Schede:"
v-model="myel.catalogo.widthscheda"
:min="10"
:max="1000"
color="green"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Pagina:"
v-model="myel.catalogo.widthpag"
:min="10"
:max="1000"
color="green"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Immagini:"
v-model="myel.catalogo.width"
:min="10"
:max="1000"
color="green"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Altezza Schede:"
v-model="myel.catalogo.height"
:min="10"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
</div>
<div class="sfondo_margine">
Margini:<br />
<CMySlider
label="Schede per Riga"
v-model="myel.catalogo.numschede_perRiga"
:min="1"
:max="10"
color="green"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Schede per Colonna"
v-model="myel.catalogo.numschede_perCol"
:min="1"
:max="10"
color="red"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Margine per Pagina"
v-model="myel.catalogo.margine_pagina"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Margine per Riga"
v-model="myel.catalogo.margine_riga"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
</div>
<div>Sfondo:</div>
<div v-if="enableEdit"> <div v-if="enableEdit">
<q-expansion-item
dense
dense-toggle
expand-separator
label="Selezione Collane/Editori"
icon="fas fa-play-circle"
>
<div class="row">
<q-toggle
v-model="myel.catalogo.pdf"
color="positive"
icon="fas fa-file-pdf"
label="Versione PDF"
@update:model-value="modifElem"
>
</q-toggle>
<br />
<!--++AddCATALOGO_FIELDS-->
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="
enableEdit && myel.catalogo && myel.catalogo.productTypes
"
rounded
outlined
v-model="myel.catalogo.productTypes"
:options="shared_consts.VERSIONI_PRODOTTO"
@update:model-value="modifElem"
multiple
dense
label="Includi"
style="width: 150px"
emit-value
map-options
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="
enableEdit &&
myel.catalogo &&
myel.catalogo.excludeproductTypes
"
rounded
outlined
v-model="myel.catalogo.excludeproductTypes"
:options="shared_consts.VERSIONI_PRODOTTO"
@update:model-value="modifElem"
multiple
dense
label="Escludi"
style="width: 150px"
emit-value
map-options
>
</q-select>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="enableEdit"
rounded
outlined
v-model="myel.catalogo.Editore"
:options="Products.publishers"
@update:model-value="modifElem"
multiple
dense
label="Editori"
style="width: 150px"
emit-value
map-options
option-value="_id"
option-label="name"
>
</q-select>
</div>
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Schede"
icon="fas fa-play-circle"
>
<div class="row">
<q-btn
rounded
dense
color="primary"
label="Aggiungi"
icon="fas fa-plus"
@click="addNewScheda"
>
</q-btn>
<q-tabs
v-model="tabScheda"
dense
class="text-grey"
active-color="primary"
indicator-color="primary"
align="justify"
narrow-indicator
>
<q-tab
v-for="(rec, ind) in myel.catalogo.arrSchede"
:key="ind"
:name="ind"
:label="`Scheda ` + (ind + 1)"
icon="fas fa-pencil-alt"
>
</q-tab>
</q-tabs>
<q-tab-panels v-model="tabScheda" animated>
<q-tab-panel
v-for="(recscheda, ind) in myel.catalogo.arrSchede"
:key="ind"
:name="ind"
>
<q-bar v-if="recscheda" class="bg-primary text-white">
Scheda {{ ind + 1 }}
<span v-if="recscheda.scheda"> '{{
recscheda.scheda.name
}}'</span>
<q-space />
<q-btn
rounded
dense
color="primary"
label="Duplica"
icon="fas fa-copy"
@click="dupNewScheda(recscheda._id)"
>
</q-btn>
<q-btn
icon="fas fa-trash-alt"
color="negative"
dense
size="sm"
@click="delRecScheda(recscheda._id, myel)"
>
</q-btn>
</q-bar>
<div v-if="recscheda && recscheda.scheda">
<q-select
v-model="recscheda.order"
:options="orderOptions"
label="Posizionamento"
options-dense
dense
emit-value
map-options
style="width: 100px"
@update:model-value="modifElem"
fill-input
text-color="white"
>
</q-select>
<q-toggle
v-model="recscheda.scheda.isTemplate"
color="positive"
icon="fas fa-file-pdf"
label="E' un template"
@update:model-value="modifElem"
>
</q-toggle>
<q-input
dense
label="Nome Template"
@update:model-value="modifElem"
v-model="recscheda.scheda.name"
filled
v-on:keyup.enter="saveElem"
>
</q-input>
<!--<q-select
:behavior="
$q.platform.is.ios === true ? 'dialog' : 'menu'
"
v-if="enableEdit"
rounded
outlined
v-model="recscheda._id"
:options="SchedeOpt()"
@update:model-value="modifElem"
dense
label="Scegli Scheda"
style="width: 150px"
emit-value
map-options
>
</q-select>-->
<CMySlider
label="Schede da ripetere"
v-model="recscheda.numSchede"
:min="1"
:max="100"
color="green"
@update:model-value="modifElem"
></CMySlider>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Filtri"
icon="fas fa-play-circle"
>
<div class="row">
<q-select
:behavior="
$q.platform.is.ios === true ? 'dialog' : 'menu'
"
v-if="
enableEdit &&
myel.catalogo &&
myel.catalogo.productTypes
"
rounded
outlined
v-model="recscheda.scheda.productTypes"
:options="shared_consts.VERSIONI_PRODOTTO"
@update:model-value="modifElem"
multiple
dense
label="Includi"
style="width: 150px"
emit-value
map-options
>
</q-select>
<q-select
:behavior="
$q.platform.is.ios === true ? 'dialog' : 'menu'
"
v-if="
enableEdit &&
myel.catalogo &&
myel.catalogo.excludeproductTypes
"
rounded
outlined
v-model="recscheda.scheda.excludeproductTypes"
:options="shared_consts.VERSIONI_PRODOTTO"
@update:model-value="modifElem"
multiple
dense
label="Escludi"
style="width: 150px"
emit-value
map-options
>
</q-select>
<q-select
:behavior="
$q.platform.is.ios === true ? 'dialog' : 'menu'
"
v-if="enableEdit"
rounded
outlined
v-model="recscheda.scheda.Editore"
:options="Products.publishers"
@update:model-value="modifElem"
multiple
dense
label="Editori"
style="width: 150px"
emit-value
map-options
option-value="_id"
option-label="name"
>
</q-select>
<q-select
label="Prodotti Speciali:"
v-model="recscheda.scheda.arrProdottiSpeciali"
emit-value
map-options
:options="[]"
use-chips
multiple
@update:model-value="
recscheda.scheda.arrProdottiSpeciali
"
filled
use-input
new-value-mode="add-unique"
dense
style="width: 350px"
/>
</div>
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Dimensioni Schede"
icon="fas fa-play-circle"
>
<div class="row">
<CMySlider
label="Schede per Riga"
v-model="recscheda.scheda.numschede_perRiga"
:min="1"
:max="10"
color="green"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Schede per Colonna"
v-model="recscheda.scheda.numschede_perCol"
:min="1"
:max="10"
color="red"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Schede:"
v-model="recscheda.scheda.widthscheda"
:min="10"
:max="1000"
color="green"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Pagina:"
v-model="recscheda.scheda.widthpag"
:min="10"
:max="1000"
color="green"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Immagini:"
v-model="recscheda.scheda.width"
:min="10"
:max="1000"
color="green"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Altezza Schede:"
v-model="recscheda.scheda.height"
:min="10"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
</div>
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Testo"
icon="fas fa-play-circle"
>
<q-select
v-model="recscheda.scheda.posiz_text"
:options="posizTextOptions"
label="Posizione"
options-dense
dense
emit-value
map-options
style="width: 100px"
@update:model-value="modifElem"
fill-input
text-color="white"
>
</q-select>
<CMySlider
label="Line Height:"
v-model="recscheda.scheda.line_height"
:min="70"
:max="200"
color="blue"
@update:model-value="modifElem"
></CMySlider>
<CMyFieldRec
title="Testo:"
table="catalogo"
:rec="myel.catalogo"
field="recscheda.scheda.text"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.html"
@save="saveFieldElem"
@update_col="update_col"
>
</CMyFieldRec>
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Margini Pagina"
icon="fas fa-play-circle"
>
<div class="sfondo_margine row">
<CMySlider
label="Margine Top"
v-model="recscheda.scheda.margine_top"
:min="0"
:max="1000"
color="blue"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Margine per Pagina"
v-model="recscheda.scheda.margine_pagina"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Margine per Riga"
v-model="recscheda.scheda.margine_riga"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
</div>
</q-expansion-item>
</div>
</q-tab-panel>
</q-tab-panels>
</div>
</q-expansion-item>
</div>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Sfondi"
icon="fas fa-play-circle"
>
Nome File Web: {{ myel.catalogo.backgroundimage }}<br /> Nome File Web: {{ myel.catalogo.backgroundimage }}<br />
<CMyFieldRec <CMyFieldRec
title="Per Web:" title="Per Web:"
@@ -1479,59 +1810,183 @@
> >
</CMyFieldRec> </CMyFieldRec>
<br /> <br />
<div class="sfondo_print"> </q-expansion-item>
Per Stampa:
<q-toggle
v-model="myel.catalogo.printable"
color="positive"
icon="fas fa-file-pdf"
label="Versione Stampabile"
@update:model-value="modifElem"
>
</q-toggle>
<q-input <q-expansion-item
dense dense
label="Margine per Pagina:" dense-toggle
@update:model-value="modifElem" expand-separator
v-model="myel.catalogo.margine_paginaPrintable" label="Prima Pagina"
filled icon="fas fa-play-circle"
v-on:keyup.enter="saveFieldElem" >
> Prima Pagina: {{ myel.catalogo.first_page_img }}<br />
</q-input> <div class="row">
<q-input
dense
label="Margine per Riga:"
@update:model-value="modifElem"
v-model="myel.catalogo.margine_rigaPrintable"
filled
v-on:keyup.enter="saveFieldElem"
>
</q-input>
<CMySlider <CMySlider
label="Larghezza Pagina Stampa:" label="Altezza:"
v-model="myel.catalogo.widthpagPrintable" v-model="myel.catalogo.first_page_height"
:min="0" :min="0"
:max="1000" :max="4000"
color="red" color="red"
addstr="px"
@update:model-value="modifElem" @update:model-value="modifElem"
></CMySlider> ></CMySlider>
<CMySlider
Nome File Printable: {{ myel.catalogo.backgroundimage_printable }} label="Larghezza:"
<CMyFieldRec v-model="myel.catalogo.first_page_width"
title="Sfondo:" :min="0"
table="catalogo" :max="4000"
:rec="myel.catalogo" color="red"
field="backgroundimage_printable"
@update:model-value="modifElem" @update:model-value="modifElem"
:canEdit="true" ></CMySlider>
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
</div> </div>
<CMyFieldRec
title="Per Web:"
table="catalogo"
:rec="myel.catalogo"
field="first_page_img"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
<CMyFieldRec
title="Testo pagina:"
table="catalogo"
:rec="myel.catalogo"
field="first_page_html"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.html"
@save="saveFieldElem"
@update_col="update_col"
>
</CMyFieldRec>
<br />
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Ultima Pagina"
icon="fas fa-play-circle"
>
Immagine: {{ myel.catalogo.last_page_img }}<br />
<div class="row">
<CMySlider
label="Altezza:"
v-model="myel.catalogo.last_page_height"
:min="0"
:max="4000"
color="red"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza:"
v-model="myel.catalogo.last_page_width"
:min="0"
:max="4000"
color="red"
@update:model-value="modifElem"
></CMySlider>
</div>
<CMyFieldRec
title="Per Web:"
table="catalogo"
:rec="myel.catalogo"
field="last_page_img"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
<CMyFieldRec
title="Testo pagina:"
table="catalogo"
:rec="myel.catalogo"
field="last_page_html"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.html"
@save="saveFieldElem"
@update_col="update_col"
>
</CMyFieldRec>
<br />
</q-expansion-item>
<div v-if="enableEdit">
<q-expansion-item
dense
dense-toggle
expand-separator
label="Per Stampa"
icon="fas fa-play-circle"
>
<div class="sfondo_print">
Per Stampa:
<q-toggle
v-model="myel.catalogo.printable"
color="positive"
icon="fas fa-file-pdf"
label="Versione Stampabile"
@update:model-value="modifElem"
>
</q-toggle>
<CMySlider
label="Margine per Pagina"
v-model="myel.catalogo.margine_paginaPrintable"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Margine per Riga"
v-model="myel.catalogo.margine_rigaPrintable"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Pagina Stampa:"
v-model="myel.catalogo.widthpagPrintable"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
Nome File Printable:
{{ myel.catalogo.backgroundimage_printable }}
<CMyFieldRec
title="Sfondo:"
table="catalogo"
:rec="myel.catalogo"
field="backgroundimage_printable"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
</div>
</q-expansion-item>
</div> </div>
</div> </div>
</q-list> </q-list>

View File

@@ -50,12 +50,13 @@ export default defineComponent({
const myfonts = ref({ const myfonts = ref({
arial: 'Arial', arial: 'Arial',
arial_black: 'Arial Black', arial_black: 'Arial Black',
AGaramondProRegular: 'AGaramondPro-Regular',
comic_sans: 'Comic Sans MS', comic_sans: 'Comic Sans MS',
courier_new: 'Courier New', courier_new: 'Courier New',
impact: 'Impact', impact: 'Impact',
lucida_grande: 'Lucida Grande', lucida_grande: 'Lucida Grande',
times_new_roman: 'Times New Roman', times_new_roman: 'Times New Roman',
verdana: 'Verdana' verdana: 'Verdana',
}) })
const showtools = ref(false) const showtools = ref(false)

View File

@@ -469,7 +469,6 @@ body.mobile .landing:before {
.elemEdit{ .elemEdit{
margin: 3px; margin: 3px;
padding: 3px; padding: 3px;
background-color: #3fdaff;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
} }

File diff suppressed because it is too large Load Diff

View File

@@ -173,7 +173,7 @@ export default defineComponent({
if (arrk.length > 2) if (arrk.length > 2)
mysubsubkey.value = arrk[2] mysubsubkey.value = arrk[2]
} }
console.log('### table', props.table, 'col.value', col.value, 'field', props.field, 'mykey', mykey.value, 'mysubkey', mysubkey.value) // console.log('### table', props.table, 'col.value', col.value, 'field', props.field, 'mykey', mykey.value, 'mysubkey', mysubkey.value)
} }
@@ -235,6 +235,11 @@ export default defineComponent({
} }
} }
function update_col(name: string, val: any) {
// console.log('update_col', name, val)
myrec.value[name] = val
}
onMounted(mounted) onMounted(mounted)
return { return {
@@ -257,6 +262,7 @@ export default defineComponent({
visuElem, visuElem,
getclass, getclass,
myrec, myrec,
update_col,
} }
}, },
}) })

View File

@@ -67,6 +67,7 @@
:path="path" :path="path"
:nosaveToDb="nosaveToDb" :nosaveToDb="nosaveToDb"
@showandsave="showandsave" @showandsave="showandsave"
@update_col="update_col"
> >
</CMyPopupEdit> </CMyPopupEdit>
</div> </div>

View File

@@ -32,6 +32,11 @@ export default defineComponent({
type: String, type: String,
required: true, required: true,
}, },
myidPage: {
type: String,
required: false,
default: ''
},
img: { img: {
type: String, type: String,
required: false, required: false,
@@ -62,6 +67,7 @@ export default defineComponent({
setup(props) { setup(props) {
const rec = ref<IMyPage | null>(null) const rec = ref<IMyPage | null>(null)
const mypathin = toRef(props, 'mypath') const mypathin = toRef(props, 'mypath')
const myidPage = toRef(props, 'idPage')
const $q = useQuasar() const $q = useQuasar()
@@ -91,7 +97,9 @@ export default defineComponent({
const onloading = ref(false) const onloading = ref(false)
const myelems = computed(() => { const myelems = computed(() => {
if (mypathin.value) if (myidPage.value)
return globalStore.getMyElemsByIdPage(myidPage.value)
else if (mypathin.value)
return globalStore.getMyElems(mypathin.value) return globalStore.getMyElems(mypathin.value)
else else
return null return null
@@ -159,6 +167,10 @@ export default defineComponent({
} }
async function duplicatePage() {
await globalStore.duplicatePage(mypathin.value, $q, t)
}
onMounted(mounted) onMounted(mounted)
@@ -179,6 +191,7 @@ export default defineComponent({
toggleSize, toggleSize,
onloading, onloading,
deleteElem, deleteElem,
duplicatePage,
} }
}, },

View File

@@ -41,9 +41,11 @@
:myelem="selElem" :myelem="selElem"
:editOn="true" :editOn="true"
:path="rec.path" :path="rec.path"
:IdPath="rec._id"
@selElemClick="selElemClick" @selElemClick="selElemClick"
@deleteElem="deleteElem" @deleteElem="deleteElem"
@toggleSize="toggleSize" @toggleSize="toggleSize"
@dupPage="duplicatePage"
> >
</CMyEditElem> </CMyEditElem>
</q-drawer> </q-drawer>

View File

@@ -28,6 +28,11 @@ export default defineComponent({
type: String, type: String,
required: true, required: true,
}, },
myidPage: {
type: String,
required: false,
default: ''
},
img: { img: {
type: String, type: String,
required: false, required: false,
@@ -74,7 +79,9 @@ export default defineComponent({
const editOn = computed(() => globalStore.editOn) const editOn = computed(() => globalStore.editOn)
const myelems = computed(() => { const myelems = computed(() => {
if (mypathin.value) if (myidPage.value)
return globalStore.getMyElemsByIdPage(myidPage.value)
else if (mypathin.value)
return globalStore.getMyElems(mypathin.value) return globalStore.getMyElems(mypathin.value)
else else
return null return null

View File

@@ -411,7 +411,6 @@ export default defineComponent({
} }
function changevalRecOrig(newval: any, subcol: string = '') { function changevalRecOrig(newval: any, subcol: string = '') {
// console.log('changevalRec', newval)
// if (!props.insertMode || (props.insertMode && col.value.fieldtype !== costanti.FieldType.multioption)) { // if (!props.insertMode || (props.insertMode && col.value.fieldtype !== costanti.FieldType.multioption)) {
if (col.value && col.value.allowchar === costanti.ALLOWCHAR_CODE) { if (col.value && col.value.allowchar === costanti.ALLOWCHAR_CODE) {
newval = tools.removespaces_slash(newval) newval = tools.removespaces_slash(newval)

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="q-pa-xs" style="width: 300px"> <div class="q-pa-xs" style="width: 180px">
<q-badge color="primary"> {{ label }} {{ modelValue }} </q-badge> <q-badge color="primary"> {{ label }} {{ modelValue }} </q-badge>
<q-input <q-input

View File

@@ -19,13 +19,13 @@
.prod_off_price { .prod_off_price {
font-size: 1rem; font-size: 1rem;
@media (max-width: 718px) {
font-size: 0.85rem;
}
color: gray; color: gray;
text-decoration: line-through; text-decoration: line-through;
padding-left: 8px; padding-left: 8px;
@media (max-width: 718px) {
font-size: 0.85rem;
}
} }
/* ******** */ /* ******** */

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="row items-start q-gutter-sm"> <div class="row">
<q-spinner v-if="!endload" color="primary" size="3em" :thickness="2" /> <q-spinner v-if="!endload" color="primary" size="3em" :thickness="2" />
<q-card <q-card
:class="{ :class="{
@@ -30,7 +30,10 @@
<q-img <q-img
:src=" :src="
myproduct.productInfo.imagefile myproduct.productInfo.imagefile
? tools.getFullFileNameByImageFile('productInfos', myproduct.productInfo.imagefile) ? tools.getFullFileNameByImageFile(
'productInfos',
myproduct.productInfo.imagefile
)
: myproduct.productInfo.image_link : myproduct.productInfo.image_link
" "
:alt="myproduct.productInfo.name" :alt="myproduct.productInfo.name"
@@ -45,11 +48,15 @@
color="primary" color="primary"
round round
icon="fas fa-eye" icon="fas fa-eye"
class="absolute semi-transparent" class="absolute semi-transparent"
size="md" size="md"
@click="toggleFullScreen" @click="toggleFullScreen"
style="bottom: -10px; right: 0px; transform: translateY(-50%); z-index: 2" style="
bottom: -10px;
right: 0px;
transform: translateY(-50%);
z-index: 2;
"
/> />
</div> </div>
@@ -226,7 +233,7 @@
<div v-if="false" class="barcode"> <div v-if="false" class="barcode">
<barcode :value="myproduct.productInfo.code" format="EAN-13"> <barcode :value="myproduct.productInfo.code" format="EAN-13">
</barcode> </barcode>
<vue-barcode ></vue-barcode> <vue-barcode></vue-barcode>
</div> </div>
<div <div
v-if=" v-if="
@@ -375,7 +382,8 @@
<q-card-section <q-card-section
v-if=" v-if="
editOn && editOn &&
(!!myproduct.productInfo.imagefile || myproduct.productInfo.imagefile === '') (!!myproduct.productInfo.imagefile ||
myproduct.productInfo.imagefile === '')
" "
> >
<div class="text-center"> <div class="text-center">
@@ -921,11 +929,13 @@
class="listaev__table" class="listaev__table"
> >
<thead> <thead>
<th>Data</th> <tr>
<th>Persona</th> <th>Data</th>
<th>Stato</th> <th>Persona</th>
<th>Quantita</th> <th>Stato</th>
<th>Note</th> <th>Quantita</th>
<th>Note</th>
</tr>
</thead> </thead>
<tbody> <tbody>
@@ -1072,7 +1082,10 @@
<q-img <q-img
:src=" :src="
myproduct.productInfo.imagefile myproduct.productInfo.imagefile
? tools.getFullFileNameByImageFile('productInfos', myproduct.productInfo.imagefile) ? tools.getFullFileNameByImageFile(
'productInfos',
myproduct.productInfo.imagefile
)
: myproduct.productInfo.image_link : myproduct.productInfo.image_link
" "
:alt="myproduct.productInfo.name" :alt="myproduct.productInfo.name"

View File

@@ -1,3 +1,12 @@
@use "sass:color";
@font-face {
font-family: 'AGaramondPro-Regular';
src: url('~src/assets/fonts/AGaramondPro-Regular.otf') format('opentype');
font-weight: normal;
font-style: normal;
}
body { body {
font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
@@ -977,11 +986,6 @@ h3 {
margin-right: auto; margin-right: auto;
min-width: 800px; min-width: 800px;
@media (max-width: 1024px) {
max-width: 1024px;
min-width: 300px;
}
padding-bottom: 20px; padding-bottom: 20px;
margin-top: 1rem; margin-top: 1rem;
margin-bottom: 1rem; margin-bottom: 1rem;
@@ -989,6 +993,10 @@ h3 {
// transition: transform .2s ease-out; // transition: transform .2s ease-out;
@media (max-width: 1024px) {
max-width: 1024px;
min-width: 300px;
}
} }
.my-card-shadow:hover { .my-card-shadow:hover {
@@ -1844,17 +1852,17 @@ h3 {
.buttons_bottom { .buttons_bottom {
max-width: 700px !important; max-width: 700px !important;
@media (max-width: 700px) {
/* Versione Mobile */
max-width: 400px;
}
margin-left: auto; margin-left: auto;
justify-content: space-around; justify-content: space-around;
margin-right: auto; margin-right: auto;
text-align: center; text-align: center;
padding-top: 8px; padding-top: 8px;
padding-bottom: 8px; padding-bottom: 8px;
@media (max-width: 700px) {
/* Versione Mobile */
max-width: 400px;
}
} }
.body--light { .body--light {
@@ -1888,9 +1896,6 @@ h3 {
} }
.visudialog { .visudialog {
@media (max-width: 600px) {
/* ... */
}
else { else {
width: 700px !important; width: 700px !important;
@@ -2004,13 +2009,12 @@ h3 {
} }
.fake-link { .fake-link {
font-weight: bold;
@media (max-width: 600px) { @media (max-width: 600px) {
color: #1976D2; color: #1976D2;
text-decoration: underline !important; text-decoration: underline !important;
cursor: pointer; cursor: pointer;
} }
font-weight: bold;
} }
.fake-link:hover { .fake-link:hover {
@@ -2199,9 +2203,23 @@ $coloreprincipale: lightblue;
} }
.sfondo_gradiente_rosso { .sfondo_gradiente_rosso {
background: linear-gradient(180deg, rgba(red($rosso), green($rosso), blue($rosso), $trasparenza), $coloreprincipale, rgba(red($rosso), green($rosso), blue($rosso), $trasparenza)) !important; background: linear-gradient(
180deg,
rgba(
color.channel($rosso, "red", $space: rgb),
color.channel($rosso, "green", $space: rgb),
color.channel($rosso, "blue", $space: rgb),
$trasparenza
),
$coloreprincipale,
rgba(
color.channel($rosso, "red", $space: rgb),
color.channel($rosso, "green", $space: rgb),
color.channel($rosso, "blue", $space: rgb),
$trasparenza
)
) !important;
} }
.card-carousel-container { .card-carousel-container {
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
@@ -2249,9 +2267,9 @@ $coloreprincipale: lightblue;
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
flex-direction: row; flex-direction: row;
gap: 1rem; gap: 0.5rem;
height: 100%; height: 100%;
padding: 1rem; padding: 0.5rem;
} }
.flex-card { .flex-card {
@@ -2461,7 +2479,7 @@ body.body--dark {
display: flex; /* Rende il div un container flex per allineare i contenuti */ display: flex; /* Rende il div un container flex per allineare i contenuti */
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: 10px; padding: 0px;
flex-grow: 1; /* Opzionale: permette agli elementi di crescere uniformemente */ flex-grow: 1; /* Opzionale: permette agli elementi di crescere uniformemente */
break-inside: avoid; break-inside: avoid;
@@ -2475,7 +2493,7 @@ body.body--dark {
.card-row { .card-row {
display: flex; display: flex;
justify-content: flex-start; justify-content: center;
} }
.cards-container { .cards-container {

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.6"> <meta name="version" content="1.1.7">
<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<% } %>">

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