- corretto problema ROGNOSO : Risolvere la questione "Sessioni multiple", se apro 2 browser l'ultimo va a cancellare il precedente, e mi da errore di email non valida !
Il problema era sulla fetch nel service worker, gestita in quel modo personalizzato, andava in conflitto, non tenendo le chiamate bloccanti, ma uscivano prima che arrivasse la risposta del server. - Per chi è da tanto che non si collega a RISO, compare "Email non verificata"... (si risolve chiudendo su ESCI e riloggandosi)... però andrebbe sistemata. (stesso problema di prima).
This commit is contained in:
@@ -263,7 +263,6 @@ export default defineComponent({
|
||||
return {
|
||||
t,
|
||||
querySel,
|
||||
$q,
|
||||
globalStore,
|
||||
inputPrompt,
|
||||
result,
|
||||
|
||||
@@ -1,69 +1,67 @@
|
||||
import { defineComponent, ref, computed, PropType, toRef, onMounted } from 'vue'
|
||||
import { useUserStore } from '@store/UserStore'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useGlobalStore } from '@store/globalStore'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { tools } from '@tools'
|
||||
import { costanti, IMainCard } from '@store/Modules/costanti'
|
||||
import { CBigBtn } from '@src/components/CBigBtn'
|
||||
|
||||
import { defineComponent, ref, computed, onMounted } from 'vue';
|
||||
import { useGlobalStore } from '@store/globalStore';
|
||||
import { tools } from '@tools';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CCheckAppRunning',
|
||||
components: { CBigBtn },
|
||||
props: {},
|
||||
setup(props, { emit }) {
|
||||
setup() {
|
||||
const globalStore = useGlobalStore();
|
||||
|
||||
const userStore = useUserStore()
|
||||
const $router = useRouter()
|
||||
const globalStore = useGlobalStore()
|
||||
const { t } = useI18n()
|
||||
const isAppRunning = computed(() => globalStore.isAppRunning === true);
|
||||
const finishLoading = computed(() => globalStore.finishLoading === true);
|
||||
const deferredPrompt = computed(() => globalStore.deferredPrompt);
|
||||
const homescreen = computed(() => globalStore.homescreen === true);
|
||||
|
||||
const isAppRunning = computed(() => globalStore.isAppRunning)
|
||||
const viewiOS = ref(false);
|
||||
const viewAndroid = ref(false);
|
||||
const showNotice = ref(false);
|
||||
const showOther = ref(false);
|
||||
|
||||
const finishLoading = computed(() => globalStore.finishLoading)
|
||||
// === Rilevamento WebView ===
|
||||
const currentUrl = window.location.href;
|
||||
|
||||
const deferredPrompt = computed(() => globalStore.deferredPrompt)
|
||||
const homescreen = computed(() => globalStore.homescreen)
|
||||
const webViewDetectors = [
|
||||
{ name: 'Telegram', test: /Telegram/ },
|
||||
{ name: 'WhatsApp', test: /WhatsApp/ },
|
||||
{ name: 'Facebook', test: /FBAV|FBAN/ },
|
||||
{ name: 'Instagram', test: /Instagram/ },
|
||||
{ name: 'Messenger', test: /Messenger/ },
|
||||
];
|
||||
|
||||
const matchedWebView = webViewDetectors.find(({ test }) => test.test(navigator.userAgent));
|
||||
const isInRestrictedWebView = !!matchedWebView;
|
||||
const webViewName = matchedWebView ? matchedWebView.name : 'un’app';
|
||||
|
||||
const viewiOS = ref(false)
|
||||
const viewAndroid = ref(false)
|
||||
|
||||
// === Installazione ===
|
||||
function installApp() {
|
||||
if (globalStore.deferredPrompt) {
|
||||
globalStore.deferredPrompt.prompt()
|
||||
|
||||
// Wait for the user to respond to the prompt
|
||||
globalStore.deferredPrompt.prompt();
|
||||
globalStore.deferredPrompt.userChoice.then((choiceResult: any) => {
|
||||
if (choiceResult.outcome === 'accepted') {
|
||||
globalStore.deferredPrompt = null;
|
||||
// console.log('User accepted the A2HS prompt');
|
||||
} else {
|
||||
// console.log('User dismissed the A2HS prompt');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function mounted() {
|
||||
tools.checkApp()
|
||||
}
|
||||
|
||||
onMounted(mounted)
|
||||
onMounted(() => {
|
||||
tools.checkApp();
|
||||
});
|
||||
|
||||
return {
|
||||
userStore,
|
||||
tools,
|
||||
costanti,
|
||||
finishLoading,
|
||||
installApp,
|
||||
isAppRunning,
|
||||
deferredPrompt,
|
||||
homescreen,
|
||||
viewiOS,
|
||||
viewAndroid,
|
||||
homescreen,
|
||||
}
|
||||
}
|
||||
})
|
||||
installApp,
|
||||
isInRestrictedWebView,
|
||||
webViewName,
|
||||
currentUrl,
|
||||
showNotice,
|
||||
showOther,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,71 +1,193 @@
|
||||
<template>
|
||||
<div v-if="false && tools.isDebugOn()" class="bg-red text-white">
|
||||
<span> isAppRunning: {{ isAppRunning }} - </span>
|
||||
<span> deferredPrompt: {{ deferredPrompt }} - </span>
|
||||
<span> homescreen: {{ homescreen }} </span>
|
||||
<div
|
||||
v-if="tools.isDebugOn()"
|
||||
class="bg-red text-white q-pa-xs"
|
||||
>
|
||||
isAppRunning: {{ isAppRunning }} • deferredPrompt: {{ !!deferredPrompt }} •
|
||||
homescreen: {{ homescreen }} isInRestrictedWebView:
|
||||
{{ isInRestrictedWebView }} isInTelegramWebView: {{ tools.isInTelegramWebView() }}
|
||||
</div>
|
||||
<div v-if="finishLoading" class="row justify-center">
|
||||
<div v-if="!isAppRunning">
|
||||
<!-- App not running -->
|
||||
|
||||
<q-btn v-if="deferredPrompt" glossy size="xl" label="Installa App" @click="installApp" icon="fas fa-mobile-alt"
|
||||
color="green" text-color="white"></q-btn>
|
||||
<div v-else>
|
||||
<div v-if="$q.platform.is.ios && $q.platform.is.safari && !tools.isDevelop()">
|
||||
<q-btn glossy size="xl" label="Installa App" @click="viewiOS = !viewiOS" icon="fab fa-apple" color="green"
|
||||
text-color="white"></q-btn>
|
||||
<div
|
||||
v-if="finishLoading"
|
||||
class="row justify-center q-gutter-md"
|
||||
>
|
||||
<!-- 🚫 Se sei in un WebView non compatibile (es. Telegram) -->
|
||||
|
||||
<q-slide-transition>
|
||||
<!-- Mostra spiegazione per iOS -->
|
||||
<div v-if="viewiOS">
|
||||
<q-img src="/images/install_app_on_ios_1.png" fit="contain" style="min-width: 350px"
|
||||
class="q-my-sm"></q-img><br />
|
||||
|
||||
<q-img src="/images/install_app_on_ios_1b.jpg" class="q-mb-md"></q-img><br />
|
||||
|
||||
<q-img src="/images/install_app_on_ios_2.jpg" fit="contain"></q-img>
|
||||
</div>
|
||||
</q-slide-transition>
|
||||
<div
|
||||
v-if="isInRestrictedWebView"
|
||||
class="text-center q-pa-md"
|
||||
>
|
||||
<q-btn
|
||||
v-if="!showNotice"
|
||||
v-model="showNotice"
|
||||
glossy
|
||||
size="xl"
|
||||
label="Installa App"
|
||||
@click="showNotice = true"
|
||||
icon="fas fa-mobile-alt"
|
||||
color="green"
|
||||
text-color="white"
|
||||
/>
|
||||
<div
|
||||
v-if="showNotice"
|
||||
style="border: 2px solid #dedede"
|
||||
class="shadow-1 q-ma-md"
|
||||
>
|
||||
<q-icon
|
||||
name="fas fa-exclamation-triangle"
|
||||
color="warning"
|
||||
size="xl"
|
||||
/>
|
||||
<div v-if="tools.isInTelegramWebView()">
|
||||
<p class="text-body1 q-mt-md">
|
||||
Stai usando il browser interno di {{ webViewName }}.<br />
|
||||
Per installare l’app Clicca sui <strong>tre puntini "⋮"</strong> in alto e
|
||||
scegli <em>“Apri con...”</em>
|
||||
</p>
|
||||
</div>
|
||||
<div v-if="$q.platform.is.android">
|
||||
<q-btn v-if="!tools.isDevelop()" glossy size="lg" label="Installa App" @click="viewAndroid = !viewAndroid"
|
||||
icon="fab fa-android" color="green" text-color="white"></q-btn>
|
||||
|
||||
<q-slide-transition>
|
||||
<!-- Mostra spiegazione per Android -->
|
||||
<div v-if="viewAndroid">
|
||||
<div class="q-ma-sm text-h6"> 1) Cliccare sui 3 puntini verticali<br>
|
||||
2) Cliccare sulla voce 'Installa App' o 'Schermata Home'<br>
|
||||
3) Andare sulla schermata HOME e cliccare sull'icona di RISO.
|
||||
</div>
|
||||
<q-img src="/images/install_app_on_android_1.jpg" fit="contain" style="min-width: 350px"
|
||||
class="q-my-sm"></q-img><br />
|
||||
<q-img src="/images/install_app_on_android_2.jpg" fit="contain" style="min-width: 350px"
|
||||
class="q-my-sm"></q-img><br />
|
||||
><br />
|
||||
<q-img src="/images/install_app_on_android_3.jpg" fit="contain" style="min-width: 350px"
|
||||
class="q-my-sm"></q-img><br />
|
||||
</div>
|
||||
</q-slide-transition>
|
||||
<div v-else>
|
||||
<p class="text-body1 q-mt-md">
|
||||
Stai usando il browser interno di {{ webViewName }}.<br />
|
||||
<strong>Per installare l’app, apri questo link nel browser esterno.</strong>
|
||||
</p>
|
||||
<q-btn
|
||||
:href="currentUrl"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
label="Apri nel browser"
|
||||
color="primary"
|
||||
glossy
|
||||
icon="fas fa-external-link-alt"
|
||||
class="q-mt-sm"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ✅ Se sei nel browser esterno, ma non in modalità app -->
|
||||
<div
|
||||
v-else-if="!isAppRunning"
|
||||
class="text-center"
|
||||
>
|
||||
<q-btn
|
||||
v-if="deferredPrompt"
|
||||
glossy
|
||||
size="xl"
|
||||
label="Installa App"
|
||||
@click="installApp"
|
||||
icon="fas fa-mobile-alt"
|
||||
color="green"
|
||||
text-color="white"
|
||||
/>
|
||||
<div v-else>
|
||||
<!-- iOS -->
|
||||
<div
|
||||
v-if="$q.platform.is.ios && $q.platform.is.safari"
|
||||
style="border: 2px solid #dedede"
|
||||
class="shadow-1 q-ma-md"
|
||||
>
|
||||
<q-btn
|
||||
glossy
|
||||
size="xl"
|
||||
label="Installa App"
|
||||
@click="viewiOS = !viewiOS"
|
||||
icon="fab fa-apple"
|
||||
color="green"
|
||||
text-color="white"
|
||||
/>
|
||||
<q-slide-transition>
|
||||
<div
|
||||
v-if="viewiOS"
|
||||
class="q-mt-md"
|
||||
>
|
||||
<q-img
|
||||
src="/images/install_app_on_ios_1.png"
|
||||
fit="contain"
|
||||
style="min-width: 350px"
|
||||
class="q-my-sm"
|
||||
/>
|
||||
<q-img
|
||||
src="/images/install_app_on_ios_1b.jpg"
|
||||
class="q-mb-md"
|
||||
/>
|
||||
<q-img
|
||||
src="/images/install_app_on_ios_2.jpg"
|
||||
fit="contain"
|
||||
/>
|
||||
</div>
|
||||
</q-slide-transition>
|
||||
</div>
|
||||
|
||||
<!-- Android -->
|
||||
<div v-else-if="$q.platform.is.android">
|
||||
<q-btn
|
||||
glossy
|
||||
size="lg"
|
||||
label="Installa App"
|
||||
@click="viewAndroid = !viewAndroid"
|
||||
icon="fab fa-android"
|
||||
color="green"
|
||||
text-color="white"
|
||||
/>
|
||||
<q-slide-transition>
|
||||
<div
|
||||
v-if="viewAndroid"
|
||||
class="q-mt-md"
|
||||
>
|
||||
<div class="q-ma-sm text-body1">
|
||||
1) Clicca sui <strong>tre puntini ⋮</strong><br />
|
||||
2) Scegli <strong>“Installa app”</strong> o
|
||||
<strong>“Aggiungi alla home”</strong><br />
|
||||
3) Apri l’app dalla schermata Home.
|
||||
</div>
|
||||
<q-img
|
||||
src="/images/install_app_on_android_1.jpg"
|
||||
fit="contain"
|
||||
style="min-width: 350px"
|
||||
class="q-my-sm"
|
||||
/>
|
||||
<q-img
|
||||
src="/images/install_app_on_android_2.jpg"
|
||||
fit="contain"
|
||||
style="min-width: 350px"
|
||||
class="q-my-sm"
|
||||
/>
|
||||
<q-img
|
||||
src="/images/install_app_on_android_3.jpg"
|
||||
fit="contain"
|
||||
style="min-width: 350px"
|
||||
class="q-my-sm"
|
||||
/>
|
||||
</div>
|
||||
</q-slide-transition>
|
||||
</div>
|
||||
|
||||
<!-- Altri browser (fallback) -->
|
||||
<div v-else>
|
||||
<q-btn
|
||||
glossy
|
||||
size="lg"
|
||||
label="Installa App"
|
||||
@click="showOther = true"
|
||||
icon="fas fa-mobile-alt"
|
||||
color="green"
|
||||
text-color="white"
|
||||
/>
|
||||
|
||||
<div v-if="showOther">
|
||||
<p class="text-body1">
|
||||
Apri questa pagina in <strong>Brave</strong> o <strong>Chrome</strong> per
|
||||
installare l’app.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="row justify-center">
|
||||
<CBigBtn
|
||||
label="Info" to="" @click="showInfo = true" icon="fas fa-info" color="primary"
|
||||
:numcol="3"
|
||||
>
|
||||
</CBigBtn>
|
||||
</div>
|
||||
<div v-if="showInfo">
|
||||
|
||||
</div>-->
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CCheckAppRunning.ts">
|
||||
</script>
|
||||
<script lang="ts" src="./CCheckAppRunning.ts"></script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './CCheckAppRunning.scss';
|
||||
|
||||
@@ -25,6 +25,8 @@ export default defineComponent({
|
||||
const globalStore = useGlobalStore()
|
||||
const { t } = useI18n()
|
||||
|
||||
const isLogged = computed(() => userStore.isLogged)
|
||||
|
||||
const site = ref(globalStore.site)
|
||||
|
||||
return {
|
||||
@@ -33,6 +35,7 @@ export default defineComponent({
|
||||
costanti,
|
||||
static_data,
|
||||
site,
|
||||
isLogged,
|
||||
t,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div v-if="showalways || (!showalways && !tools.isLogged())">
|
||||
<div v-if="showalways || (!showalways && !isLogged)">
|
||||
<div class="q-pa-md q-gutter-sm">
|
||||
<div class=" text-center">
|
||||
<transition-group
|
||||
<transition
|
||||
name="fade"
|
||||
mode="out-in"
|
||||
appear
|
||||
@@ -36,7 +36,7 @@
|
||||
<!--<CRegistration />-->
|
||||
</template>
|
||||
</q-banner>
|
||||
</transition-group>
|
||||
</transition>
|
||||
<q-separator inset />
|
||||
<br>
|
||||
<q-banner
|
||||
|
||||
@@ -22,8 +22,8 @@ export default defineComponent({
|
||||
'clear-end',
|
||||
],
|
||||
props: {
|
||||
startValue: { type: [String, null] as unknown as () => string | null, default: null },
|
||||
endValue: { type: [String, null] as unknown as () => string | null, default: null },
|
||||
startValue: { type: [String, Date, null] as unknown as () => string | null, default: null },
|
||||
endValue: { type: [String, Date, null] as unknown as () => string | null, default: null },
|
||||
|
||||
startLabel: { type: String, default: 'Inizio' },
|
||||
endLabel: { type: String, default: 'Fine' },
|
||||
|
||||
@@ -2479,22 +2479,53 @@ export default defineComponent({
|
||||
let msg = '';
|
||||
|
||||
for (col of mycolumns.value) {
|
||||
if (!msg) {
|
||||
if (col.showonlyif_dipersona) {
|
||||
const valori = myrec['idStatusSkill'];
|
||||
let check =
|
||||
col.showifIsStatusDiPersona !== undefined ||
|
||||
col.showifIsStatusOnLine !== undefined;
|
||||
if (check) {
|
||||
let show = false;
|
||||
const valori = myrec['idStatusSkill'];
|
||||
|
||||
if (
|
||||
valori &&
|
||||
valori.length === 1 &&
|
||||
valori.includes(shared_consts.STATUSSKILL_ONLINE)
|
||||
) {
|
||||
col.required = false;
|
||||
} else {
|
||||
col.required = true;
|
||||
}
|
||||
show =
|
||||
(valori &&
|
||||
valori.includes(shared_consts.STATUSSKILL_ONLINE) &&
|
||||
col.showifIsStatusOnLine) ||
|
||||
(valori.includes(shared_consts.STATUSSKILL_DI_PERSONA) &&
|
||||
col.showifIsStatusDiPersona);
|
||||
|
||||
col.visible = col.required;
|
||||
col.visible = show;
|
||||
}
|
||||
let checkrequired =
|
||||
col.requiredifIsStatusDiPersona || col.requiredifIsStatusOnLine;
|
||||
if (checkrequired) {
|
||||
let required = false;
|
||||
const valori = myrec['idStatusSkill'];
|
||||
|
||||
required =
|
||||
(valori &&
|
||||
valori.includes(shared_consts.STATUSSKILL_ONLINE) &&
|
||||
col.requiredifIsStatusOnLine) ||
|
||||
(valori.includes(shared_consts.STATUSSKILL_DI_PERSONA) &&
|
||||
col.requiredifIsStatusDiPersona);
|
||||
|
||||
col.required = required;
|
||||
}
|
||||
if (col.showonlyif_dipersona) {
|
||||
const valori = myrec['idStatusSkill'];
|
||||
|
||||
if (
|
||||
valori &&
|
||||
valori.length === 1 &&
|
||||
valori.includes(shared_consts.STATUSSKILL_ONLINE)
|
||||
) {
|
||||
col.required = false;
|
||||
} else {
|
||||
col.required = true;
|
||||
}
|
||||
|
||||
col.visible = col.required;
|
||||
}
|
||||
if (!msg) {
|
||||
if (col.required) {
|
||||
// console.log('newRecord.value', newRecord.value, newRecord.value[col.name])
|
||||
if (tools.isArray(myrec[col.name])) {
|
||||
|
||||
@@ -1556,7 +1556,7 @@
|
||||
col.foredit
|
||||
"
|
||||
>
|
||||
<div class="">
|
||||
<div class="q-mb-sm">
|
||||
<CMyPopupEdit
|
||||
:table="mytable"
|
||||
:canEdit="true"
|
||||
|
||||
@@ -212,7 +212,6 @@ export default defineComponent({
|
||||
return {
|
||||
tools,
|
||||
getoffset,
|
||||
q,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -197,6 +197,10 @@ export default defineComponent({
|
||||
|
||||
const isAppRunning = computed(() => globalStore.isAppRunning);
|
||||
|
||||
const cardGroupMaxWidth = computed(() => {
|
||||
return tools.getwidth($q) + ' px';
|
||||
});
|
||||
|
||||
const currentCardsPerSlide = computed(() => {
|
||||
return myel.value.num2 ? myel.value.num2 : 2; // cardsPerSlide
|
||||
});
|
||||
@@ -229,6 +233,7 @@ export default defineComponent({
|
||||
const speedSafe = computed(() => (myel.value as any).speed ?? 0);
|
||||
|
||||
const carouselRef = ref(<any>null);
|
||||
const cardScroller = ref(<any>null);
|
||||
const isAtStart = ref(true);
|
||||
const isAtEnd = ref(false);
|
||||
const activeIndex = ref(0);
|
||||
@@ -379,6 +384,16 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
function scrollCards(delta: number) {
|
||||
const scroller = cardScroller.value?.[0] || cardScroller.value;
|
||||
if (scroller) {
|
||||
scroller.scrollBy({
|
||||
left: delta,
|
||||
behavior: 'smooth',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(mounted);
|
||||
|
||||
return {
|
||||
@@ -426,6 +441,9 @@ export default defineComponent({
|
||||
naviga,
|
||||
speedSafe,
|
||||
t,
|
||||
cardGroupMaxWidth,
|
||||
cardScroller,
|
||||
scrollCards,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
:color="$q.dark.isActive ? `black` : `white`"
|
||||
:text-color="$q.dark.isActive ? `white` : `black`"
|
||||
icon="keyboard_arrow_left"
|
||||
@click="$refs.carousel.previous()"
|
||||
@click="scrollCards(-300)"
|
||||
></q-btn>
|
||||
</q-carousel-control>
|
||||
<q-carousel-control
|
||||
@@ -96,7 +96,7 @@
|
||||
:color="$q.dark.isActive ? `black` : `white`"
|
||||
:text-color="$q.dark.isActive ? `white` : `black`"
|
||||
icon="keyboard_arrow_right"
|
||||
@click="$refs.carousel.next()"
|
||||
@click="scrollCards(300)"
|
||||
></q-btn>
|
||||
</q-carousel-control>
|
||||
</template>
|
||||
@@ -106,59 +106,68 @@
|
||||
:key="groupIndex"
|
||||
:name="groupIndex"
|
||||
>
|
||||
<div class="row no-wrap justify-start items-center q-px-sm">
|
||||
<template
|
||||
v-for="(rec, cardIndex) in group"
|
||||
:key="cardIndex"
|
||||
>
|
||||
<div :class="cardColumnClass">
|
||||
<q-card
|
||||
:class="
|
||||
`flex-card bordered ` +
|
||||
myel.class3 +
|
||||
(rec.link ? ' titolo_card' : '')
|
||||
"
|
||||
:style="
|
||||
rec.style +
|
||||
`; height: ${myel.heightimg || `300px`} !important; width: ${
|
||||
myel.widthimg || `300px`
|
||||
} !important;`
|
||||
"
|
||||
@click="rec.link ? tools.openUrl(rec.link) : undefined"
|
||||
<!-- Contenitore scrollabile orizzontalmente -->
|
||||
<div
|
||||
ref="cardScroller"
|
||||
class="card-group-scrollable"
|
||||
:style="{ 'max-height': myel.heightcarousel, 'max-width': ($q.screen.width - 45) + 'px' }"
|
||||
>
|
||||
<div class="row no-wrap items-center">
|
||||
<template
|
||||
v-for="(rec, cardIndex) in group"
|
||||
:key="cardIndex"
|
||||
>
|
||||
<div
|
||||
:class="cardColumnClass"
|
||||
class="flex flex-center"
|
||||
>
|
||||
<div
|
||||
class="img-container"
|
||||
:style="`height: ${
|
||||
parseInt(myel?.heightimg?.replace('px', '')) * 0.7
|
||||
}px; overflow: hidden;`"
|
||||
<q-card
|
||||
:class="
|
||||
`flex-card bordered ` +
|
||||
myel.class3 +
|
||||
(rec.link ? ' titolo_card' : '')
|
||||
"
|
||||
:style="`
|
||||
${rec.style};
|
||||
height: ${myel.heightimg || '300px'};
|
||||
width: ${myel.widthimg || '300px'};
|
||||
flex: 0 0 auto;
|
||||
`"
|
||||
@click="rec.link ? tools.openUrl(rec.link) : undefined"
|
||||
>
|
||||
<q-img
|
||||
:class="tools.getClassAnim(myel.anim2) + ` ` + myel.class4"
|
||||
:src="tools.getImgFileByElem(myel, rec, path)"
|
||||
/>
|
||||
</div>
|
||||
<q-card-section class="q-card-section-small">
|
||||
<div
|
||||
:class="rec.size"
|
||||
:style="`color: ` + rec.color"
|
||||
class="img-container"
|
||||
:style="`height: ${parseInt(myel?.heightimg?.replace('px', '')) * 0.7}px; overflow: hidden;`"
|
||||
>
|
||||
{{ tools.getText(rec.alt) }}
|
||||
<q-img
|
||||
:class="tools.getClassAnim(myel.anim2) + ' ' + myel.class4"
|
||||
:src="tools.getImgFileByElem(myel, rec, path)"
|
||||
fit="contain"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
:class="`q-mt-xs q-mb-xs ` + tools.getClassAnim(myel.anim)"
|
||||
v-html="rec.content"
|
||||
></div>
|
||||
<div
|
||||
v-if="rec.description"
|
||||
class="text-caption"
|
||||
:style="`color: ` + rec.colorsub"
|
||||
>
|
||||
{{ rec.description }}
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</div>
|
||||
</template>
|
||||
<q-card-section class="q-card-section-small">
|
||||
<div
|
||||
:class="rec.size"
|
||||
:style="`color: ${rec.color}`"
|
||||
>
|
||||
{{ tools.getText(rec.alt) }}
|
||||
</div>
|
||||
<div
|
||||
:class="`q-mt-xs q-mb-xs ` + tools.getClassAnim(myel.anim)"
|
||||
v-html="rec.content"
|
||||
></div>
|
||||
<div
|
||||
v-if="rec.description"
|
||||
class="text-caption"
|
||||
:style="`color: ${rec.colorsub}`"
|
||||
>
|
||||
{{ rec.description }}
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</q-carousel-slide>
|
||||
</q-carousel>
|
||||
@@ -1160,10 +1169,7 @@
|
||||
:features="myel.features"
|
||||
:isDark="myel.parambool2"
|
||||
>
|
||||
|
||||
|
||||
</FeaturesSection>
|
||||
|
||||
</div>
|
||||
|
||||
<div v-if="editOn">
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
<!-- Contenuto pagina -->
|
||||
<div
|
||||
:class="[{ 'q-gutter-xs': !hideHeader }, 'q-mx-auto', 'q-px-sm', 'q-pb-lg']"
|
||||
:class="[{ 'q-gutter-xs': !hideHeader }, 'q-mx-auto', 'q-pb-lg']"
|
||||
:style="containerStyle"
|
||||
>
|
||||
<!-- Media/Content blocks (1..3) -->
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
<q-input
|
||||
v-bind="$attrs"
|
||||
v-model="myvalue"
|
||||
filled
|
||||
:maxlength="col.maxlength ? col.maxlength : undefined"
|
||||
:style="$q.screen.lt.sm ? 'min-width: 300px' : ''"
|
||||
:disable="disable"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
}}</span></q-chip
|
||||
>
|
||||
|
||||
<span v-if="circuit.link_group" :class="` `">
|
||||
<!--<span v-if="circuit.link_group" :class="` `">
|
||||
<q-btn
|
||||
icon="fab fa-telegram"
|
||||
size="xs"
|
||||
@@ -45,7 +45,7 @@
|
||||
rounded
|
||||
@click.stop.prevent="tools.openUrl(circuit.link_group)"
|
||||
></q-btn>
|
||||
</span>
|
||||
</span>-->
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section @click="cmdExt(costanti.CMD_OPEN_PAGE, null, circuit)">
|
||||
|
||||
@@ -153,7 +153,6 @@ export default defineComponent({
|
||||
showsendCoinTo,
|
||||
showsendCoin,
|
||||
clickToUser,
|
||||
$q,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -66,7 +66,6 @@ export default defineComponent({
|
||||
onMounted(mounted)
|
||||
|
||||
return {
|
||||
q,
|
||||
t,
|
||||
getImgByNotif,
|
||||
getNotifText,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:color_border="saldo > 0 ? `green` : `red`"
|
||||
:color="color"
|
||||
v-model="saldo"
|
||||
:label="t('account.saldo')"
|
||||
:label="$q.screen.lt.sm ? '' : t('account.saldo')"
|
||||
:paramTypeAccount="paramTypeAccount"
|
||||
:myrecparam="account"
|
||||
:valueextra="
|
||||
@@ -30,7 +30,7 @@
|
||||
: (valueextra ? valueextra : '')
|
||||
"
|
||||
:label="
|
||||
`(` + t('account.dispon') + `: ` + qtarem + ` ` + symbol + `)`
|
||||
`(${ $q.screen.lt.sm ? t('account.dispon_small') : t('account.dispon') }: ${ qtarem } ${ symbol })`
|
||||
"
|
||||
:paramTypeAccount="paramTypeAccount"
|
||||
:myrecparam="account"
|
||||
|
||||
@@ -29,7 +29,6 @@ export default defineComponent({
|
||||
|
||||
return {
|
||||
tools,
|
||||
q,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -157,7 +157,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
async function load() {
|
||||
// console.log('load')
|
||||
console.log('load CStatusReg')
|
||||
myloadingload.value = true
|
||||
datastat.value = await globalStore.getStatSite()
|
||||
|
||||
@@ -210,7 +210,7 @@ export default defineComponent({
|
||||
$router.push(link)
|
||||
}
|
||||
|
||||
created()
|
||||
onMounted(created)
|
||||
|
||||
onBeforeUnmount(beforeDestroy)
|
||||
|
||||
|
||||
@@ -11,19 +11,19 @@
|
||||
<CElemStat v-if="true" myclass="fixed-size" :title="$t('statusreg.online_today')" icon="fas fa-wifi"
|
||||
:mytextval="tools.numtostr(datastat.online_today)" classColor="text-orange" colBack="yellow">
|
||||
</CElemStat>
|
||||
<CElemStat myclass="fixed-size" v-f="datastat.num_annunci > 0" :title="$t('statusreg.num_annunci')"
|
||||
<CElemStat myclass="fixed-size" v-if="datastat.num_annunci > 0" :title="$t('statusreg.num_annunci')"
|
||||
icon="fas fa-tshirt" :value_today="0" :mytextval="tools.numtostr(datastat.num_annunci)"
|
||||
classColor="text-green" colBack="orange">
|
||||
</CElemStat>
|
||||
<CElemStat myclass="fixed-size" v-f="datastat.num_circuiti_attivi > 0"
|
||||
<CElemStat myclass="fixed-size" v-if="datastat.num_circuiti_attivi > 0"
|
||||
:title="$t('statusreg.num_circuiti_attivi')" icon="fas fa-map-marker-alt" :value_today="0" :mytextval="datastat.num_circuiti_attivi + ' su ' + datastat.num_circuiti
|
||||
" classColor="text-blue" colBack="red">
|
||||
</CElemStat>
|
||||
<CElemStat myclass="fixed-size" v-f="datastat.num_transaz_tot > 0" :title="$t('statusreg.numtransazioni')"
|
||||
<CElemStat myclass="fixed-size" v-if="datastat.num_transaz_tot > 0" :title="$t('statusreg.numtransazioni')"
|
||||
icon="fas fa-sync-alt" :value_today="0" :mytextval="tools.numtostr(datastat.num_transaz_tot)"
|
||||
classColor="text-indigo" colBack="green">
|
||||
</CElemStat>
|
||||
<CElemStat myclass="fixed-size" v-f="datastat.tot_RIS_transati > 0" :title="$t('statusreg.totristransati')"
|
||||
<CElemStat myclass="fixed-size" v-if="datastat.tot_RIS_transati > 0" :title="$t('statusreg.totristransati')"
|
||||
icon="img: /images/1ris_rosso_100.png" :value_today="0"
|
||||
:mytextval="tools.numtostr(datastat.tot_RIS_transati) + ' RIS'" classColor="text-blueviolet"
|
||||
colBack="green">
|
||||
@@ -54,7 +54,7 @@
|
||||
<q-card>
|
||||
<q-card-section>
|
||||
<div class="q-pa-md" style="max-width: 350px; margin: auto">
|
||||
<transition-group name="fade" mode="out-in" appear enter-active-class="animazione fadeIn"
|
||||
<TransitionGroup name="fade" appear enter-active-class="animazione fadeIn"
|
||||
leave-active-class="animazione fadeOut">
|
||||
<q-item v-for="(user, index) in lastsreg" :key="index" class="animated chip_shadow q-ma-sm"
|
||||
v-ripple clickable @click="gotoPage(`/my/${user.username}`)">
|
||||
@@ -91,7 +91,7 @@
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</transition-group>
|
||||
</TransitionGroup>
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
@@ -148,7 +148,7 @@
|
||||
<q-card-section>
|
||||
<div class="q-pa-md" style="max-width: 350px; margin: auto">
|
||||
<q-list bordered>
|
||||
<transition-group name="fade" mode="out-in" appear enter-active-class="animazione fadeIn"
|
||||
<TransitionGroup name="fade" appear enter-active-class="animazione fadeIn"
|
||||
leave-active-class="animazione fadeOut">
|
||||
<q-item v-for="(user, index) in lastsonline" :key="index" class="animated chip_shadow q-ma-sm"
|
||||
clickable v-ripple @click="gotoPage(`/my/${user.username}`)">
|
||||
@@ -183,7 +183,7 @@
|
||||
</div>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</transition-group>
|
||||
</TransitionGroup>
|
||||
</q-list>
|
||||
</div>
|
||||
</q-card-section>
|
||||
@@ -205,7 +205,7 @@
|
||||
alla RETE Solidale di RISO.
|
||||
</div>
|
||||
<q-list bordered>
|
||||
<transition-group name="fade" mode="out-in" appear enter-active-class="animazione fadeIn"
|
||||
<TransitionGroup name="fade" appear enter-active-class="animazione fadeIn"
|
||||
leave-active-class="animazione fadeOut">
|
||||
<q-item v-for="(user, index) in diffusorilist" :key="index" class="animated chip_shadow q-ma-sm"
|
||||
clickable v-ripple @click="gotoPage(`/my/${user.username}`)">
|
||||
@@ -244,7 +244,7 @@
|
||||
</div>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</transition-group>
|
||||
</TransitionGroup>
|
||||
</q-list>
|
||||
</div>
|
||||
</q-card-section>
|
||||
@@ -266,7 +266,7 @@
|
||||
Rete di fiducia.
|
||||
</div>
|
||||
<q-list bordered>
|
||||
<transition-group name="fade" mode="out-in" appear enter-active-class="animazione fadeIn"
|
||||
<TransitionGroup name="fade" appear enter-active-class="animazione fadeIn"
|
||||
leave-active-class="animazione fadeOut">
|
||||
<q-item v-for="(user, index) in strettelist" :key="index" class="animated chip_shadow q-ma-sm"
|
||||
clickable v-ripple>
|
||||
@@ -311,7 +311,7 @@
|
||||
</q-avatar>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</transition-group>
|
||||
</TransitionGroup>
|
||||
</q-list>
|
||||
</div>
|
||||
</q-card-section>
|
||||
|
||||
@@ -29,6 +29,10 @@ export default defineComponent({
|
||||
const site = ref(globalStore.site)
|
||||
const username_telegram_aportador = ref('')
|
||||
|
||||
const isLogged = computed(() => userStore.isLogged)
|
||||
const isEmailVerified = computed(() => userStore.my.verified_email)
|
||||
const telegVerificato = computed(() => userStore.my.profile.teleg_id > 0 && userStore.my.profile.teleg_id_old > 0)
|
||||
|
||||
function load() {
|
||||
///
|
||||
}
|
||||
@@ -41,6 +45,9 @@ export default defineComponent({
|
||||
tools,
|
||||
site,
|
||||
username_telegram_aportador,
|
||||
isLogged,
|
||||
isEmailVerified,
|
||||
telegVerificato,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
>
|
||||
<div
|
||||
v-if="
|
||||
tools.isLogged() &&
|
||||
isLogged &&
|
||||
(site.confpages?.enableRegMultiChoice || !site.confpages?.enabledRegNeedTelegram)
|
||||
"
|
||||
>
|
||||
<CVerifyEmail v-if="tools.isLogged() && !tools.isEmailVerified() && !tools.TelegVerificato()">
|
||||
<CVerifyEmail v-if="isLogged && !isEmailVerified && !telegVerificato">
|
||||
</CVerifyEmail>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -531,8 +531,8 @@ export default defineComponent({
|
||||
}, 100);
|
||||
}
|
||||
|
||||
function logoutHandler() {
|
||||
userStore.logout().then(() => {
|
||||
async function logoutHandler() {
|
||||
await userStore.logout().then(() => {
|
||||
// $router.replace('/logout')
|
||||
//
|
||||
// setTimeout(() => {
|
||||
|
||||
Reference in New Issue
Block a user