- Aggiunta della copertina iniziale nelle raccolte (Catalogo Generale).

- Corretto altezza delle immagini che erano stretchate.
- Fix: poter spostare l'ordinamento dei libri corretto.
This commit is contained in:
Surya Paolo
2025-07-15 17:46:30 +02:00
parent 969e7b726e
commit 43938023ee
22 changed files with 554 additions and 154 deletions

4
.env
View File

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

View File

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

View File

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

BIN
public/noimg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,6 +1,6 @@
{
"name": "cnm",
"version": "1.2.65",
"version": "1.2.66",
"description": "Comunita Nuovo Mondo",
"productName": "ComunitaNuovoMondo",
"author": "Surya",
@@ -9,7 +9,7 @@
"license": "MIT",
"type": "module",
"scripts": {
"dev": "PORT=8083 APP_VERSION='1.2.65' quasar dev",
"dev": "PORT=8083 APP_VERSION='1.2.66' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production quasar build -m pwa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.65' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.65' quasar dev",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.66' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.66' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

@@ -1,6 +1,6 @@
{
"name": "freeplanet",
"version": "1.2.65",
"version": "1.2.66",
"description": "freeplanet",
"productName": "freeplanet",
"author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT",
"type": "module",
"scripts": {
"dev": "PORT=8087 APP_VERSION='1.2.65' quasar dev",
"dev": "PORT=8087 APP_VERSION='1.2.66' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.65' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.65' quasar build -m pwa",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.66' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.66' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.65' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.65' quasar dev",
"pwa": "NODE_ENV=development PORT=8097 APP_VERSION='1.2.66' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8087 APP_VERSION='1.2.66' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "kolibrilab",
"version": "1.2.65",
"version": "1.2.66",
"description": "kolibrilab",
"productName": "kolibrilab",
"author": "Surya Paolo",
@@ -8,11 +8,11 @@
"keywords": [],
"license": "MIT",
"scripts": {
"dev": "PORT=8083 APP_VERSION='1.2.65' quasar dev",
"dev": "PORT=8083 APP_VERSION='1.2.66' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.65' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.65' quasar build -m pwa",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.66' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.66' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -20,8 +20,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint --ext .ts,.vue --ignore-path .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.65' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.65' quasar dev",
"pwa": "NODE_ENV=development PORT=8093 APP_VERSION='1.2.66' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8083 APP_VERSION='1.2.66' quasar dev",
"spanorefresh": "NODE_ENV=development NODE_OPTIONS=--max_old_space_size=4096 DEBUG=v8:* quasar dev -m spa",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js"

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "piuchebuono",
"version": "1.2.65",
"version": "1.2.66",
"description": "PiuCheBuono",
"productName": "PiuCheBuono",
"author": "Surya",
@@ -9,11 +9,11 @@
"license": "MIT",
"type": "module",
"scripts": {
"dev": "PORT=8085 APP_VERSION='1.2.65' quasar dev",
"dev": "PORT=8085 APP_VERSION='1.2.66' quasar dev",
"dev_noCheck": "SKIP_TSC=true quasar dev",
"build": "quasar build",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.65' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.65' quasar build -m pwa",
"buildpwa": "NODE_ENV=production APP_VERSION='1.2.66' quasar build -m pwa",
"buildpwatest": "NODE_ENV=production APP_VERSION='1.2.66' quasar build -m pwa",
"type-check": "vue-tsc --noEmit",
"type-check:watch": "vue-tsc --noEmit --watch",
"buildspa": "quasar build -m spa",
@@ -21,8 +21,8 @@
"lintfile": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"lintfileNoJS": "eslint --ext .ts,.vue --ignore-path .gitignore ./ > file.out.txt",
"fix": "eslint -c ./eslint.config.js \"./src*/**/*.{ts,js,cjs,mjs,vue}\" --ignore-pattern .gitignore ./ --fix > file.out.txt",
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.65' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.65' quasar dev",
"pwa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.66' quasar dev -m pwa",
"spa": "NODE_ENV=development PORT=8085 APP_VERSION='1.2.66' quasar dev",
"debug": "quasar dev --mode debug",
"test": "echo \"No test specified\" && exit 0",
"generate-sw": "workbox generateSW workbox-config.js",

View File

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

View File

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

View File

@@ -2581,4 +2581,9 @@ export const shared_consts = {
NESSUNO: 0,
A_TUTTI: 1,
},
FILETYPE: {
IMG: 1,
PDF: 2,
}
};

View File

@@ -55,7 +55,7 @@
:class="[
'flex', // Classi comuni
'image-container',
{ 'shadow-2': options.in_3d && !optcatalogo.pdf }, // Classe condizionale
{ alignContent: 'center', 'shadow-2': options.in_3d && !optcatalogo.pdf }, // Classe condizionale
scheda.testo_right_attaccato.font?.posiz_text ===
costanti.POSIZ_TESTO.IN_BASSO
? ''
@@ -76,7 +76,7 @@
scheda,
true
) ?? '100%',
height: tools.adjustSize(
'height': tools.adjustSize(
optcatalogo,
scheda.dimensioni?.scheda_prodotto?.size?.height,
scheda,
@@ -84,7 +84,9 @@
),
}"
>
<div style="position: relative">
<div
:style="`position: relative; align-content: center;`"
>
<a
:href="myproduct.productInfo.link_macro"
target="_blank"
@@ -117,22 +119,25 @@
optcatalogo,
scheda.dimensioni?.immagine_prodotto?.size?.width,
scheda,
true
true,
options
) && {
width:
tools.adjustSize(
optcatalogo,
scheda.dimensioni?.immagine_prodotto.size?.width,
scheda,
true
true,
options
) + ' !important',
}),
height: scheda.dimensioni?.immagine_prodotto?.size?.height
'max-height': scheda.dimensioni?.immagine_prodotto?.size?.height
? tools.adjustSize(
optcatalogo,
scheda.dimensioni?.immagine_prodotto?.size?.height,
scheda,
false
false,
options
)
: undefined,
display: 'block',
@@ -177,7 +182,7 @@
</div>
<div
v-if="
(tools.isCollaboratore()) &&
tools.isCollaboratore() &&
!optcatalogo.generazionePDFInCorso &&
(editOn || options.show_edit_book)
"
@@ -195,7 +200,7 @@
color="primary"
icon="fas fa-pencil-alt"
v-if="
(tools.isCollaboratore()) &&
tools.isCollaboratore() &&
!optcatalogo.generazionePDFInCorso &&
(editOn || options.show_edit_book)
"
@@ -203,7 +208,7 @@
<q-list>
<q-item
v-if="
(tools.isCollaboratore()) &&
tools.isCollaboratore() &&
!optcatalogo.generazionePDFInCorso &&
(editOn || options.show_edit_book)
"
@@ -224,7 +229,7 @@
</q-item>
<q-item
v-if="
(tools.isCollaboratore()) &&
tools.isCollaboratore() &&
!optcatalogo.generazionePDFInCorso &&
(editOn || options.show_edit_book)
"
@@ -488,7 +493,8 @@
optcatalogo,
scheda.barcode.size?.gap,
scheda,
true
true,
options
)
"
:width="
@@ -497,7 +503,8 @@
optcatalogo,
scheda.barcode.size?.width,
scheda,
true
true,
options
)
)
"
@@ -506,7 +513,8 @@
optcatalogo,
scheda.barcode.widthlines,
scheda,
true
true,
options
)
"
:height="

