- cataloghi...

- fix: condividi su Telegram non funzionava errore sull'immagine
This commit is contained in:
Surya Paolo
2024-11-02 18:06:27 +01:00
parent 2ea6468100
commit 1c63b5346b
91 changed files with 2105 additions and 306 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "gruppomacro",
"version": "1.1.7",
"version": "1.1.9",
"description": "GruppoMacro",
"productName": "Gruppo Macro",
"author": "Paolo Arena",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -31,7 +31,11 @@ else
cp -R _ALL_SITES/$site/favicon.ico ./public/
rm -R ./public/upload/products/*
rm -R ./public/upload/pages/*
rm -R ./public/upload/catalogo/*
cp -R _ALL_SITES/$site/upload/products/* ./public/upload/products/
cp -R _ALL_SITES/$site/upload/pages/* ./public/upload/pages/
cp -R _ALL_SITES/$site/upload/catalogo/* ./public/upload/catalogo/
rm -R ./public/images/*
cp -R _ALL_SITES/$site/images/* ./public/images/

View File

@@ -1 +1 @@
TERMINA DI LAVORARE SU riso.app: (Sovrascrivo !)
TERMINA DI LAVORARE SU gruppomacro.app: (Sovrascrivo !)

View File

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

BIN
public/images/ferrara.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 KiB

BIN
public/images/riso_home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

View File

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

View File

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

View File

@@ -298,11 +298,15 @@ export const shared_consts = {
// Condivise
TABLES_FAVORITE_BOOKMARK: ['myskills', 'mygoods', 'mybachecas', 'myhosps', 'attivitas'],
TABLEFORUSERS: [
'myskills',
'mygoods',
'mybachecas',
'myhosps',
],
// Solo per VUE.JS
TABLES_INSERT_ALMOST_ONE_TO_ENABLE_CIRCUIT: ['myskills', 'myhosps', 'mygoods'],
TABLES_WITH_FILTER_FIELD: ['caldate'],
TABLES_WITH_SPECIAL_FILTER: ['pub_to_share'],
@@ -1930,6 +1934,16 @@ export const shared_consts = {
return (trovatorec) ? trovatorec.label : ''
},
getDirectoryImgByTable(table: string, username: string) {
let ris = ''
if (this.TABLEFORUSERS.includes(table)) {
ris = 'profile/' + username + '/' + table + '/';
}
return ris;
},
getLabelByValueAndArr(value: number, array: any) {
const trovatorec = array.find((rec: any) => rec.value === value)
return (trovatorec) ? trovatorec.label : ''
@@ -2089,6 +2103,7 @@ export const shared_consts = {
website: 1,
organisedBy: 1,
contact_phone: 1,
contact_email: 1,
contact_telegram: 1,
address: 1,
min_partecip: 1,
@@ -2163,6 +2178,7 @@ export const shared_consts = {
},
getDirectoryByTable(table: string, barre?: boolean) {
let add = '';
if (barre)
add = '/';

View File

View File

@@ -0,0 +1,67 @@
import { defineComponent, ref, computed, PropType, toRef, reactive, watch } from 'vue'
import { IBorder, IOperators, ISize } from 'model'
import { useI18n } from '@/boot/i18n'
import { useQuasar } from 'quasar'
import { CMySlider } from '@src/components/CMySlider'
import { shared_consts } from '@/common/shared_vuejs'
export default defineComponent({
name: 'CBorders',
emits: ['update:modelValue'],
components: { CMySlider },
props: {
modelValue: {
type: Object as PropType<IBorder>,
required: true,
},
label: {
type: String,
required: true,
},
disable: {
type: Boolean,
required: false,
default: false,
},
},
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
const internalModel = reactive({ ...props.modelValue })
function modifValueTop(value: any) {
emit('update:modelValue', { ...internalModel, top: value });
}
function modifValueBottom(value: any) {
emit('update:modelValue', { ...internalModel, bottom: value });
}
function modifValueLeft(value: any) {
emit('update:modelValue', { ...internalModel, left: value });
}
function modifValueRight(value: any) {
emit('update:modelValue', { ...internalModel, right: value });
}
// Sincronizzare i cambiamenti esterni con internalModel quando props cambiano
watch(() => props.modelValue, (newModel: any) => {
Object.assign(internalModel, newModel);
}, { immediate: true });
return {
t,
shared_consts,
modifValueTop,
modifValueBottom,
modifValueLeft,
modifValueRight,
internalModel,
}
}
})

View File

@@ -0,0 +1,59 @@
<template>
<div style="width: 380px">
<q-banner
rounded
dense
class="bg-orange-2 text-red"
color="primary q-title"
style="text-align: center"
>
{{ label }}
</q-banner>
<div class="row">
<CMySlider
label="Top:"
v-model="internalModel.top"
:min="10"
:max="3000"
color="green"
addstr="px"
@update:model-value="modifValueTop"
></CMySlider>
<CMySlider
label="Bottom:"
v-model="internalModel.bottom"
:min="10"
:max="3000"
color="red"
addstr="px"
@update:model-value="modifValueBottom"
></CMySlider>
<CMySlider
label="Left:"
v-model="internalModel.left"
:min="10"
:max="3000"
color="orange"
addstr="px"
@update:model-value="modifValueLeft"
></CMySlider>
<CMySlider
label="Right:"
v-model="internalModel.right"
:min="10"
:max="3000"
color="fuchsia"
addstr="px"
@update:model-value="modifValueRight"
></CMySlider>
</div>
</div>
</template>
<script lang="ts" src="./CBorders.ts">
</script>
<style lang="scss" scoped>
@import './CBorders.scss';
</style>

View File

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

View File

@@ -12,7 +12,7 @@ import { CPrice } from '../CPrice'
import { func_tools, toolsext } from '@store/Modules/toolsext'
import { IBaseOrder, ICatalogo, IGasordine, IOrder, IOrderCart, IProduct, IVariazione } from '@src/model'
import { IBaseOrder, ICatalogo, IGasordine, IMyScheda, IOrder, IOrderCart, IProduct, IVariazione } from '@src/model'
import { tools } from '@store/Modules/tools'
import { useProducts } from '@store/Products'
@@ -69,6 +69,13 @@ export default defineComponent({
backgroundimage: '',
}),
},
scheda: {
type: Object as PropType<IMyScheda>,
required: false,
default: () => ({
}),
},
},
components: { CTitleBanner, CCardState, CCopyBtn, CMyValueDb, VuePdfApp, CPrice },
setup(props, { emit }) {

View File

@@ -4,8 +4,8 @@
' items-start q-gutter-sm': true,
}"
:style="
optcatalogo.height
? ' height: ' + optcatalogo.height + ' !important; '
scheda.height
? ' height: ' + scheda.height + 'px !important; '
: ''
"
>
@@ -49,7 +49,7 @@
:class="[
'flex q-pa-xs', // Classi comuni
{ 'shadow-2': options.in_3d }, // Classe condizionale
optcatalogo.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
scheda.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
? 'flex-col'
: 'flex-row', // Layout flessibile
]"
@@ -79,11 +79,11 @@
}"
:style="{
width:
optcatalogo.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
scheda.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
? '50%'
: '45%',
...(optcatalogo.width && {
width: optcatalogo.width + ' !important',
...(scheda.dimensioni.immagine_prodotto.width && {
width: scheda.dimensioni.immagine_prodotto.width + ' !important',
}),
display: 'block',
}"
@@ -109,19 +109,19 @@
<div
:style="{
width:
optcatalogo.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
scheda.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
? '100%'
: '50%',
textAlign: 'center',
marginTop:
optcatalogo.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
scheda.posiz_text === costanti.POSIZ_TESTO.IN_BASSO
? '1rem'
: '0',
}"
>
<div
:style="`line-height: ${optcatalogo.line_height}%; `"
v-html="products.replaceKeyWordsByProduct(myproduct, optcatalogo.text)"
:style="`line-height: ${scheda.line_height}%; `"
v-html="products.replaceKeyWordsByProduct(myproduct, scheda.text)"
></div>
</div>
</div>

View File

@@ -15,7 +15,7 @@ import { shared_consts } from '@src/common/shared_vuejs'
import { useRouter } from 'vue-router'
import { costanti } from '@costanti'
import { ICatalogo } from '@src/model'
import { ICatalogo, IMyScheda } from '@src/model'
export default defineComponent({
@@ -56,6 +56,13 @@ export default defineComponent({
backgroundimage: '',
}),
},
scheda: {
type: Object as PropType<IMyScheda>,
required: false,
default: () => ({
}),
},
},
components: { CCatalogoCard },
setup(props, { emit }) {

View File

@@ -7,6 +7,7 @@
@selauthor="selauthor"
@opendetail="opendetail"
:optcatalogo="optcatalogo"
:scheda="scheda"
>
</CCatalogoCard>
<q-dialog
@@ -31,6 +32,7 @@
}"
:optcatalogo="optcatalogo"
@selauthor="selauthor"
:scheda="scheda"
>
</CCatalogoCard>
</div>

View File

@@ -1831,8 +1831,13 @@ export default defineComponent({
editRecordBool.value = true
} else {
let mymsgquestion = translate(col.askaction) + '?'
if (col.action === lists.MenuAction.DELETE_RECTABLE) {
mymsgquestion = 'Cancellare ' + tools.getNomeTabellaStrByTable(table, item) + '?';
}
return $q.dialog({
message: translate(col.askaction) + '?',
message: mymsgquestion,
html: true,
ok: {
label: ok,

View File

@@ -598,6 +598,25 @@
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="table === 'mybachecas' && myrec.contact_email"
>
<q-item-section avatar>
<q-icon color="blue" name="fas fa-mail-bulk" />
</q-item-section>
<q-item-section>
<q-item-label lines="1">
<CLabel
v-bind="$attrs"
:copy="true"
:value="myrec.contact_email"
:label="$t('event.contact_email')"
/>
</q-item-label>
</q-item-section>
</q-item>
<q-item
clickable
v-if="table === 'mybachecas' && myrec.contact_telegram"

View File

@@ -2,7 +2,7 @@ import {
defineComponent, onMounted, PropType, computed, ref, toRef, watch,
} from 'vue'
import { IColGridTable, IElemText, IImgGallery, ILabelValue, IMyCard, IMyElem, IMyPage, IMyScheda, IOperators, ISchedaSingola } from '@src/model'
import { IColGridTable, IElemText, IElementiScheda, IImgGallery, ILabelValue, IMyCard, IMyElem, IMyPage, IMyScheda, IOperators, ISchedaSingola } from '@src/model'
import { useGlobalStore } from '@store/globalStore'
import { CImgTitle } from '@/components/CImgTitle'
@@ -23,6 +23,8 @@ import { CSelectImage } from '@src/components/CSelectImage'
import { CSelectAnimation } from '@src/components/CSelectAnimation'
import { CSelectColor } from '@src/components/CSelectColor'
import { CSelectFontSize } from '@src/components/CSelectFontSize'
import { CMySize } from '@src/components/CMySize'
import { CBorders } from '@src/components/CBorders'
import MixinMetaTags from '@/mixins/mixin-metatags'
import MixinBase from '@/mixins/mixin-base'
@@ -38,7 +40,8 @@ export default defineComponent({
components: {
CImgTitle, CTitle, LandingFooter, CEventsCalendar,
CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro, CMyEditor, CMyFieldRec,
CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation, CMySlider
CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation, CMySlider,
CMySize, CBorders,
},
emits: ['saveElem', 'selElemClick', 'toggleSize', 'deleteElem', 'dupPage'],
props: {
@@ -269,21 +272,93 @@ export default defineComponent({
}
})
let defaultDimensioniPag = {
size: {
width: '800px',
height: '600px',
},
margini: {
top: '12px',
bottom: '0px',
left: '0px',
right: '0px',
},
padding: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},
}
let defaultDimensioniRiga = {
size: {
width: '800px',
height: '300px',
},
margini: {
top: '40px',
bottom: '0px',
left: '0px',
right: '0px',
},
padding: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},
}
let dimensioni: IElementiScheda = {
pagina: defaultDimensioniPag,
riga: defaultDimensioniRiga,
scheda_prodotto: {
size: {
width: '360px',
height: '230px',
},
margini: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},
padding: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},
},
immagine_prodotto: {size: {
width: '150px',
height: '235px',
},
margini: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},
padding: {
top: '0px',
bottom: '0px',
left: '0px',
right: '0px',
},},
}
let newscheda: IMyScheda = {
_id: objectId(),
idapp: tools.appid()!,
isTemplate: false,
name: 'Scheda Nuova',
widthscheda: '360px',
dimensioni,
line_height: 100,
widthpag: 800,
width: 150,
height: 234,
numschede_perRiga: 2,
numschede_perCol: 2,
margine_top: 12,
margine_pagina: '92px',
margine_riga: '41px',
text: '',
posiz_text: costanti.POSIZ_TESTO.A_DESTRA,
@@ -301,13 +376,13 @@ export default defineComponent({
myel.value.catalogo!.arrSchede.push(
{
_id: objectId(),
scheda: { ...newscheda },
scheda: newscheda,
order: maxorder + 10,
numSchede: 1,
}
)
// console.log('arrschede', myel.value.catalogo!.arrSchede)
modifElem()
}
@@ -404,11 +479,14 @@ export default defineComponent({
//console.log('saveFieldElem', rec, 'newval', newval, 'col', col)
let iscatalogo = costanti.CATALOGO_FIELDS.includes(col.name)
let isscheda = costanti.SCHEDA_FIELDS.includes(col.name)
if (col.fieldtype === costanti.FieldType.image) {
if (iscatalogo) {
myel.value.catalogo[col.name] = newval.imagefile
//console.log('SALVATO IN', col.name, newval.imagefile, 'RIS', myel.value.catalogo[col.name])
} else if (isscheda) {
rec[col.name] = newval.imagefile
} else {
myel.value[col.name] = newval.imagefile
}
@@ -416,6 +494,8 @@ export default defineComponent({
if (iscatalogo) {
myel.value.catalogo[col.name] = newval
console.log('SALVATO IN', col.name, newval, 'RIS', myel.value.catalogo[col.name])
} else if (isscheda) {
rec[col.name] = newval
} else {
myel.value[col.name] = newval
}

View File

@@ -1414,6 +1414,44 @@
</q-select>
</div>
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Sfondi"
icon="fas fa-play-circle"
>
Nome File Web: {{ myel.catalogo.backgroundimage }}<br />
<CMyFieldRec
title="Per Web:"
table="catalogo"
:rec="myel.catalogo"
field="backgroundimage"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
Nome File Printable:
{{ myel.catalogo.backgroundimage_printable }}
<CMyFieldRec
title="Sfondo:"
table="catalogo"
:rec="myel.catalogo"
field="backgroundimage_printable"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
<br />
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
@@ -1459,9 +1497,9 @@
>
<q-bar v-if="recscheda" class="bg-primary text-white">
Scheda {{ ind + 1 }}
<span v-if="recscheda.scheda"> '{{
recscheda.scheda.name
}}'</span>
<span v-if="recscheda.scheda">
'{{ recscheda.scheda.name }}'</span
>
<q-space />
<q-btn
rounded
@@ -1639,7 +1677,87 @@
dense
dense-toggle
expand-separator
label="Dimensioni Schede"
label="Pagina"
icon="fas fa-play-circle"
>
<div class="sfondo_margine row">
<CMySize
label="Pagina:"
v-model="recscheda.scheda.dimensioni.pagina.size"
@update:model-value="modifElem"
></CMySize>
<CBorders
label="Margini Pagina:"
v-model="recscheda.scheda.dimensioni.pagina.margini"
@update:model-value="modifElem"
></CBorders>
<CBorders
label="Padding Pagina:"
v-model="recscheda.scheda.dimensioni.pagina.padding"
@update:model-value="modifElem"
></CBorders>
</div>
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Sfondi"
icon="fas fa-play-circle"
>
Nome File Web: {{ recscheda.scheda.bgimg }}<br />
<CMyFieldRec
title="Per Web:"
table="myschedas"
:rec="recscheda.scheda"
field="bgimg"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
<q-select
v-model="recscheda.scheda.bgSize"
:options="bgSizeOpt"
label="Dimensione Img"
options-dense
dense
emit-value
map-options
style="width: 100px"
@update:model-value="modifElem"
fill-input
text-color="white"
>
</q-select>
Nome File Printable:
{{ recscheda.scheda.bgimg_printable }}
<CMyFieldRec
title="Sfondo:"
table="myschedas"
:rec="recscheda.scheda"
field="bgimg_printable"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
<br />
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Schede"
icon="fas fa-play-circle"
>
<div class="row">
@@ -1659,44 +1777,32 @@
color="red"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Schede:"
v-model="recscheda.scheda.widthscheda"
:min="10"
:max="1000"
color="green"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Larghezza Pagina:"
v-model="recscheda.scheda.widthpag"
:min="10"
:max="1000"
color="green"
<CMySize
label="Schede:"
v-model="
recscheda.scheda.dimensioni.scheda_prodotto.size
"
@update:model-value="modifElem"
></CMySlider>
></CMySize>
<CMySlider
label="Larghezza Immagini:"
v-model="recscheda.scheda.width"
:min="10"
:max="1000"
color="green"
addstr="px"
<CBorders
label="Margini Schede:"
v-model="
recscheda.scheda.dimensioni.scheda_prodotto
.margini
"
@update:model-value="modifElem"
></CMySlider>
></CBorders>
<CMySlider
label="Altezza Schede:"
v-model="recscheda.scheda.height"
:min="10"
:max="1000"
color="red"
addstr="px"
<CMySize
label="Immagini:"
v-model="
recscheda.scheda.dimensioni.immagine_prodotto.size
"
@update:model-value="modifElem"
></CMySlider>
></CMySize>
</div>
</q-expansion-item>
@@ -1732,9 +1838,9 @@
<CMyFieldRec
title="Testo:"
table="catalogo"
:rec="myel.catalogo"
field="recscheda.scheda.text"
table="myschedas"
:rec="recscheda.scheda"
field="text"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
@@ -1745,43 +1851,7 @@
</CMyFieldRec>
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Margini Pagina"
icon="fas fa-play-circle"
>
<div class="sfondo_margine row">
<CMySlider
label="Margine Top"
v-model="recscheda.scheda.margine_top"
:min="0"
:max="1000"
color="blue"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Margine per Pagina"
v-model="recscheda.scheda.margine_pagina"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
<CMySlider
label="Margine per Riga"
v-model="recscheda.scheda.margine_riga"
:min="0"
:max="1000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
</div>
</q-expansion-item>
</div>
</q-tab-panel>
</q-tab-panels>
@@ -1789,29 +1859,6 @@
</q-expansion-item>
</div>
<q-expansion-item
dense
dense-toggle
expand-separator
label="Sfondi"
icon="fas fa-play-circle"
>
Nome File Web: {{ myel.catalogo.backgroundimage }}<br />
<CMyFieldRec
title="Per Web:"
table="catalogo"
:rec="myel.catalogo"
field="backgroundimage"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
<br />
</q-expansion-item>
<q-expansion-item
dense
dense-toggle
@@ -1943,8 +1990,9 @@
</q-toggle>
<CMySlider
label="Margine per Pagina"
label="Margine per Pagina Stampa"
v-model="myel.catalogo.margine_paginaPrintable"
:disable="!myel.catalogo.printable"
:min="0"
:max="1000"
color="red"
@@ -1955,6 +2003,7 @@
<CMySlider
label="Margine per Riga"
v-model="myel.catalogo.margine_rigaPrintable"
:disable="!myel.catalogo.printable"
:min="0"
:max="1000"
color="red"
@@ -1964,27 +2013,13 @@
<CMySlider
label="Larghezza Pagina Stampa:"
v-model="myel.catalogo.widthpagPrintable"
:disable="!myel.catalogo.printable"
:min="0"
:max="1000"
:max="4000"
color="red"
addstr="px"
@update:model-value="modifElem"
></CMySlider>
Nome File Printable:
{{ myel.catalogo.backgroundimage_printable }}
<CMyFieldRec
title="Sfondo:"
table="catalogo"
:rec="myel.catalogo"
field="backgroundimage_printable"
@update:model-value="modifElem"
:canEdit="true"
:canModify="true"
:fieldtype="costanti.FieldType.image"
@save="saveFieldElem"
>
</CMyFieldRec>
</div>
</q-expansion-item>
</div>

View File

View File

@@ -0,0 +1,61 @@
import { defineComponent, ref, computed, PropType, toRef, reactive, watch } from 'vue'
import { IOperators, ISize } from 'model'
import { useI18n } from '@/boot/i18n'
import { useQuasar } from 'quasar'
import { CMySlider } from '@src/components/CMySlider'
import { shared_consts } from '@/common/shared_vuejs'
export default defineComponent({
name: 'CMySize',
emits: ['update:modelValue'],
components: { CMySlider },
props: {
modelValue: {
type: Object as PropType<ISize>,
required: true,
default: () => ({
width: '',
height: '',
}),
},
label: {
type: String,
required: true,
},
disable: {
type: Boolean,
required: false,
default: false,
},
},
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
const internalModel = reactive({ ...props.modelValue })
function modifValueWidth(value: any) {
emit('update:modelValue', { ...internalModel, width: value });
}
function modifValueHeight(value: any) {
emit('update:modelValue', { ...internalModel, height: value });
}
// Sincronizzare i cambiamenti esterni con internalModel quando props cambiano
watch(() => props.modelValue, (newModel: any) => {
Object.assign(internalModel, newModel);
}, { immediate: true });
return {
t,
shared_consts,
modifValueWidth,
modifValueHeight,
internalModel,
}
}
})

View File

@@ -0,0 +1,41 @@
<template>
<div style="width: 380px">
<q-banner
rounded
dense
class="bg-blue-1 text-red"
color="primary q-title"
style="text-align: center"
>
{{ label }}
</q-banner>
<div class="row">
<CMySlider
label="Width:"
v-model="internalModel.width"
:min="10"
:max="3000"
color="green"
addstr="px"
@update:model-value="modifValueWidth"
></CMySlider>
<CMySlider
label="Height:"
v-model="internalModel.height"
:min="10"
:max="3000"
color="red"
addstr="px"
@update:model-value="modifValueHeight"
></CMySlider>
</div>
</div>
</template>
<script lang="ts" src="./CMySize.ts">
</script>
<style lang="scss" scoped>
@import './CMySize.scss';
</style>

View File

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

View File

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

View File

@@ -1,15 +1,16 @@
<template>
<div class="q-pa-xs" style="width: 180px">
<div class="q-pa-xs" style="width: 170px">
<q-badge color="primary"> {{ label }} {{ modelValue }} </q-badge>
<q-input
dense
v-model="sliderValue"
filled
:disable="disable"
>
</q-input>
<q-slider v-model="sliderValue" :min="min" :max="max" :color="color" />
<q-slider :disable="disable" v-model="sliderValue" :min="min" :max="max" :color="color" />
</div>
</template>

View File

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

View File

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

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.1.7">
<meta name="version" content="1.1.9">
<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

@@ -684,24 +684,53 @@ export interface IMyCard {
link?: string
}
export interface ISize {
width?: string
height?: string
}
export interface IBorder {
top?: string
bottom?: string
left?: string
right?: string
}
export interface IDimensioni {
size?: ISize
margini?: IBorder
padding?: IBorder
}
export interface IElementiPagina {
pagina: IDimensioni
riga: IDimensioni
}
export interface IElementiScheda {
pagina: IDimensioni
riga: IDimensioni
scheda_prodotto: IDimensioni
immagine_prodotto: IDimensioni
}
export interface IMyScheda {
_id: string,
idapp: string,
isTemplate: boolean,
name: string,
widthscheda?: string
_id?: string,
idapp?: string,
isTemplate?: boolean,
name?: string,
line_height?: number
widthpag?: number
width?: number
height?: number
numschede_perRiga?: number
numschede_perCol?: number
margine_top?: number
margine_pagina?: string
margine_riga?: string
text?: string
posiz_text?: number
dimensioni: IElementiScheda
bgimg?: string
bgimg_printable?: string
bgSize?: string
bgSize_printable?: string
productTypes?: number[]
excludeproductTypes?: number[]
editore?: string[]
@@ -709,8 +738,6 @@ export interface IMyScheda {
sort?: number
arrProdottiSpeciali?: string[]
// In Memoria:
arrProdToShow?: IProduct[][]
}
export interface ISchedaSingola {
@@ -718,6 +745,9 @@ export interface ISchedaSingola {
scheda?: IMyScheda,
order?: number,
numSchede?: number,
// In Memoria
arrProdToShow?: IProduct[][]
}
export interface ICatalogo {
@@ -728,15 +758,14 @@ export interface ICatalogo {
Categoria: string[]
Editore: string[]
pdf: boolean
printable?: boolean
dimensioni: IElementiPagina,
backgroundimage?: string
backgroundimage_printable?: string
widthpag?: number
widthpagPrintable?: number
width?: string
height?: string
printable?: boolean
margine_paginaPrintable?: string
margine_rigaPrintable?: string
backgroundSize?: string
backgroundSize_printable?: string
first_page_img?: string
first_page_html?: string

View File

@@ -1063,6 +1063,7 @@ const msg_it = {
max_partecip: 'Massimo partecipanti',
contribstr: 'Contributo (esempio: 5€ + 5 RIS)',
contact_phone: 'Telefono per info',
contact_email: 'Email per info',
contact_telegram: 'Username Telegram',
},
disc: {

View File

@@ -242,7 +242,7 @@ export const Api = {
setAuthToken = false,
evitaloop = false,
retryCount = 5,
retryDelay = 3000
retryDelay = 5000
): Promise<Types.AxiosSuccess | Types.AxiosError> {
try {
const response = await this.SendReqBase(url, method, mydata, setAuthToken, evitaloop);

View File

@@ -39,6 +39,7 @@ export const costanti = {
'widthpag',
'Printable',
'height',
'height_Printable',
'numschede_perCol',
'numschede_perRiga',
'margine_pagina',
@@ -54,6 +55,13 @@ export const costanti = {
'text',
],
SCHEDA_FIELDS: [
'bgimg',
'bgimg_printable',
'bgSize',
'bgSize_printable',
],
TIPOFAVBOOK: {
FAVORITE: 1,
BOOKMARK: 2,
@@ -350,6 +358,7 @@ export const costanti = {
DIR_UPLOAD: 'upload/',
DIR_PRODUCTS: 'products/',
DIR_CATALOGO: 'catalogo/',
DIR_SCHEDA: 'scheda/',
FRIENDS: 1,
ASK_TRUST: 2,

View File

@@ -147,22 +147,43 @@ export const colmylistcards = [
AddCol({ name: 'link', label_trans: 'link' }),
]
export const IBorder = [
AddCol({ name: 'top', label_trans: 'size.top', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'bottom', label_trans: 'size.bottom', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'left', label_trans: 'size.left', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'right', label_trans: 'size.right', fieldtype: costanti.FieldType.string }),
]
export const colISize = [
AddCol({ name: 'width', label_trans: 'size.width', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'height', label_trans: 'size.height', fieldtype: costanti.FieldType.string }),
]
export const colmyScheda = [
AddCol({ name: 'name', label_trans: 'scheda.name', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'isTemplate', label_trans: 'scheda.isTemplate', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'widthscheda', label_trans: 'scheda.widthscheda', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'widthscheda', label_trans: 'scheda.widthscheda', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'widthpag', label_trans: 'scheda.widthpag', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'width', label_trans: 'scheda.width', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'height', label_trans: 'scheda.height', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'widthimg', label_trans: 'scheda.widthimg', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'heightimg', label_trans: 'scheda.heightimg', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'height_Printable', label_trans: 'scheda.height_Printable', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'numschede_perCol', label_trans: 'scheda,numschede_perCol', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'numschede_perRiga', label_trans: 'scheda.numschede_perRiga', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'margine_top', label_trans: 'scheda.margine_top', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_top', label_trans: 'scheda.margine_top', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'margine_pagina', label_trans: 'scheda.margine_pagina', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_paginaPrintable', label_trans: 'scheda.margine_paginaPrintable', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_riga', label_trans: 'scheda.margine_riga', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_rigaPrintable', label_trans: 'scheda.margine_rigaPrintable', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'text', label_trans: 'catalogo.text', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'posiz_text', label_trans: 'catalogo.posiz_text', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'line_height', label_trans: 'catalogo.line_height', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'bgimg', label_trans: 'scheda.bgimg', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'bgimg_printable', label_trans: 'scheda.bgimg_printable', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'bgSize', label_trans: 'scheda.bgimg', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'bgSize_printable', label_trans: 'scheda.bgSize', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'widthPPrintable', label_trans: 'scheda.widthPPrintable', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'productTypes', label_trans: 'productTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'excludeproductTypes', label_trans: 'excludeproductTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'Editore', label_trans: 'Editore' }),
@@ -176,14 +197,12 @@ export const colmyelCatalogo = [
AddCol({ name: 'excludeproductTypes', label_trans: 'excludeproductTypes', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'pdf', label_trans: 'pdf' }),
AddCol({ name: 'Editore', label_trans: 'Editore' }),
AddCol({ name: 'backgroundimage', label_trans: 'backgroundimage', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'backgroundimage_printable', label_trans: 'backgroundimage_printable', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'widthpag', label_trans: 'widthpag', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'widthpagPrintable', label_trans: 'widthpagPrintable', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'width', label_trans: 'width', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'height', label_trans: 'height', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'optcatalogo.', label_trans: 'catalogo.optcatalogo.', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'margine_pagina', label_trans: 'margine_pagina', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_paginaPrintable', label_trans: 'margine_paginaPrintable', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_riga', label_trans: 'margine_riga', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'margine_rigaPrintable', label_trans: 'margine_rigaPrintable', fieldtype: costanti.FieldType.string }),
AddCol({ name: 'first_page_img', label_trans: 'catalogo.first_page_img', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'last_page_img', label_trans: 'catalogo.last_page_img', fieldtype: costanti.FieldType.image }),
@@ -191,6 +210,13 @@ export const colmyelCatalogo = [
AddCol({ name: 'first_page_height', label_trans: 'catalogo.first_page_height', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'last_page_height', label_trans: 'catalogo.last_page_html', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'last_page_html', label_trans: 'catalogo.last_page_html', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'backgroundimage', label_trans: 'backgroundimage', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'backgroundimage_printable', label_trans: 'backgroundimage_printable', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'backgroundSize', label_trans: 'scheda.bgimg', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'backgroundSize_printable', label_trans: 'scheda.bgSize', fieldtype: costanti.FieldType.image }),
AddCol({ name: 'widthpagPrintable', label_trans: 'widthpag', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'widthpagPrintable', label_trans: 'widthpagPrintable', fieldtype: costanti.FieldType.number }),
]
export const colmyelems = [
@@ -1541,7 +1567,7 @@ export const colmySkills = [
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
numpag_carousel: 6,
}),
AddCol({
/*AddCol({
name: 'numLevel',
label_trans: 'level.name',
fieldtype: costanti.FieldType.star3,
@@ -1552,7 +1578,7 @@ export const colmySkills = [
icon: 'grading',
isadvanced_field: true,
numpag_carousel: 7,
}),
}),*/
AddCol({
name: 'date_created', label_trans: 'event.dateCreated', fieldtype: costanti.FieldType.onlydate,
required: false,
@@ -1878,6 +1904,11 @@ export const colmyBachecas = [
label_trans: 'event.contact_phone',
fieldtype: costanti.FieldType.string,
}),
AddCol({
name: 'contact_email',
label_trans: 'event.contact_email',
fieldtype: costanti.FieldType.string,
}),
AddCol({
name: 'contact_telegram',
label_trans: 'event.contact_telegram',
@@ -3931,12 +3962,6 @@ export const fieldsTable = {
},
tableForUsers: [
'myskills',
'mygoods',
'mybachecas',
'myhosps',
],
tableRemotePickup: [
'countries',
@@ -4186,8 +4211,8 @@ export const fieldsTable = {
collabel: 'title',
},
{
value: 'scheda',
label: 'Elementi SCheda',
value: 'myschedas',
label: 'Elementi Scheda',
columns: colmyScheda,
colkey: '_id',
collabel: 'name',

View File

@@ -7895,7 +7895,7 @@ export const tools = {
},
getTitleGall(table: string) {
if (fieldsTable.tableForUsers.includes(table)) {
if (shared_consts.TABLEFORUSERS.includes(table)) {
return 'Profilo'
} else {
return fieldsTable.getTitleImgByTable(table)
@@ -7919,7 +7919,7 @@ export const tools = {
if (username === '') {
username = userStore.my.username
}
if (fieldsTable.tableForUsers.includes(table)) {
if (shared_consts.TABLEFORUSERS.includes(table)) {
ris = 'profile/' + username + '/' + table
} else if (table === 'users') {
ris = 'profile/' + userStore.my.username
@@ -8271,6 +8271,30 @@ export const tools = {
return null
},
getNomeTabellaStrByTable(table: string, rec: any) {
let str = ''
let nome = ''
if (table === toolsext.TABMYBACHECAS) {
nome = rec ? rec.descr : ''
str = 'l\'Evento "' + nome + '"'
} else if (table === toolsext.TABMYSKILLS) {
nome = rec ? rec.descr : ''
str = 'il Servizio "' + nome + '"'
} else if (table === toolsext.TABMYGOODS) {
nome = rec ? rec.descr : ''
str = 'il Bene "' + nome + '"'
} else if (table === toolsext.TABMYHOSPS) {
nome = rec ? rec.descr : ''
str = 'l\'Ospitalità "' + nome + '"'
}
if (!str) {
str = 'il record selezionato'
}
return str
},
extraparams(table: string, extra?: any) {
if (table === toolsext.TABMYGROUPS) {

View File

@@ -52,7 +52,7 @@ function getRecordProductInfoEmpty(): IProductInfo {
stars: 0,
date: tools.getDateNow(),
icon: '',
img: '',
imagefile: '',
}
}

View File

@@ -14,7 +14,7 @@ import { CProductCard } from '@src/components/CProductCard'
import { CMySelect } from '@src/components/CMySelect'
import { CContainerCatalogoCard } from '@src/components/CContainerCatalogoCard'
import { CSelectUserActive } from '@src/components/CSelectUserActive'
import { ICatalogo, IFilterCatalogo, IMyScheda, IProdView, IProduct, ISearchList } from 'model'
import { ICatalogo, IFilterCatalogo, IMyScheda, IProdView, IProduct, ISchedaSingola, ISearchList } from 'model'
import html2canvas from 'html2canvas'
// import { VueHtmlToPaper } from 'vue-html-to-paper'
@@ -412,9 +412,9 @@ export default defineComponent({
}
}
function getProdBySchedaRigaCol(scheda: IMyScheda, riga: number, col: number) {
function getProdBySchedaRigaCol(recscheda: ISchedaSingola, riga: number, col: number) {
try {
return scheda.arrProdToShow![riga][col]
return recscheda.arrProdToShow![riga][col]
} catch (e) {
return null
}
@@ -436,10 +436,7 @@ export default defineComponent({
const arrProdFiltrati = getProductsFilteredByScheda(recscheda.scheda)
let indprod = 0
let indadded = 0
recscheda.scheda.arrProdToShow = []
let riga = 0
let col = 0
recscheda.arrProdToShow = []
for (let giro = 0; giro < schedePerPagina; giro++) {
// Aggiunge il prossimo prodotto che non è stato ancora inserito
@@ -450,21 +447,22 @@ export default defineComponent({
if (result.indprod)
indprod = result.indprod // Aggiorna indprod per il prossimo giro
if (result.myrec) {
indadded++
let riga = Math.floor(indadded / schedePerCol)
let col = indadded % schedePerCol
if (!recscheda.scheda.arrProdToShow[riga]) {
recscheda.scheda.arrProdToShow[riga] = [];
if (!recscheda.arrProdToShow[riga]) {
recscheda.arrProdToShow[riga] = [];
}
recscheda.scheda.arrProdToShow[riga][col] = result.myrec
recscheda.arrProdToShow[riga][col] = result.myrec
indadded++
}
}
}
console.log('*** arrProdToShow', recscheda.scheda.arrProdToShow)
console.log('*** arrProdToShow', recscheda.arrProdToShow)
}
}
}
@@ -712,6 +710,57 @@ export default defineComponent({
}
function generateStyleCatalogo(optcatalogo: ICatalogo) {
const fileimg = (optcatalogo.printable
? optcatalogo.backgroundimage_printable
: optcatalogo.backgroundimage)
const marginBottom = optcatalogo.dimensioni.pagina.margini!.bottom || ''
const backgroundImage = fileimg ? `url(${costanti.DIR_UPLOAD +
costanti.DIR_CATALOGO + fileimg})` : ''
const backgroundSize = `${optcatalogo.printable
? optcatalogo.backgroundSize_printable
: optcatalogo.backgroundSize}`;
const width = optcatalogo.dimensioni.pagina.size?.width
return {
backgroundImage,
backgroundSize,
marginBottom,
'--width': width
};
}
function generateStylePageScheda(optcatalogo: ICatalogo, scheda: IMyScheda) {
const marginTop = `${scheda.dimensioni.pagina.margini!.top}`
const marginBottom = scheda.dimensioni.pagina.margini!.bottom
const fileimg = (optcatalogo.printable
? scheda.bgimg_printable
: scheda.bgimg)
const backgroundImage = fileimg ? `url(${costanti.DIR_UPLOAD +
costanti.DIR_SCHEDA + fileimg})` : ''
const backgroundSize = `${optcatalogo.printable
? scheda.bgSize_printable
: scheda.bgSize}`;
const width = scheda.dimensioni.pagina.size?.width
return {
marginBottom,
marginTop,
backgroundImage,
backgroundSize,
'--width': width
};
}
onMounted(mounted)
@@ -754,6 +803,8 @@ export default defineComponent({
groupedPages,
getNextProd,
getProdBySchedaRigaCol,
generateStylePageScheda,
generateStyleCatalogo,
}
}
})

View File

@@ -216,7 +216,11 @@
? optcatalogo.first_page_img
: optcatalogo.first_page_img)
})`,
backgroundSize: 'cover',
backgroundSize: `${
optcatalogo.printable
? scheda.bgSize_printable
: scheda.bgSize
}`,
height: optcatalogo.first_page_height + 'px',
width: optcatalogo.first_page_width + 'px',
}"
@@ -226,24 +230,7 @@
v-html="optcatalogo.first_page_html"
></div>
</div>
<div
:class="{ 'fixed-width': true }"
:style="{
backgroundImage: `url(${
costanti.DIR_UPLOAD +
costanti.DIR_CATALOGO +
(optcatalogo.printable
? optcatalogo.backgroundimage_printable
: optcatalogo.backgroundimage)
})`,
backgroundSize: 'contain',
'--width':
(optcatalogo.printable
? optcatalogo.widthpagPrintable
: optcatalogo.widthpag) + 'px',
}"
>
<div :style="generateStyleCatalogo(optcatalogo)">
<div class="flex-container-book">
<q-infinite-scroll
v-if="
@@ -311,12 +298,13 @@
recscheda.scheda
)"
:key="pageIndex"
class="card-page"
:style="`margin-bottom: ${
optcatalogo.printable
? optcatalogo.margine_paginaPrintable
: optcatalogo.margine_pagina
}; margin-top: ${optcatalogo.margine_top + 'px'};`"
:class="{ 'fixed-width': true, 'card-page': true }"
:style="
generateStylePageScheda(
optcatalogo,
recscheda.scheda
)
"
>
<!-- Itera sulle righe di ogni pagina -->
<div
@@ -324,9 +312,9 @@
:key="`${pageIndex}-${rowIndex}`"
class="card-row"
:style="`margin-bottom: ${
optcatalogo.printable
? optcatalogo.margine_rigaPrintable
: optcatalogo.margine_riga
scheda.dimensioni.riga.bottom
? scheda.dimensioni.riga.bottom
: optcatalogo.dimensioni.riga.bottom
};`"
>
<!-- Itera sui prodotti di ogni riga -->
@@ -337,26 +325,26 @@
:style="
'place-content: center; ' +
('flex: 0 1 ' +
recscheda.scheda.widthscheda ||
'100px' + '; ')
recscheda.scheda.dimensioni.scheda_prodotto.width
|| '100px' + '; ')
"
>
<CContainerCatalogoCard
v-if="
getProdBySchedaRigaCol(
recscheda.scheda,
recscheda,
rowIndex,
colIndex
) &&
getProdBySchedaRigaCol(
recscheda.scheda,
recscheda,
rowIndex,
colIndex
).active
"
:id="
getProdBySchedaRigaCol(
recscheda.scheda,
recscheda,
rowIndex,
colIndex
)._id
@@ -364,6 +352,7 @@
:complete="false"
:cosa="cosa"
:optcatalogo="optcatalogo"
:scheda="recscheda.scheda"
:options="{
show_short_descr: false,
show_price: false,
@@ -376,12 +365,12 @@
<CProductCard
v-else-if="
getProdBySchedaRigaCol(
recscheda.scheda,
recscheda,
rowIndex,
colIndex
) &&
(getProdBySchedaRigaCol(
recscheda.scheda,
recscheda,
rowIndex,
colIndex
).active ||
@@ -389,7 +378,7 @@
"
:id="
getProdBySchedaRigaCol(
recscheda.scheda,
recscheda,
rowIndex,
colIndex
)._id
@@ -415,7 +404,11 @@
? optcatalogo.last_page_img
: optcatalogo.last_page_img)
})`,
backgroundSize: 'cover',
backgroundSize: `${
optcatalogo.printable
? scheda.bgSize_printable
: scheda.bgSize
}`,
height: optcatalogo.last_page_height + 'px',
width: optcatalogo.last_page_width + 'px',
}"
@@ -442,6 +435,7 @@
</div>
<q-img
v-if="optcatalogo.backgroundimage"
:src="
costanti.DIR_UPLOAD +
costanti.DIR_CATALOGO +
@@ -449,7 +443,7 @@
"
>
</q-img>
<div>
<div v-if="optcatalogo.backgroundimage_printable">
Sfondo Stampa:
{{
costanti.DIR_UPLOAD +