- aggiornato l'Editor HTML

This commit is contained in:
Surya Paolo
2024-09-13 19:42:55 +02:00
parent 791e18f167
commit 0872afbb39
55 changed files with 1451 additions and 1137 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
APP_VERSION="1.0.58"
APP_VERSION="1.0.60"
SERVICE_WORKER_FILE="service-worker_1.0.39.js"
APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
{
"name": "riso",
"version": "1.0.58",
"version": "1.0.60",
"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

@@ -20,7 +20,8 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
rsync -e 'ssh -p 8822' -a dist/pwa/ pcbuser@pcb:$SERVERDIR_WEBSITE
rsync -e 'ssh -p 8822' -av --delete dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
#rsync -e 'ssh -p 8822' -av --delete dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
rsync -e 'ssh -p 8822' -a dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
echo "Finito $SERVERDIR_WEBSITE "

View File

@@ -20,7 +20,8 @@ if [[ $risposta == "Y" || $risposta == "y" ]]; then
echo "Sincronizzazione in remoto $SERVERDIR_WEBSITE ..."
sshpass -p $SERVERPW_WEBSITE rsync -e 'ssh -p 8855' -a --exclude 'upload' dist/pwa/ suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/
rsync -e 'ssh -p 8855' -av --delete dist/pwa/js/ suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/js
#rsync -e 'ssh -p 8855' -av --delete dist/pwa/js/ suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/js
rsync -e 'ssh -p 8855' -a dist/pwa/js/ suryapaolo@servereng:/var/www/$SERVERDIR_WEBSITE/js
echo "Finito $SERVERDIR_WEBSITE "
fi

View File

@@ -19,7 +19,8 @@ npm run buildpwa
echo "Sincronizzazione $SERVERDIR_WEBSITE in remoto..."
rsync -e 'ssh -p 8822' -a dist/pwa/ pcbuser@pcb:$SERVERDIR_WEBSITE
rsync -e 'ssh -p 8822' -av --delete dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
#rsync -e 'ssh -p 8822' -av --delete dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
rsync -e 'ssh -p 8822' -a dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
cp .env.prod.bak .env.production

View File

@@ -19,7 +19,7 @@ npm run buildpwa
echo "Sincronizzazione $SERVERDIR_WEBSITE in remoto..."
rsync -e 'ssh -p 8822' -a dist/pwa/ pcbuser@pcb:$SERVERDIR_WEBSITE
rsync -e 'ssh -p 8822' -av --delete dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
rsync -e 'ssh -p 8822' -a dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
cp .env.prod.bak .env.production

View File

@@ -19,7 +19,7 @@ npm run buildpwa
echo "Sincronizzazione $SERVERDIR_WEBSITE in remoto..."
rsync -e 'ssh -p 8822' -a dist/pwa/ pcbuser@pcb:$SERVERDIR_WEBSITE
rsync -e 'ssh -p 8822' -av --delete dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
rsync -e 'ssh -p 8822' -a dist/pwa/js/ pcbuser@pcb:$SERVERDIR_WEBSITE/js
cp .env.prod.bak .env.production

View File

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

View File

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

View File

@@ -295,10 +295,10 @@ export const shared_consts = {
// Condivise
TABLES_FAVORITE_BOOKMARK: ['myskills', 'mygoods', 'mybachecas', 'myhosps', 'attivitas'],
// Solo per VUE.JS
TABLES_INSERT_ALMOST_ONE_TO_ENABLE_CIRCUIT: ['myskills', 'myhosps', 'mygoods'],
TABLES_WITH_FILTER_FIELD: ['caldate'],
@@ -1139,7 +1139,7 @@ export const shared_consts = {
OrderStat: {
// IN_CART: { label: 'In Carrello', value: 1 }, //IN_CART
IN_CORSO: { label: 'In Corso', value: 2, icon: 'fas fa-tasks', color: 'text-black' }, //CHECKOUT_SENT
PREPARED: { label: 'Preparati', value: 15, icon: 'fas fa-archive', color: 'text-orange' },
PREPARED: { label: 'Preparati', value: 15, icon: 'fas fa-archive', color: 'text-orange' },
CONFERMATI: { label: 'Confermati', value: 3, icon: 'fas fa-calendar', color: 'text-blue' }, //ORDER_CONFIRMED
PAGATI: { label: 'Pagati', value: 4, icon: 'money', color: 'text-green' }, //PAYED
DELIVERED: { label: 'Consegnato', value: 5, icon: 'fas fa-calendar', color: 'text-blue' }, //DELIVERED
@@ -1788,18 +1788,20 @@ export const shared_consts = {
{
value: 20,
label: 'Testo',
icon: 'fas fa-file-alt',
},
{
value: 35,
label: 'Immagine',
icon: '',
},
{
value: 7,
label: 'Scheda (1 Immagine e Testo)',
label: 'Scheda (IMG + Testo)',
},
{
value: 9,
label: 'Poster (1 Immagine + Testo)',
label: 'Poster (IMG + Testo)',
},
{
value: 195,
@@ -2038,7 +2040,7 @@ export const shared_consts = {
idSkill: 1,
idCity: 1,
logo: 1,
photos: 1,
photos: 1,
note: 1,
descr: 1,
website: 1,
@@ -2053,7 +2055,7 @@ export const shared_consts = {
createdBy: 1,
//**ADDFIELD_ATTIVITA
};
} else if (table === this.TABLES_MYBACHECAS) {
proj = {
recSkill: 1,
@@ -2187,9 +2189,9 @@ export const shared_consts = {
EPUB: 105,
MOBI: 106,
PDF: 107,
STREAMING: 108,
STREAMING: 108,
},
VERSIONI_PRODOTTO: [
{
label: '[Nessuno]',
@@ -2218,7 +2220,7 @@ export const shared_consts = {
},
{
label: 'EPUB',
value: 105,
value: 105,
color: 'orange',
},
{
@@ -2236,8 +2238,8 @@ export const shared_consts = {
value: 108,
color: 'red',
},
],
],
}

View File

@@ -25,7 +25,7 @@
/>
</q-avatar>
</div>
<div class="col-fixed" style="width: 200px;">
<div class="col-fixed" style="width: 200px">
<q-select
dense
v-model="tablesel"
@@ -55,9 +55,12 @@
</template>
</q-select>
</div>
<div class="col-auto"> <!-- to the right -->
<div class="col-auto">
<!-- to the right -->
<q-btn
v-if="tools.getLabelAddrec(ind)"
v-if="
tools.getLabelAddrec(ind) && tools.checkIfICanAddNewRecord()
"
rounded
outline
color="primary"

View File

@@ -2469,14 +2469,14 @@ export default defineComponent({
const percrange_ne_lng = ne.lng - ((ne.lng - sw.lng) * percrange)
const percrange_sw_lat = sw.lat + ((ne.lat - sw.lat) * percrange)
const percrange_sw_lng = sw.lng + ((ne.lng - sw.lng) * percrange)
if (precboundariesMap.value) {
if (precboundariesMap.value.ne.lat > percrange_ne_lat && precboundariesMap.value.ne.lng > percrange_ne_lng &&
precboundariesMap.value.sw.lat < percrange_sw_lat && precboundariesMap.value.sw.lng < percrange_sw_lng) {
updatedata = false
// console.log('updateMapBoundaries', 'updatedata', updatedata)
} else {
updatedata = false
// console.log('updateMapBoundaries', 'updatedata', updatedata)
} else {
// updatedata = false
}
}
@@ -2488,12 +2488,12 @@ export default defineComponent({
if (autoaggiornaMappaSeMuovi.value) {
doSearch()
} else {
}
}
}
}
function updateMapZoomOut() {
@@ -2510,11 +2510,11 @@ export default defineComponent({
function getLabelAreaMap(conHtml: boolean = true) {
if (showMap.value) {
if (conHtml) {
return '<span class="hint_search">' + translate('grid.intheareamap') + '</span>'
return '<span class="hint_search">' + translate('grid.intheareamap') + '</span>'
} else {
return translate('grid.intheareamap')
}
}
return ''
@@ -2524,14 +2524,14 @@ export default defineComponent({
myMapComp.value.gotoCurrentLocation()
}
function showInMap(rec: any) {
visupagedialog.value = false
function showInMap(rec: any) {
visupagedialog.value = false
if (!showMap.value) {
showMapAtLeast1.value = true
showMap.value = true
showMap.value = true
}
if (myMapComp.value && mapInitialized.value) {
myMapComp.value.showInMap(rec)
}

View File

@@ -15,7 +15,6 @@
style="text-align: center"
>
<q-btn
v-if="mytable && visButtRow()"
rounded
dense
color="primary"
@@ -347,9 +346,7 @@
</div>
</div>
<div
v-if="showMapAtLeast1"
v-show="showMap">
<div v-if="showMapAtLeast1" v-show="showMap">
<CMapByTable
ref="myMapComp"
mytable=""
@@ -1152,16 +1149,16 @@
autofocus
type="search"
:hint="
(pagination.rowsNumber === 1 && prop_search)
pagination.rowsNumber === 1 && prop_search
? `${pagination.rowsNumber} ` +
t('grid.found') +
' ' +
getLabelAreaMap(false)
: ((pagination.rowsNumber > 1 && prop_search)
: pagination.rowsNumber > 1 && prop_search
? `${pagination.rowsNumber} ${labelElemFind}` +
' ' +
getLabelAreaMap(false)
: '')
: ''
"
debounce="500"
:error-message="noresultLabel"

View File

@@ -578,7 +578,7 @@ export default defineComponent({
if (table === shared_consts.TABLES_MYSKILLS) {
const recSector = searchList.value.find((rec) => rec.table === 'sectors')
if (recSector) {
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table + costanti.FILTER_SEP + recSector.value, newval)
tools.setCookie(tools.COOK_SEARCH + costanti.FILTER_SEP + mytable.value + costanti.FILTER_SEP + table + costanti.FILTER_SEP + recSector.value, newval)
}
} else if (table === toolsext.TABSECTORS) {
setCategBySector(shared_consts.TABLES_MYSKILLS, table, newval)
@@ -1424,6 +1424,7 @@ export default defineComponent({
return pagination.value.rowsNumber
}
function createNewRecordDialog() {
const mydata: any = {

View File

@@ -162,7 +162,9 @@
{{
tools.isEntrataByRecMov(row)
? t('movement.movin')
: (tools.isUscitaByRecMov(row) ? t('movement.movout') : '')
: tools.isUscitaByRecMov(row)
? t('movement.movout')
: ''
}}
</q-toolbar-title>
</q-toolbar>

View File

@@ -496,7 +496,7 @@ export default defineComponent({
{ icon: currentLocationIcon }
).addTo(map.value)
.bindPopup('Posizione attuale')
// .openPopup();
// .openPopup();
isTrackingLocation.value = false; // Resetta lo stato di tracciamento
@@ -567,7 +567,7 @@ export default defineComponent({
//console.log('openPopup markerShowed', markerShowed.value)
if (markerShowed.value.closePopup) {
markerShowed.value.openPopup(); // Mostra il popup
}
}
}
});
}

View File

@@ -1,4 +1,3 @@
.testo-banda {
//background: -webkit-gradient(linear, left top, left bottom, from(#3144f0), to(transparent));
//background: linear-gradient(180deg, #3144f0, transparent);
@@ -23,15 +22,14 @@ h4 {
visibility: hidden;
}
.landing {
}
.landing {}
.landing_background {
background: #000 url(../../../public/images/foto1.jpg) no-repeat 50% fixed;
background-size: cover
}
.landing > section {
.landing>section {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
@@ -74,21 +72,21 @@ h4 {
font-size: 1rem;
}
.landing > section.padding {
.landing>section.padding {
padding: 5.62rem 1rem;
}
.landing > section.padding_testo {
.landing>section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
.landing>section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing > section > div {
.landing>section>div {
position: relative;
width: 100%
}
@@ -144,7 +142,8 @@ h4 {
text-shadow: .25rem .25rem .5rem $grayshadow;
}
.landing__features h4, .landing__features h6 {
.landing__features h4,
.landing__features h6 {
margin: 1rem 0
}
@@ -252,7 +251,8 @@ body.mobile .landing:before {
text-shadow: 0.125rem 0.125rem 0.25rem $grayshadow;
}
.text-h1, h1 {
.text-h1,
h1 {
font-size: 3rem;
font-weight: bold;
line-height: 3rem;
@@ -341,42 +341,47 @@ body.mobile .landing:before {
.landing__hero {
text-align: center
}
.landing__header {
height: 7vh
}
.clgutter {
margin-top: 0;
padding: 0;
}
.landing__hero .text-h1, h1 {
.landing__hero .text-h1,
h1 {
font-size: 2rem;
line-height: 2.05rem;
margin-bottom: 1.25rem
}
.landing > section.padding {
.landing>section.padding {
padding: 2.5rem 1rem;
}
.landing > section.padding_testo {
.landing>section.padding_testo {
padding-top: 1.25rem;
padding-bottom: 1rem;
}
.landing > section.padding_gallery {
.landing>section.padding_gallery {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
max-width: 800px;
}
.landing > section.padding_gallery > div {
.landing>section.padding_gallery>div {
padding-top: 3.125rem;
padding-bottom: 5.625rem;
}
.landing__features h4, .landing__features h6 {
.landing__features h4,
.landing__features h6 {
margin: 1.25rem 0
}
@@ -389,12 +394,15 @@ body.mobile .landing:before {
text-align: center;
margin-top: 1.25rem;
}
.landing__hero-content {
padding-bottom: 11.25rem;
}
.landing__hero2-content {
padding-bottom: 7.25rem;
}
.landing__hero-btns {
-webkit-box-pack: center;
-ms-flex-pack: center;
@@ -408,6 +416,7 @@ body.mobile .landing:before {
.text-subtitle1 {
font-size: 1.25rem;
}
.text-vers {
font-size: 0.6rem;
}
@@ -480,3 +489,12 @@ body.mobile .landing:before {
justify-content: space-between;
background-color: green;
}
.uniform-button {
height: 40px;
/* Altezza fissa per tutti i bottoni */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

View File

@@ -1,5 +1,5 @@
import {
defineComponent, onMounted, PropType, ref, toRef, watch,
defineComponent, onMounted, PropType, computed, ref, toRef, watch,
} from 'vue'
import { IElemText, IImgGallery, ILabelValue, IMyCard, IMyElem, IMyPage, IOperators } from '@src/model'
@@ -39,7 +39,7 @@ export default defineComponent({
CCardCarousel, COpenStreetMap, CMyPage, CMyPageIntro, CMyEditor, CMyFieldRec,
CSelectColor, CSelectFontSize, CSelectImage, CImgPoster, CSelectAnimation
},
emits: ['saveElem', 'selElemClick'],
emits: ['saveElem', 'selElemClick', 'toggleSize', 'deleteElem'],
props: {
myelem: {
type: Object as PropType<IMyElem>,
@@ -90,6 +90,7 @@ export default defineComponent({
const myel = toRef(props, 'myelem')
const newtype = ref(<any>'')
const visuadd = ref(false)
const direzadd = ref(1)
watch(() => myel.value.order, (value, oldval) => {
mounted()
@@ -108,29 +109,69 @@ export default defineComponent({
// OK
disableSave.value = true
emit('saveElem', myelem)
if (exit)
elemChanged.value = false
}
})
}
function addNewElem(order?: number) {
function getNewOrderByThisElem() {
let myelem = props.myelem
let neword = 0
if (myelem) {
neword = myelem.order!
const recfound = globalStore.getMyElemNextThisElemId(props.path, myelem._id!)
if (recfound) {
neword = Math.round((recfound.order! + myelem.order!) / 2)
}
}
return neword
}
async function addNewElem(elemsel: any, direz: number) {
visuadd.value = false
let newrec = globalStore.prepareAddNewElem(order, $q, t, props.myelem, newtype.value)
let neword = 0
let recfound = null
if (direz === -1) { // Sopra
// ottieni l'elemento precedente, mantenendo l'ordinamento
recfound = globalStore.getMyElemPrecThisElemId(props.path, elemsel._id)
} else if (direz === 1) { // Sotto
// ottieni l'elemento precedente, mantenendo l'ordinamento
recfound = globalStore.getMyElemNextThisElemId(props.path, elemsel._id)
}
if (recfound) {
// get the middle of the order number between thie 2 elements
neword = Math.round((recfound.order + elemsel.order) / 2)
}
let newrec = await globalStore.prepareAddNewElem(neword, $q, t, props.myelem, newtype.value)
emit('selElemClick', newrec)
// emit('updateAll', newrec)
}
function dupElem(order?: number) {
async function dupElem(order?: number) {
const newrec = props.myelem
const newrec: IMyElem = { ...props.myelem }
newrec._id = undefined
newrec.order = order ? order : newrec.order! + 10
newrec.order = getNewOrderByThisElem()
if (newrec.type === shared_consts.ELEMTYPE.HTML) {
newrec.containerHtml = 'Copia di ' + newrec.containerHtml
}
const mynewelem = await globalStore.addNewElem($q, t, newrec)
emit('selElemClick', mynewelem)
globalStore.addNewElem($q, t, newrec)
}
function delElem() {
@@ -151,6 +192,7 @@ export default defineComponent({
if (ris) {
// OK
disableSave.value = true
emit('deleteElem', props.myelem)
}
})
})
@@ -292,6 +334,73 @@ export default defineComponent({
modifElem()
}
function toggleSize() {
emit('toggleSize', null)
}
const orderOptions = computed(() => {
const options = []
for (let i = 0; i <= 100; i += 1) {
options.push({ label: i.toString(), value: i });
}
for (let i = 100; i <= 1000; i += 10) {
options.push({ label: i.toString(), value: i });
}
return options;
});
function addOrder(rec: any) {
neworder.value = rec
}
async function moveElem(direz: any) {
let myelem = props.myelem
const elemprec = globalStore.getMyElemPrecThisElemId(props.path, myelem._id)
const elemnext = globalStore.getMyElemNextThisElemId(props.path, myelem._id!)
let neworder = 0
let oldorder = myelem.order!
if (direz === -1) {
// UP
neworder = elemprec.order!
elemprec.order = oldorder
if (oldorder === elemprec.order!) {
const elemprec2 = globalStore.getMyElemPrecThisElemId(props.path, elemprec._id!)
neworder = (elemprec2.order! + elemprec.order) / 2
elemprec.order = Math.round((oldorder + neworder) / 2)
}
await globalStore.saveMyElem($q, t, elemprec)
emit('saveElem', elemprec)
} else if (direz === 1) {
// DOWN
neworder = elemnext.order!
elemnext.order = oldorder
if (oldorder === elemnext.order!) {
const elemnext2 = globalStore.getMyElemNextThisElemId(props.path, elemnext._id!)
neworder = (elemnext2.order! + elemnext.order) / 2
elemnext.order = Math.round((oldorder + neworder) / 2)
}
await globalStore.saveMyElem($q, t, elemnext)
emit('saveElem', elemnext)
}
myelem.order = neworder
await globalStore.saveMyElem($q, t, myelem)
emit('saveElem', myelem)
}
onMounted(mounted)
return {
@@ -334,6 +443,11 @@ export default defineComponent({
Products,
generateSizeOptions,
updateSizeWidth,
direzadd,
toggleSize,
orderOptions,
addOrder,
moveElem,
}
},

File diff suppressed because it is too large Load Diff

View File

@@ -169,30 +169,6 @@ export default defineComponent({
globalStore.addNewElem($q, t, newrec)
}
function delElem() {
$q.dialog({
message: 'Eliminare ' + props.myelem.container + ' ?',
html: true,
ok: {
label: 'Elimina',
push: true,
},
title: '',
cancel: true,
persistent: false,
}).onOk(async () => {
// Save Elem record
await globalStore.delMyElem($q, t, props.myelem).then((ris) => {
if (ris) {
// OK
disableSave.value = true
}
})
})
}
function modifElem() {
disableSave.value = false
}
@@ -278,7 +254,6 @@ export default defineComponent({
myel,
disableSave,
modifElem,
delElem,
addNewElem,
newtype,
neworder,

View File

@@ -84,6 +84,8 @@ export default defineComponent({
const selElem = ref(globalStore.selElem)
const site = ref(globalStore.site)
const onloading = ref(false)
const myelems = computed(() => {
if (mypathin.value)
return globalStore.getMyElems(mypathin.value)
@@ -91,11 +93,11 @@ export default defineComponent({
return null
})
function load() {
async function load() {
// console.log('load', mypathin.value)
if (mypathin.value !== '') {
globalStore.loadPage('/' + mypathin.value, 'cmypageelem').then(ris => {
await globalStore.loadPage('/' + mypathin.value, 'cmypageelem').then(ris => {
rec.value = ris
// console.log('LoadPage', ris)
})
@@ -124,15 +126,8 @@ export default defineComponent({
}
})
function selElemClick(myelem: IMyElem) {
// console.log('mypageelem selElemClick', myelem)
selElem.value = {}
selElem.value = myelem
visuEditor.value = !!myelem
}
function mounted() {
load()
async function mounted() {
await load()
}
function saveElem(myelem: IMyElem) {
@@ -147,6 +142,20 @@ export default defineComponent({
mywidthEditor.value = mywidthEditor.value === 400 ? 1200 : 400
}
function deleteElem() {
selElem.value = {}
visuEditor.value = false
}
function selElemClick(myelem: IMyElem) {
// console.log('mypageelem selElemClick', myelem)
selElem.value = {}
selElem.value = myelem
visuEditor.value = !!myelem
}
onMounted(mounted)
return {
@@ -164,6 +173,8 @@ export default defineComponent({
changeVisuDrawer,
mywidthEditor,
toggleSize,
onloading,
deleteElem,
}
},

View File

@@ -1,6 +1,6 @@
<template>
<div>
<div v-if="mypathin && !!rec">
<div v-if="mypathin && !!rec && !onloading">
<q-toggle
v-if="tools.isManager()"
v-model="editOn"
@@ -37,13 +37,13 @@
></q-btn>
</q-bar>
<q-btn class="q-ma-sm" @click="toggleSize" label="<" color="primary" />
<CMyEditElem
:myelem="selElem"
:editOn="true"
:path="rec.path"
@selElemClick="selElemClick"
@deleteElem="deleteElem"
@toggleSize="toggleSize"
>
</CMyEditElem>
</q-drawer>
@@ -80,23 +80,26 @@
></q-video>
<div v-if="!!rec.content4" v-html="rec.content4"></div>
<div v-for="(myelem, ind) in myelems" :key="ind">
<div v-for="myelem in myelems" :key="myelem._id">
<div>
<CMyElem
v-if="(myelem.active || editOn) && !!rec.path"
:myelem="myelem"
:editOn="editOn"
:addOn="addOn"
:path="!!rec.path ? rec.path : ''"
:selElem="selElem"
@selElemClick="selElemClick"
>
</CMyElem>
<transition :duration="1000" appear>
<CMyElem
v-if="(myelem.active || editOn) && !!rec.path"
:myelem="myelem"
:editOn="editOn"
:addOn="addOn"
:path="!!rec.path ? rec.path : ''"
:selElem="selElem"
@selElemClick="selElemClick"
>
</CMyElem>
</transition>
</div>
<div v-if="myelem.type === shared_consts.ELEMTYPE.PAGE">
<CMyPageElem2 :mypath="myelem.container">&nbsp;</CMyPageElem2>
</div>
</div>
<div v-if="myelems.length === 0">
<CMyElem
v-if="editOn && !!rec.path"
@@ -128,6 +131,9 @@
<div v-if="!nofooter"></div>
</div>
</div>
<q-inner-loading id="spinner" :showing="onloading">
<q-spinner-tail color="primary" size="4em"> </q-spinner-tail>
</q-inner-loading>
</div>
</template>

View File

@@ -106,7 +106,7 @@ export default defineComponent({
})
function selElemClick(myelem: IMyElem) {
console.log('mypageelem selElemClick', myelem)
// console.log('mypageelem selElemClick', myelem)
selElem.value = {}
selElem.value = myelem
visuEditor.value = !!myelem

View File

@@ -15,10 +15,12 @@
<q-btn
flat
round
color="white"
icon="close"
@click="visuEditor = false; selElem = {};"
@click="
visuEditor = false;
selElem = {};
"
></q-btn>
</q-bar>
<CMyEditElem :myelem="selElem" :editOn="editOn" :path="rec.path">
@@ -57,7 +59,7 @@
></q-video>
<div v-if="!!rec.content4" v-html="rec.content4"></div>
<div v-for="(myelem, ind) in myelems" :key="ind">
<div v-for="myelem in myelems" :key="myelem._id">
<CMyElem
v-if="myelem.active || editOn"
:myelem="myelem"

View File

@@ -21,8 +21,8 @@
:rules="[
(val) => !!val || $t('reg.err.required'),
(val) =>
val.length >= 5 ||
$t('reg.err.atleast') + ' 5 ' + $t('reg.err.char'),
val.length >= 4 ||
$t('reg.err.atleast') + ' 4 ' + $t('reg.err.char'),
]"
>
<template v-slot:prepend>

View File

@@ -165,7 +165,7 @@ export default defineComponent({
},
username: {
required,
minLength: minLength(3),
minLength: minLength(4),
complexityUser,
registereduser,
},
@@ -214,9 +214,9 @@ export default defineComponent({
console.log('changeaportador', $route.params.invited)
if (!signup.aportador_solidario) {
if ($route.params.invited) {
// @ts-ignore
signup.aportador_solidario = $route.params.invited
}
// @ts-ignore
signup.aportador_solidario = $route.params.invited
}
}
}
})
@@ -308,7 +308,7 @@ export default defineComponent({
}
}
function selectcountry({ name, iso2, dialCode }: {name: string, iso2: string, dialCode: string}) {
function selectcountry({ name, iso2, dialCode }: { name: string, iso2: string, dialCode: string }) {
// console.log(name, iso2, dialCode)
signup.profile.nationality = iso2
countryname.value = name

View File

@@ -1,9 +1,7 @@
<template>
<div>
<div
v-if="
tools.isLogged() && tools.getUsername() && !collettivo
"
v-if="tools.isLogged() && tools.getUsername() && !collettivo"
class="text-center"
>
<q-banner rounded class="bg-green text-white" style="text-align: center">
@@ -13,7 +11,6 @@
</span>
</q-banner>
<div class="row q-ma-sm q-pa-sm justify-center">
<q-btn
class="q-ma-sm"
@@ -81,9 +78,9 @@
<div v-if="signup.terms">
<q-input
v-if="
(showaportador &&
signup.aportador_solidario !== tools.APORTADOR_NONE)
&& v$.aportador_solidario.$error
showaportador &&
signup.aportador_solidario !== tools.APORTADOR_NONE &&
v$.aportador_solidario.$error
"
ref="inputAportador"
bg-color="lightblue"
@@ -158,7 +155,13 @@
tools.errorMsg('username', v$.username) ||
(isalreadyReg ? 'L\'Username è gia stato registrato!' : '')
"
:label="tools.getConfSiteOptionEnabled(shared_consts.ConfSite.askUSernameTelegramToTheReg) ? $t('reg.username_telegram') : $t('reg.username_reg')"
:label="
tools.getConfSiteOptionEnabled(
shared_consts.ConfSite.askUSernameTelegramToTheReg
)
? $t('reg.username_telegram')
: $t('reg.username_reg')
"
>
<template v-slot:prepend>
<q-icon name="person" />
@@ -199,14 +202,21 @@
debounce="1000"
@keyup.enter="$refs.inputSurname.focus()"
:error-message="tools.errorMsg('name', v$.name)"
:label="tools.getConfSiteOptionEnabled(shared_consts.ConfSite.regNameSurnameMandatory) ? $t('reg.name') : $t('reg.name_opt')"
:label="
tools.getConfSiteOptionEnabled(
shared_consts.ConfSite.regNameSurnameMandatory
)
? $t('reg.name')
: $t('reg.name_opt')
"
>
<template v-slot:prepend>
<q-icon name="person" />
</template>
</q-input>
<!--<q-input
<q-input
v-if="signup.surname"
ref="inputSurname"
v-model="signup.surname"
rounded
@@ -224,7 +234,7 @@
<template v-slot:prepend>
<q-icon name="person" />
</template>
</q-input>-->
</q-input>
<q-input
ref="inputPassword"
v-model="signup.password"
@@ -292,7 +302,6 @@
</template>
</q-input>
<div class="column">
<q-btn
rounded
@@ -429,7 +438,15 @@
tools.errorMsg('username', v$.username) ||
(isalreadyReg ? 'L\'Username è gia stato registrato!' : '')
"
:label="collettivo ? $t('reg.username_reg_collettivo') : (tools.getConfSiteOptionEnabled(shared_consts.ConfSite.askUSernameTelegramToTheReg) ? $t('reg.username_telegram') : $t('reg.username_reg'))"
:label="
collettivo
? $t('reg.username_reg_collettivo')
: tools.getConfSiteOptionEnabled(
shared_consts.ConfSite.askUSernameTelegramToTheReg
)
? $t('reg.username_telegram')
: $t('reg.username_reg')
"
>
<template v-slot:prepend>
<q-icon name="person" />
@@ -470,7 +487,13 @@
debounce="1000"
@keyup.enter="$refs.inputSurname.focus()"
:error-message="tools.errorMsg('name', v$.name)"
:label="tools.getConfSiteOptionEnabled(shared_consts.ConfSite.regNameSurnameMandatory) ? $t('reg.name') : $t('reg.name_opt')"
:label="
tools.getConfSiteOptionEnabled(
shared_consts.ConfSite.regNameSurnameMandatory
)
? $t('reg.name')
: $t('reg.name_opt')
"
>
<template v-slot:prepend>
<q-icon name="person" />
@@ -490,7 +513,13 @@
!checkifDisabled ? $refs.carousel.next() : null
"
:error-message="tools.errorMsg('surname', v$.surname)"
:label="tools.getConfSiteOptionEnabled(shared_consts.ConfSite.regNameSurnameMandatory) ? $t('reg.surname') : $t('reg.surname_opt')"
:label="
tools.getConfSiteOptionEnabled(
shared_consts.ConfSite.regNameSurnameMandatory
)
? $t('reg.surname')
: $t('reg.surname_opt')
"
>
<template v-slot:prepend>
<q-icon name="person" />

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.0.58">
<meta name="version" content="1.0.60">
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">

View File

@@ -1,28 +1,19 @@
<template>
<q-page class="">
<div v-if="tools.isLogged()">
<div v-if="true">
<CNotifAtTop />
<div v-if="tools.isUserOk()">
<div v-if="true">
<CFinder
:ind="tools.getIndMainCardsByTable(shared_consts.TABLES_ATTIVITAS)"
:table="shared_consts.TABLES_ATTIVITAS"
:showMap="true"
/>
</div>
<div v-else>
<CUserNonVerif></CUserNonVerif>
</div>
</div>
<div v-else>
<CCheckIfIsLogged></CCheckIfIsLogged>
</div>
</q-page>
</template>
<script lang="ts" src="./activities.ts">
</script>

View File

@@ -311,17 +311,6 @@
:rec="mysite"
mykey="idMyGroup"
debounce="1000"
:type="costanti.FieldType.string"
@save="updateSite"
>
</CMyFieldDb>
<CMyFieldDb
title="My Group"
table="sites"
:id="mysite._id"
:rec="mysite"
mykey="idMyGroup"
debounce="1000"
@save="save"
:jointable="toolsext.TABMYGROUPS"
:type="costanti.FieldType.select"
@@ -1091,5 +1080,5 @@
"idapp" : "19",
"chiave" : "vers",
"userId" : "ALL",
"valore" : "1.0.58"
"valore" : "1.0.60"
}

View File

@@ -5240,7 +5240,7 @@ export const tools = {
const site = globalStore.site
if (site) {
return site.host!
return site.host!.replace(/^(https?:\/\/)/, '');
}
return ''
},
@@ -8774,8 +8774,16 @@ export const tools = {
return { text: '<span style="color: ' + color + ';">' + checkDomain + '</span><br>', ok }
},
checkIfICanAddNewRecord() {
// Attualmente se sei loggato puoi inserire Record
return this.isLogged() && this.isUserOk()
}
// FINE !
// getLocale() {

View File

@@ -274,6 +274,40 @@ export const useGlobalStore = defineStore('GlobalStore', {
return state.myelems.filter((page: IMyElem) => (page.path === path)).sort((a: any, b: any) => a.order - b.order)
},
getMyElemPrecThisElemId: (state: IGlobalState) => (path: string, idelem: string): IMyElem => {
// Ottieni tutti gli myelem con lo stesso path e ordinali per order
const sortedElems = state.myelems
.filter((elem: IMyElem) => elem.path === path)
.sort((a: any, b: any) => a.order - b.order);
// Trova l'indice dell'elemento con _id = idelem
const index = sortedElems.findIndex((elem: IMyElem) => elem._id === idelem);
// ritorna l'elemento precedente
if (index > 0) {
return sortedElems[index - 1];
} else {
return sortedElems[0];
}
},
getMyElemNextThisElemId: (state: IGlobalState) => (path: string, idelem: string): IMyElem => {
// Ottieni tutti gli myelem con lo stesso path e ordinali per order
const sortedElems = state.myelems
.filter((elem: IMyElem) => elem.path === path)
.sort((a: any, b: any) => a.order - b.order);
// Trova l'indice dell'elemento con _id = idelem
const index = sortedElems.findIndex((elem: IMyElem) => elem._id === idelem);
// ritorna l'elemento successivo
if (index < sortedElems.length - 1) {
return sortedElems[index + 1];
} else {
return sortedElems[sortedElems.length - 1];
}
},
getmenu: (state: IGlobalState): any => {
// console.log('getmenu', cfgrouter.getmenu())
@@ -1630,6 +1664,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (page.loadFirst)
page.loaded = true
}
this.myelems = []
this.myelems = (res.data.myelems) ? [...res.data.myelems] : []
// console.log('this.mypage', this.mypage)
@@ -2040,18 +2075,21 @@ export const useGlobalStore = defineStore('GlobalStore', {
if (!myelem._id)
return false
return await this.DeleteRec({ table: 'myelems', id: myelem._id }).then((ris) => {
if (ris) {
this.myelems = this.myelems.filter((rec) => rec._id !== myelem._id)
return await this.DeleteRec({ table: 'myelems', id: myelem._id })
.then(async (ris) => {
if (ris) {
this.myelems = this.myelems.filter((rec) => rec._id !== myelem._id)
// Aggiorna anche tutto il sito...
this.loadSite()
// Aggiorna anche tutto il sito...
// await this.loadSite()
tools.showPositiveNotif($q, t('db.deletedrecord'))
} else {
tools.showNegativeNotif($q, t('db.recdelfailed'))
}
})
tools.showPositiveNotif($q, t('db.deletedrecord'))
return true
} else {
tools.showNegativeNotif($q, t('db.recdelfailed'))
return false
}
})
},
async saveMyElem($q: any, t: any, myelem: IMyElem) {
@@ -2062,26 +2100,27 @@ export const useGlobalStore = defineStore('GlobalStore', {
mydata.data = myelem
// Save in Memory
for (let i = 0; i < this.myelems.length; i++) {
if (this.myelems[i]._id === myelem._id) {
this.myelems[i] = myelem;
break;
}
}
return await this.saveTable(mydata)
.then((ris) => {
if (ris) {
.then(async (newelem) => {
if (newelem) {
console.log('*** newelem', newelem)
// Save in Memory
for (let i = 0; i < this.myelems.length; i++) {
if (this.myelems[i]._id === newelem._id) {
this.myelems[i] = newelem;
break;
}
}
// Aggiorna anche tutto il sito...
this.loadSite()
// await this.loadSite()
tools.showPositiveNotif($q, t('db.recupdated'))
} else {
tools.showNegativeNotif($q, t('db.recfailed'))
}
return ris
return newelem
}).catch((e) => {
tools.showNegativeNotif($q, t('db.recfailed'))
return false
@@ -2091,11 +2130,12 @@ export const useGlobalStore = defineStore('GlobalStore', {
},
async addNewElem($q: any, t: any, myelem: IMyElem) {
const myrec = await this.saveMyElem($q, t, myelem)
if (myrec) {
myelem._id = myrec._id
this.myelems.push(myelem)
const newelem = await this.saveMyElem($q, t, myelem)
if (newelem) {
this.myelems.push(newelem)
}
return newelem
},
changeVisuDrawer(path: string, edit: boolean) {
@@ -2117,7 +2157,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
})
},
prepareAddNewElem(order: any, $q: any, t: any, myelem: any, newtype: any) {
async prepareAddNewElem(order: any, $q: any, t: any, myelem: any, newtype: any) {
const newrec: IMyElem = {
_id: undefined,
@@ -2145,9 +2185,9 @@ export const useGlobalStore = defineStore('GlobalStore', {
}
}
this.addNewElem($q, t, newrec)
const mynewrec = await this.addNewElem($q, t, newrec)
return newrec
return mynewrec
},