View File

@@ -9,6 +9,7 @@ import { CMyPage } from '@src/components/CMyPage'
import { tools } from '@tools'
import { useGlobalStore } from '@store/globalStore'
import { costanti } from '@costanti'
import { shared_consts } from 'app/src/common/shared_vuejs';
export default defineComponent({
name: 'CGallery',
@@ -41,6 +42,11 @@ export default defineComponent({
required: false,
default: '',
},
filetype: {
type: Number,
required: false,
default: shared_consts.FILETYPE.IMG,
},
quality: {
type: String,
required: false,
@@ -384,6 +390,33 @@ export default defineComponent({
message: 'La Dimensione massima dell\'immagine è di 2 MB'
})
}
function getFileTypeStr() {
let tipo = ''
if (props.filetype === shared_consts.FILETYPE.IMG)
tipo = 'Immagine'
else if (props.filetype === shared_consts.FILETYPE.PDF)
tipo = 'PDF'
return tipo
}
function getAccept() {
let tipo = ''
if (props.filetype === shared_consts.FILETYPE.IMG)
tipo = 'image/*'
else if (props.filetype === shared_consts.FILETYPE.PDF)
tipo = 'application/pdf'
return tipo
}
function isPDF() {
return props.filetype === shared_consts.FILETYPE.PDF
}
function isIMG() {
return props.filetype === shared_consts.FILETYPE.IMG
}
onMounted(created)
return {
@@ -415,6 +448,11 @@ export default defineComponent({
costanti,
getrealdirectory,
uploadOptions,
getFileTypeStr,
getAccept,
shared_consts,
isIMG,
isPDF,
}
}
})

View File

@@ -3,46 +3,128 @@
<div v-if="!edit">
<div class="q-pa-xs">
<q-card v-if="isListImgValid" :class="getclass()" @click="apri">
<div v-for="(mygallery, index) in getlistimages()" :key="index">
<q-card
v-if="isListImgValid"
:class="getclass()"
@click="apri"
>
<div
v-for="(mygallery, index) in getlistimages()"
:key="index"
>
<div v-if="index === 0">
<q-img :src="tools.getsrcimg(mygallery, getrealdirectory())" :class="getclimg()" :alt="mygallery.alt">
<div v-if="getnumimages() > 1" class="absolute-bottom text-shadow no-padding">
<div v-if="filetype === shared_consts.FILETYPE.IMG">
<q-img
:src="tools.getsrcimg(mygallery, getrealdirectory())"
:class="getclimg()"
:alt="mygallery.alt"
>
<div
v-if="getnumimages() > 1"
class="absolute-bottom text-shadow no-padding"
>
({{ getnumimages() }})
</div>
</q-img>
</div>
<div v-else-if="filetype === shared_consts.FILETYPE.PDF">
<div>{{ mygallery.imagefile }}</div>
<q-icon
name="fas fa-file-pdf"
:class="getclimg()"
size="lg"
:title="mygallery.alt"
>
</q-icon>
</div>
</div>
</div>
</q-card>
<div v-else-if="!isInModif && !isListImgValid && imagebak">
<q-card v-if="imagebak !== costanti.NESSUN_IMMAGINE" :class="getclass()" @click="ImgFullScreen(mygallery)">
<q-img :src="imagebak" :class="getclimg()"> </q-img>
</q-card>
</div>
<div v-else>
<q-card :class="getclass()" @click="apri">
<q-img src="/images/noimg.png" :class="getclimg()" alt="no image">
<q-card
v-if="imagebak !== costanti.NESSUN_IMMAGINE"
:class="getclass()"
@click="ImgFullScreen(mygallery)"
>
<q-img
:src="imagebak"
:class="getclimg()"
>
</q-img>
</q-card>
</div>
<q-btn v-if="isInModif" color="primary" @click="apri" icon="fas fa-file-upload" :label="$t('gallery.load_image')">
<div v-else>
<q-card
:class="getclass()"
@click="apri"
>
<q-icon
v-if="filetype === shared_consts.FILETYPE.PDF"
name="fas fa-file-pdf"
size="lg"
:class="getclimg()"
alt="no image"
>
</q-icon>
<q-img
v-else
src="/images/noimg.png"
:class="getclimg()"
alt="no image"
>
</q-img>
</q-card>
</div>
<q-btn
v-if="isInModif"
color="primary"
@click="apri"
icon="fas fa-file-upload"
:label="isIMG() ? $t('gallery.load_image') : $t('gallery.load_pdf')"
>
</q-btn>
</div>
</div>
<div v-else>
<div v-if="!isListImgValid">
<q-btn flat round color="blue" icon="fas fa-tools" size="md" @click="apri"></q-btn>
<q-btn
flat
round
color="blue"
icon="fas fa-tools"
size="md"
@click="apri"
></q-btn>
</div>
<div v-else>
<div class="row">
<!--<q-draggable-rows
v-model="order">-->
<div v-for="(mygallery, index) in getlistimages()" :key="index">
<div class="q-pa-sm q-gutter-sm" @dragenter="onDragEnter" @dragleave="onDragLeave" @dragover="onDragOver">
<q-card :id="mygallery._id" :class="getclass()" :draggable="canModify" @dragstart="onDragStart"
@drop="onDrop">
<q-img :src="tools.getsrcimg(mygallery, getrealdirectory())" :class="getclimg()" :alt="mygallery.alt">
<div
v-for="(mygallery, index) in getlistimages()"
:key="index"
>
<div
class="q-pa-sm q-gutter-sm"
@dragenter="onDragEnter"
@dragleave="onDragLeave"
@dragover="onDragOver"
>
<q-card
:id="mygallery._id"
:class="getclass()"
:draggable="canModify"
@dragstart="onDragStart"
@drop="onDrop"
>
<q-img
:src="tools.getsrcimg(mygallery, getrealdirectory())"
:class="getclimg()"
:alt="mygallery.alt"
>
<div class="absolute-bottom text-shadow">
<!-- <div class="text-h6 text-trans">{{ mygallery.description }} </div> -->
<div class="text-subtitle-carica text-trans">
@@ -51,60 +133,134 @@
</div>
</q-img>
<q-field v-if="canModify" stack-label dense label="Nome File">
<q-field
v-if="canModify"
stack-label
dense
label="Nome File"
>
<template v-slot:control>
<div class="self-center full-width no-outline" tabindex="0">
<div
class="self-center full-width no-outline"
tabindex="0"
>
{{ mygallery.imagefile }}
</div>
</template>
</q-field>
<q-input v-if="canModify" v-model="mygallery.description" dense :label="$t('proj.longdescr')"
@keyup.enter.stop @update:model-value="save" debounce="1000" autofocus>
<q-input
v-if="canModify"
v-model="mygallery.description"
dense
:label="$t('proj.longdescr')"
@keyup.enter.stop
@update:model-value="save"
debounce="1000"
autofocus
>
</q-input>
<q-card-actions align="center">
<q-btn v-if="canModify" flat round color="blue" icon="fas fa-copy" size="sm"
@click="copytoclipboard(mygallery)"></q-btn>
<q-btn v-if="canModify" flat round color="red" icon="fas fa-trash-alt" size="sm"
@click="deleteFile(mygallery)"></q-btn>
<q-btn
v-if="canModify"
flat
round
color="blue"
icon="fas fa-copy"
size="sm"
@click="copytoclipboard(mygallery)"
></q-btn>
<q-btn
v-if="canModify"
flat
round
color="red"
icon="fas fa-trash-alt"
size="sm"
@click="deleteFile(mygallery)"
></q-btn>
</q-card-actions>
</q-card>
</div>
</div>
<div class="q-pa-sm">
<div v-if="edit" class="q-gutter-sm" style="max-height: 200px; width: 208px">
<q-uploader :label="single &&
gallerylist.length > 0 &&
gallerylist[0].imagefile !== ''
<div
v-if="edit"
class="q-gutter-sm"
style="max-height: 200px; width: 208px"
>
<q-uploader
:label="
single && gallerylist.length > 0 && gallerylist[0].imagefile !== ''
? 'Sostituisci Immagine'
: 'Aggiungi Immagine'
" accept="image/*" :url="getUrl()" :headers="tools.getheaders()" :max-file-size="3000000"
:multiple="!single" auto-upload hide-upload-btn no-thumbnails @uploaded="uploaded" @rejected="onRejected"
"
:accept="getAccept()"
:url="getUrl()"
:headers="tools.getheaders()"
:max-file-size="3000000"
:multiple="!single"
auto-upload
hide-upload-btn
no-thumbnails
@uploaded="uploaded"
@rejected="onRejected"
style="width: 208px"
:options="uploadOptions"></q-uploader>
:options="uploadOptions"
></q-uploader>
</div>
</div>
</div>
</div>
</div>
<q-dialog v-model="displayGall" persistent :maximized="maximizedToggle" transition-show="slide-up"
transition-hide="slide-down">
<q-dialog
v-model="displayGall"
persistent
:maximized="maximizedToggle"
transition-show="slide-up"
transition-hide="slide-down"
>
<q-card>
<q-bar class="bg-primary text-white">
<q-space />
<q-btn dense flat icon="minimize" @click="maximizedToggle = false" :disable="!maximizedToggle">
<q-tooltip v-if="maximizedToggle" :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`
">Minimize</q-tooltip>
<q-btn
dense
flat
icon="minimize"
@click="maximizedToggle = false"
:disable="!maximizedToggle"
>
<q-tooltip
v-if="maximizedToggle"
:class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`"
>Minimize</q-tooltip
>
</q-btn>
<q-btn dense flat icon="crop_square" @click="maximizedToggle = true" :disable="maximizedToggle">
<q-tooltip v-if="!maximizedToggle" :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`
">Maximize</q-tooltip>
<q-btn
dense
flat
icon="crop_square"
@click="maximizedToggle = true"
:disable="maximizedToggle"
>
<q-tooltip
v-if="!maximizedToggle"
:class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`"
>Maximize</q-tooltip
>
</q-btn>
<q-btn dense flat icon="close" v-close-popup>
<q-tooltip :class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`
">{{ t('dialog.close') }}</q-tooltip>
<q-btn
dense
flat
icon="close"
v-close-popup
>
<q-tooltip
:class="($q.dark.isActive ? `bg-black` : `bg-white`) + ` text-primary`"
>{{ t('dialog.close') }}</q-tooltip
>
</q-btn>
</q-bar>
@@ -114,23 +270,64 @@
<q-card-section class="q-pt-none">
<div class="row">
<div v-for="(mygallery, index) in getlistimages()" :key="index">
<div class="q-pa-sm barwidth" @dragenter="onDragEnter" @dragleave="onDragLeave" @dragover="onDragOver">
<div
v-for="(mygallery, index) in getlistimages()"
:key="index"
>
<div
class="q-pa-sm barwidth"
@dragenter="onDragEnter"
@dragleave="onDragLeave"
@dragover="onDragOver"
>
<q-bar class="bg-primary text-white">
<q-btn flat round dense icon="menu" class="q-mr-sm" />
<q-btn v-if="canModify" flat round icon="fas fa-copy" size="sm"
@click="copytoclipboard(mygallery)"></q-btn>
<div>Foto {{ index + 1 }}</div>
<q-btn
flat
round
dense
icon="menu"
class="q-mr-sm"
/>
<q-btn
v-if="canModify"
flat
round
icon="fas fa-copy"
size="sm"
@click="copytoclipboard(mygallery)"
></q-btn>
<div v-if="isIMG()">Foto {{ index + 1 }}</div>
<div v-else-if="isPDF()">PDF {{ index + 1 }}</div>
<q-space></q-space>
<q-btn v-if="canModify" flat round color="red" icon="fas fa-trash-alt"
@click="deleteFile(mygallery)"></q-btn>
<q-btn
v-if="canModify"
flat
round
color="red"
icon="fas fa-trash-alt"
@click="deleteFile(mygallery)"
></q-btn>
</q-bar>
<q-card :id="mygallery._id" :class="getclass()" :data-ind="index" :draggable="canModify"
@dragstart="onDragStart" @drop="onDrop">
<q-img :src="tools.getsrcimg(mygallery, getrealdirectory())" :class="getclimg()"
@click="ImgFullScreen(mygallery)" :alt="mygallery.alt">
<div v-if="mygallery.description" class="absolute-bottom text-shadow">
<q-card
:id="mygallery._id"
:class="getclass()"
:data-ind="index"
:draggable="canModify"
@dragstart="onDragStart"
@drop="onDrop"
>
<q-img
v-if="isIMG()"
:src="tools.getsrcimg(mygallery, getrealdirectory())"
:class="getclimg()"
@click="ImgFullScreen(mygallery)"
:alt="mygallery.alt"
>
<div
v-if="mygallery.description"
class="absolute-bottom text-shadow"
>
<!-- <div class="text-h6 text-trans">{{ mygallery.description }} </div> -->
<div class="text-subtitle-carica text-trans">
{{ mygallery.description }}
@@ -138,51 +335,117 @@
</div>
</q-img>
<q-card-section>
<q-field v-if="canModify" stack-label dense label="Nome File">
<q-field
v-if="canModify"
stack-label
dense
label="Nome File"
>
<template v-slot:control>
<div class="self-center full-width no-outline" tabindex="0">
<div
class="self-center full-width no-outline"
tabindex="0"
>
{{ mygallery.imagefile }}
</div>
</template>
</q-field>
<q-input v-if="canModify" v-model="mygallery.description" dense :label="$t('proj.longdescr')"
@keyup.enter.stop @update:model-value="save" debounce="1000" autofocus>
<q-input
v-if="canModify"
v-model="mygallery.description"
dense
:label="$t('proj.longdescr')"
@keyup.enter.stop
@update:model-value="save"
debounce="1000"
autofocus
>
</q-input>
</q-card-section>
</q-card>
</div>
</div>
<div v-if="canModify" class="q-pa-sm">
<div class="q-gutter-sm" style="max-height: 200px; width: 208px">
<q-uploader label="Aggiungi Immagine" accept="image/*" :url="getUrl()" :headers="tools.getheaders()"
:max-file-size="40000000" multiple auto-upload hide-upload-btn no-thumbnails @uploaded="uploaded"
@rejected="onRejected" style="width: 208px"></q-uploader>
<div
v-if="canModify"
class="q-pa-sm"
>
<div
class="q-gutter-sm"
style="max-height: 200px; width: 208px"
>
<q-uploader
:label="`Aggiungi ` + getFileTypeStr()"
:accept="getAccept()"
:url="getUrl()"
:headers="tools.getheaders()"
:max-file-size="40000000"
multiple
auto-upload
hide-upload-btn
no-thumbnails
@uploaded="uploaded"
@rejected="onRejected"
style="width: 208px"
></q-uploader>
</div>
</div>
<div v-if="!isInModif && !isListImgValid && imagebak">
<q-card :class="getclass()" @click="ImgFullScreen(mygallery)">
<q-img :src="imagebak" :class="getclimg()"> </q-img>
<q-card
:class="getclass()"
@click="ImgFullScreen(mygallery)"
>
<q-img
:src="imagebak"
:class="getclimg()"
>
</q-img>
</q-card>
</div>
</div>
<q-card-actions align="right">
<q-btn v-if="canModify" flat label="Annulla" color="primary" v-close-popup />
<q-btn v-if="canModify" label="salva" color="primary" v-close-popup @click="save" />
<q-btn v-if="!canModify" label="Chiudi" color="primary" v-close-popup />
<q-btn
v-if="canModify"
flat
label="Annulla"
color="primary"
v-close-popup
/>
<q-btn
v-if="canModify"
label="salva"
color="primary"
v-close-popup
@click="save"
/>
<q-btn
v-if="!canModify"
label="Chiudi"
color="primary"
v-close-popup
/>
</q-card-actions>
</q-card-section>
</q-card>
</q-dialog>
<q-dialog v-model="fullscreen" :maximized="false" transition-show="slide-up" transition-hide="slide-down">
<q-dialog
v-model="fullscreen"
:maximized="false"
transition-show="slide-up"
transition-hide="slide-down"
>
<q-card class="my-card">
<q-img v-if="fullscreensrc" alt="fullscreen" :src="fullscreensrc" @click="fullscreen = false"></q-img>
<q-img
v-if="fullscreensrc"
alt="fullscreen"
:src="fullscreensrc"
@click="fullscreen = false"
></q-img>
</q-card>
</q-dialog>
</template>
<script lang="ts" src="./CGallery.ts">
</script>
<script lang="ts" src="./CGallery.ts"></script>
<style lang="scss" scoped>
@import './CGallery.scss';

View File

@@ -520,6 +520,7 @@
{{ t(col.label_trans) }}
</span>
<CGallery
:filetype="shared_consts.FILETYPE.IMG"
:imagebak="
col.showpicprofile_ifnotset
? userStore.getImgByProfile(row, true) === ''
@@ -559,6 +560,7 @@
{{ t(col.label_trans ? col.label_trans : '') }}
</span>
<CGallery
:filetype="shared_consts.FILETYPE.IMG"
:imagebak="
col.showpicprofile_ifnotset
? userStore.getImgByProfile(row['profile'], true)
@@ -619,6 +621,76 @@
></q-btn>
</div>
</div>
<div
v-else-if="col.fieldtype === costanti.FieldType.pdf"
style="text-align: center"
>
<div v-if="canEdit">
<span class="text-h7 text-weight-bold row justify-center">
{{ t(col.label_trans ? col.label_trans : '') }}
</span>
<CGallery
:filetype="shared_consts.FILETYPE.PDF"
:imagebak="
col.showpicprofile_ifnotset
? userStore.getImgByProfile(row['profile'], true)
: ''
"
:title="tools.getTitleGall(table)"
:directory="tools.getDirectoryGall(myrow, table, mypath)"
:imgGall="
myvalue && myvalue.imagefile
? [myvalue]
: [{ imagefile: myvalue, vers_img: 1 }]
"
:edit="isviewfield()"
:canModify="canModify"
:isInModif="isInModif"
:single="true"
@update:imgGall="changevalRec"
@showandsave="Savedb"
>
</CGallery>
</div>
<div v-else>
<div
v-if="myvalue"
class="text-center"
>
<q-img
icon="fas fa-file-pdf"
class="text-center"
style="height: 100px; width: 100px"
alt="foto"
>
</q-img>
</div>
<div
v-else
class="text-center"
>
<q-img
:src="
col.showpicprofile_ifnotset
? userStore.getImgByProfile(row['profile'], true)
: '/images/noimg-user.svg'
"
class="text-center"
style="height: 100px; width: 100px"
alt="nessun PDF"
>
</q-img>
</div>
<q-btn
v-if="myvalue"
label="Rimuovi Foto"
color="blue"
icon="fas fa-trash-alt"
size="sm"
@click="removephoto"
></q-btn>
</div>
</div>
<div v-else-if="col.fieldtype === costanti.FieldType.image_and_filename">
<div v-if="canEdit">
{{ t('reg.photo') }}

View File

@@ -146,7 +146,7 @@ export default defineComponent({
}
function riaggiornaListaProdAlGenitore() {
aggiornaLista();
aggiornaLista(false);
}
const editOn = computed({
@@ -996,14 +996,15 @@ export default defineComponent({
persistent: false,
})
.onOk(() => {
aggiornaLista(product);
aggiornaLista(false, product);
});
};
function aggiornaLista(deleteelem: any = null) {
function aggiornaLista(frominput: boolean, deleteelem: any = null) {
const precsearch = searchText.value;
searchText.value = '';
if (frominput)
internalProducts.value = [...props.lista_prodotti];
if (deleteelem) {
@@ -1054,7 +1055,7 @@ export default defineComponent({
// Funzione chiamata alla fine del drag-and-drop
const onDragEnd = () => {
// console.log("Nuovo ordine:", internalProducts.value);
aggiornaLista();
aggiornaLista(false);
};
function formatAuthors(authors: IAuthor[] | undefined | null): string {
@@ -1119,7 +1120,7 @@ export default defineComponent({
return prod;
});
aggiornaLista();
aggiornaLista(false);
}
async function updateproductmodif(element: any) {

View File

@@ -76,6 +76,8 @@ export interface IRaccoltaCatalogo {
nomefile_da_generare?: string
pdf_copertina?: IImg
pdf_generato?: string
data_generato?: Date
pdf_online?: string

View File

@@ -43,6 +43,7 @@ const msg_it = {
list: 'Lista',
select_image: 'Scegli un\'Immagine',
load_image: 'Carica Immagine / Foto',
load_pdf: 'Carica PDF',
data_choose: 'Scegli la Data',
},
profile: {
@@ -2056,6 +2057,7 @@ const msg_it = {
},
cataloglist: {
nomefile_generare: 'Nome del File da generare (PDF)',
op_andor: 'Condizione',
casaeditrice: 'Casa Editrice',
numprodotti: 'Libri presenti',
@@ -2071,6 +2073,7 @@ const msg_it = {
isCatalogoGenerale: 'Fa parte del Catalogo Generale',
collane: 'Collane',
idPageAssigned: 'Pagina Assegnata',
pdf_copertina: 'PDF di copertina',
descr_introduttiva: 'Descrizione Introduttiva (circa 1300 battute)',
editore: 'Marchio Editoriale',
editore_includi: 'Includi Editoriale',

View File

@@ -464,6 +464,7 @@ export const costanti = {
listimages: 1024,
exact: 2048,
image: 3000,
pdf: 3050,
image_and_filename: 3100,
imgcard: 3500,
coordinates: 3800,

View File

@@ -126,7 +126,7 @@ export const colmailinglist = [
]
export const colTableRaccoltaCataloghi = [
AddCol({ name: 'title', label_trans: 'racccat.title' }),
AddCol({ name: 'title', label_trans: 'racccat.title', required: true, }),
AddCol({
name: 'foto_raccolta',
label_trans: 'racccat.foto_raccolta',
@@ -140,11 +140,18 @@ export const colTableRaccoltaCataloghi = [
label_trans: 'cataloglist.idPageAssigned',
fieldtype: costanti.FieldType.select,
jointable: 'mypages_id',
required: true,
}),
AddCol({
name: 'nomefile_da_generare',
label_trans: 'cataloglist.nomefile_generare',
required: true,
}),
AddCol({
name: 'pdf_copertina',
fieldtype: costanti.FieldType.pdf,
label_trans: 'cataloglist.pdf_copertina',
}),
/*AddCol({