From 8baf1e99f060de6d626f3bfa850ea0e647027664 Mon Sep 17 00:00:00 2001 From: Surya Paolo Date: Fri, 13 Dec 2024 18:10:04 +0100 Subject: [PATCH] - Aggiornati margini. - Cataloghi: Export ed Import di una pagine ed i suoi elementi ! --- .env.prod.gruppomacro | 2 +- src/components/CBarCode/CBarCode.ts | 10 + src/components/CBarCode/CBarCode.vue | 4 +- .../CCatalogoCard/CCatalogoCard.scss | 11 +- src/components/CCatalogoCard/CCatalogoCard.ts | 14 +- .../CCatalogoCard/CCatalogoCard.vue | 200 ++++++++++++------ .../CDownloadJsonFile/CDownloadJsonFile.scss | 0 .../CDownloadJsonFile/CDownloadJsonFile.ts | 55 +++++ .../CDownloadJsonFile/CDownloadJsonFile.vue | 13 ++ src/components/CDownloadJsonFile/index.ts | 1 + src/components/CExportPage/CExportPage.scss | 0 src/components/CExportPage/CExportPage.ts | 91 ++++++++ src/components/CExportPage/CExportPage.vue | 51 +++++ src/components/CExportPage/index.ts | 1 + src/components/CMyEditElem/CMyEditElem.ts | 46 ++-- src/components/CMyEditElem/CMyEditElem.vue | 51 ++++- src/components/CMyElem/CMyElem.vue | 12 +- src/components/CMyPageElem/CMyPageElem.ts | 8 +- src/components/CMyPageElem/CMyPageElem.vue | 19 +- src/components/CMyPageElem2/CMyPageElem2.vue | 2 +- src/components/CMyText/CMyText.ts | 8 +- src/components/CMyText/CMyText.vue | 12 +- src/components/CText/CText.scss | 0 src/components/CText/CText.ts | 61 ++++++ src/components/CText/CText.vue | 44 ++++ src/components/CText/index.ts | 1 + src/css/app.scss | 23 +- src/model/GlobalStore.ts | 4 + src/rootgen/admin/importdata/importdata.ts | 1 + src/rootgen/admin/pages/pages.vue | 2 +- src/statics/lang/it.js | 5 + src/store/Modules/fieldsTable.ts | 1 + src/store/Modules/tools.ts | 33 ++- src/store/Products.ts | 5 +- src/store/UserStore.ts | 6 + src/store/globalStore.ts | 57 ++++- src/views/ecommerce/catalogo/catalogo.scss | 20 +- src/views/ecommerce/catalogo/catalogo.ts | 18 +- src/views/ecommerce/catalogo/catalogo.vue | 1 + 39 files changed, 752 insertions(+), 141 deletions(-) create mode 100755 src/components/CDownloadJsonFile/CDownloadJsonFile.scss create mode 100755 src/components/CDownloadJsonFile/CDownloadJsonFile.ts create mode 100755 src/components/CDownloadJsonFile/CDownloadJsonFile.vue create mode 100755 src/components/CDownloadJsonFile/index.ts create mode 100755 src/components/CExportPage/CExportPage.scss create mode 100755 src/components/CExportPage/CExportPage.ts create mode 100755 src/components/CExportPage/CExportPage.vue create mode 100755 src/components/CExportPage/index.ts create mode 100755 src/components/CText/CText.scss create mode 100755 src/components/CText/CText.ts create mode 100755 src/components/CText/CText.vue create mode 100755 src/components/CText/index.ts diff --git a/.env.prod.gruppomacro b/.env.prod.gruppomacro index 3b05c6ca..a7b43438 100644 --- a/.env.prod.gruppomacro +++ b/.env.prod.gruppomacro @@ -3,7 +3,7 @@ SERVICE_WORKER_FILE="service-worker.js" APP_ID="18" DIRECTORY_LOCAL=newfreeplanet DIRECTORY_SERVER=/var/www/freeplanet_serverside -SERVERDIR_WEBSITE="/var/www/test.gruppomacro.app" +SERVERDIR_WEBSITE="/var/www/gruppomacro.app" SERVERPW_WEBSITE=pwdadmin@1AOK APP_URL="https://gruppomacro.app" URL_FACEBOOK="" diff --git a/src/components/CBarCode/CBarCode.ts b/src/components/CBarCode/CBarCode.ts index b13b2777..ce2089fe 100755 --- a/src/components/CBarCode/CBarCode.ts +++ b/src/components/CBarCode/CBarCode.ts @@ -34,11 +34,21 @@ export default defineComponent({ required: false, default: 2, }, + show_at_right: { + type: Boolean, + required: false, + default: false, + }, height: { type: Number, required: false, default: 100, }, + gap: { + type: Number, + required: false, + default: 0, + }, fontsize: { type: Number, required: false, diff --git a/src/components/CBarCode/CBarCode.vue b/src/components/CBarCode/CBarCode.vue index 18625606..9921ae06 100755 --- a/src/components/CBarCode/CBarCode.vue +++ b/src/components/CBarCode/CBarCode.vue @@ -1,6 +1,6 @@ diff --git a/src/components/CMyPageElem2/CMyPageElem2.vue b/src/components/CMyPageElem2/CMyPageElem2.vue index 954f6f9f..0121097f 100755 --- a/src/components/CMyPageElem2/CMyPageElem2.vue +++ b/src/components/CMyPageElem2/CMyPageElem2.vue @@ -23,7 +23,7 @@ " > - + diff --git a/src/components/CMyText/CMyText.ts b/src/components/CMyText/CMyText.ts index f969bea1..7f6c066e 100755 --- a/src/components/CMyText/CMyText.ts +++ b/src/components/CMyText/CMyText.ts @@ -8,6 +8,7 @@ import { tools } from '@store/Modules/tools' import { costanti } from '@costanti' +import { CMySize } from '@src/components/CMySize' import { CMySlider } from '@src/components/CMySlider' import { CMyFieldRec } from '@src/components/CMyFieldRec' @@ -16,7 +17,7 @@ import { shared_consts } from '@/common/shared_vuejs' export default defineComponent({ name: 'CMyText', emits: ['update:modelValue', 'modifElem', 'saveFieldElem',], - components: { CMySlider, CMyFieldRec }, + components: { CMySlider, CMyFieldRec, CMySize }, props: { modelValue: { type: Object as PropType, @@ -36,6 +37,11 @@ export default defineComponent({ required: false, default: true, }, + show_dimensioni: { + type: Boolean, + required: false, + default: false, + }, }, setup(props, { emit }) { const $q = useQuasar() diff --git a/src/components/CMyText/CMyText.vue b/src/components/CMyText/CMyText.vue index ef89778d..4715c31e 100755 --- a/src/components/CMyText/CMyText.vue +++ b/src/components/CMyText/CMyText.vue @@ -27,7 +27,7 @@ > +
Parole Chiave: {autore} {titolo} {descrizione} {date_pub} {ranking} - {sottotitolo} {prezzo} {descrizione_estesa} + {sottotitolo} {prezzo} {prezzo_scontato} {descrizione_estesa}
, + required: true, + }, + myproduct: { + type: Object as PropType, + required: true, + }, + optcatalogo: { + type: Object as PropType, + required: true, + }, + scheda: { + type: Object as PropType, + required: true, + }, + show_at_right: { + type: Boolean, + required: false, + default: false, + }, + }, + + setup(props, { attrs, slots, emit }) { + + const globalStore = useGlobalStore() + const products = useProducts() + + const getTesto = computed(() => { + return products.replaceKeyWordsByProduct( + props.optcatalogo, + props.myproduct, + props.rectext, + ) + }) + + return { + tools, + getTesto, + globalStore, + costanti, + } + }, +}) diff --git a/src/components/CText/CText.vue b/src/components/CText/CText.vue new file mode 100755 index 00000000..1522d93a --- /dev/null +++ b/src/components/CText/CText.vue @@ -0,0 +1,44 @@ + + + + diff --git a/src/components/CText/index.ts b/src/components/CText/index.ts new file mode 100755 index 00000000..0978d709 --- /dev/null +++ b/src/components/CText/index.ts @@ -0,0 +1 @@ +export { default as CText } from './CText.vue' diff --git a/src/css/app.scss b/src/css/app.scss index 35eee217..17df2b65 100755 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -28,13 +28,27 @@ font-style: normal; } +@font-face { + font-family: 'DIN-Pro-Condensed-Bold-Italic'; + src: url('~src/assets/fonts/DIN-Pro-Condensed-Bold-Italic.otf') format('opentype'); + font-weight: bold; + font-style: italic; +} + @font-face { font-family: 'DIN-Pro-Condensed-Regular'; - src: url('~src/assets/fonts/DINPro-CondensedBold.otf') format('opentype'); + src: url('~src/assets/fonts/DIN-Pro-Condensed-Regular.otf') format('opentype'); font-weight: normal; font-style: normal; } +@font-face { + font-family: 'DIN-Pro-Condensed-Medium-Italic'; + src: url('~src/assets/fonts/DIN-Pro-Condensed-Medium-Italic.otf') format('opentype'); + font-weight: normal; + font-style: italic; +} + @font-face { font-family: 'DINPro'; src: url('~src/assets/fonts/DINPro.otf') format('opentype'); @@ -42,6 +56,13 @@ font-style: normal; } +@font-face { + font-family: 'DINPro-Medium'; + src: url('~src/assets/fonts/DINPro-Medium.otf') format('opentype'); + font-weight: normal; + font-style: normal; +} + 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"; -webkit-font-smoothing: antialiased; diff --git a/src/model/GlobalStore.ts b/src/model/GlobalStore.ts index 5514427d..1fe1a7c3 100755 --- a/src/model/GlobalStore.ts +++ b/src/model/GlobalStore.ts @@ -696,6 +696,7 @@ export interface IFont { line_height?: number posiz_text?: number perc_text?: string + height?: string } export interface IBorder { @@ -731,6 +732,7 @@ export interface IBarCode { size?: ISize font?: IFont widthlines?: number + show_at_right?: boolean } export interface IPagina { @@ -766,6 +768,7 @@ export interface IText { contenuto?: string maxlength?: number font?: IFont + size?: ISize } export interface IElementiScheda { @@ -784,6 +787,7 @@ export interface IMyScheda { numschede_perRiga?: number numschede_perCol?: number show_separatore: boolean + testo_right_attaccato?: IText testo_right?: IText testo_bottom?: IText barcode?: IBarCode, diff --git a/src/rootgen/admin/importdata/importdata.ts b/src/rootgen/admin/importdata/importdata.ts index b2a47ec6..abfdeec8 100755 --- a/src/rootgen/admin/importdata/importdata.ts +++ b/src/rootgen/admin/importdata/importdata.ts @@ -579,6 +579,7 @@ export default defineComponent({ function eseguiCmd() { risultato.value = '' + userStore.importToServerCmd($q, t, cosafare.value, null) } diff --git a/src/rootgen/admin/pages/pages.vue b/src/rootgen/admin/pages/pages.vue index 54a3139e..649d5f76 100755 --- a/src/rootgen/admin/pages/pages.vue +++ b/src/rootgen/admin/pages/pages.vue @@ -12,7 +12,7 @@
1Y=" + (myproduct.productInfo.rank1Y! || '') + '
Venduti=' + venduti + '
Data Pubb=' + date_pub + const linkvenduti = ''+venduti+'' + const debugstr = " Rank=" + ranking + "
1Y=" + (myproduct.productInfo.rank1Y! || '') + '
Venduti=' + linkvenduti + '
Data Pubb=' + date_pub const truncatedDescription = description.length > maxDescriptionLength ? description.substring(0, description.lastIndexOf(' ', maxDescriptionLength)) + '...' @@ -1355,7 +1356,7 @@ export const useProducts = defineStore('Products', { result = result.replace(new RegExp(key, 'g'), value); } - return result + return result.trim() }, diff --git a/src/store/UserStore.ts b/src/store/UserStore.ts index 23160b80..4b828bcc 100755 --- a/src/store/UserStore.ts +++ b/src/store/UserStore.ts @@ -1926,6 +1926,10 @@ export const useUserStore = defineStore('UserStore', { }, async importToServerCmd($q: any, t: any, cmd: number, data: any, recorddaimportare: boolean = false) { + $q.loading.show({ + message: 'Importazione in corso, attendere ...' + }) + return Api.SendReq('/admin/import', 'POST', { cmd, data }) .then((res: any) => { if (res) { @@ -1953,7 +1957,9 @@ export const useUserStore = defineStore('UserStore', { } } + $q.loading.hide() }).catch((error) => { + $q.loading.hide() tools.showNegativeNotif($q, t('db.recfailed')) return {} }) diff --git a/src/store/globalStore.ts b/src/store/globalStore.ts index 1323e307..c3218e7c 100644 --- a/src/store/globalStore.ts +++ b/src/store/globalStore.ts @@ -272,7 +272,17 @@ export const useGlobalStore = defineStore('GlobalStore', { }, getPage: (state: IGlobalState) => (path: string): IMyPage | undefined => state.mypage.find((page) => (`/${page.path}`) === path), - getPageById: (state: IGlobalState) => (idpage: string): IMyPage | undefined => state.mypage.find((page) => (`/${page._id}`) === idpage), + getPageById: (state: IGlobalState) => (idpage: string): IMyPage | undefined => { + const mypage = state.mypage.find((page) => (`${page._id}`) === idpage) + return mypage + }, + getPathByIdPage: (state: IGlobalState) => (idpage: string): string => { + const mypage = state.mypage.find((page) => (`${page._id}`) === idpage) + if (mypage) { + return mypage.path! + } + return '' + }, getMyElemsByIdPage: (state: IGlobalState) => (idPage?: string): IMyElem[] | [] => { return state.myelems.filter((page: IMyElem) => (page._id === idPage)).sort((a: any, b: any) => a.order - b.order) @@ -1203,6 +1213,9 @@ export const useGlobalStore = defineStore('GlobalStore', { let newpath = prompt(t('mypages.duplica_newname')) + if (!newpath) + return false + $q.dialog({ message: t('mypages.duplica_conferma', { path, newpath }), ok: { label: t('dialog.yes'), push: true }, @@ -1230,6 +1243,46 @@ export const useGlobalStore = defineStore('GlobalStore', { }, + async exportPage(path: string, $q: any, t: any) { + const userStore = useUserStore() + + return Api.SendReq('/exppage', 'POST', { path }) + .then((res) => { + if (res && res.data && res.data.json) { + tools.showPositiveNotif($q, t('mypages.expok')) + return res.data.json + } else { + tools.showNegativeNotif($q, t('mypages.experr')) + return null + } + }) + .catch((error) => { + console.log('error loadTable', error) + userStore.setErrorCatch(error) + return null + }) + }, + + importPage(jsonString: string, $q: any, t: any) { + const userStore = useUserStore() + + return Api.SendReq('/imppage', 'POST', { jsonString }) + .then((res) => { + if (res && res.data && res.data.ris) { + tools.showPositiveNotif($q, t('mypages.impok')) + return res.data.ris + } else { + tools.showNegativeNotif($q, t('mypages.imperr')) + return null + } + }) + .catch((error) => { + console.log('error importPage', error) + userStore.setErrorCatch(error) + return null + }) + }, + async loadPageTest() { console.log('loadPageTest') @@ -2301,7 +2354,7 @@ export const useGlobalStore = defineStore('GlobalStore', { return; } - const filenameToDownload = tools.removeFileExtension(pdfFile.name) + '-output.pdf' + const filenameToDownload = tools.removeFileExtension(pdfFile.name) + '-compresso.pdf' const formData = new FormData(); if (pdfFile instanceof File) { diff --git a/src/views/ecommerce/catalogo/catalogo.scss b/src/views/ecommerce/catalogo/catalogo.scss index bdaaa41b..21ebd14f 100755 --- a/src/views/ecommerce/catalogo/catalogo.scss +++ b/src/views/ecommerce/catalogo/catalogo.scss @@ -1,4 +1,5 @@ $heightBtn: 100%; +$colore_titolo_libro: rgb(210, 12, 12); body { line-height: 1.2 !important; @@ -71,34 +72,35 @@ body { .book-title { font-family: 'DINPro-CondensedBold', sans-serif; - color: rgba(255, 0, 0, 1); + color: $colore_titolo_libro; text-transform: uppercase; margin-top: calc(5 * var(--scalecatalog) * 1px); margin-bottom: calc(5 * var(--scalecatalog) * 1px); - font-size: calc(18 * var(--scalecatalog) * 1px); + font-size: calc(20 * var(--scalecatalog) * 1px); + line-height: 100%; } .book-author { font-family: 'DIN-Pro-Condensed-Regular', sans-serif; - font-size: calc(16 * var(--scalecatalog) * 1px); + font-size: calc(18 * var(--scalecatalog) * 1px); } .book-descr { - font-family: 'DINPro-BoldItalic', sans-serif; - font-size: calc(14 * var(--scalecatalog) * 1px); + font-family: 'DIN-Pro-Condensed-Bold-Italic', sans-serif; + font-size: calc(16 * var(--scalecatalog) * 1px); } .book-details { - font-family: 'DINPro', sans-serif; + font-family: 'DIN-Pro-Condensed-Regular', sans-serif; margin-bottom: calc(5 * var(--scalecatalog) * 1px); - font-size: calc(12 * var(--scalecatalog) * 1px); + font-size: calc(13 * var(--scalecatalog) * 1px); text-align: left !important; } .book-descr-estesa { - font-family: 'DINPro', sans-serif; - font-size: calc(14 * var(--scalecatalog) * 1px); + font-family: 'AGaramondPro-Regular', sans-serif; + font-size: calc(15 * var(--scalecatalog) * 1px); text-align: justify; word-wrap: break-word; } diff --git a/src/views/ecommerce/catalogo/catalogo.ts b/src/views/ecommerce/catalogo/catalogo.ts index 8a8fea2e..c80592b0 100755 --- a/src/views/ecommerce/catalogo/catalogo.ts +++ b/src/views/ecommerce/catalogo/catalogo.ts @@ -877,14 +877,21 @@ export default defineComponent({ const paddingLeft = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.padding?.left) || '0'; const paddingRight = tools.adjustSize(optcatalogo.value, recscheda.scheda?.dimensioni?.riga?.padding?.right) || '0'; - return { + let out: any = { placeContent, flex: `0 1 ${width} !important;`, margin: `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`, - padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`, - ...(width ? { width: `${width} !important;` } : {}), - ...(height ? { height: `${height} !important;` } : {}) // Aggiungi l'altezza solo se è valorizzata - }; + padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}` + } + + if (width) { + out.width = `${width} !important;` + } + if (height) { + out.height = `${height} !important;` + } + + return out } @@ -906,6 +913,7 @@ export default defineComponent({ return { placeContent, + alignSelf: 'flex-start', flex: `0 1 ${width} !important;`, margin: `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`, padding: `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`, diff --git a/src/views/ecommerce/catalogo/catalogo.vue b/src/views/ecommerce/catalogo/catalogo.vue index 60d2ec83..c322c95c 100755 --- a/src/views/ecommerce/catalogo/catalogo.vue +++ b/src/views/ecommerce/catalogo/catalogo.vue @@ -330,6 +330,7 @@
+ {{getStyleSchedaProdotto(recscheda)}}