Pannello Utente

Aggiornamento Yarn
This commit is contained in:
Paolo Arena
2022-07-10 01:24:54 +02:00
parent 51e13794c3
commit 42cb624f41
82 changed files with 2379 additions and 1162 deletions

View File

@@ -2,6 +2,7 @@ import {
defineComponent, onMounted, ref,
} from 'vue'
import { useI18n } from '@src/boot/i18n'
import { useQuasar } from 'quasar'
// PropType,
@@ -18,6 +19,8 @@ export default defineComponent({
setup(props, context) {
const { t } = useI18n();
const $q = useQuasar()
const elementId = ref<string>('id');
const disableDecline = ref<boolean>(true);
const debug = ref<boolean>(false);
@@ -95,13 +98,33 @@ export default defineComponent({
}
const decline = (): void => {
if (!debug.value) {
setCookieStatus('decline')
}
status.value = 'decline'
isOpen.value = false
context.emit('clicked-decline')
const mytitle = 'Cookies'
const mytext = t('reg.refuse_cookie')
return $q.dialog({
message: mytext,
html: true,
ok: {
label: 'Rifiuta Cookies',
push: true,
},
title: mytitle,
cancel: true,
persistent: false,
}).onOk(() => {
if (!debug.value) {
setCookieStatus('decline')
}
status.value = 'decline'
isOpen.value = false
context.emit('clicked-decline')
}).onCancel(() => {
//
})
}
const clickInfo = (): void => {

View File

@@ -1,27 +1,29 @@
<template>
<div v-if="isOpen" class="tothebottomfixed" role="dialog">
<div class="q-pa-md q-gutter-sm">
<transition appear name="slide-up" mode="out-in" :duration="2000">
<q-banner class="bg-primary text-white" transition-show="jump-down">
{{t('cookies')}}
<template v-slot:action>
<div class="row justify-center margin_buttons_cook q-gutter-lg text-center" >
<q-btn label="INFO" to="/policy"></q-btn>
<q-btn
color="red" label="RIFIUTA"
@click="decline"></q-btn>
<q-btn color="green" label="ACCETTA" @click="accept"></q-btn>
</div>
</template>
</q-banner>
</transition>
</div>
<div v-if="isOpen" class="tothebottomfixed" role="dialog">
<div class="q-pa-md q-gutter-sm">
<transition appear name="slide-up" mode="out-in" :duration="2000">
<q-banner class="bg-primary text-white" transition-show="jump-down">
{{ t('cookies') }}
<template v-slot:action>
<div class="row justify-center margin_buttons_cook q-gutter-lg text-center">
<q-btn label="INFO" to="/policy"></q-btn>
<q-btn color="green" label="ACCETTA" @click="accept"></q-btn>
<q-btn
color="red" label="RIFIUTA"
@click="decline">
</q-btn>
</div>
</template>
</q-banner>
</transition>
</div>
</div>
</template>
<script lang="ts" src="./BannerCookies.ts">
</script>
<style lang="scss" scoped>
@import './BannerCookies.scss';
@import './BannerCookies.scss';
</style>

View File

@@ -6,7 +6,7 @@ import { useQuasar } from 'quasar'
import { colors, Screen, Platform, date } from 'quasar'
import { EState, IBookedEvent, IBookedEventPage, IEvents, IMessage, IMessagePage, IParamDialog } from '@model'
import { Logo } from '../logo'
import { Footer } from '../Footer'
import { LandingFooter } from '../LandingFooter'
import { CTitle } from '../CTitle'
import { CImgText } from '../CImgText'
import { CMyEditor } from '../CMyEditor'
@@ -44,7 +44,7 @@ export default defineComponent({
},
components: {
Logo,
Footer,
LandingFooter,
CTitle,
CImgText,
CMySelect,

View File

@@ -4,12 +4,12 @@ import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import { tools } from '@store/Modules/tools'
import { Footer, Logo } from '@components'
import { LandingFooter, Logo } from '@components'
export default defineComponent({
name: 'CFundRaising',
components: {Logo, Footer},
components: {Logo, LandingFooter},
props: {},
setup() {
const { t } = useI18n();

View File

@@ -13,7 +13,7 @@
</div>
</section>
<Footer></Footer>
<LandingFooter></LandingFooter>
</div>
</q-page>
</template>

View File

@@ -36,6 +36,7 @@ import translate from '@/globalroutines/util'
import { toolsext } from '@store/Modules/toolsext'
import { CMyCardPopup } from '@/components/CMyCardPopup'
import { CMyCardGrpPopup } from '@/components/CMyCardGrpPopup'
import { useRouter } from 'vue-router'
export default defineComponent({
name: 'CGridTableRec',
@@ -248,6 +249,8 @@ export default defineComponent({
const startsearch = ref(false)
const $router = useRouter()
const serverData: any = ref([])
const spinner_visible = ref(false)
const searchList = ref(<ISearchList[]>[])
@@ -311,6 +314,16 @@ export default defineComponent({
refresh()
})
$router.beforeResolve((to: any) => {
// console.log('beforeResolve', visupagedialog.value, 'to', to)
if (visupagedialog.value && !to.meta.newpage) {
visupagedialog.value = false
return false
}
})
function setCategBySector(tablecat: string, tabsector: string, newval: any) {
const recSector = searchList.value.find((rec) => rec.table === tabsector)
@@ -1418,44 +1431,70 @@ export default defineComponent({
}
}
function enableSaveNewRec() {
function enableSaveNewRec(newrec: boolean) {
let ok = true
const showmsg = true
let myrec = recModif.value
if (newrec) {
myrec = newRecord.value
}
//mycolumns.value.forEach((col: IColGridTable) => {
let col: IColGridTable
let msg = ''
for (col of mycolumns.value) {
if (col.required) {
// console.log('newRecord.value', newRecord.value, newRecord.value[col.name])
if (tools.isArray(newRecord.value[col.name])) {
if (newRecord.value[col.name].length <= 0) {
return false
if (!msg) {
if (col.required) {
// console.log('newRecord.value', newRecord.value, newRecord.value[col.name])
if (tools.isArray(myrec[col.name])) {
if (myrec[col.name].length <= 0) {
msg = 'Si prega di compilare il campo \'' + getColMissing(myrec) + '\''
}
} else {
if (!myrec[col.name]) {
msg = 'Si prega di compilare il campo \'' + getColMissing(myrec) + '\''
}
}
} else {
if (!newRecord.value[col.name]) {
return false
}
if (!msg && col.maxlength! > 0) {
if (myrec[col.name].length > col.maxlength!) {
msg = t('annunci.maxlength', { name: translate(col.label_trans), maxlength: col.maxlength })
}
}
if (!msg && col.minlength! > 0) {
if (myrec[col.name].length < col.minlength!) {
msg = t('annunci.minlength', { name: translate(col.label_trans), minlength: col.minlength })
}
}
}
}
if (showmsg && msg) {
tools.showNegativeNotif($q, msg, 5000)
return false
}
return ok
}
function getColMissing() {
function getColMissing(myrec: any) {
let col: IColGridTable
for (col of mycolumns.value) {
if (col.required) {
// console.log('newRecord.value', newRecord.value, newRecord.value[col.name])
if (tools.isArray(newRecord.value[col.name])) {
if (newRecord.value[col.name].length <= 0) {
if (tools.isArray(myrec[col.name])) {
if (myrec[col.name].length <= 0) {
return translate(col.label_trans)
}
} else {
if (!newRecord.value[col.name]) {
if (!myrec[col.name]) {
// console.log('col.name', col.name)
return translate(col.label_trans)
}
@@ -1469,9 +1508,7 @@ export default defineComponent({
async function saveNewRecord() {
// check if the field are setted
if (!enableSaveNewRec()) {
tools.showNeutralNotif($q, 'Si prega di compilare il campo \'' + getColMissing() + '\'', 5000)
if (!enableSaveNewRec(true)) {
return false
}
@@ -1548,6 +1585,11 @@ export default defineComponent({
data: {}
}
if (!enableSaveNewRec(false)) {
return false
}
mydata.data = recModif.value
const oldrec = serverData.value.find((rec: IMySkill) => rec._id === recModif.value._id)

View File

View File

@@ -0,0 +1,55 @@
import { defineComponent, onMounted, PropType, ref, watch } from 'vue'
import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
import { useGlobalStore } from '@store/globalStore'
import { fieldsTable } from '@store/Modules/fieldsTable'
import { tools } from '@store/Modules/tools'
import { costanti } from '@costanti'
import { CDateTime } from '@/components/CDateTime'
export default defineComponent({
name: 'CKeyAndValue',
props: {
mykey: {
type: String,
required: true,
},
myvalue: {
type: String,
required: false,
default: '',
},
mydate: {
type: Date,
required: false,
default: null,
},
color: {
type: String,
required: false,
default: '',
},
},
components: { CDateTime },
setup(props, { emit }) {
const $q = useQuasar()
const { t } = useI18n()
const globalStore = useGlobalStore()
function mounted() {
//
}
onMounted(mounted)
return {
tools,
costanti,
fieldsTable,
globalStore,
}
},
})

View File

@@ -0,0 +1,38 @@
<template>
<div class="text-center">
<div class="row items-center justify-center q-gutter-md q-ma-xs">
<div class="q-ma-xs">
<q-field rounded outlined bg-color="blue-1" dense style="min-width:110px;">
<template v-slot:control>
<div class="centermydiv">
<div class="self-center full-width no-outline text-center" tabindex="0">{{ mykey }}</div>
</div>
</template>
</q-field>
</div>
<div :class="` q-ma-sm q-pa-sm col-grow `">
<span :style="color ? `background-color: ${color} !important; color: white;` : ``">
<span v-if="mydate">
<CDateTime
v-model:value="mydate"
:canEdit="false">
</CDateTime>
</span>
<span v-else>
{{myvalue}}
</span>
</span>
</div>
</div>
</div>
</template>
<script lang="ts" src="./CKeyAndValue.ts">
</script>
<style lang="scss" scoped>
@import './CKeyAndValue.scss';
</style>

View File

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

View File

@@ -36,6 +36,11 @@ export default defineComponent({
required: false,
default: 0,
},
minlength: {
type: Number,
required: false,
default: 0,
},
mysubsubkey: {
type: String,
required: false,
@@ -114,7 +119,7 @@ export default defineComponent({
const { t } = useI18n()
const globalStore = useGlobalStore()
const col = ref(<IColGridTable> { name: 'test', fieldtype: 0, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView, visible: true, maxlength: props.maxlength })
const col = ref(<IColGridTable> { name: 'test', fieldtype: 0, showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView, visible: true, maxlength: props.maxlength, minlength: props.minlength })
const row = ref({})
const { setValDb, getValDb } = MixinBase()

View File

@@ -4,14 +4,14 @@ import {
import { IMyPage } from '@src/model'
import { useGlobalStore } from '@store/globalStore'
import { Footer } from '@/components/Footer'
import { LandingFooter } from '@/components/LandingFooter'
import { CImgTitle } from '../CImgTitle/index'
import { CTitle } from '../CTitle/index'
export default defineComponent({
name: 'CMyPage',
components: { Footer, CImgTitle, CTitle },
components: { LandingFooter, CImgTitle, CTitle },
props: {
title: String,
mypath: {

View File

@@ -41,7 +41,7 @@
</div>
<slot></slot>
<div v-if="!nofooter">
<Footer></Footer>
<LandingFooter></LandingFooter>
</div>
</div>
</div>

View File

@@ -196,7 +196,8 @@ export default defineComponent({
fieldtype: 0,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InEdit + costanti.showWhen.InView,
visible: true,
maxlength: props.mycol ? props.mycol.maxlength : 0
maxlength: props.mycol ? props.mycol.maxlength : 0,
minlength: props.mycol ? props.mycol.minlength : undefined
})
const { setValDb, getValDb } = MixinBase()

View File

@@ -44,7 +44,7 @@
color="white" text-color="blue"
:icon="col.icon ? col.icon : `fas fa-globe`"
:href="tools.getlinkstd(myvalue)"
:label="myvalue"
:label="tools.firstchars(myvalue, 40)"
target="_blank"
>
</q-btn>
@@ -613,6 +613,7 @@
counter
:type="col.fieldtype === costanti.FieldType.crypted ? 'password' : 'text'"
:maxlength="col.maxlength ? col.maxlength : undefined"
:minlength="col.minlength ? col.minlength : undefined"
v-model="scope.value"
:autogrow="col.fieldtype !== costanti.FieldType.crypted"
@keyup.enter.stop
@@ -841,6 +842,7 @@
<q-input
v-model="scope.value"
:maxlength="col.maxlength ? col.maxlength : undefined"
:minlength="col.minlength ? col.minlength : undefined"
type="password"
@keyup.enter="scope.set"
autofocus>

View File

@@ -43,6 +43,7 @@ export default defineComponent({
mounted()
})
function mounted() {
if (props.prop_myrec) {
myrec.value = props.prop_myrec
@@ -73,6 +74,14 @@ export default defineComponent({
emit('cmdext', cmd, val1, val2)
}
function navigaExt(obj: any) {
cmdExt(costanti.CMD_SHOW_PAGE, obj, null)
//let link = tools.getDirectoryByTable(props.table) + '/' + obj._id
//console.log('link', link)
//$router.push(link)
}
onMounted(mounted)
return {
@@ -81,6 +90,7 @@ export default defineComponent({
costanti,
getImgUser,
naviga,
navigaExt,
setCmd,
shared_consts,
userStore,

View File

@@ -29,7 +29,7 @@
</q-avatar>
</q-item-section>
<q-item-section @click="cmdExt(costanti.CMD_SHOW_PAGE, myrec)">
<q-item-section @click="navigaExt(myrec)">
<q-item-label class="full-width">
<span v-for="(rec, ind) of myrec.recSkill" :key="ind"> <q-chip
dense

View File

@@ -2,7 +2,7 @@ import { defineComponent, PropType, ref } from 'vue'
import { Logo } from '../../components/logo/index'
import { Footer } from '../../components/Footer/index'
import { LandingFooter } from '../../components/LandingFooter/index'
import { tools } from '../../store/Modules/tools'
import { static_data } from '@src/db/static_data'
@@ -14,7 +14,7 @@ import MixinEvents from '@/mixins/mixin-events'
export default defineComponent({
name: 'CMySingleEvent',
components: { Logo, Footer, CImgText, CCard, CMyPage, CMyAvatar, CMyTeacher },
components: { Logo, LandingFooter, CImgText, CCard, CMyPage, CMyAvatar, CMyTeacher },
props: {
myevent: {
type: Object as PropType<IEvents>,

View File

@@ -2,7 +2,7 @@ import { defineComponent, onBeforeUnmount, onMounted, ref } from 'vue'
import { Logo } from '../../components/logo'
import { Footer } from '../../components/Footer'
import { LandingFooter } from '../../components/LandingFooter'
import { toolsext } from '@src/store/Modules/toolsext'
import { CImgTitle } from '../../components/CImgTitle/index'
@@ -17,7 +17,7 @@ import { IColl } from 'model'
export default defineComponent({
name: 'PhotosGallery',
components: { Logo, Footer, CImgTitle },
components: { Logo, LandingFooter, CImgTitle },
props: {
mygallery: {
type: Array,

View File

@@ -4,12 +4,12 @@ import { useRouter } from 'vue-router'
import { useGlobalStore } from '@store/globalStore'
import { useI18n } from '@/boot/i18n'
import { tools } from '@store/Modules/tools'
import { Footer, Logo } from '@components'
import { LandingFooter, Logo } from '@components'
export default defineComponent({
name: 'CPresentazione',
components: {Logo, Footer},
components: {Logo, LandingFooter},
props: {},
setup() {
const { t } = useI18n();

View File

@@ -299,11 +299,11 @@
<p class="feat-descr" v-html="t('homepage.freecollabora.descr')"></p></div>
</div>
<div class="col-12 col-sm-5">
<div class="feature-item"><i
aria-hidden="true"
class="q-icon fas fa-hands-helping"> </i><h4>
{{ t('homepage.freesostieni.title') }}</h4>
<p class="feat-descr" v-html="t('homepage.freesostieni.descr')"></p></div>
<div class="feature-item" style="margin-top: 0px !important;">
<div class="text-big" style="margin: 0px !important; padding: 2px !important;" v-html="t('homepage.freesostieni.title')"></div>
<p class="feat-descr" v-html="t('homepage.freesostieni.descr')"></p>
</div>
</div>
<div class="col-12 col-sm-5">
<div class="feature-item"><i
@@ -329,7 +329,7 @@
</div>
</section>
<Footer></Footer>
<LandingFooter></LandingFooter>
</div>
</q-page>
</template>

View File

@@ -97,10 +97,10 @@ export default defineComponent({
userStore.signin($router, signin.value)
.then((riscode: number) => {
console.log('signin FINITO CALL: riscode=', riscode)
if ($q.screen.lt.sm) {
globalStore.setleftDrawerOpen(false)
}
console.log('signin FINITO CALL: riscode=', riscode)
if (riscode === tools.OK) {
if (userStore.isLogged) {
globalStore.rightDrawerOpen = false
@@ -133,7 +133,7 @@ export default defineComponent({
})
.catch((err: any) => {
// console.log('ERROR SIGNIN = ' + error)
console.log('ERROR SIGNIN = ' + err)
emit('checkErrors', err)
})

View File

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

View File

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

View File

@@ -16,7 +16,7 @@ import { CFacebookFrame } from '@/components/CFacebookFrame'
import MixinBase from '../../mixins/mixin-base'
export default defineComponent({
name: 'Footer',
name: 'LandingFooter',
components: { Logo, FormNewsletter, CFacebookFrame },
setup() {
@@ -25,7 +25,7 @@ export default defineComponent({
const { getarrValDb, getValDb } = MixinBase()
console.log('Footer - INIT')
console.log('LandingFooter - INIT')
function TelegramSupport() {
return globalStore.getValueSettingsByKey('TELEGRAM_SUPPORT', false)

View File

@@ -169,9 +169,9 @@ class="footer_link" @click="navigate" @keypress.enter="navigate"
</div>
</template>
<script lang="ts" src="./Footer.ts">
<script lang="ts" src="./LandingFooter.ts">
</script>
<style lang="scss" scoped>
@import './Footer.scss';
@import './LandingFooter.scss';
</style>

View File

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

View File

@@ -11,6 +11,7 @@ import { boot } from 'quasar/wrappers'
import { useRouter } from 'vue-router'
import { static_data } from '@/db/static_data'
import messagePopover from '../../layouts/toolbar/messagePopover/messagePopover.vue'
import notifPopover from '../../layouts/toolbar/notifPopover/notifPopover.vue'
import drawer from '../../layouts/drawer/drawer.vue'
import { CMyAvatar } from '@/components/CMyAvatar'
import { toolsext } from '@store/Modules/toolsext'
@@ -22,9 +23,9 @@ import MixinUsers from '../../mixins/mixin-users'
import { CMyCart, CSigninNoreg } from '@/components'
export default defineComponent({
name: 'Header',
name: 'MyHeader',
components: {
drawer, messagePopover, CMyAvatar, CSigninNoreg, CMyCart
drawer, messagePopover, CMyAvatar, CSigninNoreg, CMyCart, notifPopover
},
props: {
extraContent: {
@@ -344,7 +345,7 @@ export default defineComponent({
}
function getappname() {
return tools.getappname(tools.isMobile()) + ' ' + getAppVersion()
return tools.getappname(tools.isMobile())
}

View File

@@ -91,6 +91,9 @@
<div v-if="static_data.functionality.SHOW_MESSAGES">
<message-popover></message-popover>
</div>
<div v-if="static_data.functionality.SHOW_NOTIF">
<notif-popover></notif-popover>
</div>
<!--
<div class="right-itens">
@@ -240,9 +243,9 @@
</div>
</template>
<script lang="ts" src="./Header.ts">
<script lang="ts" src="./MyHeader.ts">
</script>
<style lang="scss" scoped>
@import './Header.scss';
@import './MyHeader.scss';
</style>

View File

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

View File

@@ -1,5 +1,5 @@
import { defineComponent } from 'vue'
import { Footer } from '@/components/Footer'
import { LandingFooter } from '@/components/LandingFooter'
import { toolsext } from '@store/Modules/toolsext'
export default defineComponent({
@@ -14,7 +14,7 @@ export default defineComponent({
lastdataupdate: [String],
country: [String],
},
components: { Footer },
components: { LandingFooter },
setup(props, { emit }) {
return {

View File

@@ -26,11 +26,11 @@ export * from './CSignUp'
export * from './CSingleCart'
export * from './CTitle'
export * from './CTitleBanner'
export * from './Footer'
export * from './LandingFooter'
export * from './FormNewsletter'
export * from './CLineChart'
export * from './CStatusReg'
export * from './Header'
export * from './MyHeader'
export * from './logo'
export * from './testpao'
export * from './CEventsCalendar'
@@ -54,4 +54,5 @@ export * from './CAccomodation'
export * from './COpenStreetMap'
export * from './COperators'
export * from './CFundRaising'
export * from './CKeyAndValue'
// export * from './CPreloadImages'