- Assegnazione di linkIdTemplate anche per la "Pagina di Default", in modo che posso da "Templates" cambiare le impostazioni.

This commit is contained in:
Surya Paolo
2025-05-14 17:04:18 +02:00
parent fc8a954eb0
commit f30cbf072a
13 changed files with 1508 additions and 1251 deletions

View File

@@ -442,7 +442,7 @@ export const shared_consts = {
TABLES_DIRECTORY_A_PARTE: ['mygroups'], TABLES_DIRECTORY_A_PARTE: ['mygroups'],
TABLES_WITH_ADMINS: ['mygroups', 'circuits'], TABLES_WITH_ADMINS: ['mygroups', 'circuits'],
TABLES_DIRECTORY_SINGLE_IMG: ['circuits', 'catalogs', 'raccoltacataloghis'], TABLES_DIRECTORY_SINGLE_IMG: ['circuits', 'catalogs', 'raccoltacataloghis'],
TABLES_IMAGEFILE_SINGOLO: ['productInfos'], TABLES_IMAGEFILE_SINGOLO: ['productInfos', 'products'],
TABLES_PER_EDITORI: ['catalogs', 'raccoltacataloghis'], TABLES_PER_EDITORI: ['catalogs', 'raccoltacataloghis'],

View File

@@ -81,7 +81,7 @@ export default defineComponent({
watch(() => props.modelValue, (newVal) => { watch(() => props.modelValue, (newVal) => {
optcatalogo.value = { ...newVal }; optcatalogo.value = { ...newVal };
// updateCatalogoPadre() // updateCatalogoPadre()
}, { deep: false }); }, { deep: true });
function updateCatalogoPadre() { function updateCatalogoPadre() {
emit('update:modelValue', optcatalogo.value); emit('update:modelValue', optcatalogo.value);

View File

@@ -1,52 +1,75 @@
import type { PropType } from 'vue'; import type { PropType } from 'vue';
import { import { defineComponent, onMounted, computed, ref, toRef, watch, nextTick } from 'vue';
defineComponent, onMounted, computed, ref, toRef, watch,
nextTick,
} from 'vue'
import type { IOptCatalogo, IColGridTable, IElemText, IElementiScheda, IMyCard, IMyElem, IMyScheda, ISchedaSingola, IText } from '@src/model'; import type {
import { IImgGallery, ILabelValue, IMyPage, IOperators } from '@src/model' IOptCatalogo,
import { useGlobalStore } from '@store/globalStore' IColGridTable,
IElemText,
IElementiScheda,
IMyCard,
IMyElem,
IMyScheda,
ISchedaSingola,
IText,
} from '@src/model';
import { IImgGallery, ILabelValue, IMyPage, IOperators } from '@src/model';
import { useGlobalStore } from '@store/globalStore';
import { CImgTitle } from '@src/components/CImgTitle' import { CImgTitle } from '@src/components/CImgTitle';
import { CImgPoster } from '@src/components/CImgPoster' import { CImgPoster } from '@src/components/CImgPoster';
import { CTitle } from '@src/components/CTitle/index' import { CTitle } from '@src/components/CTitle/index';
import { tools } from '@tools' import { tools } from '@tools';
import { shared_consts } from '@src/common/shared_vuejs' import { shared_consts } from '@src/common/shared_vuejs';
import { LandingFooter } from '@src/components/LandingFooter' import { LandingFooter } from '@src/components/LandingFooter';
import { COpenStreetMap } from '@src/components/COpenStreetMap' import { COpenStreetMap } from '@src/components/COpenStreetMap';
import { CCardCarousel } from '@src/components/CCardCarousel' import { CCardCarousel } from '@src/components/CCardCarousel';
import { CMyPage } from '@src/components/CMyPage' import { CMyPage } from '@src/components/CMyPage';
import { CMyPageIntro } from '@src/components/CMyPageIntro' import { CMyPageIntro } from '@src/components/CMyPageIntro';
import { CEventsCalendar } from '@src/components/CEventsCalendar' import { CEventsCalendar } from '@src/components/CEventsCalendar';
import { CMyEditor } from '@src/components/CMyEditor' import { CMyEditor } from '@src/components/CMyEditor';
import { CMySlider } from '@src/components/CMySlider' import { CMySlider } from '@src/components/CMySlider';
import { CMyFieldRec } from '@src/components/CMyFieldRec' import { CMyFieldRec } from '@src/components/CMyFieldRec';
import { CSelectImage } from '@src/components/CSelectImage' import { CSelectImage } from '@src/components/CSelectImage';
import { CSelectAnimation } from '@src/components/CSelectAnimation' import { CSelectAnimation } from '@src/components/CSelectAnimation';
import { CSelectColor } from '@src/components/CSelectColor' import { CSelectColor } from '@src/components/CSelectColor';
import { CSelectFontSize } from '@src/components/CSelectFontSize' import { CSelectFontSize } from '@src/components/CSelectFontSize';
import { CMySize } from '@src/components/CMySize' import { CMySize } from '@src/components/CMySize';
import { CBorders } from '@src/components/CBorders' import { CBorders } from '@src/components/CBorders';
import { CMyDimensioni } from '@src/components/CMyDimensioni' import { CMyDimensioni } from '@src/components/CMyDimensioni';
import { CMyText } from '@src/components/CMyText' import { CMyText } from '@src/components/CMyText';
import MixinMetaTags from '@src/mixins/mixin-metatags' import MixinMetaTags from '@src/mixins/mixin-metatags';
import MixinBase from '@src/mixins/mixin-base' import MixinBase from '@src/mixins/mixin-base';
import { useQuasar } from 'quasar' import { useQuasar } from 'quasar';
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n';
import { emitKeypressEvents } from 'readline' import { emitKeypressEvents } from 'readline';
import { costanti } from '@costanti' import { costanti } from '@costanti';
import objectId from '@src/js/objectId' import objectId from '@src/js/objectId';
import { useProducts } from '@src/store/Products' import { useProducts } from '@src/store/Products';
export default defineComponent({ export default defineComponent({
name: 'CMyEditElem', name: 'CMyEditElem',
components: { components: {
CImgTitle, CTitle, LandingFooter, CEventsCalendar, CImgTitle,
CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro, CMyEditor, CMyFieldRec, CTitle,
CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation, CMySlider, LandingFooter,
CMySize, CBorders, CMyDimensioni, CMyText, CEventsCalendar,
CCardCarousel,
COpenStreetMap,
CMyPage,
CMyPageIntro,
CMyEditor,
CMyFieldRec,
CSelectColor,
CSelectFontSize,
CSelectImage,
CImgPoster,
CSelectAnimation,
CMySlider,
CMySize,
CBorders,
CMyDimensioni,
CMyText,
}, },
emits: ['saveElem', 'selElemClick', 'toggleSize', 'deleteElem', 'dupPage', 'expPage', 'impPage'], emits: ['saveElem', 'selElemClick', 'toggleSize', 'deleteElem', 'dupPage', 'expPage', 'impPage'],
props: { props: {
@@ -76,131 +99,130 @@ export default defineComponent({
}, },
}, },
setup(props, { emit }) { setup(props, { emit }) {
const globalStore = useGlobalStore() const globalStore = useGlobalStore();
const { setmeta, getsrcbyimg } = MixinMetaTags() const { setmeta, getsrcbyimg } = MixinMetaTags();
const { setValDb, getValDb } = MixinBase() const { setValDb, getValDb } = MixinBase();
const $q = useQuasar();
const { t } = useI18n();
const $q = useQuasar() const animare = ref(0);
const { t } = useI18n() const slide = ref(0);
const slide2 = ref(0);
const tabCard = ref(0);
const tabScheda = ref(0);
const tabElemsText = ref('elem0');
const arrPages = ref([] as any[]);
const disableSave = ref(true);
const enableEdit = ref(true);
const elemChanged = ref(false);
const enableAdd = ref(true);
const tabadd = ref('tools');
const Products = useProducts();
const animare = ref(0) const neworder = ref(<number | undefined>0);
const slide = ref(0)
const slide2 = ref(0)
const tabCard = ref(0)
const tabScheda = ref(0)
const tabElemsText = ref('elem0')
const arrPages = ref([] as any[])
const disableSave = ref(true)
const enableEdit = ref(true)
const elemChanged = ref(false)
const enableAdd = ref(true)
const tabadd = ref('tools')
const Products = useProducts() const idSchedaDaCopiare = ref('');
const neworder = ref(<number | undefined>0) const myel = toRef(props, 'myelem');
const newtype = ref(<any>'');
const visuadd = ref(false);
const direzadd = ref(1);
const idSchedaDaCopiare = ref('') const selectedClasses = ref(<any>[]);
const myel = toRef(props, 'myelem') watch(
const newtype = ref(<any>'') () => myel.value.order,
const visuadd = ref(false) (value, oldval) => {
const direzadd = ref(1) mounted();
}
const selectedClasses = ref(<any>[]) );
watch(() => myel.value.order, (value, oldval) => {
mounted()
})
function getArrDisciplines() { function getArrDisciplines() {
return globalStore.disciplines.filter((rec: any) => rec.showinhome) return globalStore.disciplines.filter((rec: any) => rec.showinhome);
} }
function saveElem(exit?: boolean) { function saveElem(exit?: boolean) {
// Save Elem record // Save Elem record
const myelem = props.myelem const myelem = props.myelem;
myelem.order = neworder.value myelem.order = neworder.value;
globalStore.saveMyElem($q, t, myelem).then((ris) => { globalStore.saveMyElem($q, t, myelem).then((ris) => {
if (ris) { if (ris) {
// OK // OK
disableSave.value = true disableSave.value = true;
emit('saveElem', myelem) emit('saveElem', myelem);
if (exit) if (exit) elemChanged.value = false;
elemChanged.value = false
} }
}) });
} }
function getNewOrderByThisElem() { function getNewOrderByThisElem() {
const myelem = props.myelem const myelem = props.myelem;
let neword = 0 let neword = 0;
if (myelem) { if (myelem) {
neword = myelem.order! neword = myelem.order!;
const recfound = globalStore.getMyElemNextThisElemId(props.idPage, myelem._id) const recfound = globalStore.getMyElemNextThisElemId(props.idPage, myelem._id);
if (recfound) { if (recfound) {
neword = Math.round((recfound.order! + myelem.order!) / 2) neword = Math.round((recfound.order! + myelem.order!) / 2);
} }
} }
return neword return neword;
} }
async function addNewElem(elemsel: any, direz: number) { async function addNewElem(elemsel: any, direz: number) {
visuadd.value = false;
visuadd.value = false let neword = 0;
let neword = 0 let recfound = null;
let recfound = null if (direz === -1) {
// Sopra
if (direz === -1) { // Sopra
// ottieni l'elemento precedente, mantenendo l'ordinamento // ottieni l'elemento precedente, mantenendo l'ordinamento
recfound = globalStore.getMyElemPrecThisElemId(props.idPage, elemsel._id) recfound = globalStore.getMyElemPrecThisElemId(props.idPage, elemsel._id);
} else if (direz === 1) { // Sotto } else if (direz === 1) {
// Sotto
// ottieni l'elemento precedente, mantenendo l'ordinamento // ottieni l'elemento precedente, mantenendo l'ordinamento
recfound = globalStore.getMyElemNextThisElemId(props.idPage, elemsel._id) recfound = globalStore.getMyElemNextThisElemId(props.idPage, elemsel._id);
} }
if (recfound) { if (recfound) {
// get the middle of the order number between thie 2 elements // get the middle of the order number between thie 2 elements
neword = Math.round((recfound.order + elemsel.order) / 2) neword = Math.round((recfound.order + elemsel.order) / 2);
} }
const newrec = await globalStore.prepareAddNewElem(neword, $q, t, props.myelem, newtype.value) const newrec = await globalStore.prepareAddNewElem(neword, $q, t, props.myelem, newtype.value);
emit('selElemClick', newrec) emit('selElemClick', newrec);
// emit('updateAll', newrec) // emit('updateAll', newrec)
} }
async function dupPage() { async function dupPage() {
emit('dupPage', null) emit('dupPage', null);
} }
async function exportPage() { async function exportPage() {
emit('expPage', null) emit('expPage', null);
} }
async function importPage() { async function importPage() {
emit('impPage', null) emit('impPage', null);
} }
async function dupElem(order?: number) { async function dupElem(order?: number) {
const newrec: IMyElem = tools.jsonCopy(props.myelem);
const newrec: IMyElem = tools.jsonCopy(props.myelem) newrec._id = undefined;
newrec.order = getNewOrderByThisElem();
newrec._id = undefined
newrec.order = getNewOrderByThisElem()
if (newrec.type === shared_consts.ELEMTYPE.HTML) { if (newrec.type === shared_consts.ELEMTYPE.HTML) {
newrec.containerHtml = 'Copia di ' + newrec.containerHtml newrec.containerHtml = 'Copia di ' + newrec.containerHtml;
} }
const mynewelem = await globalStore.addNewElem($q, t, newrec) const mynewelem = await globalStore.addNewElem($q, t, newrec);
emit('selElemClick', mynewelem)
emit('selElemClick', mynewelem);
} }
function delElem() { function delElem() {
@@ -215,88 +237,81 @@ export default defineComponent({
cancel: true, cancel: true,
persistent: false, persistent: false,
}).onOk(async () => { }).onOk(async () => {
// Save Elem record // Save Elem record
await globalStore.delMyElem($q, t, props.myelem).then((ris) => { await globalStore.delMyElem($q, t, props.myelem).then((ris) => {
if (ris) { if (ris) {
// OK // OK
disableSave.value = true disableSave.value = true;
emit('deleteElem', props.myelem) emit('deleteElem', props.myelem);
} }
}) });
}) });
} }
function modifElem() { function modifElem() {
disableSave.value = false disableSave.value = false;
elemChanged.value = true elemChanged.value = true;
} }
function modifElemAndSchede() { function modifElemAndSchede() {
modifElem() modifElem();
myel.value.catalogo!.aggiorna++
myel.value.catalogo!.aggiorna++;
} }
function mounted() { function mounted() {
try { try {
neworder.value = props.myelem.order neworder.value = props.myelem.order;
arrPages.value = [] arrPages.value = [];
arrPages.value.push({ label: '[Vuoto]', path: '' }) arrPages.value.push({ label: '[Vuoto]', path: '' });
for (const page of globalStore.mypage) { for (const page of globalStore.mypage) {
const rec = { const rec = {
// @ts-ignore // @ts-ignore
label: page.title, label: page.title,
// @ts-ignore // @ts-ignore
value: page.idPage value: page.idPage,
} };
arrPages.value.push(rec) arrPages.value.push(rec);
} }
if (props.myelem) if (props.myelem) newtype.value = props.myelem.type;
newtype.value = props.myelem.type
if (myel.value.class4) { if (myel.value.class4) {
selectedClasses.value = myel.value.class4.split(' ').filter(Boolean) selectedClasses.value = myel.value.class4.split(' ').filter(Boolean);
} }
if (myel.value.catalogo && myel.value.catalogo?.arrSchede) { if (myel.value.catalogo && myel.value.catalogo?.arrSchede) {
for (const recscheda of myel.value.catalogo!.arrSchede) { for (const recscheda of myel.value.catalogo!.arrSchede) {
if (recscheda.scheda) { if (recscheda.scheda) {
recscheda.scheda.testo_right_attaccato = tools.resetIText(recscheda.scheda?.testo_right_attaccato) recscheda.scheda.testo_right_attaccato = tools.resetIText(recscheda.scheda?.testo_right_attaccato);
recscheda.scheda.testo_right = tools.resetIText(recscheda.scheda?.testo_right) recscheda.scheda.testo_right = tools.resetIText(recscheda.scheda?.testo_right);
recscheda.scheda.testo_bottom = tools.resetIText(recscheda.scheda?.testo_bottom) recscheda.scheda.testo_bottom = tools.resetIText(recscheda.scheda?.testo_bottom);
if ((!recscheda.scheda?.dimensioni.pagina.dimensioni)) { if (!recscheda.scheda?.dimensioni.pagina.dimensioni) {
recscheda.scheda.dimensioni.pagina = tools.resetRecIPagina(recscheda.scheda?.dimensioni.pagina) recscheda.scheda.dimensioni.pagina = tools.resetRecIPagina(recscheda.scheda?.dimensioni.pagina);
} }
if (!recscheda.scheda?.dimensioni?.pagina?.testo_up) { if (!recscheda.scheda?.dimensioni?.pagina?.testo_up) {
recscheda.scheda!.dimensioni.pagina.testo_up = tools.resetIText(null) recscheda.scheda!.dimensioni.pagina.testo_up = tools.resetIText(null);
} }
if (!recscheda.scheda?.dimensioni?.pagina?.testo_title) { if (!recscheda.scheda?.dimensioni?.pagina?.testo_title) {
recscheda.scheda!.dimensioni.pagina.testo_title = tools.resetIText(null) recscheda.scheda!.dimensioni.pagina.testo_title = tools.resetIText(null);
} }
if (!recscheda.scheda?.dimensioni?.pagina?.testo_down) { if (!recscheda.scheda?.dimensioni?.pagina?.testo_down) {
recscheda.scheda!.dimensioni.pagina.testo_down = tools.resetIText(null) recscheda.scheda!.dimensioni.pagina.testo_down = tools.resetIText(null);
} }
if (!recscheda.scheda?.etichette?.novita?.show) { if (!recscheda.scheda?.etichette?.novita?.show) {
recscheda.scheda.etichette!.novita = { recscheda.scheda.etichette!.novita = {
show: false, show: false,
months: 6, months: 6,
} };
recscheda.scheda.etichette!.bestseller = { recscheda.scheda.etichette!.bestseller = {
show: false, show: false,
quantiFattRaggiunti: 0, quantiFattRaggiunti: 0,
};
}
} }
if ((!recscheda.scheda?.barcode || !recscheda.scheda?.barcode.font)) { if (!recscheda.scheda?.barcode || !recscheda.scheda?.barcode.font) {
recscheda.scheda.barcode = { recscheda.scheda.barcode = {
show: false, show: false,
format: '', format: '',
@@ -307,45 +322,49 @@ export default defineComponent({
font: { font: {
name: '', name: '',
size: '11', size: '11',
} },
} };
} }
} }
} }
} }
if (myel.value.catalogo) { if (myel.value.catalogo) {
if (!myel.value.catalogo.first_page) { if (!myel.value.catalogo.first_page) {
myel.value.catalogo.first_page = tools.resetRecIDimensioni(null) myel.value.catalogo.first_page = tools.resetRecIDimensioni(null);
} }
myel.value.catalogo.first_page = tools.resetRecIDimensioni(myel.value.catalogo.first_page) myel.value.catalogo.first_page = tools.resetRecIDimensioni(myel.value.catalogo.first_page);
} }
if (myel.value.catalogo) { if (myel.value.catalogo) {
if (!myel.value.catalogo.last_page) if (!myel.value.catalogo.last_page) myel.value.catalogo.last_page = tools.resetRecIDimensioni(null);
myel.value.catalogo.last_page = tools.resetRecIDimensioni(null)
myel.value.catalogo.last_page = tools.resetRecIDimensioni(myel.value.catalogo.last_page) myel.value.catalogo.last_page = tools.resetRecIDimensioni(myel.value.catalogo.last_page);
} }
if (myel.value.catalogo) { if (myel.value.catalogo) {
if (!myel.value.catalogo.areadistampa) { if (!myel.value.catalogo.areadistampa) {
myel.value.catalogo.areadistampa = tools.resetRecIAreaDiStampa(null) myel.value.catalogo.areadistampa = tools.resetRecIAreaDiStampa(null);
myel.value.catalogo.areadistampa.margini = { left: '0.59', top: '0.59', right: '0.59', bottom: '0.28' } myel.value.catalogo.areadistampa.margini = { left: '0.59', top: '0.59', right: '0.59', bottom: '0.28' };
} }
myel.value.catalogo.areadistampa = tools.resetRecIAreaDiStampa(myel.value.catalogo.areadistampa) myel.value.catalogo.areadistampa = tools.resetRecIAreaDiStampa(myel.value.catalogo.areadistampa);
} }
if (myel.value.catalogo && !myel.value.catalogo.dimensioni_def) { if (myel.value.catalogo && !myel.value.catalogo.dimensioni_def) {
myel.value.catalogo.dimensioni_def = { pagina: {} } myel.value.catalogo.dimensioni_def = {
isTemplate: false,
linkIdTemplate: '',
name: '',
pagina: {},
};
} }
if (myel.value.catalogo && myel.value.catalogo.dimensioni_def) { if (myel.value.catalogo && myel.value.catalogo.dimensioni_def) {
myel.value.catalogo.dimensioni_def.pagina = tools.resetRecIDimensioni(myel.value.catalogo.dimensioni_def.pagina) myel.value.catalogo.dimensioni_def.pagina = tools.resetRecIDimensioni(
myel.value.catalogo.dimensioni_def.pagina
);
} }
} catch (error) { } catch (error) {
console.log(error) console.log(error);
} }
} }
@@ -355,43 +374,39 @@ export default defineComponent({
} }
function addNewCard() { function addNewCard() {
if (!myel.value.listcards) if (!myel.value.listcards) myel.value.listcards = [];
myel.value.listcards = []
myel.value.listcards.push({ _id: objectId(), imagefile: '', alt: '', description: '', vers_img: 0 })
modifElem()
myel.value.listcards.push({ _id: objectId(), imagefile: '', alt: '', description: '', vers_img: 0 });
modifElem();
} }
function addNewScheda() { function addNewScheda() {
Products.addNewScheda(myel.value.catalogo);
Products.addNewScheda(myel.value.catalogo) modifElem();
modifElem()
} }
function copyfromTemplate(indscheda: number) { function copyfromTemplate(indscheda: number) {
// Estrai l'id da copiare e sostituisci tutto con questo // Estrai l'id da copiare e sostituisci tutto con questo
if (!idSchedaDaCopiare.value) { if (!idSchedaDaCopiare.value) {
return false return false;
} }
const arrschede: ISchedaSingola[] = globalStore.getMySchede() const arrschede: ISchedaSingola[] = globalStore.getMySchede();
if (arrschede.length <= 0) { if (arrschede.length <= 0) {
return false return false;
} }
const myschedatocopy = arrschede.find((recscheda: ISchedaSingola) => recscheda.scheda!._id === idSchedaDaCopiare.value) const myschedatocopy = arrschede.find(
const schedadest = myel.value.catalogo!.arrSchede![indscheda] (recscheda: ISchedaSingola) => recscheda.scheda!._id === idSchedaDaCopiare.value
);
const schedadest = myel.value.catalogo!.arrSchede![indscheda];
if (myschedatocopy) { if (myschedatocopy) {
const newscheda = myschedatocopy.scheda!.name;
const newscheda = myschedatocopy.scheda!.name const msg = 'Sostituisci questa scheda (' + schedadest.scheda?.name + ') con "' + newscheda + '" ?';
const msg = 'Sostituisci questa scheda (' + schedadest.scheda?.name + ') con "' + newscheda + '" ?'
$q.dialog({ $q.dialog({
message: msg, message: msg,
@@ -404,107 +419,100 @@ export default defineComponent({
cancel: true, cancel: true,
persistent: false, persistent: false,
}).onOk(async () => { }).onOk(async () => {
const myschedadest: ISchedaSingola = myel.value.catalogo!.arrSchede![indscheda] const myschedadest: ISchedaSingola = myel.value.catalogo!.arrSchede![indscheda];
myschedadest.scheda = tools.jsonCopy(myschedatocopy.scheda) myschedadest.scheda = tools.jsonCopy(myschedatocopy.scheda);
myschedadest.scheda!._id = objectId() myschedadest.scheda!._id = objectId();
myschedadest.order = 20 myschedadest.order = 20;
myschedadest.scheda!.name = myschedadest.scheda!.name + '_copia'
myschedadest.scheda!.isTemplate = false
})
myschedadest.scheda!.name = myschedadest.scheda!.name + '_copia';
myschedadest.scheda!.isTemplate = false;
});
} }
} }
function dupNewScheda(id: string) { function dupNewScheda(id: string) {
if (!myel.value.catalogo!.arrSchede) if (!myel.value.catalogo!.arrSchede) return;
return
const myfindscheda = myel.value.catalogo!.arrSchede.find((scheda: ISchedaSingola) => scheda._id === id) const myfindscheda = myel.value.catalogo!.arrSchede.find((scheda: ISchedaSingola) => scheda._id === id);
if (myfindscheda) { if (myfindscheda) {
const myscheda = tools.jsonCopy(myfindscheda) const myscheda = tools.jsonCopy(myfindscheda);
delete myscheda._id delete myscheda._id;
delete myscheda.scheda!._id delete myscheda.scheda!._id;
myscheda.numPagineMax = 0 myscheda.numPagineMax = 0;
myscheda.order = myscheda.order + 10 myscheda.order = myscheda.order + 10;
myscheda._id = objectId() myscheda._id = objectId();
myscheda.scheda!._id = objectId() myscheda.scheda!._id = objectId();
myscheda.scheda!.name = myscheda.scheda!.name + '_copia' myscheda.scheda!.name = myscheda.scheda!.name + '_copia';
myscheda.scheda!.isTemplate = false myscheda.scheda!.isTemplate = false;
const bakscheda = [...myel.value.catalogo!.arrSchede] const bakscheda = [...myel.value.catalogo!.arrSchede];
myel.value.catalogo!.arrSchede.push(myscheda) myel.value.catalogo!.arrSchede.push(myscheda);
modifElem() modifElem();
} }
} }
function dupNewCard() { function dupNewCard() {
if (!myel.value.listcards) if (!myel.value.listcards) return;
return
const myfindcard = myel.value.listcards[tabCard.value] const myfindcard = myel.value.listcards[tabCard.value];
if (myfindcard) { if (myfindcard) {
const mycard = tools.jsonCopy(myfindcard) const mycard = tools.jsonCopy(myfindcard);
delete mycard._id delete mycard._id;
mycard._id = objectId() mycard._id = objectId();
const bakcard = [...myel.value.listcards] const bakcard = [...myel.value.listcards];
myel.value.listcards = [] myel.value.listcards = [];
myel.value.listcards = [...bakcard, mycard] myel.value.listcards = [...bakcard, mycard];
modifElem() modifElem();
} }
} }
function addNewElemText() { function addNewElemText() {
if (!myel.value.elemsText) if (!myel.value.elemsText) myel.value.elemsText = [];
myel.value.elemsText = []
myel.value.elemsText.push({ _id: objectId(), text: '', color: '#ffffff', class: '', size: '', anim: { name: 'FadeIn', clduration: '', cldelay: '', timingtype: 'ease-in-out' } }) myel.value.elemsText.push({
modifElem() _id: objectId(),
text: '',
color: '#ffffff',
class: '',
size: '',
anim: { name: 'FadeIn', clduration: '', cldelay: '', timingtype: 'ease-in-out' },
});
modifElem();
} }
function getClass() { function getClass() {
let mycl = '' let mycl = '';
if (props.myelem.align === shared_consts.ALIGNTYPE.CEHTER) { if (props.myelem.align === shared_consts.ALIGNTYPE.CEHTER) {
mycl += ' align_center' mycl += ' align_center';
} else if (props.myelem.align === shared_consts.ALIGNTYPE.RIGHT) { } else if (props.myelem.align === shared_consts.ALIGNTYPE.RIGHT) {
mycl += ' align_right' mycl += ' align_right';
} else if (props.myelem.align === shared_consts.ALIGNTYPE.LEFT) { } else if (props.myelem.align === shared_consts.ALIGNTYPE.LEFT) {
mycl += ' align_left' mycl += ' align_left';
} }
return mycl return mycl;
} }
function showFit() { function showFit() {
if (props.myelem.type) if (props.myelem.type) return [shared_consts.ELEMTYPE.TEXT].includes(props.myelem.type);
return [shared_consts.ELEMTYPE.TEXT].includes(props.myelem.type) else return false;
else
return false
} }
function delRecCard(id: string, myel: IMyElem) { function delRecCard(id: string, myel: IMyElem) {
// //
if (props.myelem.type === shared_consts.ELEMTYPE.CARD) { if (props.myelem.type === shared_consts.ELEMTYPE.CARD) {
if (myel.listcards) if (myel.listcards) myel.listcards = myel.listcards.filter((card: IMyCard) => card._id !== id);
myel.listcards = myel.listcards.filter((card: IMyCard) => card._id !== id)
} else if (props.myelem.type === shared_consts.ELEMTYPE.IMGPOSTER) { } else if (props.myelem.type === shared_consts.ELEMTYPE.IMGPOSTER) {
if (myel.elemsText) if (myel.elemsText) 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) { function delRecScheda(id: string, myel: IMyElem) {
const myscheda = myel.catalogo!.arrSchede!.find((scheda: ISchedaSingola) => scheda._id === id);
const myscheda = myel.catalogo!.arrSchede!.find((scheda: ISchedaSingola) => scheda._id === id)
if (myscheda) { if (myscheda) {
$q.dialog({ $q.dialog({
@@ -518,45 +526,43 @@ export default defineComponent({
cancel: true, cancel: true,
persistent: false, persistent: false,
}).onOk(async () => { }).onOk(async () => {
// //
myel.catalogo!.arrSchede = myel.catalogo!.arrSchede!.filter((scheda: ISchedaSingola) => scheda._id !== id) myel.catalogo!.arrSchede = myel.catalogo!.arrSchede!.filter((scheda: ISchedaSingola) => scheda._id !== id);
modifElem() 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)
const iscatalogo = costanti.CATALOGO_FIELDS.includes(col.name) const iscatalogo = costanti.CATALOGO_FIELDS.includes(col.name);
const isscheda = costanti.SCHEDA_FIELDS.includes(col.name) const isscheda = costanti.SCHEDA_FIELDS.includes(col.name);
const isIImg = costanti.IMG_FIELDS.includes(col.name) && (col.fieldtype === costanti.FieldType.image) const isIImg = costanti.IMG_FIELDS.includes(col.name) && col.fieldtype === costanti.FieldType.image;
if (col.fieldtype === costanti.FieldType.image) { if (col.fieldtype === costanti.FieldType.image) {
if (iscatalogo) { if (iscatalogo) {
myel.value.catalogo[col.name] = newval.imagefile myel.value.catalogo[col.name] = newval.imagefile;
//console.log('SALVATO IN', col.name, newval.imagefile, 'RIS', myel.value.catalogo[col.name]) //console.log('SALVATO IN', col.name, newval.imagefile, 'RIS', myel.value.catalogo[col.name])
} else if (isscheda) { } else if (isscheda) {
rec[col.name] = newval.imagefile rec[col.name] = newval.imagefile;
} else if (isIImg) { } else if (isIImg) {
if (!rec[col.name]) { if (!rec[col.name]) {
rec[col.name] = {} rec[col.name] = {};
} }
rec[col.name].imagefile = newval.imagefile rec[col.name].imagefile = newval.imagefile;
} else { } else {
myel.value[col.name] = newval.imagefile myel.value[col.name] = newval.imagefile;
} }
} else { } else {
if (iscatalogo) { if (iscatalogo) {
myel.value.catalogo[col.name] = newval myel.value.catalogo[col.name] = newval;
console.log('SALVATO IN', col.name, newval, 'RIS', myel.value.catalogo[col.name]) console.log('SALVATO IN', col.name, newval, 'RIS', myel.value.catalogo[col.name]);
} else if (isscheda) { } else if (isscheda) {
rec[col.name] = newval rec[col.name] = newval;
} else { } else {
myel.value[col.name] = newval myel.value[col.name] = newval;
} }
} }
} }
@@ -567,43 +573,45 @@ export default defineComponent({
props.myelem.listcards.forEach((rec: IMyCard) => { props.myelem.listcards.forEach((rec: IMyCard) => {
if (recpass._id === rec._id) { if (recpass._id === rec._id) {
if (myval.imagefile) { if (myval.imagefile) {
rec.imagefile = myval.imagefile rec.imagefile = myval.imagefile;
rec.vers_img = tools.getGenerateVersionImage() rec.vers_img = tools.getGenerateVersionImage();
} else { } else {
rec.imagefile = myval rec.imagefile = myval;
} }
} }
}) });
} }
} else if (props.myelem.type === shared_consts.ELEMTYPE.IMGPOSTER) { } else if (props.myelem.type === shared_consts.ELEMTYPE.IMGPOSTER) {
if (props.myelem.elemsText) { if (props.myelem.elemsText) {
props.myelem.elemsText.forEach((rec: IElemText) => { props.myelem.elemsText.forEach((rec: IElemText) => {
if (recpass._id === rec._id) { if (recpass._id === rec._id) {
if (myval.imagefile) { if (myval.imagefile) {
rec.text = myval.imagefile rec.text = myval.imagefile;
} else { } else {
rec.text = myval rec.text = myval;
} }
} }
}) });
} }
} else if ((props.myelem.type === shared_consts.ELEMTYPE.IMGTITLE) || } else if (
(props.myelem.type === shared_consts.ELEMTYPE.IMAGE)) { props.myelem.type === shared_consts.ELEMTYPE.IMGTITLE ||
myel.value.image = myval props.myelem.type === shared_consts.ELEMTYPE.IMAGE
myel.value.vers_img = tools.getGenerateVersionImage() ) {
myel.value.image = myval;
myel.value.vers_img = tools.getGenerateVersionImage();
} }
modifElem() modifElem();
} }
function showAnimation() { function showAnimation() {
return (myel.value.type === shared_consts.ELEMTYPE.IMAGE) return (
|| (myel.value.type === shared_consts.ELEMTYPE.IMGTITLE) myel.value.type === shared_consts.ELEMTYPE.IMAGE ||
|| (myel.value.type === shared_consts.ELEMTYPE.TEXT) myel.value.type === shared_consts.ELEMTYPE.IMGTITLE ||
|| (myel.value.type === shared_consts.ELEMTYPE.CARD) myel.value.type === shared_consts.ELEMTYPE.TEXT ||
|| (myel.value.type === shared_consts.ELEMTYPE.HTML) myel.value.type === shared_consts.ELEMTYPE.CARD ||
|| (myel.value.type === shared_consts.ELEMTYPE.CAROUSEL_IMGS) myel.value.type === shared_consts.ELEMTYPE.HTML ||
myel.value.type === shared_consts.ELEMTYPE.CAROUSEL_IMGS
);
} }
/*function updateElem(myvalue: any) { /*function updateElem(myvalue: any) {
@@ -618,10 +626,8 @@ export default defineComponent({
const options = []; const options = [];
let add = ''; let add = '';
if (widthpx) if (widthpx) add = 'px';
add = 'px'
for (let i = 0; i <= 700; i += 50) { for (let i = 0; i <= 700; i += 50) {
options.push({ label: `${i}${add}`, value: `${i}${add}` }); options.push({ label: `${i}${add}`, value: `${i}${add}` });
} }
return options; return options;
@@ -630,22 +636,21 @@ export default defineComponent({
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
modifElem() modifElem();
} }
function updateSizeHeight(value: any) { function updateSizeHeight(value: any) {
if (value) if (value)
myel.value.heightimg = value; // Aggiorna widthimg con il nuovo valore myel.value.heightimg = value; // Aggiorna widthimg con il nuovo valore
else else myel.value.heightimg = '';
myel.value.heightimg = '' modifElem();
modifElem()
} }
function toggleSize() { function toggleSize() {
emit('toggleSize', null) emit('toggleSize', null);
} }
const orderOptions = computed(() => { const orderOptions = computed(() => {
const options = [] const options = [];
for (let i = 0; i <= 100; i += 1) { for (let i = 0; i <= 100; i += 1) {
options.push({ label: i.toString(), value: i }); options.push({ label: i.toString(), value: i });
@@ -659,59 +664,57 @@ export default defineComponent({
}); });
function addOrder(rec: any) { function addOrder(rec: any) {
neworder.value = rec neworder.value = rec;
} }
function addProdSpeciale(rec: any) { function addProdSpeciale(rec: any) {
neworder.value = rec neworder.value = rec;
} }
async function moveElem(direz: any) { async function moveElem(direz: any) {
const myelem = props.myelem const myelem = props.myelem;
const elemprec = globalStore.getMyElemPrecThisElemId(props.idPage, myelem._id) const elemprec = globalStore.getMyElemPrecThisElemId(props.idPage, myelem._id);
const elemnext = globalStore.getMyElemNextThisElemId(props.idPage, myelem._id) const elemnext = globalStore.getMyElemNextThisElemId(props.idPage, myelem._id);
if (!elemprec || !elemnext) if (!elemprec || !elemnext) return false;
return false
let neworder = 0 let neworder = 0;
const oldorder = myelem.order! const oldorder = myelem.order!;
if (direz === -1) { if (direz === -1) {
// UP // UP
neworder = elemprec.order! neworder = elemprec.order!;
elemprec.order = oldorder elemprec.order = oldorder;
if (oldorder === elemprec.order!) { if (oldorder === elemprec.order!) {
const elemprec2 = globalStore.getMyElemPrecThisElemId(props.idPage, elemprec._id) const elemprec2 = globalStore.getMyElemPrecThisElemId(props.idPage, elemprec._id);
neworder = (elemprec2.order! + elemprec.order) / 2 neworder = (elemprec2.order! + elemprec.order) / 2;
elemprec.order = Math.round((oldorder + neworder) / 2) elemprec.order = Math.round((oldorder + neworder) / 2);
} }
await globalStore.saveMyElem($q, t, elemprec) await globalStore.saveMyElem($q, t, elemprec);
emit('saveElem', elemprec) emit('saveElem', elemprec);
} else if (direz === 1) { } else if (direz === 1) {
// DOWN // DOWN
neworder = elemnext.order! neworder = elemnext.order!;
elemnext.order = oldorder elemnext.order = oldorder;
if (oldorder === elemnext.order!) { if (oldorder === elemnext.order!) {
const elemnext2 = globalStore.getMyElemNextThisElemId(props.idPage, elemnext._id) const elemnext2 = globalStore.getMyElemNextThisElemId(props.idPage, elemnext._id);
neworder = (elemnext2.order! + elemnext.order) / 2 neworder = (elemnext2.order! + elemnext.order) / 2;
elemnext.order = Math.round((oldorder + neworder) / 2) elemnext.order = Math.round((oldorder + neworder) / 2);
} }
await globalStore.saveMyElem($q, t, elemnext);
await globalStore.saveMyElem($q, t, elemnext) emit('saveElem', elemnext);
emit('saveElem', elemnext)
} }
myelem.order = neworder myelem.order = neworder;
await globalStore.saveMyElem($q, t, myelem) await globalStore.saveMyElem($q, t, myelem);
emit('saveElem', myelem) emit('saveElem', myelem);
} }
function classiImmagineOptions() { function classiImmagineOptions() {
@@ -725,21 +728,18 @@ export default defineComponent({
} }
function updateClass4(selectedOptions: any) { function updateClass4(selectedOptions: any) {
// Aggiorna selectedClasses // Aggiorna selectedClasses
selectedClasses.value = selectedOptions; selectedClasses.value = selectedOptions;
if (myel.value) { if (myel.value) {
// Imposta myel.class2 come stringa // Imposta myel.class2 come stringa
myel.value.class4 = selectedOptions.join(' '); // Converte l'array in una stringa separata da spazi myel.value.class4 = selectedOptions.join(' '); // Converte l'array in una stringa separata da spazi
saveElem() saveElem();
} }
} }
onMounted(mounted);
onMounted(mounted)
return { return {
tools, tools,
@@ -804,7 +804,6 @@ export default defineComponent({
exportPage, exportPage,
importPage, importPage,
globalStore, globalStore,
} };
}, },
});
})

View File

@@ -1780,6 +1780,38 @@
label="Pagina di Default" label="Pagina di Default"
icon="fas fa-play-circle" icon="fas fa-play-circle"
> >
<q-toggle
v-model="myel.catalogo.dimensioni_def.isTemplate"
color="positive"
icon="fas fa-file-pdf"
label="E' un template"
@update:model-value="modifElem"
>
</q-toggle>
<q-input
label="Nome Template"
@update:model-value="modifElem"
v-model="myel.catalogo.dimensioni_def.name"
filled
debounce="1000"
v-on:keyup.enter="saveElem"
>
</q-input>
<q-select
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
v-if="enableEdit"
rounded
outlined
v-model="myel.catalogo.dimensioni_def.linkIdTemplate"
:options="Products.getOptCatalogoTemplate()"
@update:model-value="modifElem"
label="Catalogo collegato:"
style="width: 250px"
emit-value
map-options
>
</q-select>
<div <div
v-if="myel.catalogo.dimensioni_def.pagina" v-if="myel.catalogo.dimensioni_def.pagina"
class="sfondo_margine row" class="sfondo_margine row"
@@ -1787,6 +1819,7 @@
<CMyDimensioni <CMyDimensioni
v-model="myel.catalogo.dimensioni_def.pagina" v-model="myel.catalogo.dimensioni_def.pagina"
:path="costanti.DIR_CATALOGO" :path="costanti.DIR_CATALOGO"
:disabled="myel.catalogo.dimensioni_def.linkIdTemplate"
@modifElem="modifElem" @modifElem="modifElem"
:show_imgsfondo="true" :show_imgsfondo="true"
@update:model-value="modifElem" @update:model-value="modifElem"

View File

@@ -273,7 +273,7 @@ export default defineComponent({
return tools.getstrDate(catalog.data_online_stampa); return tools.getstrDate(catalog.data_online_stampa);
case 'image': case 'image':
return catalog.foto_collana?.imagefile return catalog.foto_collana?.imagefile
? tools.getFullFileNameByImageFile(shared_consts.TABLES_CATALOG, catalog.foto_collana?.imagefile) ? tools.getFullFileNameByImageFile(shared_consts.TABLES_CATALOG, catalog.foto_collana?.imagefile, catalog._id)
: ''; : '';
} }
} else { } else {

View File

@@ -112,7 +112,7 @@
<q-img <q-img
:src=" :src="
getImageByElement(element) getImageByElement(element)
? tools.getFullFileNameByImageFile(table, getImageByElement(element)) ? tools.getFullFileNameByImageFile(table, getImageByElement(element), element._id)
: element.productInfo?.image_link : element.productInfo?.image_link
" "
style="width: 50px; height: 50px" style="width: 50px; height: 50px"

View File

@@ -200,6 +200,15 @@ export default defineComponent({
// console.log('populateDataWithlinkIdTemplate') // console.log('populateDataWithlinkIdTemplate')
if (optcatalogo.value) { if (optcatalogo.value) {
// LINK PAGINA
if (optcatalogo.value.dimensioni_def.linkIdTemplate) {
const reccatalog = globalStore.sovrascriviPaginaDefaultFromTemplate(optcatalogo.value.dimensioni_def.linkIdTemplate, optcatalogo.value.dimensioni_def);
if (reccatalog) {
optcatalogo.value.dimensioni_def.pagina = { ...reccatalog.dimensioni_def.pagina};
}
}
// LINK SCHEDA
for (const recscheda of optcatalogo.value.arrSchede!) { for (const recscheda of optcatalogo.value.arrSchede!) {
if (recscheda.scheda?.linkIdTemplate) { if (recscheda.scheda?.linkIdTemplate) {
// ricopia da Template: // ricopia da Template:

View File

@@ -792,6 +792,9 @@ export interface IAreaDiStampa {
} }
export interface IElementiPagina { export interface IElementiPagina {
isTemplate?: boolean,
linkIdTemplate?: string,
name?: string,
pagina: IDimensioni pagina: IDimensioni
} }

View File

@@ -7606,11 +7606,13 @@ export const tools = {
} }
} }
}, },
getFullFileNameByImageFile(table: string, imagefile: string) { getFullFileNameByImageFile(table: string, imagefile: string, id: string) {
// console.log('arrimage', arrimage) // console.log('arrimage', arrimage)
if (shared_consts.TABLES_IMAGEFILE_SINGOLO.includes(table)) { if (shared_consts.TABLES_IMAGEFILE_SINGOLO.includes(table)) {
return this.getDirUpload() + `products/` + imagefile; return this.getDirUpload() + `products/` + imagefile;
} else if (table === 'catalogs') {
return this.getDirUpload() + `catalogs/` + id + '/' + imagefile;
} }
return imagefile; return imagefile;
}, },

File diff suppressed because it is too large Load Diff

View File

@@ -237,6 +237,30 @@ export const useGlobalStore = defineStore('GlobalStore', {
return null; return null;
}, },
sovrascriviPaginaDefaultFromTemplate:
(state: IGlobalState) => (idTemplate: string, origDimensioni: IDimensioni, optcatalogo: IOptCatalogo) => {
const myfindelem = state.myelems.find((myelem: IMyElem) => myelem._id === idTemplate);
const linkIdTemplate = origDimensioni.linkIdTemplate;
const precname = origDimensioni.name;
if (myfindelem) {
const myelemtocopy = tools.jsonCopy(myfindelem);
if (myelemtocopy) {
// myelemtocopy.scheda._id = origScheda.scheda?._id;
myelemtocopy.catalogo.dimensioni_def.isTemplate = false;
myelemtocopy.catalogo.dimensioni_def.name = precname;
myelemtocopy.catalogo.dimensioni_def.linkIdTemplate = linkIdTemplate;
return myelemtocopy.catalogo;
}
}
return null;
},
// conta: (state: IGlobalState) => { state.conta }, // conta: (state: IGlobalState) => { state.conta },
// listatodo: (state: IGlobalState) => { state.listatodo }, // listatodo: (state: IGlobalState) => { state.listatodo },
// category: (state: IGlobalState) => { state.category }, // category: (state: IGlobalState) => { state.category },
@@ -289,6 +313,12 @@ export const useGlobalStore = defineStore('GlobalStore', {
return Products.getSchedeOpt(state.myschedas, tag); return Products.getSchedeOpt(state.myschedas, tag);
}, },
getOptCatalogoTemplate: (state: IGlobalState) => (tag?: string) => {
const Products = useProducts();
return Products.getSchedeOpt(state.myschedas, tag);
},
getLinkIdTemplateByName: (state: IGlobalState) => (name: string) => { getLinkIdTemplateByName: (state: IGlobalState) => (name: string) => {
try { try {
const myrecscheda = state.myschedas.find((recscheda: ISchedaSingola) => recscheda.scheda.name === name); const myrecscheda = state.myschedas.find((recscheda: ISchedaSingola) => recscheda.scheda.name === name);
@@ -2463,6 +2493,9 @@ export const useGlobalStore = defineStore('GlobalStore', {
editore: [], editore: [],
pdf: false, pdf: false,
dimensioni_def: { dimensioni_def: {
isTemplate: false,
linkIdTemplate: '',
name: '',
pagina: tools.resetRecIDimensioni(null), pagina: tools.resetRecIDimensioni(null),
}, },
areadistampa: tools.resetRecIAreaDiStampa(null), areadistampa: tools.resetRecIAreaDiStampa(null),
@@ -2478,6 +2511,9 @@ export const useGlobalStore = defineStore('GlobalStore', {
editore: [], editore: [],
pdf: false, pdf: false,
dimensioni_def: { dimensioni_def: {
isTemplate: false,
linkIdTemplate: '',
name: '',
pagina: tools.resetRecIDimensioni(null), pagina: tools.resetRecIDimensioni(null),
}, },
areadistampa: tools.resetRecIAreaDiStampa(null), areadistampa: tools.resetRecIAreaDiStampa(null),
@@ -2617,7 +2653,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
window.URL.revokeObjectURL(downloadUrl); window.URL.revokeObjectURL(downloadUrl);
} else { } else {
return response return response;
} }
} else { } else {
console.error('No data returned from the server.'); console.error('No data returned from the server.');

View File

@@ -581,6 +581,14 @@ export default defineComponent({
// console.log('populateDataWithlinkIdTemplate') // console.log('populateDataWithlinkIdTemplate')
if (optcatalogo.value) { if (optcatalogo.value) {
// LINK PAGINA
if (optcatalogo.value.dimensioni_def.linkIdTemplate) {
const reccatalog = globalStore.sovrascriviPaginaDefaultFromTemplate(optcatalogo.value.dimensioni_def.linkIdTemplate, optcatalogo.value.dimensioni_def);
if (reccatalog) {
optcatalogo.value.dimensioni_def.pagina = { ...reccatalog.dimensioni_def.pagina};
}
}
for (const recscheda of optcatalogo.value.arrSchede!) { for (const recscheda of optcatalogo.value.arrSchede!) {
if (recscheda.scheda?.linkIdTemplate) { if (recscheda.scheda?.linkIdTemplate) {
// ricopia da Template: // ricopia da Template:

View File

@@ -308,11 +308,18 @@
>1</q-badge >1</q-badge
> >
</q-tab> </q-tab>
<q-tab
v-if="!tools.isUtente()"
name="visu"
icon="fas fa-book-reader"
label="Catalogo"
>
</q-tab>
<q-tab <q-tab
v-if="!tools.isUtente()" v-if="!tools.isUtente()"
name="genera" name="genera"
icon="fas fa-book" icon="fas fa-file-pdf"
label="Genera" label="Genera PDF"
> >
</q-tab> </q-tab>
</q-tabs> </q-tabs>
@@ -701,7 +708,6 @@
<div <div
v-for="(page, pageIndex) in groupedPages(recscheda)" v-for="(page, pageIndex) in groupedPages(recscheda)"
:key="pageIndex" :key="pageIndex"
class="pdf-section"
> >
<div <div
v-if="containsProducts(page)" v-if="containsProducts(page)"
@@ -709,6 +715,7 @@
'fixed-width': true, 'fixed-width': true,
'fixed-height': true, 'fixed-height': true,
'card-page': false, 'card-page': false,
'pdf-section': true,
}" }"
:style="generateStylePageScheda(optcatalogo, recscheda.scheda)" :style="generateStylePageScheda(optcatalogo, recscheda.scheda)"
> >