- Invia Ris a e Ricevi Ris
- Tutorial Guidato Passi da Compiere - Provincia in cui vivi - Policy aggiornata
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.73"
|
||||
APP_VERSION="0.5.75"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.73"
|
||||
APP_VERSION="0.5.75"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.73"
|
||||
APP_VERSION="0.5.75"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.73"
|
||||
APP_VERSION="0.5.75"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.73"
|
||||
APP_VERSION="0.5.75"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.73"
|
||||
APP_VERSION="0.5.75"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="14"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -39,6 +39,7 @@ export const shared_consts = {
|
||||
MAINVIEW: 130,
|
||||
CHECKAPPRUNNING: 135,
|
||||
DASHBOARD: 140,
|
||||
CSENDRISTO: 150,
|
||||
STATUSREG: 160,
|
||||
CHECKIFISLOGGED: 170,
|
||||
INFO_VERSION: 180,
|
||||
@@ -170,6 +171,7 @@ export const shared_consts = {
|
||||
|
||||
TABLES_USER_INCLUDE_MY: ['mygroups'],
|
||||
TABLES_GETCOMPLETEREC: ['myskills', 'mybachecas', 'myhosps', 'mygoods'],
|
||||
TABLES_INSERT_ALMOST_ONE_TO_ENABLE_CIRCUIT: ['myskills', 'myhosps', 'mygoods'],
|
||||
TABLES_WITH_FILTER_FIELD: ['caldate'],
|
||||
TABLES_WITH_SPECIAL_FILTER: ['pub_to_share'],
|
||||
COL_WITH_FILTER_GTE: ['numMaxPeopleHosp'],
|
||||
@@ -1308,6 +1310,10 @@ export const shared_consts = {
|
||||
value: 140,
|
||||
label: 'Dashboard',
|
||||
},
|
||||
{
|
||||
value: 150,
|
||||
label: 'SendCoinTo',
|
||||
},
|
||||
{
|
||||
value: 280,
|
||||
label: 'Tutorial',
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<div v-if="numcol === 3" class="col-xs-4 col-sm-4 col-md-3 col-lg-2">
|
||||
<div class="q-ma-sm">
|
||||
<q-btn v-if="!small" :flat="flat" class="mybox_3" :color="color" rounded push :to="to" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 180)">
|
||||
<q-btn v-if="!small" :flat="flat" class="mybox_3" :color="color" rounded push :to="tools.updateLink(to)" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 180)">
|
||||
<q-icon class="q-ma-sm" :name="icon"/>
|
||||
<div class="q-ma-sm my-text_3 text-cls no-wrap"><span v-html="label"></span></div>
|
||||
</q-btn>
|
||||
<q-btn v-if="small" :flat="flat" class="mybox_small" :color="color" rounded push :to="to" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 180)">
|
||||
<q-btn v-if="small" :flat="flat" class="mybox_small" :color="color" rounded push :to="tools.updateLink(to)" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 180)">
|
||||
<q-icon class="q-ma-sm" :name="icon" size="sm"/>
|
||||
<div class="q-ma-xs my-text-small text-cls no-wrap"><span v-html="label"></span></div>
|
||||
</q-btn>
|
||||
@@ -13,11 +13,11 @@
|
||||
</div>
|
||||
<div v-else class="col-xs-6 col-sm-6 col-md-4 col-lg-3">
|
||||
<div class="q-ma-sm">
|
||||
<q-btn v-if="!small" :flat="flat" class="mybox" :color="color" rounded push :to="to" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 0)">
|
||||
<q-btn v-if="!small" :flat="flat" class="mybox" :color="color" rounded push :to="tools.updateLink(to)" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 0)">
|
||||
<q-icon class="q-ma-sm" size="3rem" :name="icon"/>
|
||||
<div class="q-ma-sm text-h5-diff text-cls no-wrap"><span v-html="label"></span></div>
|
||||
</q-btn>
|
||||
<q-btn v-if="small" :flat="flat" class="mybox_small" :color="color" rounded push :to="to" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 0)">
|
||||
<q-btn v-if="small" :flat="flat" class="mybox_small" :color="color" rounded push :to="tools.updateLink(to)" v-bind="$attrs" :style="tools.getbackgroundGradient(color, 0)">
|
||||
<q-icon class="q-ma-sm" :name="icon" size="sm"/>
|
||||
<div class="q-ma-xs my-text-small text-cls no-wrap"><span v-html="label"></span></div>
|
||||
</q-btn>
|
||||
|
||||
@@ -14,7 +14,7 @@ export default defineComponent({
|
||||
props: {
|
||||
showalways: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
:key="index"
|
||||
>
|
||||
<q-card class="no-shadow q-pa-xs">
|
||||
<q-item class="q-pb-none q-pt-xs cursor-pointer" :to="rec.to">
|
||||
<q-item class="q-pb-none q-pt-xs cursor-pointer" :to="tools.updateLink(rec.to)">
|
||||
<q-item-section>
|
||||
<q-item-label
|
||||
:class="
|
||||
@@ -100,7 +100,7 @@
|
||||
:key="index"
|
||||
>
|
||||
<q-card class="no-shadow q-pa-xxs">
|
||||
<q-item class="q-pb-none q-pt-xs cursor-pointer" :to="rec.to">
|
||||
<q-item class="q-pb-none q-pt-xs cursor-pointer" :to="tools.updateLink(rec.to)">
|
||||
<q-item-section>
|
||||
<q-item-label lines="3"
|
||||
:class="
|
||||
@@ -124,7 +124,7 @@
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section side>
|
||||
<q-img v-if="rec.image" :src="rec.image" style="width: 35px">IMAGE</q-img>
|
||||
<q-img v-if="rec.image" :src="rec.image" style="width: 35px"></q-img>
|
||||
<q-icon
|
||||
v-else
|
||||
:name="rec.icon"
|
||||
|
||||
@@ -144,6 +144,10 @@ export default defineComponent({
|
||||
return { sortBy: 'dateTimeStart', descending: false, page: 1, rowsNumber: 20, rowsPerPage: 20 }
|
||||
else if (props.table === toolsext.TABMOVEMENTS)
|
||||
return { sortBy: 'transactionDate', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
|
||||
else if (props.table === toolsext.TABCIRCUITS)
|
||||
return { sortBy: 'numMembers', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
|
||||
else if (props.table === toolsext.TABUSER)
|
||||
return userStore.getMypaginationMembers()
|
||||
|
||||
return { sortBy: 'date_created', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
|
||||
})
|
||||
@@ -197,15 +201,15 @@ export default defineComponent({
|
||||
|
||||
const visuType = computed(() => {
|
||||
if (props.table === toolsext.TABMYGOODS)
|
||||
return $q.screen.gt.xs
|
||||
return false
|
||||
else if (props.table === toolsext.TABMYSKILLS)
|
||||
return $q.screen.gt.xs
|
||||
return false
|
||||
else if (props.table === toolsext.TABMYGROUPS)
|
||||
return $q.screen.gt.xs
|
||||
return false
|
||||
else if (props.table === toolsext.TABMYBACHECAS)
|
||||
return $q.screen.gt.xs
|
||||
return false
|
||||
|
||||
return $q.screen.gt.xs
|
||||
return false // $q.screen.gt.xs
|
||||
})
|
||||
|
||||
const noMsgRecord = computed(() => {
|
||||
@@ -1100,6 +1104,7 @@ export default defineComponent({
|
||||
groupnameId: 1,
|
||||
path: 1,
|
||||
name: 1,
|
||||
strProv: 1,
|
||||
subname: 1,
|
||||
longdescr: 1,
|
||||
regulation: 1,
|
||||
@@ -1391,6 +1396,14 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
function mySortFieldsAvailable() {
|
||||
if (props.table === toolsext.TABUSER) {
|
||||
return userStore.getSortFieldsAvailable()
|
||||
}
|
||||
|
||||
return []
|
||||
}
|
||||
|
||||
function getdefaultnewrec(): any {
|
||||
if (props.table === toolsext.TABMYSKILLS) {
|
||||
return tools.getdefaultnewrec_MySkill()
|
||||
@@ -1440,6 +1453,7 @@ export default defineComponent({
|
||||
hint,
|
||||
strextra,
|
||||
myoptions,
|
||||
mySortFieldsAvailable,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
:nodataLabel="noMsgRecord"
|
||||
:prop_search="true"
|
||||
:finder="true"
|
||||
labelElemFind="circuiti trovati"
|
||||
:choose_visutype="visuType"
|
||||
:butt_modif_new="true && !noButtAdd"
|
||||
noresultLabel="Il filtro selezionato non ha trovato nessun risultato"
|
||||
@@ -56,8 +57,8 @@
|
||||
:filtercustom="filtercustom"
|
||||
:prop_searchList="searchList"
|
||||
:defaultnewrec="getdefaultnewrec"
|
||||
:selector="selector"
|
||||
labelBtnAddRow="NONE"
|
||||
:prop_SortFieldsAvailable="mySortFieldsAvailable"
|
||||
:labelBtnAddExtra="noButtAdd ? `` : ``"
|
||||
:extraparams="extraparams()"
|
||||
>
|
||||
|
||||
@@ -197,6 +197,18 @@ export default defineComponent({
|
||||
return { sortBy: 'desc', descending: false, page: 1, rowsNumber: 0, rowsPerPage: 10 }
|
||||
},
|
||||
},
|
||||
prop_SortFieldsAvailable: {
|
||||
type: Array,
|
||||
required: false,
|
||||
default: () => {
|
||||
return []
|
||||
},
|
||||
},
|
||||
margin_right: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 0,
|
||||
},
|
||||
defaultnewrec: {
|
||||
type: Function,
|
||||
required: false,
|
||||
@@ -256,6 +268,11 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
labelElemFind: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: 'elementi trovati',
|
||||
}
|
||||
},
|
||||
components: {
|
||||
CMyPopupEdit, CTitleBanner, CMyFieldDb, CMySelect, CMyFriends, CMyGroups,
|
||||
@@ -346,6 +363,8 @@ export default defineComponent({
|
||||
|
||||
const myvertical = ref(props.vertical)
|
||||
|
||||
const ordinam = ref('')
|
||||
|
||||
|
||||
const valoriopt = computed(() => (item: any, addall: boolean, addnone: boolean) => {
|
||||
// console.log('valoriopt', item.table)
|
||||
@@ -407,6 +426,14 @@ export default defineComponent({
|
||||
}
|
||||
})
|
||||
|
||||
watch(() => ordinam.value, (to: any, from: any) => {
|
||||
if (pagination.value.sortBy !== ordinam.value) {
|
||||
tools.setCookie('s_ordinam_' + props.prop_mytable, ordinam.value)
|
||||
pagination.value.sortBy = ordinam.value
|
||||
refresh()
|
||||
}
|
||||
})
|
||||
|
||||
watch(() => showfilter.value, (newval: any, from: any) => {
|
||||
tools.setCookie('s_adv', newval ? '1' : '0')
|
||||
})
|
||||
@@ -581,17 +608,30 @@ export default defineComponent({
|
||||
return returnedCount
|
||||
}
|
||||
|
||||
function getOrderByField(field: string, precorder: number): number {
|
||||
if ((field === 'date_reg') || (field === 'numMembers')) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return precorder ? precorder : 1;
|
||||
}
|
||||
|
||||
// emulate ajax call
|
||||
// SELECT * FROM ... WHERE...LIMIT...
|
||||
async function fetchFromServer(startRow: any, endRow: any, param_myfilter: any, param_myfilterand: any, sortBy: any, descending: any) {
|
||||
// console.log('fetchFromServer')
|
||||
let myobj: any = {}
|
||||
if (sortBy) {
|
||||
myobj = {}
|
||||
if (descending) {
|
||||
myobj[sortBy] = -1
|
||||
let arrsort = sortBy.split(',');
|
||||
let arrdescending = (descending && descending.length > 0) ? descending.split(',') : [];
|
||||
if (arrsort) {
|
||||
for (let i = 0; i < arrsort.length; i++) {
|
||||
let field = arrsort[i].trim()
|
||||
myobj[field] = (tools.isArray(arrdescending) && (arrdescending.length > [i])) ? parseInt(arrdescending[i].trim()) : 1;
|
||||
myobj[field] = getOrderByField(field, myobj[field])
|
||||
}
|
||||
} else {
|
||||
myobj[sortBy] = 1
|
||||
myobj[sortBy] = getOrderByField(sortBy, descending ? -1 : 1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -852,7 +892,6 @@ export default defineComponent({
|
||||
// @ts-ignore
|
||||
filter_gte,
|
||||
sortBy: myobj,
|
||||
descending,
|
||||
userId: userStore.my._id,
|
||||
codeId: '',
|
||||
options: props.options,
|
||||
@@ -944,6 +983,7 @@ export default defineComponent({
|
||||
pagination.value.page = page
|
||||
pagination.value.rowsPerPage = rowsPerPage
|
||||
pagination.value.sortBy = sortBy
|
||||
ordinam.value = sortBy
|
||||
pagination.value.descending = descending
|
||||
|
||||
console.log('pagination', pagination)
|
||||
@@ -957,10 +997,13 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
function onUpdateData(index: number, myprops: any, done: any) {
|
||||
const { page, rowsPerPage, rowsNumber, sortBy, descending } = myprops.pagination
|
||||
let { page, rowsPerPage, rowsNumber, sortBy, descending } = myprops.pagination
|
||||
const myfilternow = myfilter.value
|
||||
const myfilterandnow = myfilterand.value
|
||||
|
||||
if (ordinam.value)
|
||||
sortBy = ordinam.value
|
||||
|
||||
savefilter()
|
||||
|
||||
if (!mytable.value) {
|
||||
@@ -1012,6 +1055,7 @@ export default defineComponent({
|
||||
pagination.value.page = page
|
||||
pagination.value.rowsPerPage = rowsPerPage
|
||||
pagination.value.sortBy = sortBy
|
||||
ordinam.value = sortBy
|
||||
pagination.value.descending = descending
|
||||
|
||||
// console.log('pagination', pagination)
|
||||
@@ -1392,6 +1436,7 @@ export default defineComponent({
|
||||
tablesel.value = tools.getCookie('tablesel', tablesel.value)
|
||||
}
|
||||
|
||||
|
||||
myfilterand.value = props.filterdef
|
||||
// myfiltercustom.value = props.filtercustom
|
||||
// console.log('tablesel', tablesel)
|
||||
@@ -1403,6 +1448,8 @@ export default defineComponent({
|
||||
tablesel.value = mytable.value
|
||||
}
|
||||
|
||||
ordinam.value = tools.getCookie('s_ordinam_' + tablesel.value, null)
|
||||
|
||||
// console.log('2) tablesel', tablesel.value)
|
||||
|
||||
changeTable(tablesel.value)
|
||||
@@ -1662,6 +1709,10 @@ export default defineComponent({
|
||||
// console.log('REFRR - doSearch')
|
||||
refresh()
|
||||
}
|
||||
function doSort() {
|
||||
|
||||
refresh()
|
||||
}
|
||||
|
||||
function changefuncAct(newval: any) {
|
||||
if (!disabilita()) {
|
||||
@@ -2186,6 +2237,8 @@ export default defineComponent({
|
||||
newRecordBoolOld,
|
||||
showSpin,
|
||||
userStore,
|
||||
doSort,
|
||||
ordinam,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -257,7 +257,21 @@
|
||||
@click="showNotification"
|
||||
></q-btn>
|
||||
</template>
|
||||
<template v-if="searchList && finder" v-slot:after>
|
||||
<template v-slot:after>
|
||||
<q-select
|
||||
v-if="prop_SortFieldsAvailable.length > 0"
|
||||
:behavior="'menu'"
|
||||
rounded
|
||||
outlined
|
||||
dense
|
||||
v-model="ordinam"
|
||||
:options="prop_SortFieldsAvailable"
|
||||
label="Ordinamento:"
|
||||
emit-value
|
||||
map-options
|
||||
style="min-width:120px;"
|
||||
>
|
||||
</q-select>
|
||||
<q-btn
|
||||
dense
|
||||
label=""
|
||||
@@ -299,7 +313,7 @@
|
||||
{{ pagination.rowsNumber }} elemento trovato
|
||||
</div>
|
||||
<div v-if="pagination.rowsNumber > 1 && prop_search">
|
||||
{{ pagination.rowsNumber }} elementi trovati
|
||||
{{ pagination.rowsNumber }} {{labelElemFind}}
|
||||
</div>
|
||||
|
||||
<div v-if="choose_visutype && $q.screen.gt.xs" class="">
|
||||
@@ -389,6 +403,7 @@
|
||||
:prop_myrec="row"
|
||||
@cmdext="cmdExt"
|
||||
:editOn="editOn"
|
||||
:margin_right="margin_right"
|
||||
>
|
||||
</CMyRecCard>
|
||||
</div>
|
||||
@@ -473,7 +488,15 @@
|
||||
v-if="
|
||||
showColCheck(col, tools.TIPOVIS_SHOW_RECORD, true, 1, row)
|
||||
"
|
||||
:class="!col.extrafield || (col.extrafield && (col.tipovisu !== costanti.TipoVisu.LINK || (col.tipovisu === costanti.TipoVisu.LINK && userStore.getImgByProfile(row, true, col)))) ? `tdclass` : ``"
|
||||
:class="
|
||||
!col.extrafield ||
|
||||
(col.extrafield &&
|
||||
(col.tipovisu !== costanti.TipoVisu.LINK ||
|
||||
(col.tipovisu === costanti.TipoVisu.LINK &&
|
||||
userStore.getImgByProfile(row, true, col))))
|
||||
? `tdclass`
|
||||
: ``
|
||||
"
|
||||
>
|
||||
<div :class="getclrow(row)">
|
||||
<CMyPopupEdit
|
||||
|
||||
@@ -1,22 +1,42 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="row q-ma-sm shadow justify-center" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);">
|
||||
<div v-if="tools.isUserOk()">
|
||||
<div
|
||||
class="row q-ma-sm shadow justify-center"
|
||||
style="border-radius: 4px; border: 1px solid rgba(0, 0, 0, 0.12)"
|
||||
>
|
||||
<CBigBtn
|
||||
v-for="(card, ind) of cardsbig" :key="ind"
|
||||
:label="card.title" :to="card.to" :icon="card.icon" :color="card.color" :text-color="!!card.textcolor ? card.textcolor : ''"
|
||||
v-for="(card, ind) of cardsbig"
|
||||
:key="ind"
|
||||
:label="card.title"
|
||||
:to="card.to"
|
||||
:icon="card.icon"
|
||||
:color="card.color"
|
||||
:text-color="!!card.textcolor ? card.textcolor : ''"
|
||||
:small="card.small"
|
||||
:numcol="2"
|
||||
:hint="card.hint" :disable="card.disable">
|
||||
:hint="card.hint"
|
||||
:disable="card.disable"
|
||||
>
|
||||
</CBigBtn>
|
||||
</div>
|
||||
<div class="row shadow justify-center" style="border-radius: 4px;border: 1px solid rgba(0, 0, 0, 0.12);">
|
||||
<div
|
||||
class="row shadow justify-center"
|
||||
style="border-radius: 4px; border: 1px solid rgba(0, 0, 0, 0.12)"
|
||||
>
|
||||
<CBigBtn
|
||||
v-for="(card, ind) of cardssmall" :key="ind"
|
||||
v-for="(card, ind) of cardssmall"
|
||||
:key="ind"
|
||||
glossy
|
||||
:label="card.title" :to="card.to" :icon="card.icon" :color="card.color" :text-color="!!card.textcolor ? card.textcolor : ''"
|
||||
:label="card.title"
|
||||
:to="card.to"
|
||||
:icon="card.icon"
|
||||
:color="card.color"
|
||||
:text-color="!!card.textcolor ? card.textcolor : ''"
|
||||
:small="card.small"
|
||||
:numcol="3"
|
||||
:hint="card.hint" :disable="card.disable">
|
||||
:hint="card.hint"
|
||||
:disable="card.disable"
|
||||
>
|
||||
</CBigBtn>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,7 +2,7 @@ import { computed, defineComponent, onMounted, PropType, ref, watch } from 'vue'
|
||||
import { useUserStore } from '@store/UserStore'
|
||||
import { useCircuitStore } from '@store/CircuitStore'
|
||||
|
||||
import { ICircuit, IImgGallery, IUserFields, IUserProfile, IFriends, IAccount, IMyCircuit } from 'model'
|
||||
import { ICircuit, IImgGallery, IUserFields, IUserProfile, IFriends, IAccount, IMyCircuit, IMyGroup } from 'model'
|
||||
import { costanti } from '@costanti'
|
||||
import { shared_consts } from '@/common/shared_vuejs'
|
||||
import { tools } from '@store/Modules/tools'
|
||||
@@ -11,13 +11,14 @@ import { useI18n } from '@/boot/i18n'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { CUserNonVerif } from '@/components/CUserNonVerif'
|
||||
import { CSaldo } from '@/components/CSaldo'
|
||||
import { CTitleBanner } from '@/components/CTitleBanner'
|
||||
import { toolsext } from '@store/Modules/toolsext'
|
||||
import { useGlobalStore } from '@store/globalStore'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CMyCircuit',
|
||||
emits: ['setCmd'],
|
||||
components: {CUserNonVerif, CSaldo},
|
||||
components: {CUserNonVerif, CSaldo, CTitleBanner},
|
||||
props: {
|
||||
mycircuit: {
|
||||
type: Object as PropType<ICircuit | null>,
|
||||
@@ -29,6 +30,11 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
prop_groupnameSel: {
|
||||
type: Object as PropType<IMyGroup | null>,
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
visu: {
|
||||
type: Number,
|
||||
required: true,
|
||||
@@ -60,12 +66,16 @@ export default defineComponent({
|
||||
const table = ref(toolsext.TABCIRCUITS)
|
||||
|
||||
const showingtooltip = ref(false)
|
||||
const showrules = ref(false)
|
||||
const requestToEnterCircuit = ref(false)
|
||||
const groupnameSel = ref(<IMyGroup | null>null)
|
||||
|
||||
watch(() => props.mycircuit, (newval, oldval) => {
|
||||
mounted()
|
||||
})
|
||||
|
||||
function mounted() {
|
||||
groupnameSel.value = props.prop_groupnameSel
|
||||
if (!props.mycircuit) {
|
||||
if (props.circuitname) {
|
||||
circuit.value = null
|
||||
@@ -121,6 +131,9 @@ export default defineComponent({
|
||||
saldo,
|
||||
globalStore,
|
||||
showingtooltip,
|
||||
showrules,
|
||||
requestToEnterCircuit,
|
||||
groupnameSel,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -1,48 +1,111 @@
|
||||
<template>
|
||||
<div v-if="tools.isUserOk() || noaut">
|
||||
<div v-if="circuit">
|
||||
<q-item :class="`q-my-sm bordo_stondato_circuiti ` + ($q.dark.isActive ? `text-white` : `text-black`)" clickable>
|
||||
<q-item-section avatar @click="naviga(tools.getPathByTableAndRec(table, circuit))">
|
||||
<q-item
|
||||
:class="
|
||||
`q-my-sm bordo_stondato_circuiti ` +
|
||||
($q.dark.isActive ? `text-white` : `text-black`)
|
||||
"
|
||||
clickable
|
||||
>
|
||||
<q-item-section
|
||||
v-if="visu !== costanti.ENTER_TO_THE_CIRCUIT"
|
||||
avatar
|
||||
@click="naviga(tools.getPathByTableAndRec(table, circuit))"
|
||||
>
|
||||
<q-avatar size="60px">
|
||||
<q-img :src="getImgCircuit(circuit)" :alt="circuit.name" img-class="imgprofile" height="60px"/>
|
||||
<q-img
|
||||
:src="getImgCircuit(circuit)"
|
||||
:alt="circuit.name"
|
||||
img-class="imgprofile"
|
||||
height="60px"
|
||||
/>
|
||||
</q-avatar>
|
||||
<div :class="`q-ma-xs q-px-xs shadow-2 rounded-borders `"><span :class="`q-ma-sm `+ ($q.dark.isActive ? `text-white` : `text-black`)">{{ circuit.numMembers }}</span>
|
||||
<div :class="`q-ma-xs q-px-xs shadow-2 rounded-borders `">
|
||||
<span
|
||||
:class="
|
||||
`q-ma-sm ` + ($q.dark.isActive ? `text-white` : `text-black`)
|
||||
"
|
||||
>{{ circuit.numMembers }}</span
|
||||
>
|
||||
<q-icon name="fas fa-users" size="xs" color="blue"></q-icon>
|
||||
</div>
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section :class="$q.dark.isActive ? `text-white` : `text-black`">
|
||||
<q-item-label @click="naviga(tools.getPathByTableAndRec(table, circuit))"><strong>{{ circuit.name }}</strong> <span
|
||||
v-if="circuit.subname"> ({{ circuit.subname }})</span>
|
||||
<q-item-label
|
||||
@click="naviga(tools.getPathByTableAndRec(table, circuit))"
|
||||
><strong>{{ circuit.name }}</strong>
|
||||
<span v-if="circuit.subname"> ({{ circuit.subname }})</span>
|
||||
</q-item-label>
|
||||
<q-item-label @click="naviga(tools.getPathByTableAndRec(table, circuit))" v-if="circuit.longdescr" caption lines="3"><em>{{ circuit.longdescr }}</em>
|
||||
<q-item-label
|
||||
@click="naviga(tools.getPathByTableAndRec(table, circuit))"
|
||||
v-if="circuit.longdescr"
|
||||
caption
|
||||
lines="3"
|
||||
><em>{{ circuit.longdescr }}</em>
|
||||
</q-item-label>
|
||||
<q-item-label v-if="visu === costanti.ENTER_TO_THE_CIRCUIT" caption>
|
||||
<span> Membri: {{ circuit.numMembers }}</span>
|
||||
</q-item-label>
|
||||
<q-item-label caption lines="3">
|
||||
<q-chip
|
||||
v-if="circuit.status !== undefined && circuit.status !== 0" :color="circuitStore.getColorCircuitClass(circuit)"
|
||||
v-if="circuit.status !== undefined && circuit.status !== 0"
|
||||
:color="circuitStore.getColorCircuitClass(circuit)"
|
||||
text-color="white"
|
||||
size="sm"
|
||||
:icon="globalStore.getValueByTableSingle('statuscircuit', circuit.status, 'icon')">{{
|
||||
globalStore.getValueByTableSingle('statuscircuit', circuit.status)
|
||||
:icon="
|
||||
globalStore.getValueByTableSingle(
|
||||
'statuscircuit',
|
||||
circuit.status,
|
||||
'icon'
|
||||
)
|
||||
"
|
||||
>{{
|
||||
globalStore.getValueByTableSingle(
|
||||
'statuscircuit',
|
||||
circuit.status
|
||||
)
|
||||
}}
|
||||
<q-btn
|
||||
class="q-ml-sm"
|
||||
icon="fas fa-info" color="primary" text-color="white"
|
||||
icon="fas fa-info"
|
||||
color="primary"
|
||||
text-color="white"
|
||||
size="xs"
|
||||
round
|
||||
@click="showingtooltip = !showingtooltip">
|
||||
<q-tooltip :offset="[10, 10]" v-model="showingtooltip">{{globalStore.getValueByTableSingle('statuscircuit', circuit.status, 'hint')}}</q-tooltip>
|
||||
@click="showingtooltip = !showingtooltip"
|
||||
>
|
||||
<q-tooltip :offset="[10, 10]" v-model="showingtooltip">{{
|
||||
globalStore.getValueByTableSingle(
|
||||
'statuscircuit',
|
||||
circuit.status,
|
||||
'hint'
|
||||
)
|
||||
}}</q-tooltip>
|
||||
</q-btn>
|
||||
</q-chip>
|
||||
|
||||
</q-item-label>
|
||||
<q-item-label v-if="(!circuit.transactionsEnabled) && (circuit.status === shared_consts.CIRCUIT_STATUS.FASE3_MONETA_ABILITATA)" caption lines="1">
|
||||
<q-item-label
|
||||
v-if="
|
||||
!circuit.transactionsEnabled &&
|
||||
circuit.status ===
|
||||
shared_consts.CIRCUIT_STATUS.FASE3_MONETA_ABILITATA
|
||||
"
|
||||
caption
|
||||
lines="1"
|
||||
>
|
||||
<q-icon v-if="!circuit.transactionsEnabled" name="fas fa-lock">
|
||||
</q-icon>
|
||||
<span class="text-red text-weight-bold">{{ $t('circuit.transaction_suspended') }}</span>
|
||||
<span class="text-red text-weight-bold">{{
|
||||
$t('circuit.transaction_suspended')
|
||||
}}</span>
|
||||
</q-item-label>
|
||||
|
||||
<q-item-label @click="naviga(tools.getPathByTableAndRec(table, circuit))" lines="1">
|
||||
<q-item-label
|
||||
@click="naviga(tools.getPathByTableAndRec(table, circuit))"
|
||||
lines="1"
|
||||
>
|
||||
<CSaldo
|
||||
v-if="tools.isUserOk()"
|
||||
:account="account"
|
||||
@@ -55,34 +118,124 @@
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section side v-if="visu === costanti.USER_CIRCUITS && tools.isUserOk()">
|
||||
<q-item-section
|
||||
side
|
||||
v-if="visu === costanti.USER_CIRCUITS && tools.isUserOk()"
|
||||
>
|
||||
<q-item-label>
|
||||
<q-btn rounded :icon="userStore.IsMyCircuitByName(circuit.name) ? `fas fa-ellipsis-h` : `fas fa-user`">
|
||||
<q-btn
|
||||
rounded
|
||||
:icon="
|
||||
userStore.IsMyCircuitByName(circuit.name)
|
||||
? `fas fa-ellipsis-h`
|
||||
: `fas fa-user`
|
||||
"
|
||||
>
|
||||
<q-menu>
|
||||
<q-list
|
||||
v-if="(!userStore.IsMyCircuitByName(circuit.name) && !userStore.IsAskedCircuitByName(circuit.name) && !userStore.IsRefusedCircuitByName(circuit.name))"
|
||||
style="min-width: 200px">
|
||||
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.CIRCUITCMD.REQ, myusername(), true, circuitname)">
|
||||
v-if="
|
||||
!userStore.IsMyCircuitByName(circuit.name) &&
|
||||
!userStore.IsAskedCircuitByName(circuit.name) &&
|
||||
!userStore.IsRefusedCircuitByName(circuit.name)
|
||||
"
|
||||
style="min-width: 200px"
|
||||
>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.REQ,
|
||||
myusername(),
|
||||
true,
|
||||
circuitname
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{ $t('circuit.ask') }}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list
|
||||
v-else-if="(!userStore.IsMyCircuitByName(circuit.name) && userStore.IsAskedCircuitByName(circuit.name) && !userStore.IsRefusedCircuitByName(circuit.name))"
|
||||
style="min-width: 200px">
|
||||
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.CIRCUITCMD.REQ, myusername(), false, circuit.name)">
|
||||
<q-item-section>{{ $t('shared.refuse_ask') }}</q-item-section>
|
||||
v-else-if="
|
||||
!userStore.IsMyCircuitByName(circuit.name) &&
|
||||
userStore.IsAskedCircuitByName(circuit.name) &&
|
||||
!userStore.IsRefusedCircuitByName(circuit.name)
|
||||
"
|
||||
style="min-width: 200px"
|
||||
>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.REQ,
|
||||
myusername(),
|
||||
false,
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('shared.refuse_ask')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.CIRCUITCMD.REQ, myusername(), false, circuit.name)">
|
||||
<q-item-section>{{ $t('shared.cancel_ask') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.REQ,
|
||||
myusername(),
|
||||
false,
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('shared.cancel_ask')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list v-else-if="userStore.IsMyCircuitByName(circuit.name)" style="min-width: 200px">
|
||||
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST, myusername(), '', circuit.name)">
|
||||
<q-list
|
||||
v-else-if="userStore.IsMyCircuitByName(circuit.name)"
|
||||
style="min-width: 200px"
|
||||
>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST,
|
||||
myusername(),
|
||||
'',
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{ $t('circuit.exit') }}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list v-if="tools.iAmAdminCircuit(circuit.name)" style="min-width: 200px">
|
||||
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.CIRCUITCMD.DELETE, myusername(), '', circuit.name)">
|
||||
<q-list
|
||||
v-if="tools.iAmAdminCircuit(circuit.name)"
|
||||
style="min-width: 200px"
|
||||
>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.DELETE,
|
||||
myusername(),
|
||||
'',
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{ $t('circuit.delete') }}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
@@ -90,32 +243,83 @@
|
||||
</q-btn>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side v-if="visu === costanti.REQ_CIRCUIT && tools.isUserOk()">
|
||||
<q-item-section
|
||||
side
|
||||
v-if="visu === costanti.REQ_CIRCUIT && tools.isUserOk()"
|
||||
>
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="tools.setCmd($q, shared_consts.CIRCUITCMD.REFUSE_REQ, myusername(), false, circuit.name)">
|
||||
<q-item-section>{{ $t('circuit.reject_ask') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.REFUSE_REQ,
|
||||
myusername(),
|
||||
false,
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('circuit.reject_ask')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side v-if="visu === costanti.ASK_SENT_CIRCUIT && tools.isUserOk()">
|
||||
<q-item-section
|
||||
side
|
||||
v-if="visu === costanti.ASK_SENT_CIRCUIT && tools.isUserOk()"
|
||||
>
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="tools.setCmd($q, shared_consts.CIRCUITCMD.REFUSE_REQ, myusername(), '', circuit.name)">
|
||||
<q-item-section>{{ $t('shared.refuse_ask') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.REFUSE_REQ,
|
||||
myusername(),
|
||||
'',
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('shared.refuse_ask')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="tools.setCmd($q, shared_consts.CIRCUITCMD.CANCEL_REQ, myusername(), '', circuit.name)">
|
||||
<q-item-section>{{ $t('shared.cancel_ask') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.CANCEL_REQ,
|
||||
myusername(),
|
||||
'',
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('shared.cancel_ask')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
@@ -123,7 +327,161 @@
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
|
||||
<div class="centermydiv" v-if="visu === costanti.ENTER_TO_THE_CIRCUIT">
|
||||
<q-btn
|
||||
v-if="
|
||||
!userStore.IsMyCircuitByName(circuit.name) &&
|
||||
!userStore.IsAskedCircuitByName(circuit.name) &&
|
||||
!userStore.IsRefusedCircuitByName(circuit.name)
|
||||
"
|
||||
icon="fas fa-user-plus"
|
||||
color="primary"
|
||||
|
||||
:label="$t('circuit.ask')"
|
||||
@click="
|
||||
requestToEnterCircuit = true;
|
||||
groupnameSel = null;
|
||||
"
|
||||
/>
|
||||
<q-btn
|
||||
v-if="userStore.IsMyCircuitByName(circuit.name)"
|
||||
rounded
|
||||
icon="fas fa-ellipsis-h"
|
||||
>
|
||||
<q-menu>
|
||||
<q-list v-if="true" style="min-width: 150px">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
v-if="saldo === 0"
|
||||
@click="
|
||||
tools.removeFromMyCircuits(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
circuit.name,
|
||||
'',
|
||||
$t('circuit.domanda_exit_fromcircuit', {
|
||||
circuitname: circuit.name,
|
||||
})
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.exit_circuit')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
|
||||
<q-list
|
||||
v-if="tools.iAmAdminCircuit(circuit.name)"
|
||||
style="min-width: 200px"
|
||||
>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
$q,
|
||||
shared_consts.CIRCUITCMD.DELETE,
|
||||
userStore.my.username,
|
||||
'',
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-trash-alt" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('circuit.delete') }}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
|
||||
<div
|
||||
v-if="
|
||||
userStore.IsAskedCircuitByName(circuit.name) &&
|
||||
!userStore.IsMyCircuitByName(circuit.name)
|
||||
"
|
||||
>
|
||||
<CTitleBanner
|
||||
:title="$t('circuit.wait_acceptation')"
|
||||
bgcolor="bg-primary"
|
||||
clcolor="text-white"
|
||||
>
|
||||
</CTitleBanner>
|
||||
</div>
|
||||
|
||||
<q-btn
|
||||
v-if="
|
||||
userStore.IsAskedCircuitByName(circuit.name) &&
|
||||
!userStore.IsMyCircuitByName(circuit.name)
|
||||
"
|
||||
icon="fas fa-user-minus"
|
||||
flat
|
||||
outline
|
||||
:label="$t('shared.cancel_ask_short')"
|
||||
@click="
|
||||
tools.cancelReqCircuit($q, userStore.my.username, circuit.name)
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<q-dialog
|
||||
v-model="requestToEnterCircuit"
|
||||
maximized
|
||||
transition-show="slide-up"
|
||||
transition-hide="slide-down"
|
||||
>
|
||||
<q-card v-if="circuit" class="dialog_card">
|
||||
<q-toolbar class="bg-primary text-white" dense>
|
||||
<!--<q-toolbar :class="tools.displayClasses(myevent)"-->
|
||||
<!--:style="tools.displayStyles(myevent) + ` min-width: `+ tools.myheight_dialog() + `px;`">-->
|
||||
<q-toolbar-title>
|
||||
{{ circuit.name }}
|
||||
<div v-if="groupnameSel">Gruppo: {{ groupnameSel.groupname }}</div>
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
</q-toolbar>
|
||||
<q-card-section class="inset-shadow">
|
||||
<div v-html="t('circuit.disclaimer')"></div>
|
||||
</q-card-section>
|
||||
<q-card-section class="inset-shadow">
|
||||
<div style="font-weight: bold; font-size: 1.25rem">Regolamento:</div>
|
||||
<q-btn label="vedi Regolamento" @click="showrules = !showrules">
|
||||
</q-btn>
|
||||
<div v-if="showrules" v-html="circuit.regulation"></div>
|
||||
</q-card-section>
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
class="centeritems"
|
||||
icon="fas fa-user-plus"
|
||||
color="positive"
|
||||
:label="$t('circuit.acceptregulation')"
|
||||
@click="
|
||||
requestToEnterCircuit = false;
|
||||
tools.setRequestCircuit(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
circuit.name,
|
||||
true,
|
||||
groupnameSel ? groupnameSel.groupname : ''
|
||||
);
|
||||
"
|
||||
/>
|
||||
<q-btn
|
||||
outline
|
||||
:label="$t('dialog.cancel')"
|
||||
icon="close"
|
||||
v-close-popup
|
||||
></q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
</div>
|
||||
<div v-else>
|
||||
<CUserNonVerif></CUserNonVerif>
|
||||
|
||||
@@ -23,6 +23,7 @@ import { CMyFieldRec } from '@src/components/CMyFieldRec'
|
||||
import { CSelectColor } from '@src/components/CSelectColor'
|
||||
import { CMainView } from '@src/components/CMainView'
|
||||
import { CMyProfileTutorial } from '@src/components/CMyProfileTutorial'
|
||||
import { CSendRISTo } from '@src/components/CSendRISTo'
|
||||
import { CDashboard } from '@src/components/CDashboard'
|
||||
import { CCheckAppRunning } from '@src/components/CCheckAppRunning'
|
||||
import { CStatusReg } from '@src/components/CStatusReg'
|
||||
@@ -49,7 +50,7 @@ export default defineComponent({
|
||||
CSelectColor, CSelectFontSize, CImgPoster,
|
||||
CCheckIfIsLogged, CStatusReg, CDashboard, CMainView, CNotifAtTop,
|
||||
CPresentazione, CMyActivities,
|
||||
CMyProfileTutorial,
|
||||
CMyProfileTutorial, CSendRISTo,
|
||||
CTitleBanner, CShareSocial, CCheckAppRunning, CRegistration,
|
||||
},
|
||||
emits: ['selElemClick'],
|
||||
|
||||
@@ -476,6 +476,10 @@
|
||||
<div v-if="editOn" class="elemEdit">CDashboard</div>
|
||||
<CDashboard></CDashboard>
|
||||
</div>
|
||||
<div v-else-if="myel.type === shared_consts.ELEMTYPE.CSENDRISTO">
|
||||
<div v-if="editOn" class="elemEdit">CSendRISTo</div>
|
||||
<CSendRISTo></CSendRISTo>
|
||||
</div>
|
||||
<div v-else-if="myel.type === shared_consts.ELEMTYPE.STATUSREG">
|
||||
<div v-if="editOn" class="elemEdit">CStatusReg</div>
|
||||
<CStatusReg> </CStatusReg>
|
||||
|
||||
@@ -18,6 +18,11 @@ export default defineComponent({
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
hint: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
mykey: {
|
||||
type: String,
|
||||
required: true,
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
:rec="rec"
|
||||
:isrec="!!rec"
|
||||
:table="table"
|
||||
:hint="hint"
|
||||
:title="title"
|
||||
:field="mykey"
|
||||
:filter="filter"
|
||||
|
||||
@@ -37,9 +37,6 @@
|
||||
|
||||
<q-item-label>
|
||||
<q-btn
|
||||
v-if="
|
||||
userStore.my.profile.calc.numGoodsAndServices > 0 && circuitname
|
||||
"
|
||||
icon="fas fa-coins"
|
||||
color="green"
|
||||
size="md"
|
||||
@@ -56,6 +53,7 @@
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
@@ -122,6 +120,33 @@
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
dense
|
||||
@click="showsendCoinTo = true"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-coins" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.sendcoins')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item
|
||||
v-if="tools.iAmAdminGroup(grp.groupname)"
|
||||
clickable
|
||||
v-close-popup
|
||||
dense
|
||||
@click="tools.receiveRisGroup(grp.groupname, $q, $t)"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-download" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.receive_coins')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@@ -271,6 +296,7 @@
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
@@ -297,6 +323,7 @@
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
@@ -315,6 +342,7 @@
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.setCmd(
|
||||
@@ -344,6 +372,21 @@
|
||||
"
|
||||
>
|
||||
<q-menu>
|
||||
<q-list>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
dense
|
||||
@click="showsendCoinTo = true"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-coins" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.sendcoins')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list
|
||||
v-if="
|
||||
!userStore.IsMyGroupByGroupname(grp.groupname) &&
|
||||
@@ -569,7 +612,11 @@
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
</q-toolbar>
|
||||
<CInfoAccount :grp="grp" :circuitname="circuitname" :admin="tools.iAmAdminCircuit(circuitname)" />
|
||||
<CInfoAccount
|
||||
:grp="grp"
|
||||
:circuitname="circuitname"
|
||||
:admin="tools.iAmAdminCircuit(circuitname)"
|
||||
/>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
</template>
|
||||
|
||||
@@ -209,6 +209,7 @@
|
||||
:maxlength="col.maxlength ? col.maxlength : undefined"
|
||||
:disable="disable"
|
||||
:readonly="disable"
|
||||
:hint="hint"
|
||||
:type="
|
||||
col.fieldtype === costanti.FieldType.crypted
|
||||
? `password`
|
||||
@@ -1036,6 +1037,8 @@
|
||||
:readonly="col.disable || disable"
|
||||
:title="col.title ? col.title : col.titlepopupedit"
|
||||
buttons
|
||||
:label-set="$t('dialog.save')"
|
||||
:label-cancel="$t('dialog.cancel')"
|
||||
persistent
|
||||
@save="SaveValueInt"
|
||||
@show="OpenEdit"
|
||||
|
||||
@@ -2,3 +2,12 @@
|
||||
display: flex;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.q-stepper__tab {
|
||||
padding: 3px 3px !important;
|
||||
}
|
||||
|
||||
.q-stepper__step-inner{
|
||||
padding-left: 24px !important;
|
||||
padding-right: 2px !important;
|
||||
}
|
||||
|
||||
@@ -5,21 +5,28 @@ import { costanti } from '@costanti'
|
||||
import { shared_consts } from '@/common/shared_vuejs'
|
||||
import { tools } from '@store/Modules/tools'
|
||||
import { useQuasar } from 'quasar'
|
||||
import { CTitleBanner } from '@/components/CTitleBanner'
|
||||
import { CSendCoins } from '@/components/CSendCoins'
|
||||
import { CSkill } from '@/components/CSkill'
|
||||
import { CMyFieldRec } from '@/components/CMyFieldRec'
|
||||
import { CSaldo } from '@/components/CSaldo'
|
||||
import { CMySelectCity } from '@/components/CMySelectCity'
|
||||
import { CMyFieldDb } from '@/components/CMyFieldDb'
|
||||
import { CMyCircuit } from '@/components/CMyCircuit'
|
||||
import { CMySelect } from '@/components/CMySelect'
|
||||
import { CMyUserOnlyView } from '@/components/CMyUserOnlyView'
|
||||
import { CUserInfoAccount } from '@/components/CUserInfoAccount'
|
||||
import { useI18n } from '@/boot/i18n'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useCircuitStore } from '@store/CircuitStore'
|
||||
|
||||
const STEP_NAME_SURNAME = 2
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CMyProfileTutorial',
|
||||
components: {
|
||||
CSendCoins, CSaldo, CUserInfoAccount,
|
||||
CMySelectCity, CMyFieldRec, CMySelect
|
||||
CMySelectCity, CMyFieldRec, CSkill, CMyUserOnlyView, CTitleBanner, CMySelect, CMyFieldDb, CMyCircuit
|
||||
},
|
||||
emits: ['setCmd'],
|
||||
props: {
|
||||
@@ -45,39 +52,158 @@ export default defineComponent({
|
||||
const $route = useRoute()
|
||||
|
||||
const showAccountInfo = ref(false)
|
||||
const slidestep = ref('1')
|
||||
const step = ref(1)
|
||||
|
||||
const username = ref('')
|
||||
const showsendCoinTo = ref(false)
|
||||
const mycircuit = ref(<ICircuit | undefined | null>null)
|
||||
|
||||
const contact = ref(<IUserFields | null>null)
|
||||
const circuit = ref(<ICircuit | null | undefined>null)
|
||||
|
||||
|
||||
const filtroutente = ref(<any[]>[])
|
||||
|
||||
const stepTut = computed(() => userStore.my.profile.stepTutorial)
|
||||
const noNameSurname = computed(() => userStore.my.profile.noNameSurname)
|
||||
|
||||
const mycards = computed(() => {
|
||||
return costanti.MAINCARDS.filter((rec: any) => shared_consts.TABLES_INSERT_ALMOST_ONE_TO_ENABLE_CIRCUIT.includes(rec.table))
|
||||
})
|
||||
|
||||
const strProv = computed(() => {
|
||||
|
||||
if (contact.value && contact.value.profile.resid_province) {
|
||||
return contact.value.profile.resid_province
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
})
|
||||
|
||||
watch(() => strProv.value, (newval: string, oldval: string) => {
|
||||
mycircuit.value = circuitStore.getCircuitByProvince(strProv.value)
|
||||
})
|
||||
|
||||
watch(() => step.value, (newval: number, oldval: number) => {
|
||||
|
||||
if (step.value > userStore.my.profile.stepTutorial)
|
||||
userStore.my.profile.stepTutorial = step.value
|
||||
|
||||
userStore.saveStepTutorial(step.value)
|
||||
if (step.value >= numstep.value) {
|
||||
tools.scrollToTop()
|
||||
}
|
||||
|
||||
if (step.value === STEP_NAME_SURNAME + 1) {
|
||||
let index = step.value
|
||||
console.log('Salva ', arrStep[index])
|
||||
if ((contact.value ? !!contact.value.name : false) && contact.value!.name) {
|
||||
// nome esistente
|
||||
userStore.savenoNameSurname(false)
|
||||
} else {
|
||||
userStore.savenoNameSurname(true)
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
|
||||
const arrStep = [
|
||||
{
|
||||
label: t('tutorial.step_residence_title'),
|
||||
step: 1,
|
||||
title: t('tutorial.step_residence_title'),
|
||||
extratitle: function () { return ': ' + contact.value!.profile.resid_province },
|
||||
label: t('tutorial.step_residence'),
|
||||
checkOk: function () { return contact.value ? !!contact.value.profile.resid_province : false },
|
||||
step: '1',
|
||||
icon: 'house'
|
||||
},
|
||||
{
|
||||
step: STEP_NAME_SURNAME, // 2
|
||||
title: t('tutorial.step_nomecognome_title'),
|
||||
extratitle: function () { return ': ' + (contact.value ? tools.getNomeUtenteEUsernameByRecUser(contact.value) : '') },
|
||||
label: t('tutorial.step_nomecognome'),
|
||||
checkOk: function () { return ((contact.value ? !!contact.value.name : false) || userStore.my.profile.noNameSurname) },
|
||||
icon: 'user'
|
||||
},
|
||||
{
|
||||
step: 3,
|
||||
title: t('tutorial.step_circuito_title'),
|
||||
extratitle: function () { return mycircuit.value ? ': ' + mycircuit.value.name : '' },
|
||||
label: t('tutorial.step_circuito'),
|
||||
label_ok: t('tutorial.step_circuito_ok'),
|
||||
checkOk: function () {
|
||||
if (mycircuit.value) {
|
||||
return (userStore.IsMyCircuitByName(mycircuit.value.name) ||
|
||||
userStore.IsAskedCircuitByName(mycircuit.value.name))
|
||||
}
|
||||
return false
|
||||
},
|
||||
icon: 'img: images/1ris_rosso_100.png',
|
||||
},
|
||||
{
|
||||
step: 4,
|
||||
title: t('tutorial.step_beniservizi_title'),
|
||||
extratitle: function () { return ': (' + userStore.my.profile.calc.numGoodsAndServices + ')' },
|
||||
label: t('tutorial.step_beniservizi'),
|
||||
checkOk: function () {
|
||||
return userStore.my.profile.calc.numGoodsAndServices! > 0
|
||||
},
|
||||
icon: 'fas fa-tshirt',
|
||||
},
|
||||
{
|
||||
step: 5,
|
||||
title: t('tutorial.step_foto_title'),
|
||||
extratitle: function () { return ': (' + (userStore.my.profile.img ? t('dialog.yes') : t('dialog.no')) + ')' },
|
||||
label: t('tutorial.step_foto'),
|
||||
checkOk: function () {
|
||||
return !!userStore.my.profile.img
|
||||
},
|
||||
icon: 'fas fa-tshirt',
|
||||
},
|
||||
{
|
||||
step: 6,
|
||||
title: t('tutorial.step_fine_title'),
|
||||
extratitle: function () { return '' },
|
||||
label: t('tutorial.step_fine'),
|
||||
checkOk: function () {
|
||||
return true
|
||||
},
|
||||
icon: 'fas fa-tshirt',
|
||||
},
|
||||
]
|
||||
|
||||
const numstep = computed(() => arrStep.length)
|
||||
|
||||
const progressStep = computed(() => {
|
||||
let prStep = 0
|
||||
const prStep = computed(() => {
|
||||
|
||||
return prStep / numstep.value
|
||||
let num = 0
|
||||
for (const mystep of arrStep) {
|
||||
if (mystep.checkOk())
|
||||
num++
|
||||
}
|
||||
return num
|
||||
})
|
||||
|
||||
const progressLabel = computed(() => (progressStep.value * 100).toFixed(2) + '%')
|
||||
const progressStep = computed(() => {
|
||||
|
||||
if (numstep.value > 0)
|
||||
return prStep.value / numstep.value
|
||||
else
|
||||
return 0
|
||||
})
|
||||
|
||||
const progressLabel = computed(() => (progressStep.value * 100).toFixed(0) + '%')
|
||||
|
||||
watch(() => props.mycontact, (newval, oldval) => {
|
||||
console.log('watch: mycontact')
|
||||
mounted()
|
||||
updatestart()
|
||||
})
|
||||
|
||||
function mounted() {
|
||||
watch(() => tools.isUserOk(), (newval, oldval) => {
|
||||
if (userStore.isUserOk()) {
|
||||
updatestart()
|
||||
}
|
||||
})
|
||||
|
||||
function updatestart() {
|
||||
if (!props.mycontact) {
|
||||
if (props.myusername) {
|
||||
username.value = props.myusername
|
||||
@@ -93,7 +219,36 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
|
||||
mycircuit.value = circuitStore.getCircuitByProvince(strProv.value)
|
||||
|
||||
if (contact.value)
|
||||
filtroutente.value = [{ userId: contact.value._id }]
|
||||
|
||||
step.value = userStore.my.profile.stepTutorial ? userStore.my.profile.stepTutorial : 1
|
||||
if (step.value > numstep.value)
|
||||
step.value = numstep.value
|
||||
|
||||
// circuit.value = circuitStore.getCircuitByName(props.circuitname)
|
||||
|
||||
if (!userStore.my.profile.stepTutorial || userStore.my.profile.stepTutorial === 0) {
|
||||
userStore.my.profile.stepTutorial = 1
|
||||
}
|
||||
|
||||
userStore.my.profile.stepTutorial = getFirstStepToFill()
|
||||
|
||||
}
|
||||
|
||||
|
||||
function getFirstStepToFill() {
|
||||
let num = 1
|
||||
for (const mystep of arrStep) {
|
||||
if (mystep.checkOk())
|
||||
num++
|
||||
else
|
||||
break
|
||||
}
|
||||
|
||||
return num
|
||||
}
|
||||
|
||||
function getImgUser(profile: IUserFields) {
|
||||
@@ -117,7 +272,7 @@ export default defineComponent({
|
||||
|
||||
const checkifDisabled = computed(() => {
|
||||
let ret = true
|
||||
let mystep = parseInt(slidestep.value)
|
||||
let mystep = step.value
|
||||
if (mystep > 0) {
|
||||
return !arrStep[mystep - 1].checkOk()
|
||||
} else {
|
||||
@@ -125,6 +280,37 @@ export default defineComponent({
|
||||
}
|
||||
})
|
||||
|
||||
function clickFinish() {
|
||||
userStore.my.profile.stepTutorial = numstep.value + 1
|
||||
step.value = numstep.value + 1
|
||||
|
||||
}
|
||||
|
||||
function numStepCompleted() {
|
||||
return prStep.value
|
||||
}
|
||||
function completed() {
|
||||
return prStep.value === numstep.value
|
||||
}
|
||||
|
||||
function getColorTutorial() {
|
||||
return completed() ? 'bg-green-5' : 'bg-primary'
|
||||
}
|
||||
|
||||
function getColor() {
|
||||
if (numStepCompleted()) {
|
||||
return 'positive'
|
||||
} else {
|
||||
return 'primary'
|
||||
}
|
||||
}
|
||||
function mounted() {
|
||||
if (userStore.isUserOk()) {
|
||||
updatestart()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
onMounted(mounted)
|
||||
|
||||
return {
|
||||
@@ -137,12 +323,23 @@ export default defineComponent({
|
||||
shared_consts,
|
||||
tools,
|
||||
showsendCoinTo,
|
||||
circuit,
|
||||
showAccountInfo,
|
||||
slidestep,
|
||||
step,
|
||||
numstep,
|
||||
progressLabel,
|
||||
progressStep,
|
||||
arrStep,
|
||||
strProv,
|
||||
mycircuit,
|
||||
userStore,
|
||||
clickFinish,
|
||||
mycards,
|
||||
filtroutente,
|
||||
getColor,
|
||||
stepTut,
|
||||
completed,
|
||||
getColorTutorial,
|
||||
getFirstStepToFill,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -1,48 +1,77 @@
|
||||
<template>
|
||||
<div v-if="contact">
|
||||
<div class="text-center bg-green text-white text-h6">
|
||||
{{ $t('tutorial.title') }} -
|
||||
<span class="text-h7"
|
||||
>({{
|
||||
$t('tutorial.step', { step: slidestep, numstep: numstep })
|
||||
}})</span
|
||||
<div class="row items-center">
|
||||
<div :class="step >= numstep ? 'col-10' : 'col-12'">
|
||||
<CTitleBanner
|
||||
class="q-pa-none"
|
||||
:title="
|
||||
!progressStep
|
||||
? $t('tutorial.title') + ` (` + progressLabel + `)`
|
||||
: $t('tutorial.title_completed') + ` (` + progressLabel + `)`
|
||||
"
|
||||
:bgcolor="getColorTutorial()"
|
||||
clcolor="text-white"
|
||||
myclass="myshad"
|
||||
:canopen="!completed()"
|
||||
:header="step < numstep"
|
||||
>
|
||||
<q-slide-transition>
|
||||
<div v-show="step < numstep">
|
||||
<div class="q-my-sm">
|
||||
<q-linear-progress
|
||||
stripe
|
||||
size="25px"
|
||||
:value="progressStep"
|
||||
:color="getColor()"
|
||||
>
|
||||
</div>
|
||||
<q-linear-progress size="25px" :value="progressStep" color="accent">
|
||||
<div class="absolute-full flex flex-center">
|
||||
<q-badge color="white" text-color="accent" :label="progressLabel1" />
|
||||
<q-badge
|
||||
color="white"
|
||||
text-color="accent"
|
||||
:label="
|
||||
$t('tutorial.completed_step', { perc: progressLabel })
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</q-linear-progress>
|
||||
|
||||
<div class="q-gutter-sm">
|
||||
<q-carousel
|
||||
ref="carousel"
|
||||
v-model="slidestep"
|
||||
transition-prev="slide-right"
|
||||
transition-next="slide-left"
|
||||
swipeable
|
||||
animated
|
||||
control-color="white"
|
||||
padding
|
||||
arrows
|
||||
height="250px"
|
||||
class="bg-blue text-white shadow-1 rounded-borders"
|
||||
</div>
|
||||
<CMyUserOnlyView
|
||||
:mycontact="contact"
|
||||
:visu="costanti.FIND_PEOPLE"
|
||||
>
|
||||
<q-carousel-slide
|
||||
</CMyUserOnlyView>
|
||||
|
||||
<div class="">
|
||||
<q-stepper
|
||||
v-model="step"
|
||||
ref="stepper"
|
||||
color="primary"
|
||||
animated
|
||||
vertical
|
||||
header-nav
|
||||
>
|
||||
<q-step
|
||||
v-for="(recstep, index) in arrStep"
|
||||
:key="index"
|
||||
:name="recstep.step"
|
||||
class="column no-wrap flex-center"
|
||||
:title="recstep.title + recstep.extratitle()"
|
||||
:icon="recstep.icon"
|
||||
:done="recstep.checkOk()"
|
||||
done-color="positive"
|
||||
>
|
||||
<q-icon :name="recstep.icon" size="36px" />
|
||||
<div class="q-mt-sm text-center"></div>
|
||||
<div v-if="recstep.step === '1'" class="q-mt-sm text-center">
|
||||
<div
|
||||
v-if="recstep.checkOk() && recstep.label_ok"
|
||||
v-html="recstep.label_ok"
|
||||
></div>
|
||||
<div v-else v-html="recstep.label"></div>
|
||||
<br />
|
||||
<q-banner v-if="step === 1" class="bg-blue-8 text-white">
|
||||
<CMySelectCity
|
||||
:label="$t('reg.resid_province')"
|
||||
table="users"
|
||||
jointable="provinces"
|
||||
v-model="contact.profile.resid_province"
|
||||
myclass="selectorwide"
|
||||
myclass="selectorwide text-white"
|
||||
:db_type="costanti.FieldType.string"
|
||||
db_field="profile"
|
||||
db_subfield="resid_province"
|
||||
@@ -50,54 +79,131 @@
|
||||
:db_rec="contact"
|
||||
>
|
||||
</CMySelectCity>
|
||||
</div>
|
||||
</q-carousel-slide>
|
||||
|
||||
<template v-slot:control>
|
||||
<q-carousel-control
|
||||
position="bottom-right"
|
||||
:offset="[18, 18]"
|
||||
class="q-gutter-xs"
|
||||
</q-banner>
|
||||
<div v-else-if="step === 2">
|
||||
<q-banner class="bg-blue-8 text-white">
|
||||
<div class="myrow">
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.name')"
|
||||
table="users"
|
||||
mykey="name"
|
||||
:hint="$t('reg.insert_name')"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
<q-btn
|
||||
v-if="slidestep !== '1'"
|
||||
push
|
||||
icon="arrow_left"
|
||||
:label="$t('dialog.indietro')"
|
||||
@click="$refs.carousel.previous()"
|
||||
/>
|
||||
<q-btn
|
||||
v-if="slidestep !== '4'"
|
||||
push
|
||||
icon="arrow_right"
|
||||
:label="$t('dialog.avanti')"
|
||||
:disabled="checkifDisabled"
|
||||
@click="!checkifDisabled ? $refs.carousel.next() : null"
|
||||
/>
|
||||
</q-carousel-control>
|
||||
</template>
|
||||
</q-carousel>
|
||||
<div class="row justify-center">
|
||||
<q-btn-toggle
|
||||
glossy
|
||||
v-model="slidestep"
|
||||
:options="[
|
||||
{ label: '1', value: '1' },
|
||||
{ label: 2, value: '2' },
|
||||
{ label: 3, value: '3' },
|
||||
{ label: 4, value: '4' },
|
||||
]"
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
<div class="myrow">
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.surname')"
|
||||
table="users"
|
||||
mykey="surname"
|
||||
:hint="$t('reg.insert_surname')"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
</q-banner>
|
||||
</div>
|
||||
<div v-else-if="step === 3" class="">
|
||||
<CMyCircuit
|
||||
:mycircuit="mycircuit"
|
||||
:visu="costanti.ENTER_TO_THE_CIRCUIT"
|
||||
>
|
||||
</CMyCircuit>
|
||||
</div>
|
||||
<div v-else-if="step === 4" class="">
|
||||
<div
|
||||
v-for="(card, ind) of mycards"
|
||||
:key="ind"
|
||||
:name="card.table"
|
||||
>
|
||||
<q-card class="q-my-md">
|
||||
<div>
|
||||
<CSkill
|
||||
:table="card.table"
|
||||
:filtercustom="filtroutente"
|
||||
:butt_modif_new="true"
|
||||
:visuinpage="true"
|
||||
:noaut="true"
|
||||
:title="card.title"
|
||||
/>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="step === 5" class="">
|
||||
<div class="myrow">
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.photo')"
|
||||
table="users"
|
||||
mykey="profile"
|
||||
mysubkey="img"
|
||||
:type="costanti.FieldType.image"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
|
||||
{{ $t('tutorial.step_altri_in_profilo') }}
|
||||
<q-btn
|
||||
glossy
|
||||
label="Modifica Profilo"
|
||||
icon="fas fa-pencil-alt"
|
||||
color="primary"
|
||||
to="/editprofile"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div v-else-if="step === 6" class=""></div>
|
||||
<q-stepper-navigation>
|
||||
<q-btn
|
||||
v-if="step > 1"
|
||||
flat
|
||||
color="primary"
|
||||
@click="$refs.stepper.previous()"
|
||||
:label="$t('dialog.indietro')"
|
||||
class="q-ml-sm"
|
||||
/>
|
||||
<q-btn
|
||||
@click="
|
||||
step === numstep
|
||||
? clickFinish()
|
||||
: $refs.stepper.next()
|
||||
"
|
||||
color="primary"
|
||||
:label="
|
||||
step === numstep
|
||||
? $t('dialog.finish')
|
||||
: $t('dialog.avanti')
|
||||
"
|
||||
/>
|
||||
</q-stepper-navigation>
|
||||
</q-step>
|
||||
</q-stepper>
|
||||
</div>
|
||||
</div>
|
||||
</q-slide-transition>
|
||||
</CTitleBanner>
|
||||
</div>
|
||||
<q-btn
|
||||
v-if="step >= numstep"
|
||||
:class="`col-2 ` + getColorTutorial()"
|
||||
icon="fas fa-arrow-right"
|
||||
color="text-white"
|
||||
dense
|
||||
size="md"
|
||||
:label="$t('dialog.vai')"
|
||||
@click="step = getFirstStepToFill()"
|
||||
>
|
||||
</q-btn>
|
||||
</div>
|
||||
</div>
|
||||
<q-dialog v-model="showAccountInfo" full-height full-width>
|
||||
<q-card v-if="true">
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar class="bg-primary">
|
||||
<q-toolbar-title class="text-h7">
|
||||
{{ tools.getNomeUtenteByRecUser(contact) }}
|
||||
{{ tools.getNomeUtenteEUsernameByRecUser(contact) }}
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
<q-btn flat round icon="close" v-close-popup></q-btn>
|
||||
</q-toolbar>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
@@ -106,6 +212,6 @@
|
||||
<script lang="ts" src="./CMyProfileTutorial.ts">
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
<style lang="scss">
|
||||
@import './CMyProfileTutorial.scss';
|
||||
</style>
|
||||
|
||||
@@ -29,6 +29,11 @@ export default defineComponent({
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
margin_right: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 0,
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!--suppress ALL -->
|
||||
<template>
|
||||
<div class="q-py-xs centermydiv cardrec"
|
||||
:style="`max-width: `+ (tools.getwidth($q) - 20) +`px; ` + ($q.screen.lt.sm ? (`min-width: `+ (tools.getwidth($q) - 20) +`px;`) : ``)">
|
||||
:style="`max-width: `+ (tools.getwidth($q) - 20) +`px; ` + ($q.screen.lt.sm ? (`min-width: `+ (tools.getwidth($q) - (20 + margin_right)) +`px;`) : ``)">
|
||||
<q-item v-if="myrec" clickable v-ripple :class="`shadow-2 q-btn--rounded ` + ($q.dark.isActive ? `bg-black`: `bg-teal-1`)">
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
</q-item-section>
|
||||
<q-item-section side v-if="tools.canModifyThisRec(myrec) || editOn">
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-pencil-alt">
|
||||
<q-btn rounded dense icon="fas fa-pencil-alt">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable v-close-popup
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
</q-item-section>
|
||||
<q-item-section side v-if="tools.canModifyThisRec(circuit, table)">
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-pencil-alt">
|
||||
<q-btn rounded dense icon="fas fa-pencil-alt">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable v-close-popup
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
</q-item-section>
|
||||
<q-item-section side v-if="tools.canModifyThisRec(myrec, table)">
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-pencil-alt">
|
||||
<q-btn rounded dense icon="fas fa-pencil-alt">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable v-close-popup
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
:optlab="fieldsTable.getLabelByTable(jointable)"
|
||||
:options="globalStore.getTableJoinByName(jointable, false, false, '')"
|
||||
:useinput="false"
|
||||
:dark="true"
|
||||
@update:value="changevalRec"
|
||||
>
|
||||
</CMySelect>
|
||||
|
||||
@@ -197,6 +197,7 @@
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
@@ -393,6 +394,25 @@
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list v-if="true" style="min-width: 150px">
|
||||
<q-item
|
||||
v-if="
|
||||
userStore.getMyCircuitsInCommonByUser(contact).length > 0 &&
|
||||
(contact.username !== userStore.my.username ||
|
||||
userStore.hoContiCollettiviDaAmministrare() ||
|
||||
userStore.hoContiComunitariDaAmministrare())
|
||||
"
|
||||
clickable
|
||||
v-close-popup
|
||||
dense
|
||||
@click="showsendCoinTo = true"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-coins" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.sendcoins')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@@ -553,6 +573,7 @@
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
@@ -657,6 +678,7 @@
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
@@ -694,6 +716,25 @@
|
||||
>
|
||||
<q-menu>
|
||||
<q-list style="min-width: 200px">
|
||||
<q-item
|
||||
v-if="
|
||||
userStore.getMyCircuitsInCommonByUser(contact).length > 0 &&
|
||||
(contact.username !== userStore.my.username ||
|
||||
userStore.hoContiCollettiviDaAmministrare() ||
|
||||
userStore.hoContiComunitariDaAmministrare())
|
||||
"
|
||||
clickable
|
||||
v-close-popup
|
||||
dense
|
||||
@click="showsendCoinTo = true"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-coins" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.sendcoins')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item
|
||||
v-if="
|
||||
costanti.ENABLE_FRIENDS &&
|
||||
@@ -852,6 +893,7 @@
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
|
||||
@@ -3,18 +3,46 @@
|
||||
<q-item class="q-my-sm" clickable>
|
||||
<q-item-section avatar @click="naviga(`/my/` + contact.username)">
|
||||
<q-avatar size="60px">
|
||||
<q-img :src="getImgUser(contact)" :alt="contact.username" img-class="imgprofile" height="60px"/>
|
||||
<q-img
|
||||
:src="getImgUser(contact)"
|
||||
:alt="contact.username"
|
||||
img-class="imgprofile"
|
||||
height="60px"
|
||||
/>
|
||||
</q-avatar>
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section @click="naviga(`/my/` + contact.username)">
|
||||
<q-item-label v-if="labelextra && (labelextra !== contact.username)"><strong>{{ labelextra }}</strong></q-item-label>
|
||||
<q-item-label><span class="username">{{ contact.username }}</span> <span v-if="contact.name">({{ contact.name }} {{ contact.surname }})</span>
|
||||
<q-item-label v-if="labelextra && labelextra !== contact.username"
|
||||
><strong>{{ labelextra }}</strong></q-item-label
|
||||
>
|
||||
<q-item-label v-if="contact.name"
|
||||
><span class="username"
|
||||
>{{ contact.name }}
|
||||
<span v-if="contact.surname">{{ contact.surname }}</span></span
|
||||
>
|
||||
({{ contact.username }})
|
||||
</q-item-label>
|
||||
<q-item-label v-if="contact.reported" caption lines="1"><em style="color: red; font-weight: bold">{{ $t('db.reporteduser', {date_report: tools.getstrDateTimeShort(contact.date_report)}) }}</em></q-item-label>
|
||||
<q-item-label v-if="contact.profile" caption lines="1"><em>{{ contact.profile.qualifica }}</em></q-item-label>
|
||||
<q-item-label v-else
|
||||
><span class="username">{{ contact.username }}</span>
|
||||
<span v-if="contact.name"
|
||||
>({{ contact.name }} {{ contact.surname }})</span
|
||||
>
|
||||
</q-item-label>
|
||||
<q-item-label v-if="contact.reported" caption lines="1"
|
||||
><em style="color: red; font-weight: bold">{{
|
||||
$t('db.reporteduser', {
|
||||
date_report: tools.getstrDateTimeShort(contact.date_report),
|
||||
})
|
||||
}}</em></q-item-label
|
||||
>
|
||||
<q-item-label v-if="contact.profile" caption lines="1"
|
||||
><em>{{ contact.profile.qualifica }}</em></q-item-label
|
||||
>
|
||||
<q-item-label caption lines="1"></q-item-label>
|
||||
<q-item-label v-if="labelFooter" lines="1"><em>{{ labelFooter }}</em></q-item-label>
|
||||
<q-item-label v-if="labelFooter" lines="1"
|
||||
><em>{{ labelFooter }}</em></q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section side v-if="visu === costanti.FRIENDS">
|
||||
@@ -22,15 +50,43 @@
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, userStore.my.username, '', contact.username)">
|
||||
<q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS,
|
||||
userStore.my.username,
|
||||
'',
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('friends.remove_from_myfriends')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable icon="fas fa-ban" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.BLOCK_USER, userStore.my.username, '', contact.username)">
|
||||
<q-item-section>{{ $t('friends.block_user') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-ban"
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.BLOCK_USER,
|
||||
userStore.my.username,
|
||||
'',
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('friends.block_user')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
@@ -42,14 +98,43 @@
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list v-if="true" style="min-width: 150px">
|
||||
<q-item clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.SETFRIEND, userStore.my.username, '', contact.username)">
|
||||
<q-item-section>{{ $t('friends.accept_friend') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.SETFRIEND,
|
||||
userStore.my.username,
|
||||
'',
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('friends.accept_friend')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, userStore.my.username, false, contact.username, false)">
|
||||
<q-item-section>{{ $t('friends.reject_ask_friend') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.REQFRIEND,
|
||||
userStore.my.username,
|
||||
false,
|
||||
contact.username,
|
||||
false
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('friends.reject_ask_friend')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
@@ -61,10 +146,13 @@
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list v-if="true" style="min-width: 150px">
|
||||
|
||||
<q-item clickable v-close-popup @click="tools.addToMyGroups($q, contact.username, groupname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="tools.addToMyGroups($q, contact.username, groupname)"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-user-plus"/>
|
||||
<q-icon color="positive" name="fas fa-user-plus" />
|
||||
</q-item-section>
|
||||
<q-item-section>
|
||||
{{ $t('groups.accept_group') }}
|
||||
@@ -72,70 +160,136 @@
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list style="min-width: 200px">
|
||||
<q-item clickable v-close-popup
|
||||
@click="tools.refuseReqGroup($q, contact.username, groupname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="tools.refuseReqGroup($q, contact.username, groupname)"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus"/>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section>{{ $t('shared.refuse_ask') }}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-close-popup
|
||||
@click="tools.cancelReqGroups($q, contact.username, groupname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.cancelReqGroups($q, contact.username, groupname)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus"/>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section>{{ $t('shared.cancel_ask_short') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('shared.cancel_ask_short')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side v-else-if="visu === costanti.REQ_REMOVE_USER_TO_GROUP">
|
||||
<q-item-section
|
||||
side
|
||||
v-else-if="visu === costanti.REQ_REMOVE_USER_TO_GROUP"
|
||||
>
|
||||
<q-item-label v-if="contact.username !== userStore.my.username">
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable v-if="!tools.isUserAdminGroup(groupname, contact.username)" v-close-popup @click="tools.addtoAdminOfMyGroup($q, contact.username, groupname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-if="!tools.isUserAdminGroup(groupname, contact.username)"
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.addtoAdminOfMyGroup($q, contact.username, groupname)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-user-shield"/>
|
||||
<q-icon color="positive" name="fas fa-user-shield" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('groups.addasadmin') }}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-if="tools.isUserAdminGroup(groupname, contact.username) && tools.iAmTheCreatorOfTheGroup(groupname)" v-close-popup @click="tools.removeAdminOfMyGroup($q, contact.username, groupname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-if="
|
||||
tools.isUserAdminGroup(groupname, contact.username) &&
|
||||
tools.iAmTheCreatorOfTheGroup(groupname)
|
||||
"
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.removeAdminOfMyGroup($q, contact.username, groupname)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-times"/>
|
||||
<q-icon color="negative" name="fas fa-user-times" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('groups.remove_as_admin') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('groups.remove_as_admin')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-if="!tools.isUserTheCreatorOfTheGroup(groupname, contact.username)" v-close-popup @click="tools.removeFromMyGroups($q, contact.username, groupname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-if="
|
||||
!tools.isUserTheCreatorOfTheGroup(
|
||||
groupname,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.removeFromMyGroups($q, contact.username, groupname)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus"/>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('groups.remove_from_mygroups') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('groups.remove_from_mygroups')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-close-popup @click="tools.reportUser($q, userStore.my.username, contact.username)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.reportUser(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-flag"/>
|
||||
<q-icon color="negative" name="fas fa-flag" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('friends.report_user') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('friends.report_user')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side v-else-if="visu === costanti.REQ_ADD_USER_TO_CIRCUIT">
|
||||
<q-item-section
|
||||
side
|
||||
v-else-if="visu === costanti.REQ_ADD_USER_TO_CIRCUIT"
|
||||
>
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list v-if="true" style="min-width: 150px">
|
||||
|
||||
<q-item clickable v-close-popup @click="tools.addToMyCircuits($q, contact.username, circuitname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.addToMyCircuits($q, contact.username, circuitname)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-user-plus"/>
|
||||
<q-icon color="positive" name="fas fa-user-plus" />
|
||||
</q-item-section>
|
||||
<q-item-section>
|
||||
{{ $t('circuit.accept') }}
|
||||
@@ -143,55 +297,128 @@
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list style="min-width: 200px">
|
||||
<q-item clickable v-close-popup
|
||||
@click="tools.refuseReqCircuit($q, contact.username, circuitname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.refuseReqCircuit($q, contact.username, circuitname)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus"/>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section>{{ $t('shared.refuse_ask') }}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-close-popup
|
||||
@click="tools.cancelReqCircuit($q, contact.username, circuitname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.cancelReqCircuit($q, contact.username, circuitname)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus"/>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
|
||||
<q-item-section>{{ $t('shared.cancel_ask_short') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('shared.cancel_ask_short')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side v-else-if="visu === costanti.REQ_REMOVE_USER_TO_CIRCUIT">
|
||||
<q-item-section
|
||||
side
|
||||
v-else-if="visu === costanti.REQ_REMOVE_USER_TO_CIRCUIT"
|
||||
>
|
||||
<q-item-label v-if="contact.username !== userStore.my.username">
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable v-if="!tools.isUserAdminCircuit(circuitname, contact.username)" v-close-popup @click="tools.addtoAdminOfCircuit($q, contact.username, circuitname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-if="
|
||||
!tools.isUserAdminCircuit(circuitname, contact.username)
|
||||
"
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.addtoAdminOfCircuit($q, contact.username, circuitname)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-user-shield"/>
|
||||
<q-icon color="positive" name="fas fa-user-shield" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('circuit.addasadmin') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.addasadmin')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-if="tools.isUserAdminCircuit(circuitname, contact.username) && tools.iAmTheCreatorOfTheCircuit(circuitname)" v-close-popup @click="tools.removeAdminOfCircuit($q, contact.username, circuitname)">
|
||||
<q-item
|
||||
clickable
|
||||
v-if="
|
||||
tools.isUserAdminCircuit(circuitname, contact.username) &&
|
||||
tools.iAmTheCreatorOfTheCircuit(circuitname)
|
||||
"
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.removeAdminOfCircuit(
|
||||
$q,
|
||||
contact.username,
|
||||
circuitname
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-times"/>
|
||||
<q-icon color="negative" name="fas fa-user-times" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('circuit.remove_as_admin') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.remove_as_admin')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-if="!tools.isUserTheCreatorOfTheCircuit(circuitname, contact.username)" v-close-popup @click="tools.removeFromMyCircuits($q, contact.username, circuitname, '')">
|
||||
<q-item
|
||||
clickable
|
||||
v-if="
|
||||
!tools.isUserTheCreatorOfTheCircuit(
|
||||
circuitname,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.removeFromMyCircuits(
|
||||
$q,
|
||||
contact.username,
|
||||
circuitname,
|
||||
''
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus"/>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('circuit.remove_from_mycircuit') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('circuit.remove_from_mycircuit')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-close-popup @click="tools.reportUser($q, userStore.my.username, contact.username)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.reportUser(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-flag"/>
|
||||
<q-icon color="negative" name="fas fa-flag" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('friends.report_user') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('friends.report_user')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
@@ -203,9 +430,24 @@
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND, userStore.my.username, '', contact.username, '')">
|
||||
<q-item-section>{{ $t('friends.cancel_ask_friend') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND,
|
||||
userStore.my.username,
|
||||
'',
|
||||
contact.username,
|
||||
''
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('friends.cancel_ask_friend')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
@@ -214,28 +456,81 @@
|
||||
</q-item-section>
|
||||
<q-item-section side v-else-if="visu === costanti.ASK_TRUST">
|
||||
<q-item-label>
|
||||
<q-btn color="positive" :label="$t('friends.accept_trust')"
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.SETTRUST, userStore.my.username, true, contact.username)"/>
|
||||
<q-btn
|
||||
color="positive"
|
||||
:label="$t('friends.accept_trust')"
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.SETTRUST,
|
||||
userStore.my.username,
|
||||
true,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
/>
|
||||
</q-item-label>
|
||||
<q-item-label>
|
||||
<q-btn color="negative" :label="$t('friends.refuse_trust')"
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.SETTRUST, userStore.my.username, false, contact.username)"/>
|
||||
<q-btn
|
||||
color="negative"
|
||||
:label="$t('friends.refuse_trust')"
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.SETTRUST,
|
||||
userStore.my.username,
|
||||
false,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
/>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side v-else-if="visu === costanti.TRUSTED">
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list v-if="!userStore.IsMyFriendByUsername(contact.username)" style="min-width: 200px">
|
||||
<q-item clickable icon="fas fa-user-plus" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, userStore.my.username, true, contact.username)">
|
||||
<q-item-section>{{ $t('friends.ask_friend') }}</q-item-section>
|
||||
<q-list
|
||||
v-if="!userStore.IsMyFriendByUsername(contact.username)"
|
||||
style="min-width: 200px"
|
||||
>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-plus"
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.REQFRIEND,
|
||||
userStore.my.username,
|
||||
true,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('friends.ask_friend')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list style="min-width: 200px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.SETTRUST, userStore.my.username, false, contact.username)">
|
||||
<q-item-section>{{ $t('friends.reject_trust') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.SETTRUST,
|
||||
userStore.my.username,
|
||||
false,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('friends.reject_trust')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
@@ -244,38 +539,104 @@
|
||||
</q-item-section>
|
||||
<q-item-section side v-else-if="visu === costanti.FIND_PEOPLE">
|
||||
<q-item-label>
|
||||
|
||||
<q-btn v-if="contact.username !== userStore.my.username" rounded
|
||||
:icon="userStore.IsMyFriendByUsername(contact.username) ? `fas fa-ellipsis-h` : `fas fa-user`">
|
||||
<q-btn
|
||||
v-if="contact.username !== userStore.my.username"
|
||||
rounded
|
||||
:icon="
|
||||
userStore.IsMyFriendByUsername(contact.username)
|
||||
? `fas fa-ellipsis-h`
|
||||
: `fas fa-user`
|
||||
"
|
||||
>
|
||||
<q-menu>
|
||||
<q-list style="min-width: 200px">
|
||||
<q-item v-if="(!userStore.IsMyFriendByUsername(contact.username) && !userStore.IsAskedFriendByUsername(contact.username))"
|
||||
clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, userStore.my.username, true, contact.username)">
|
||||
<q-item
|
||||
v-if="
|
||||
!userStore.IsMyFriendByUsername(contact.username) &&
|
||||
!userStore.IsAskedFriendByUsername(contact.username)
|
||||
"
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.REQFRIEND,
|
||||
userStore.my.username,
|
||||
true,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="fas fa-user-plus"/>
|
||||
<q-icon color="positive" name="fas fa-user-plus" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('friends.ask_friend') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('friends.ask_friend')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-else-if="(!userStore.IsMyFriendByUsername(contact.username) && userStore.IsAskedFriendByUsername(contact.username))"
|
||||
clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, userStore.my.username, false, contact.username)">
|
||||
<q-item
|
||||
v-else-if="
|
||||
!userStore.IsMyFriendByUsername(contact.username) &&
|
||||
userStore.IsAskedFriendByUsername(contact.username)
|
||||
"
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.REQFRIEND,
|
||||
userStore.my.username,
|
||||
false,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus"/>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('friends.cancel_ask_friend') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('friends.cancel_ask_friend')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-else-if="userStore.IsMyFriendByUsername(contact.username)" style="min-width: 200px"
|
||||
clickable v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS, userStore.my.username, '', contact.username)">
|
||||
<q-item
|
||||
v-else-if="userStore.IsMyFriendByUsername(contact.username)"
|
||||
style="min-width: 200px"
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.REMOVE_FROM_MYFRIENDS,
|
||||
userStore.my.username,
|
||||
'',
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-user-minus"/>
|
||||
<q-icon color="negative" name="fas fa-user-minus" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('friends.remove_from_myfriends')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
<q-item clickable v-close-popup @click="tools.reportUser($q, userStore.my.username, contact.username)">
|
||||
<q-item
|
||||
clickable
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.reportUser(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-flag"/>
|
||||
<q-icon color="negative" name="fas fa-flag" />
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('friends.report_user') }}</q-item-section>
|
||||
<q-item-section>{{
|
||||
$t('friends.report_user')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
@@ -287,9 +648,23 @@
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list style="min-width: 200px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.SETTRUST, userStore.my.username, true, contact.username)">
|
||||
<q-item-section>{{ $t('friends.accept_trust') }}</q-item-section>
|
||||
<q-item
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
v-close-popup
|
||||
@click="
|
||||
setCmd(
|
||||
$q,
|
||||
shared_consts.FRIENDSCMD.SETTRUST,
|
||||
userStore.my.username,
|
||||
true,
|
||||
contact.username
|
||||
)
|
||||
"
|
||||
>
|
||||
<q-item-section>{{
|
||||
$t('friends.accept_trust')
|
||||
}}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
|
||||
@@ -7,17 +7,17 @@
|
||||
@show="qtyRef ? qtyRef.focus() : ''"
|
||||
>
|
||||
<q-card class="dialog_card">
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar-title>
|
||||
<q-bar class="bg-primary text-white">
|
||||
{{ $t('circuit.sendcoins') }}
|
||||
</q-toolbar-title>
|
||||
<q-space />
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
</q-toolbar>
|
||||
<q-card-section class="q-pa-xs inset-shadow">
|
||||
</q-bar>
|
||||
<q-card-section class="q-px-xs inset-shadow">
|
||||
<q-select
|
||||
v-if="!circuitname"
|
||||
:behavior="$q.platform.is.ios === true ? 'dialog' : 'menu'"
|
||||
rounded
|
||||
dense
|
||||
outlined
|
||||
v-model="circuitsel"
|
||||
:options="bothcircuits"
|
||||
|
||||
0
src/components/CSendRISTo/CSendRISTo.scss
Executable file
0
src/components/CSendRISTo/CSendRISTo.scss
Executable file
87
src/components/CSendRISTo/CSendRISTo.ts
Executable file
87
src/components/CSendRISTo/CSendRISTo.ts
Executable file
@@ -0,0 +1,87 @@
|
||||
import { computed, defineComponent, PropType, ref } from 'vue'
|
||||
|
||||
import { ICalcStat, IOperators } from '../../model'
|
||||
import { useUserStore } from '../../store/UserStore'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useGlobalStore } from '../../store/globalStore'
|
||||
import { useI18n } from '../../boot/i18n'
|
||||
|
||||
import { shared_consts } from '@src/common/shared_vuejs'
|
||||
import { costanti, IMainCard } from '@store/Modules/costanti'
|
||||
|
||||
import { CMyUser } from '../CMyUser'
|
||||
import { CMyGroup } from '../CMyGroup'
|
||||
import { tools } from '@store/Modules/tools'
|
||||
import { useQuasar } from 'quasar'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CSendRISTo',
|
||||
props: {},
|
||||
components: { CMyUser, CMyGroup },
|
||||
setup(props) {
|
||||
|
||||
const userStore = useUserStore()
|
||||
const globalStore = useGlobalStore()
|
||||
const { t } = useI18n()
|
||||
const $q = useQuasar()
|
||||
const $router = useRouter()
|
||||
|
||||
const receiveRislist = computed(() => globalStore.datastat ? globalStore.datastat.receiveRislist : [])
|
||||
const receiveRislistgroup = computed(() => globalStore.datastat ? globalStore.datastat.receiveRislistgroup : [])
|
||||
|
||||
const usersList = ref(<any>{ show: false, title: '', list: [], listgroup: [] })
|
||||
|
||||
const tipoConto = ref(costanti.AccountType.USER)
|
||||
const loading = ref(false)
|
||||
|
||||
const arrTypesAccounts = ref(<any>[
|
||||
{
|
||||
label: t('circuit.user'),
|
||||
value: costanti.AccountType.USER,
|
||||
},
|
||||
{
|
||||
label: t('circuit.conticollettivi'),
|
||||
value: costanti.AccountType.COLLECTIVE_ACCOUNT,
|
||||
}
|
||||
])
|
||||
|
||||
function sendCoinsToClick() {
|
||||
if ((receiveRislist.value && receiveRislist.value.length > 0 || (receiveRislistgroup.value && receiveRislistgroup.value.length > 0))) {
|
||||
usersList.value.show = true;
|
||||
usersList.value.title = 'Lista Utenti Riceventi';
|
||||
usersList.value.list = receiveRislist.value;
|
||||
usersList.value.listgroup = receiveRislistgroup.value;
|
||||
} else {
|
||||
$router.push(tools.updateLink('/circuits'))
|
||||
}
|
||||
}
|
||||
|
||||
async function updateUserListRIS() {
|
||||
const userStore = useUserStore()
|
||||
|
||||
loading.value = true
|
||||
|
||||
await globalStore.getStatSite()
|
||||
|
||||
usersList.value.list = globalStore.datastat!.receiveRislist
|
||||
usersList.value.listgroup = globalStore.datastat!.receiveRislistgroup
|
||||
|
||||
loading.value = false
|
||||
}
|
||||
|
||||
return {
|
||||
userStore,
|
||||
tools,
|
||||
costanti,
|
||||
shared_consts,
|
||||
usersList,
|
||||
receiveRislist,
|
||||
receiveRislistgroup,
|
||||
sendCoinsToClick,
|
||||
arrTypesAccounts,
|
||||
tipoConto,
|
||||
updateUserListRIS,
|
||||
loading,
|
||||
}
|
||||
},
|
||||
})
|
||||
113
src/components/CSendRISTo/CSendRISTo.vue
Executable file
113
src/components/CSendRISTo/CSendRISTo.vue
Executable file
@@ -0,0 +1,113 @@
|
||||
<template>
|
||||
<div class="row text-center justify-evenly items-center">
|
||||
<div class="q-mb-sm">
|
||||
<q-btn
|
||||
icon="fas fa-upload"
|
||||
color="primary"
|
||||
size="md"
|
||||
rounded
|
||||
:label="$t('circuit.sendcoins_toso')"
|
||||
@click="sendCoinsToClick"
|
||||
>
|
||||
</q-btn>
|
||||
|
||||
<q-btn
|
||||
icon="fas fa-download"
|
||||
color="primary"
|
||||
size="md"
|
||||
rounded
|
||||
:label="$t('circuit.receive_coins')"
|
||||
@click="tools.receiveRis($q, $t)"
|
||||
>
|
||||
</q-btn>
|
||||
</div>
|
||||
</div>
|
||||
<q-dialog v-model="usersList.show">
|
||||
<q-card class="dialog_card">
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar-title>
|
||||
{{ usersList.title }}
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
</q-toolbar>
|
||||
|
||||
<q-card-section class="inset-shadow">
|
||||
<div>{{ $t('circuit.lista_ricev_title') }}</div>
|
||||
|
||||
<div class="row centeritems justify-evenly items-center">
|
||||
<q-btn
|
||||
icon="fas fa-wifi"
|
||||
rounded
|
||||
glossy
|
||||
color="primary"
|
||||
:label="$t('dialog.update')"
|
||||
:disable="loading"
|
||||
@click="updateUserListRIS()"
|
||||
>
|
||||
</q-btn>
|
||||
|
||||
<q-spinner-radio v-if="loading" class="q-ma-sm" color="brown" />
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<div class="row centeritems">
|
||||
<q-btn-toggle
|
||||
v-if="arrTypesAccounts.length > 0"
|
||||
v-model="tipoConto"
|
||||
class="my-custom-toggle"
|
||||
no-caps
|
||||
rounded
|
||||
unelevated
|
||||
toggle-color="primary"
|
||||
color="white"
|
||||
text-color="primary"
|
||||
:options="arrTypesAccounts"
|
||||
/>
|
||||
|
||||
<div v-if="tipoConto === costanti.AccountType.USER">
|
||||
<div v-for="(rec, i) in usersList.list" :key="i">
|
||||
<CMyUser
|
||||
:mycontact="rec"
|
||||
:visu="costanti.FIND_PEOPLE"
|
||||
@setCmd="tools.setCmd"
|
||||
>
|
||||
</CMyUser>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-else-if="tipoConto === costanti.AccountType.COLLECTIVE_ACCOUNT"
|
||||
>
|
||||
|
||||
<div v-for="(grp, i) in usersList.listgroup" :key="i">
|
||||
<CMyGroup :mygrp="grp" :visu="costanti.USER_GROUPS" :noaut="true">
|
||||
</CMyGroup>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card-section>
|
||||
|
||||
<q-card-actions align="center">
|
||||
<q-btn
|
||||
rounded
|
||||
icon="close"
|
||||
v-close-popup
|
||||
:label="$t('dialog.close')"
|
||||
></q-btn>
|
||||
<q-btn
|
||||
rounded
|
||||
:label="$t('circuit.vaialcircuito')"
|
||||
color="primary"
|
||||
:to="tools.updateLink('/circuits')"
|
||||
>
|
||||
</q-btn>
|
||||
</q-card-actions>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CSendRISTo.ts">
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './CSendRISTo.scss';
|
||||
</style>
|
||||
1
src/components/CSendRISTo/index.ts
Executable file
1
src/components/CSendRISTo/index.ts
Executable file
@@ -0,0 +1 @@
|
||||
export {default as CSendRISTo} from './CSendRISTo.vue'
|
||||
@@ -22,7 +22,8 @@
|
||||
:extraparams="extraparams"
|
||||
:noaut="noaut"
|
||||
:hidetitleIfEmpty="true"
|
||||
:labelBtnAddExtra="`Aggiungi ` + title">
|
||||
:labelBtnAddExtra="`Aggiungi ` + title"
|
||||
:margin_right="30">
|
||||
|
||||
</CGridTableRec>
|
||||
</div>
|
||||
|
||||
@@ -64,6 +64,8 @@ export default defineComponent({
|
||||
lastssharedlink: [],
|
||||
diffusorilist: [],
|
||||
strettelist: [],
|
||||
receiveRislist: [],
|
||||
receiveRislistgroup: [],
|
||||
checkuser: { verified_email: false }
|
||||
})
|
||||
|
||||
|
||||
@@ -52,6 +52,11 @@ export default defineComponent({
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
header: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
emits: ['apri'],
|
||||
|
||||
@@ -1,21 +1,63 @@
|
||||
<template>
|
||||
<div>
|
||||
<q-header v-if="header && myvisible" elevated reveal>
|
||||
<q-banner
|
||||
inline-actions
|
||||
rounded dense
|
||||
:class="bgcolor+` cursor-pointer q-my-sm `+clcolor+ ` ` + myclass + ' ' + getclass()"
|
||||
style="text-align: center; "
|
||||
rounded
|
||||
dense
|
||||
:class="
|
||||
bgcolor +
|
||||
` cursor-pointer q-my-sm ` +
|
||||
clcolor +
|
||||
` ` +
|
||||
myclass +
|
||||
' ' +
|
||||
getclass()
|
||||
"
|
||||
style="text-align: center"
|
||||
@click="apri()"
|
||||
>
|
||||
<template v-slot:avatar>
|
||||
<q-icon v-if="canopen && icon" :name="icon" color="white"/>
|
||||
<q-icon v-if="canopen && icon" :name="icon" color="white" />
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<div class="cursor-pointer">
|
||||
<q-icon v-if="canopen" :name="iconopen()" color="white"/>
|
||||
<q-icon v-if="canopen" :name="iconopen()" color="white" />
|
||||
</div>
|
||||
</template>
|
||||
<span :class="`mybanner `+ myclasstext" :style="mystyle">{{ title }}</span>
|
||||
<span :class="`mybanner ` + myclasstext" :style="mystyle">{{
|
||||
title
|
||||
}}</span>
|
||||
</q-banner>
|
||||
</q-header>
|
||||
<q-banner
|
||||
v-else
|
||||
inline-actions
|
||||
rounded
|
||||
dense
|
||||
:class="
|
||||
bgcolor +
|
||||
` cursor-pointer q-my-sm ` +
|
||||
clcolor +
|
||||
` ` +
|
||||
myclass +
|
||||
' ' +
|
||||
getclass()
|
||||
"
|
||||
style="text-align: center"
|
||||
@click="apri()"
|
||||
>
|
||||
<template v-slot:avatar>
|
||||
<q-icon v-if="canopen && icon" :name="icon" color="white" />
|
||||
</template>
|
||||
<template v-slot:action>
|
||||
<div class="cursor-pointer">
|
||||
<q-icon v-if="canopen" :name="iconopen()" color="white" />
|
||||
</div>
|
||||
</template>
|
||||
<span :class="`mybanner ` + myclasstext" :style="mystyle">{{
|
||||
title
|
||||
}}</span>
|
||||
</q-banner>
|
||||
|
||||
<q-slide-transition>
|
||||
@@ -24,13 +66,15 @@
|
||||
<slot></slot>
|
||||
</div>
|
||||
<div
|
||||
v-if="imgpreview" class="text-center cursor-pointer clBorderSteps" style="opacity: 0.5;"
|
||||
@click="myvisible = !myvisible">
|
||||
v-if="imgpreview"
|
||||
class="text-center cursor-pointer clBorderSteps"
|
||||
style="opacity: 0.5"
|
||||
@click="myvisible = !myvisible"
|
||||
>
|
||||
<q-img :src="imgpreview" class="img"></q-img>
|
||||
</div>
|
||||
</div>
|
||||
</q-slide-transition>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
v-if="site.confpages.showViewCircuits"
|
||||
class="mylabfooter"
|
||||
:label="$t('tabdown.circuits')"
|
||||
to="/circuits"
|
||||
:to="tools.updateLink('/circuits')"
|
||||
icon="img: images/1ris_rosso_100.png"
|
||||
/>
|
||||
<q-route-tab
|
||||
|
||||
@@ -1,483 +1,144 @@
|
||||
<template>
|
||||
<q-page class="q-pa-md">
|
||||
<div v-if="toolsext.isLang('it')">
|
||||
<p class="text-subtitle1">Privacy Policy di {{url}}</p>
|
||||
<p class="text-subtitle1">Informativa sul trattamento dei dati personali ai sensi dell’art. 13 del
|
||||
Regolamento
|
||||
(UE) n. 2003 n.196</p>
|
||||
<p class="text-subtitle1">Privacy Policy di {{ url }}</p>
|
||||
<p class="text-subtitle1">
|
||||
Informativa sul trattamento dei dati personali.
|
||||
</p>
|
||||
|
||||
<p>Ai sensi dell’art. 13 del Regolamento (UE) n. 2003 n.196, anche denominato General Data Protection
|
||||
Regulation
|
||||
(di seguito il “GDPR“), {{SiteName}} La informa che i Suoi dati personali (di seguito i “Dati“),
|
||||
saranno trattati nel rispetto di quanto previsto dal GDPR e di ogni normativa applicabile in riferimento
|
||||
al trattamento dei dati personali in conformità all’informativa che segue.</p>
|
||||
<p>I dati personali verranno utilizzati solo ai fini dell'utilizzo della piattaforma.
|
||||
Crediamo in un mondo Libero e fiducioso.
|
||||
Le uniche "regole" a cui sottostiamo sono quelle Universali e Naturali dove chi fa del male al prossimo,
|
||||
gli ritornerà indietro tante volte,
|
||||
esattamente come chi fa del bene al prossimo,
|
||||
verrà ricompensato in qualche modo e in qualche tempo.
|
||||
</p>
|
||||
|
||||
<p><span class="text-subtitle2">1. Titolare del trattamento</span><br/>
|
||||
{{ownerDataName}}</p>
|
||||
<p><span class="boldhigh">Responsabile trattamento e protezione dati:</span><br/>
|
||||
{{managerData}}
|
||||
<p>
|
||||
<span class="text-subtitle2">1. Titolare del trattamento</span><br />
|
||||
{{ ownerDataName }}
|
||||
</p>
|
||||
<p>
|
||||
<span class="boldhigh">Responsabile trattamento e protezione dati:</span
|
||||
><br />
|
||||
{{ managerData }}
|
||||
</p>
|
||||
|
||||
<p class="text-subtitle2">2. Categorie di Dati</p>
|
||||
|
||||
<p>I Dati trattati dal Titolare includono: {{includeData}}.</p>
|
||||
<p>I Dati trattati dal Titolare includono: {{ includeData }}.</p>
|
||||
|
||||
<p class="text-subtitle2">3. Finalità e base giuridica del trattamento. Legittimo interesse.</p>
|
||||
<p class="text-subtitle2">3. Modalità del trattamento.</p>
|
||||
|
||||
<p>I Dati saranno trattati per l’adempimento di finalità informative, commerciali e amministrative ad
|
||||
obblighi di legge, ai sensi dell’art. 6, comma 1, lettera b) e c) del GDPR, nonché il perseguimento del
|
||||
legittimo
|
||||
interesse del Titolare, all’art. 6, comma 1, lettera f del GDPR, in riferimento a:
|
||||
rispetto di procedure amministrative interne e adempimento di obblighi di legge o regolamenti vigenti in
|
||||
{{country}};
|
||||
l’invio di comunicazioni di natura informativa, commerciale e promozionale.</p>
|
||||
<p>
|
||||
I Suoi Dati sono raccolti e registrati in modo lecito e secondo
|
||||
correttezza per le finalità della piattaforma e sono trattati anche con
|
||||
l’ausilio di strumenti elettronici, anche mediante
|
||||
l’inserimento e l’organizzazione in database e, comunque, in modo
|
||||
tale da garantire la sicurezza e la riservatezza dei Dati stessi.
|
||||
</p>
|
||||
|
||||
<p>In ogni caso, il trattamento dei Suoi Dati effettuato sulla base del proprio legittimo interesse del
|
||||
Titolare avviene, oltre che nel rispetto di quanto previsto all’art. 6, comma 1, lettera f del GDPR, anche in
|
||||
conformità
|
||||
a quanto disposto al considerando n. 47 e all’Opinion n. 6/2014 Article 29 Data Protection Working
|
||||
Party, par. III.3.1.</p>
|
||||
<p class="text-subtitle2">4. Destinatari o categorie di destinatari.</p>
|
||||
|
||||
<p class="text-subtitle2">4. Modalità del trattamento.</p>
|
||||
<p>
|
||||
I Dati potranno essere resi accessibili, portati a conoscenza di o
|
||||
comunicati ai seguenti soggetti, i quali saranno nominati dal Titolare,
|
||||
a seconda dei casi, quali responsabili – la cui lista è disponibile
|
||||
presso la sede del Titolare – o incaricati: - collaboratori a
|
||||
qualsivoglia titolo del Titolare; - soggetti pubblici o privati, persone
|
||||
fisiche o giuridiche, di cui il Titolare si avvalga per lo svolgimento
|
||||
delle attività strumentali al raggiungimento della finalità di cui sopra
|
||||
o a cui il Titolare sia tenuto a comunicare i Dati SOLO IN CASO DI VERA
|
||||
NECESSITA', solo per difendere un'eventuale torto subìto, purchè non
|
||||
vada contro la libertà dell'individuo e segua la regola del BUON SENSO.
|
||||
</p>
|
||||
|
||||
<p>I Suoi Dati sono raccolti e registrati in modo lecito e secondo correttezza per le finalità sopra
|
||||
indicate e sono trattati anche con l’ausilio di strumenti elettronici e automatizzati, anche mediante
|
||||
l’inserimento e
|
||||
l’organizzazione in banche dati, in conformità a quanto disposto dal GDPR in materia di misure di
|
||||
sicurezza, e, comunque, in modo tale da garantire la sicurezza e la riservatezza dei Dati stessi.</p>
|
||||
<p>In ogni caso, i Dati NON SARANNO DIFFUSI.</p>
|
||||
|
||||
<p class="text-subtitle2">5. Destinatari o categorie di destinatari.</p>
|
||||
<p class="text-subtitle2">5. Luogo</p>
|
||||
|
||||
<p>I Dati potranno essere resi accessibili, portati a conoscenza di o comunicati ai seguenti soggetti, i
|
||||
quali saranno nominati dal Titolare, a seconda dei casi, quali responsabili – la cui lista è disponibile
|
||||
presso la sede del Titolare – o incaricati:
|
||||
dipendenti e/o collaboratori a qualsivoglia titolo del Titolare;
|
||||
soggetti pubblici o privati, persone fisiche o giuridiche, di cui il Titolare si avvalga per lo
|
||||
svolgimento delle attività strumentali al raggiungimento della finalità di cui sopra o a cui il Titolare sia
|
||||
tenuto a
|
||||
comunicare i Dati in forza di obblighi legali o contrattuali.</p>
|
||||
<p>
|
||||
I Dati sono trattati presso le sedi operative del Titolare ed in ogni
|
||||
altro luogo in cui le parti coinvolte nel trattamento siano localizzate.
|
||||
Per ulteriori informazioni, contattare il Titolare agli estremi
|
||||
riportati in apertura.
|
||||
</p>
|
||||
|
||||
<p>In ogni caso, i Dati non saranno diffusi.</p>
|
||||
<p class="text-subtitle2">6. Periodo di conservazione.</p>
|
||||
|
||||
<p class="text-subtitle2">6. Luogo</p>
|
||||
<p>
|
||||
I Dati saranno conservati per un periodo di tempo non superiore a 10
|
||||
(dieci) anni per finalità amministrative e, comunque, per il tempo
|
||||
strettamente necessario al perseguimento dell’interesse legittimo del
|
||||
Titolare. Salvo che l'utente, in ogni momento, può decidere di
|
||||
cancellare la propria utenza e quindi tutti i dati al suo interno.
|
||||
</p>
|
||||
|
||||
<p>I Dati sono trattati presso le sedi operative del Titolare ed in ogni altro luogo in cui le parti
|
||||
coinvolte nel trattamento siano localizzate. Per ulteriori informazioni, contattare il Titolare agli estremi
|
||||
riportati in
|
||||
apertura.</p>
|
||||
<p class="text-subtitle2">
|
||||
7. Diritti di accesso, cancellazione, limitazione e portabilità.
|
||||
</p>
|
||||
|
||||
<p class="text-subtitle2">7. Periodo di conservazione.</p>
|
||||
<p>
|
||||
Il Titolare La informa che Le sono riconosciuti i relativi diritti.
|
||||
A titolo esemplificativo, inviando specifica
|
||||
richiesta all’indirizzo email {{ owneremail }}, Lei potrà: ottenere la
|
||||
conferma che sia o meno in corso un trattamento di dati personali che La
|
||||
riguardano; qualora un trattamento sia in corso, ottenere l’accesso ai
|
||||
dati e alle informazioni relative al trattamento, nonché richiedere una
|
||||
copia dei dati stessi; ottenere la rettifica dei dati inesatti e
|
||||
l’integrazione dei dati personali incompleti; ottenere, la cancellazione
|
||||
dei Dati che La riguardano; ottenere la limitazione del trattamento dei
|
||||
Dati che La riguardano; ricevere i Dati che La riguardano in un formato
|
||||
strutturato, di uso comune e leggibile da dispositivo automatico e
|
||||
richiedere la loro trasmissione ad un altro titolare, se tecnicamente
|
||||
fattibile.
|
||||
</p>
|
||||
|
||||
<p>I Dati saranno conservati per un periodo di tempo non superiore a 10 (dieci) anni per finalità
|
||||
amministrative e, comunque, per il tempo strettamente necessario al perseguimento dell’interesse legittimo del
|
||||
Titolare.</p>
|
||||
<p class="text-subtitle2">8. Diritto di opposizione.</p>
|
||||
|
||||
<p class="text-subtitle2">8. Diritti di accesso, cancellazione, limitazione e portabilità.</p>
|
||||
|
||||
<p>Il Titolare La informa che Le sono riconosciuti i diritti di cui agli artt. da 15 a 20 del GDPR. A titolo
|
||||
esemplificativo, inviando specifica richiesta all’indirizzo email {{owneremail}}, Lei potrà:
|
||||
ottenere la conferma che sia o meno in corso un trattamento di dati personali che La riguardano;
|
||||
qualora un trattamento sia in corso, ottenere l’accesso ai dati e alle informazioni relative al
|
||||
trattamento, nonché richiedere una copia dei dati stessi;
|
||||
ottenere la rettifica dei dati inesatti e l’integrazione dei dati personali incompleti;
|
||||
ottenere, qualora sussista una delle condizioni previste dall’art. 17 del GDPR, la cancellazione dei
|
||||
Dati che La riguardano; ottenere, nei casi previsti dall’art. 18 del GDPR, la limitazione del trattamento dei
|
||||
Dati che La
|
||||
riguardano; ricevere i Dati che La riguardano in un formato strutturato, di uso comune e leggibile da
|
||||
dispositivo
|
||||
automatico e richiedere la loro trasmissione ad un altro titolare, se tecnicamente fattibile.</p>
|
||||
|
||||
<p class="text-subtitle2">9. Diritto di opposizione.</p>
|
||||
|
||||
<p>Ai sensi dell’art. 21 del GDPR, Lei godrà altresì del diritto di opporsi in qualsiasi momento al
|
||||
trattamento dei propri Dati effettuato per il perseguimento del legittimo interesse del Titolare scrivendo
|
||||
all’indirizzo email
|
||||
{{owneremail}}. In caso di opposizione, i Dati non saranno più oggetto di trattamento, sempre che non
|
||||
sussistano motivi legittimi per procedere al trattamento che prevalgono sugli interessi, sui diritti e sulle
|
||||
libertà degli interessati, oppure per l’accertamento, l’esercizio o la difesa di un diritto in sede
|
||||
giudiziaria.</p>
|
||||
<p>
|
||||
Lei godrà altresì del diritto di opporsi in qualsiasi momento al
|
||||
trattamento dei propri Dati effettuato per il perseguimento del
|
||||
legittimo interesse del Titolare scrivendo all’indirizzo email
|
||||
{{ owneremail }}. In caso di opposizione, i Dati non saranno più oggetto
|
||||
di trattamento, sempre che non sussistano motivi legittimi per procedere
|
||||
al trattamento che prevalgono sugli interessi, sui diritti e sulle
|
||||
libertà degli interessati, oppure per l’accertamento, l’esercizio o la
|
||||
difesa di un diritto in sede giudiziaria.
|
||||
</p>
|
||||
|
||||
<p class="text-subtitle2">Responsabile della protezione dei dati</p>
|
||||
<p>Il titolare ha provveduto a nominare il responsabile della protezione dei dati che è contattabile alla
|
||||
seguente casella di posta elettronica {{owneremail}}.</p>
|
||||
|
||||
<p class="text-subtitle2">10. Diritto di proporre reclamo al Garante.</p>
|
||||
|
||||
<p>Il Titolare La informa altresì che potrà proporre reclamo al Garante per la Protezione dei Dati Personali nel
|
||||
caso in cui ritenga che siano stati violati i diritti di cui è titolare ai sensi del GDPR o di qualsiasi altra
|
||||
normativa applicabile, secondo le modalità indicate sul sito internet del Garante per la Protezione dei Dati
|
||||
Personali accessibile all’indirizzo: <a href="http://www.garanteprivacy.it" target="_blank">www.garanteprivacy.it</a>.
|
||||
<p>
|
||||
Il titolare ha provveduto a nominare il responsabile della protezione
|
||||
dei dati che è contattabile alla seguente casella di posta elettronica
|
||||
{{ owneremail }}.
|
||||
</p>
|
||||
|
||||
<p>Ultimo aggiornamento: {{lastdataupdate}}</p>
|
||||
<p class="text-subtitle2">9. Diritto di proporre reclamo al Garante.</p>
|
||||
|
||||
<p>
|
||||
Il Titolare La informa altresì che potrà proporre reclamo al Garante per
|
||||
la Protezione dei Dati Personali nel caso in cui ritenga che siano stati
|
||||
violati i diritti di cui è titolare o di qualsiasi altra normativa
|
||||
applicabile.
|
||||
</p>
|
||||
|
||||
<p class="text-subtitle2">10. Suggerimenti</p>
|
||||
<p>Il Buon Senso ci suggerisce che se riteniamo alcuni dati personali troppo "sensibili",
|
||||
è opportuno non inserirli affatto all'interno di qualsiasi sito web o piattaforma.
|
||||
Potete ad esempio non inserire il vostro Nome e Cognome, visto che sono facoltativi, o metterli fittizzi.
|
||||
Quanto una persona è conosciuta dalla rete potremmo in qualche modo "misurarla" in base a quante "Strette di Mano" ha ottenuto dalle persone.
|
||||
</p>
|
||||
|
||||
<p>Ultimo aggiornamento: {{ lastdataupdate }}</p>
|
||||
</div>
|
||||
<div v-else-if="toolsext.isLang('fr')">
|
||||
<p class="text-subtitle1">Politique de confidentialité de {{url}}</p>
|
||||
<p class="text-subtitle1">Information sur le traitement des données personnelles conformément à l'article 13 du
|
||||
Code civil italien Règlement (UE) n° 2003 n.196.</p>
|
||||
|
||||
<p>En vertu de l'article 13 du règlement (UE) n° 2003 n.196, également appelé protection générale des données
|
||||
Règlement
|
||||
(ci-après le "GDPR"), {{SiteName}}} Nous vous informons que vos données personnelles (ci-après dénommées les
|
||||
"Données"),
|
||||
sera traitée conformément aux dispositions du GDPR et de toute législation applicable en matière de
|
||||
au traitement des données à caractère personnel conformément aux informations ci-dessous.</p>
|
||||
|
||||
<p><span class="text-subtitle2">1. Contrôleur de données</span><br/>
|
||||
{{ownerDataName}}</p>
|
||||
<p><span class="boldhigh">Responsable du traitement et de la protection des données:</span><br/>
|
||||
{{managerData}}
|
||||
</p>
|
||||
|
||||
<p class="text-subtitle2">2. Catégories de données</p>
|
||||
|
||||
<p>Les données traitées par le contrôleur des données comprennent: {{includeData}}.</p>.
|
||||
|
||||
<p class="text-subtitle2">3. Objectif et base juridique du traitement. Intérêt légitime.</p>
|
||||
|
||||
<p>Les données seront traitées à des fins informatives, commerciales et administratives pour
|
||||
obligations légales en vertu de l'article 6, paragraphe 1, points b) et c) du GDPR, ainsi que la poursuite de la
|
||||
l'intérêt du titulaire, à l'article 6, paragraphe 1, lettre f du GDPR, en référence à
|
||||
le respect des procédures administratives internes et l'exécution des obligations légales ou des réglementations
|
||||
en vigueur dans {{ country }}
|
||||
l'envoi de communications à caractère informatif, commercial et promotionnel.</p>
|
||||
|
||||
<p> En tout état de cause, le traitement de vos données effectué sur la base de votre intérêt légitime à
|
||||
En plus des dispositions de l'article 6, paragraphe 1, lettre f du GDPR, le propriétaire est également en
|
||||
conformité aux dispositions du considérant 47 et de l'avis n° 6/2014 Article 29 Protection des données
|
||||
Parti, par. III.3.1.</p>
|
||||
|
||||
<p class="text-subtitle2">4. Modalités de traitement.</p>
|
||||
|
||||
<p>Vos données sont collectées et enregistrées de manière légale et correcte pour les objectifs ci-dessus
|
||||
indiquées et sont également traitées à l'aide d'outils électroniques et automatisés, notamment par l'insertion
|
||||
et la
|
||||
l'organisation en bases de données, conformément aux dispositions du GDPR sur les mesures de
|
||||
et, en tout état de cause, de manière à garantir la sécurité et la confidentialité des données elles-mêmes.</p>
|
||||
|
||||
<p class="text-subtitle2">5. Bénéficiaires ou catégories de bénéficiaires.</p>
|
||||
|
||||
<p>Les données peuvent être rendues accessibles, portées à la connaissance ou communiquées aux sujets suivants
|
||||
qui sera nommé par le propriétaire, selon le cas, comme responsable - dont la liste est disponible
|
||||
au siège social du propriétaire - ou des personnes responsables :
|
||||
les employés et/ou collaborateurs à quelque titre que ce soit du propriétaire ;
|
||||
des sujets publics ou privés, personnes physiques ou morales, dont le titulaire se prévaut de la
|
||||
l'exercice des activités qui contribuent à la réalisation de l'objectif susmentionné ou auxquelles le
|
||||
propriétaire est tenu
|
||||
communiquer les données en vertu d'obligations légales ou contractuelles.</p>
|
||||
|
||||
<p> En tout état de cause, les données ne seront pas diffusées.</p>
|
||||
|
||||
<p class="text-subtitle2">6. Lieu</p>
|
||||
|
||||
<p>Les données sont traitées dans les bureaux du propriétaire et dans tout autre lieu où les parties
|
||||
impliqués dans le traitement sont localisés. Pour de plus amples informations, veuillez contacter le responsable
|
||||
du traitement aux coordonnées indiquées dans
|
||||
ouverture.</p>
|
||||
|
||||
<p class="text-subtitle2">7. Période de conservation.</p>
|
||||
|
||||
<p>Les données seront conservées pendant une période n'excédant pas 10 (dix) ans aux fins suivantes
|
||||
administratif et, en tout état de cause, pendant le temps strictement nécessaire à la poursuite de l'intérêt
|
||||
légitime de la Propriétaire.</p>
|
||||
|
||||
<p class="text-subtitle2">8. Droits d'accès, suppression, restriction et portabilité.</p>
|
||||
|
||||
<p>Le propriétaire vous informe que vous bénéficiez des droits énoncés aux articles 15 à 20 du GDPR. Par le biais de
|
||||
Par exemple, en envoyant une demande spécifique à l'adresse électronique {{owneremail}}, vous pouvez :
|
||||
obtenir la confirmation que des données à caractère personnel vous concernant sont traitées ou non ;
|
||||
si un traitement est en cours, obtenir l'accès aux données et informations relatives à la
|
||||
traitement et demander une copie des données ;
|
||||
obtenir la rectification des données inexactes et l'intégration des données personnelles incomplètes ;
|
||||
pour obtenir, si l'une des conditions prévues à l'article 17 du RDPI est remplie, l'annulation de la
|
||||
Données vous concernant ; pour obtenir, dans les cas prévus par l'art. 18 du GDPR, la limitation du traitement de vos données personnelles.
|
||||
Les données que La
|
||||
à l'égard ; recevoir les données vous concernant dans un format structuré, d'usage courant et lisible par
|
||||
dispositif
|
||||
automatique et demander leur transmission à un autre propriétaire, si cela est techniquement possible.</p>
|
||||
|
||||
<p class="text-subtitle2">9. Droit d'opposition.</p>
|
||||
|
||||
<p> Conformément à l'article 21 du GDPR, vous avez également le droit de vous opposer à tout moment à la
|
||||
le traitement de ses propres données effectué dans la poursuite de l'intérêt légitime du responsable du traitement, en écrivant
|
||||
à l'adresse électronique
|
||||
{{owneremail}} En cas d'opposition, les données ne seront plus traitées, à condition que vous ne
|
||||
il existe des motifs légitimes de traitement, qui l'emportent sur les intérêts, les droits et les intérêts de la personne concernée.
|
||||
la liberté des personnes concernées, ou pour l'établissement, l'exercice ou la défense d'un droit au siège
|
||||
judiciaire.</p>
|
||||
|
||||
<p class="text-subtitle2">Agent de protection des données</p>.
|
||||
<p>Le responsable du traitement des données a désigné un délégué à la protection des données qui peut être contacté au
|
||||
boîte aux lettres suivante {{owneremail}}.</p>
|
||||
|
||||
<p class="text-subtitle2">10. Droit de déposer une plainte auprès du garant.</p>
|
||||
|
||||
<p>Le propriétaire vous informe également que vous pouvez déposer une plainte auprès du Garant pour la protection des données à caractère personnel dans le
|
||||
si elle considère que ses droits en vertu de la GDPR ou de toute autre loi ont été violés
|
||||
la législation applicable, selon les modalités indiquées sur le site web du contrôleur de la protection des données
|
||||
Personnel accessible à l'adresse : <a href="http://www.garanteprivacy.it" target="_blank">www.garanteprivacy.it</a>.
|
||||
</p>
|
||||
|
||||
<p>Dernière mise à jour : {{lastdataupdate}}</p>
|
||||
|
||||
</div>
|
||||
<div v-else-if="toolsext.isLang('es')">
|
||||
<p class="text-subtitle1">Política de privacidad de {{url}}</p>
|
||||
<p class="text-subtitle1">Información sobre el procesamiento de datos personales de conformidad con el art.
|
||||
13 del Reglamento (UE) n. 2003 n.196</p>
|
||||
|
||||
<p>Según el art. 13 del Reglamento (UE) n. 2003 n.196, también llamado Reglamento general de protección de
|
||||
datos (de seguido del "RGPD"), {{SiteName}} le informa que sus datos personales (en adelante, los
|
||||
"Datos"), será tratado de conformidad con las disposiciones del GDPR y cualquier legislación
|
||||
aplicable con referencia a procesamiento de datos personales de acuerdo con la siguiente
|
||||
información.</p>
|
||||
|
||||
<p><span class="text-subtitle2">1. Controlador de datos</span><br/>
|
||||
{{ownerDataName}}</p>
|
||||
<p><span class="boldhigh">Gerente de procesamiento y protección de datos:</span><br/>
|
||||
{{managerData}}
|
||||
</p>
|
||||
|
||||
|
||||
<p>El administrador de protección de datos puede ser contactado por correo electrónico:
|
||||
{{owneremail}} para obtener información sobre el procesamiento de los datos comunicados o recopilados en
|
||||
el transcurso de
|
||||
navegación en este sitio, de conformidad con la legislación vigente sobre privacidad.</p>
|
||||
|
||||
<p class="text-subtitle2"> 2. Categorías de datos </p>
|
||||
|
||||
<p>Los datos procesados por el propietario incluyen: {{includeData}}. </p>
|
||||
|
||||
<p class="text-subtitle2"> 3. Finalidad y fundamento jurídico del procesamiento. Interés legítimo. </p>
|
||||
|
||||
<p>Los datos serán procesados para el cumplimiento de fines informativos, comerciales y
|
||||
administrativos.
|
||||
obligaciones de ley, de conformidad con el art. 6, párrafo 1, letra b) yc) del GDPR, así
|
||||
como la búsqueda de lo legítimo interés
|
||||
del titular, en el art. 6, párrafo 1, letra f del RGPD, con referencia a:
|
||||
cumplimiento de procedimientos administrativos internos y cumplimiento de obligaciones
|
||||
legales o regulaciones vigentes en
|
||||
{{country}};
|
||||
envío de información, comunicaciones comerciales y promocionales. </p>
|
||||
|
||||
<p>En cualquier caso, el procesamiento de sus datos se basa en su interés legítimo
|
||||
titular se produce, así como en cumplimiento de lo dispuesto en el art. 6, párrafo 1, letra
|
||||
f del
|
||||
RGPD, también en conformidad a lo dispuesto en el considerando n. 47 y la opinión n. 6/2014 Artículo 29
|
||||
Protección de
|
||||
datos de trabajo partido, par. III.3.1. </p>
|
||||
|
||||
<p class="text-subtitle2"> 4. Métodos de procesamiento. </p>
|
||||
|
||||
<p>Sus datos se recopilan y registran de manera legal y correcta para los fines anteriores
|
||||
indicado y También se procesan con la ayuda de herramientas electrónicas y automatizadas,
|
||||
también a través de la inserción y la organización en bases de datos, de conformidad con las disposiciones
|
||||
del GDPR
|
||||
sobre medidas de seguridad y, sin embargo, de tal manera que garantice la seguridad y confidencialidad de
|
||||
los
|
||||
Datos. </p>
|
||||
|
||||
<p class="text-subtitle2"> 5. Destinatarios o categorías de destinatarios. </p>
|
||||
|
||||
<p>Los datos se pueden hacer accesibles, señalar o comunicar a los siguientes sujetos, i
|
||||
que
|
||||
serán designados por el controlador de datos, según sea el caso, como controladores de
|
||||
datos, cuya lista está disponible
|
||||
en el
|
||||
sede del propietario - o personas a cargo:
|
||||
empleados y / o colaboradores en cualquier capacidad del controlador de datos;
|
||||
sujetos públicos o privados, personas físicas o jurídicas, para las cuales el controlador de datos hace uso de
|
||||
progreso de actividades instrumentales para el logro de los propósitos antes mencionados o para las cuales se
|
||||
requiere el controlador de datos para comunicar los datos en virtud de obligaciones legales o contractuales. </p>
|
||||
|
||||
<p>En cualquier caso, los datos no serán revelados. </p>
|
||||
|
||||
<p class="text-subtitle2"> 6. Localización </p>
|
||||
|
||||
<p>Los datos se procesan en las oficinas operativas del controlador de datos y en cualquier otro lugar
|
||||
donde las partes involucrado en
|
||||
Los tratamientos son localizados. Para obtener más información, póngase en contacto con el propietario en los
|
||||
detalles anteriores. en apertura. </p>
|
||||
|
||||
<p class="text-subtitle2"> 7. Período de retención. </p>
|
||||
|
||||
<p>Los Datos se conservarán por un período de tiempo que no exceda los 10 (diez) años para fines
|
||||
administrativo y, sin embargo, por el tiempo estrictamente necesario para perseguir el interés legítimo del
|
||||
Propietario. </p>
|
||||
|
||||
<p class="text-subtitle2"> 8. Derechos de acceso, cancelación, limitación y portabilidad. </p>
|
||||
|
||||
<p>El propietario le informa que tiene derecho a los derechos establecidos en los artículos del
|
||||
15 al 20 del GDPR. En nombre de
|
||||
Por ejemplo, al enviar una solicitud específica a la dirección de correo electrónico
|
||||
{{owneremail}}, puede:
|
||||
obtener confirmación de que sus datos personales se están procesando o no;
|
||||
Si un tratamiento está en curso, obtenga acceso a los datos e información relacionados con
|
||||
tratamiento así como solicitar una copia de los datos;
|
||||
obtener la corrección de datos inexactos y la integración de datos personales incompletos;
|
||||
obtener, si alguna de las condiciones establecidas por el art. 17 del RGPD, la cancelación
|
||||
de datos que te concierne;
|
||||
obtener, en los casos previstos por el art. 18 del RGPD, la limitación del procesamiento de
|
||||
los Datos que te concierne;
|
||||
recibir los datos que le conciernen en un formato estructurado, comúnmente utilizado y
|
||||
legible por dispositivo automático
|
||||
y solicite su transmisión a otro propietario, si es técnicamente posible. </p>
|
||||
|
||||
<p class="text-subtitle2"> 9. Oposición a la derecha. </p>
|
||||
|
||||
<p>Según el art. 21 del RGPD, también disfrutará del derecho de objetar en cualquier momento
|
||||
procesamiento de datos propios llevado a cabo para la búsqueda del interés legítimo del propietario
|
||||
escribiendo a la dirección
|
||||
correo electrónico {{owneremail}}. En caso de oposición, los datos ya no se procesarán, a menos que se
|
||||
Hay razones legítimas para proceder con el procesamiento que prevalecen sobre los intereses, derechos y
|
||||
sobre las libertades de las partes interesadas, o para la determinación, el ejercicio o la defensa de un
|
||||
derecho en
|
||||
sede judicial. </p>
|
||||
|
||||
<p class="text-subtitle2"> Oficial de protección de datos </p>
|
||||
<p>El propietario ha designado al responsable de protección de datos con el que puede contactar
|
||||
siguiente dirección de correo electrónico {{owneremail}}. </p>
|
||||
|
||||
<p class="text-subtitle2"> 10. Derecho a presentar una queja ante el Garante. </p>
|
||||
|
||||
<p>El controlador de datos también le informa que puede presentar una queja ante el garante para
|
||||
la protección de datos personales en caso de que crea que los derechos que posee bajo el GDPR o de han sido
|
||||
violados cualquier otra legislación aplicable, de la manera indicada en el sitio web del Garante para
|
||||
Protección de datos personales accesibles en la dirección: <a
|
||||
href="https://www.garante.es/politica-de-privacidad/" target="_blank">https://www.garante.es/politica-de-privacidad/</a>.
|
||||
</p>
|
||||
|
||||
<p>Última actualización: {{lastdataupdate}} </p>
|
||||
</div>
|
||||
<div v-else>
|
||||
<p class="text-subtitle1">Privacy Policy {{url}}</p>
|
||||
<p class="text-subtitle1">Information on the processing of personal data in accordance with art. 13 of the
|
||||
Regulation
|
||||
(EU) No 2003 n.196</p>
|
||||
|
||||
<p>In accordance with art. 13 of Regulation (EU) no. 2003 n.196, also called General Data Protection
|
||||
Regulation
|
||||
(hereinafter the "GDPR"), {{SiteName}}} informs you that your personal data (hereinafter the "Data"),
|
||||
will be treated in compliance with the provisions of the GDPR and any applicable legislation in reference to
|
||||
to the processing of personal data in accordance with the information below.</p>
|
||||
|
||||
<p><span class="text-subtitle2">1. Data Controller</span><br/>
|
||||
{{ownerDataName}}</p>
|
||||
<p><span class="boldhigh">Data processing and data protection officer:</span><br/>
|
||||
{{managerDate}}
|
||||
</p>
|
||||
|
||||
<p class="text-subtitle2">2. Data Categories</p>
|
||||
|
||||
<p>Data processed by the Data Controller includes: {{includeData}}.</p>.
|
||||
|
||||
<p class="text-subtitle2">3. Purpose and legal basis of the processing. Legitimate interest.</p>
|
||||
|
||||
<p>Data will be processed for the fulfilment of informative, commercial and administrative purposes to
|
||||
legal obligations, pursuant to Article 6, paragraph 1, letters b) and c) of the GDPR, as well as the pursuit of the
|
||||
legitimate
|
||||
interest of the Holder, in art. 6, paragraph 1, letter f of the GDPR, with reference to:
|
||||
compliance with internal administrative procedures and fulfillment of legal obligations or regulations in force in
|
||||
{{country}}
|
||||
the sending of communications of an informative, commercial and promotional nature.</p>
|
||||
|
||||
<p>In any case, the processing of your Data carried out on the basis of your legitimate interest of
|
||||
In addition to the provisions of art. 6, paragraph 1, letter f of the GDPR, the Owner is also in
|
||||
compliance
|
||||
to the provisions of recital 47 and Opinion No 6/2014 Article 29 Data Protection Working
|
||||
Party, par. III.3.1.</p>
|
||||
|
||||
<p class="text-subtitle2">4. Treatment modalities.</p>
|
||||
|
||||
<p>Your Data are collected and recorded in a lawful and correct manner for the above purposes
|
||||
indicated and are also processed with the aid of electronic and automated tools, including by means of
|
||||
insertion and
|
||||
the organisation into databases, in accordance with the provisions of the GDPR on measures of
|
||||
security, and, in any case, in such a way as to guarantee the security and confidentiality of the Data itself.</p>
|
||||
|
||||
<p class="text-subtitle2">5. Recipients or categories of recipients.</p>
|
||||
|
||||
<p>Data may be made accessible, brought to the knowledge of or communicated to the following subjects, the
|
||||
who will be appointed by the Owner, as the case may be, as responsible - whose list is available
|
||||
at the registered office of the Owner - or persons in charge:
|
||||
employees and/or collaborators in any capacity of the Owner;
|
||||
public or private subjects, natural or legal persons, of which the Holder avails himself for the
|
||||
carrying out the activities instrumental to the achievement of the above mentioned purpose or to which the Owner is
|
||||
bound to
|
||||
communicate the Data by virtue of legal or contractual obligations.</p>
|
||||
|
||||
<p>In any case, the Data will not be disseminated.</p>
|
||||
|
||||
<p class="text-subtitle2">6. Place</p>
|
||||
|
||||
<p>Data are processed at the Owner's operating offices and in any other place where the parties
|
||||
involved in the treatment are localized. For further information, please contact the Data Controller at the following contact details
|
||||
reported in
|
||||
opening.</p>
|
||||
|
||||
<p class="text-subtitle2">7. Conservation period.</p>
|
||||
|
||||
<p>Data will be kept for a period of time not exceeding 10 (ten) years for the following purposes
|
||||
administrative and, in any case, for the time strictly necessary for the pursuit of the legitimate interest of the
|
||||
Owner.</p>
|
||||
|
||||
<p class="text-subtitle2">8. Access rights, deletion, restriction and portability.</p>
|
||||
|
||||
<p>The Owner informs you that you are entitled to the rights set out in articles 15 to 20 of the GDPR. By way of
|
||||
example, by sending a specific request to the email address {{owneremail}}, you can:
|
||||
obtain confirmation whether or not personal data concerning you is being processed;
|
||||
if a processing operation is in progress, obtain access to the data and information relating to the
|
||||
processing and request a copy of the data;
|
||||
obtain rectification of inaccurate data and integration of incomplete personal data;
|
||||
</p>
|
||||
|
||||
|
||||
<p class="text-subtitle2">8. Access rights, deletion, restriction and portability.</p>
|
||||
|
||||
<p>The Owner informs you that you are entitled to the rights set out in articles 15 to 20 of the GDPR. By way of
|
||||
example, by sending a specific request to the email address {{owneremail}}, you can:
|
||||
obtain confirmation whether or not personal data concerning you is being processed;
|
||||
if a processing operation is in progress, obtain access to the data and information relating to the
|
||||
processing and request a copy of the data;
|
||||
obtain rectification of inaccurate data and integration of incomplete personal data;
|
||||
to obtain, if one of the conditions provided for in art. 17 of the GDPR is met, the cancellation of the
|
||||
Data concerning you; to obtain, in the cases provided for by art. 18 of the GDPR, the limitation of the treatment of your personal data.
|
||||
Data that La
|
||||
regard; receive the Data concerning you in a structured format, in common use and readable by
|
||||
device
|
||||
automatic and request their transmission to another owner, if technically feasible.</p>
|
||||
|
||||
<p class="text-subtitle2">9. Right of opposition.</p>
|
||||
|
||||
<p>In accordance with Art. 21 of the GDPR, you also have the right to object at any time to the
|
||||
processing of its own Data carried out for the pursuit of the legitimate interest of the Data Controller by writing
|
||||
at the email address
|
||||
{{owneremail}} In case of opposition, the Data will no longer be processed, provided that you do not
|
||||
there are legitimate grounds for processing, which override the interests, rights and interests of the data subject.
|
||||
freedom of the persons concerned, or for the establishment, exercise or defence of a right in headquarters
|
||||
judicial.</p>
|
||||
|
||||
<p class="text-subtitle2">Data Protection Officer</p>.
|
||||
<p>The data controller has appointed a data protection officer who is contactable at the
|
||||
following mailbox {{owneremail}}.</p>
|
||||
|
||||
<p class="text-subtitle2">10. Right to lodge a complaint with the Guarantor.</p>
|
||||
|
||||
<p>The Owner also informs you that you can lodge a complaint with the Guarantor for the Protection of Personal Data in the
|
||||
if it considers that its rights under GDPR or any other law have been infringed
|
||||
applicable legislation, according to the modalities indicated on the website of the Data Protection Supervisor
|
||||
Personal accessible at the address: <a href="http://www.garanteprivacy.it" target="_blank">www.garanteprivacy.it</a>.
|
||||
</p>
|
||||
|
||||
<p>Last Update: {{lastdataupdate}}</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div v-else-if="toolsext.isLang('fr')"></div>
|
||||
<div v-else-if="toolsext.isLang('es')"></div>
|
||||
<div v-else></div>
|
||||
</q-page>
|
||||
|
||||
</template>
|
||||
<script lang="ts" src="./PagePolicy.ts">
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import './PagePolicy.scss';
|
||||
@import './PagePolicy.scss';
|
||||
</style>
|
||||
|
||||
@@ -340,17 +340,8 @@ h3 {
|
||||
}
|
||||
|
||||
.myimgtitle {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
width: 400px;
|
||||
|
||||
@media (max-width: 718px) {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 300px;
|
||||
|
||||
}
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.my-card-big {
|
||||
@@ -730,16 +721,9 @@ h3 {
|
||||
}
|
||||
|
||||
.img {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
|
||||
max-height: 350px;
|
||||
max-width: 350px;
|
||||
|
||||
@media (max-width: 718px) {
|
||||
max-height: 350px;
|
||||
max-width: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
.imgintro {
|
||||
@@ -1578,6 +1562,11 @@ h3 {
|
||||
}
|
||||
|
||||
.selectorwide {
|
||||
min-width: 250px;
|
||||
min-width: 240px;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.fit_img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@@ -35,6 +35,8 @@ export interface INotData {
|
||||
lastsonline?: IUserFields[]
|
||||
lastssharedlink?: IUserFields[]
|
||||
diffusorilist?: IUserFields[]
|
||||
receiveRislist?: IUserFields[]
|
||||
receiveRislistgroup?: IMyGroup[]
|
||||
strettelist?: IUserFields[]
|
||||
checkuser?: ICheckUser | any
|
||||
numreg_untilday?: number
|
||||
@@ -1065,6 +1067,8 @@ export interface ICircuit {
|
||||
name: string
|
||||
path: string
|
||||
subname: string
|
||||
idCity: string[]
|
||||
strProv: string
|
||||
longdescr: string
|
||||
systemUserDescr: string
|
||||
systemUserId: string
|
||||
|
||||
@@ -42,6 +42,7 @@ export interface IMyGroup {
|
||||
createdBy?: string
|
||||
mycircuits?: IMyCircuit[]
|
||||
|
||||
lastdate_reqRisGroup?: Date
|
||||
account?: IAccount
|
||||
}
|
||||
|
||||
@@ -103,6 +104,8 @@ export interface IUserProfile {
|
||||
handshake: IFriends[]
|
||||
mygroups: IMyGroup[]
|
||||
mycircuits: IMyCircuit[]
|
||||
last_circuitpath?: string
|
||||
lastdate_reqRis?: Date
|
||||
manage_mygroups: IMyGroup[]
|
||||
notifs: IUserNotifType[]
|
||||
notif_idCities: number[]
|
||||
@@ -110,6 +113,8 @@ export interface IUserProfile {
|
||||
notif_regions: string[]
|
||||
notif_sectors: number[]
|
||||
notif_sector_goods: number[]
|
||||
stepTutorial: number
|
||||
noNameSurname: boolean
|
||||
|
||||
// in memory
|
||||
asked_friends: any[]
|
||||
|
||||
@@ -33,6 +33,8 @@ const msg_it = {
|
||||
data_choose: 'Scegli la Data',
|
||||
},
|
||||
profile: {
|
||||
info_msg: 'Puoi compilare facoltativamente questi tuoi dati personali.',
|
||||
info: 'Informazioni su di te',
|
||||
chisei: 'Chi Sei? Raccontaci di te:',
|
||||
iltuoimpegno: 'Quale è stato il tuo impegno per salvare il pianeta ad oggi?',
|
||||
come_aiutare: 'Cosa vorresti fare per aiutare il pianeta?',
|
||||
@@ -186,6 +188,7 @@ const msg_it = {
|
||||
today: 'Oggi',
|
||||
book: 'Prenota',
|
||||
avanti: 'Avanti',
|
||||
vai: 'Vai',
|
||||
indietro: 'Indietro',
|
||||
finish: 'Fine',
|
||||
sendmsg: 'Invia Messaggio',
|
||||
@@ -533,9 +536,11 @@ const msg_it = {
|
||||
username_pseudonimo: 'Username (Pseudonimo)',
|
||||
username_short: 'Username',
|
||||
name: 'Nome',
|
||||
insert_name: 'Inserisci il tuo Nome (o Soprannome)',
|
||||
name_opt: 'Nome (Facoltativo)',
|
||||
name_opt_collettivo: 'Nome del Collettivo',
|
||||
surname: 'Cognome',
|
||||
insert_surname: 'Inserisci il Cognome',
|
||||
surname_opt: 'Cognome (facoltativo)',
|
||||
username_login: 'Username o email',
|
||||
scegli_username: 'Inserisci un nome utente per il tuo Profilo:',
|
||||
@@ -567,6 +572,7 @@ const msg_it = {
|
||||
residency_address: 'Indirizzo di Residenza',
|
||||
residency_city: 'Comune di Residenza',
|
||||
residency_province: 'Provincia',
|
||||
provincia: 'Provincia',
|
||||
residency_zipcode: 'CAP',
|
||||
residency_country: 'Paese',
|
||||
born_country: 'Paese Nascita',
|
||||
@@ -1179,6 +1185,11 @@ const msg_it = {
|
||||
preferences: 'Preferenze',
|
||||
},
|
||||
circuit: {
|
||||
vaialcircuito: 'Vai al Circuito',
|
||||
iscritti: 'iscritti trovati',
|
||||
wait_acceptation: 'ℹ️ La tua richiesta è stata inoltrata. Entro breve verrai abilitato. Se non ti sei ancora presentato al gruppo verrai contattato.',
|
||||
coins_requestedris: 'Il tuo username {username} è ora in cima alla lista dei riceventi. Fai cliccare \'Invia RIS a..\' a chi ti deve inviare i RIS.',
|
||||
lista_ricev_title: 'Questa è la lista degli Utenti che hanno cliccato su "Ricevi RIS" nelle ultime 8 ore',
|
||||
info: 'Informazioni su questo Circuito',
|
||||
name: 'Nome Circuito',
|
||||
path: 'Nome Pagina',
|
||||
@@ -1249,6 +1260,8 @@ const msg_it = {
|
||||
domanda_refuse_circuit: 'Rifiutare la richiesta di {username} per entrare nel Circuito {circuitname}?',
|
||||
refusedcircuit: 'Rifiutato a {username} la richiesta di entrare nel Circuito',
|
||||
sendcoins: 'Invia RIS',
|
||||
sendcoins_toso: 'Invia RIS a',
|
||||
receive_coins: 'Ricevi RIS',
|
||||
sendcoins_tocom: 'Invia a Conto Comunitario',
|
||||
sendcoinsto: 'Invia {qty} {coin} a {dest}',
|
||||
question_sendcoinsto: 'Inviare {qty} {coin} a {dest}?',
|
||||
@@ -1439,10 +1452,24 @@ const msg_it = {
|
||||
},
|
||||
|
||||
tutorial: {
|
||||
title: 'Completa il tuo Profilo',
|
||||
title: 'Completa i passi',
|
||||
title_completed: 'Passi Completati',
|
||||
step: 'passo {step} su {numstep}',
|
||||
|
||||
completed_step: 'Profilo completato al {perc}',
|
||||
step_residence_title: 'Provincia',
|
||||
step_residence: 'Inserisci la Provincia in cui vivi abitualmente, questo ti permetterà di entrare e scambiare nel circuito del tuo territorio.',
|
||||
step_nomecognome_title: 'Nome',
|
||||
step_nomecognome: 'Per farti trovare dai tuoi amici puoi inserire <strong>FACOLTATIVAMENTE</strong>, anche un Nome o Soprannome.<br>Per chi lo ritenesse necessario, anche il cognome.<br>Oppure clicca su <strong>Avanti</strong> per continuare.',
|
||||
step_circuito_title: 'Circuito RIS',
|
||||
step_circuito: 'Entra nel Circuito del tuo territorio. Potrai così utilizzare il tuo conto personale in RIS, per scambiare Beni, Servizi, ecc.',
|
||||
step_circuito_ok: 'Ottimo! Sei entrato nel Circuito del tuo territorio. Puoi così utilizzare il tuo conto personale in RIS, per scambiare Beni, Servizi, ecc.',
|
||||
step_beniservizi_title: 'I Tuoi Annunci',
|
||||
step_beniservizi: 'Per poter usufruire dei Beni, Servizi ed Ospitalità, è necessario che ogni partecipante si rende disponibile per offrire almeno una di queste cose, aggiungendole alla App.',
|
||||
step_foto_title: 'Foto Profilo',
|
||||
step_foto: 'Se vuoi puoi inserire una foto o un\'immagine che ti rappresenta.',
|
||||
step_altri_in_profilo: 'Per vedere e modificare tutte le altre informazioni di Profilo:',
|
||||
step_fine_title: 'Fine',
|
||||
step_fine: 'Hai completato l\'aggiornamento del tuo Profilo. Ricorda che potrai modificarlo, cliccando sulla prima icona in alto a destra 🙎🏻♂️ .',
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
@@ -73,6 +73,10 @@ export const useCircuitStore = defineStore('CircuitStore', {
|
||||
return this.listcircuits.find((rec: ICircuit) => rec.name === circuitname)
|
||||
},
|
||||
|
||||
getCircuitByProvince(prov: string): ICircuit | undefined | null {
|
||||
return this.listcircuits.find((rec: ICircuit) => rec.strProv === prov)
|
||||
},
|
||||
|
||||
getCircuitByCircuitId(circuitId: string): ICircuit | null | undefined {
|
||||
return this.listcircuits.find((rec: ICircuit) => rec._id === circuitId)
|
||||
},
|
||||
@@ -138,5 +142,9 @@ export const useCircuitStore = defineStore('CircuitStore', {
|
||||
return arr
|
||||
},
|
||||
|
||||
getSortFieldsAvailable(): any[] {
|
||||
return [{ label: 'Nome', value: 'name' }, { label: 'Iscritti', value: 'numMembers' }]
|
||||
},
|
||||
|
||||
},
|
||||
})
|
||||
|
||||
@@ -227,7 +227,7 @@ export const costanti = {
|
||||
{
|
||||
visible: true,
|
||||
title: 'Assistenza',
|
||||
to: '/faq',
|
||||
to: '/istruzioni',
|
||||
icon: 'fas fa-question',
|
||||
color: 'yellow',
|
||||
hint: '',
|
||||
@@ -291,6 +291,7 @@ export const costanti = {
|
||||
|
||||
USER_CIRCUITS: 60,
|
||||
REQ_CIRCUIT: 65,
|
||||
ENTER_TO_THE_CIRCUIT: 70,
|
||||
|
||||
CMD_DELETE: 1,
|
||||
CMD_MODIFY: 2,
|
||||
|
||||
@@ -749,7 +749,7 @@ export const colmyUserGroup = [
|
||||
name: 'groupname', label_trans: 'reg.groupname', required: false,
|
||||
maxlength: 30,
|
||||
allowchar: costanti.ALLOWCHAR_CODE,
|
||||
showWhen: costanti.showWhen.InPage + costanti.showWhen.InEdit
|
||||
showWhen: costanti.showWhen.InPage + costanti.showWhen.NewRec
|
||||
}),
|
||||
AddCol({
|
||||
name: 'idCity',
|
||||
@@ -2808,6 +2808,20 @@ export const colTableCircuitComplete = [
|
||||
remote_field: 'comune',
|
||||
required: true,
|
||||
}),
|
||||
AddCol({
|
||||
name: 'strProv',
|
||||
label_trans: 'reg.provincia',
|
||||
fieldtype: costanti.FieldType.select,
|
||||
jointable: 'provinces',
|
||||
tablesel: 'provinces',
|
||||
noshowlabel: true,
|
||||
icon: 'fas fa-map-marker-alt',
|
||||
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
|
||||
required: true,
|
||||
}),
|
||||
// AddCol({ name: 'strProv', label_trans: 'reg.provincia', fieldtype: costanti.FieldType.string,
|
||||
// showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
|
||||
// }),
|
||||
AddCol({
|
||||
name: 'visibility',
|
||||
label_trans: 'bot.visibility',
|
||||
@@ -2880,7 +2894,7 @@ export const colTableCircuitComplete = [
|
||||
]
|
||||
|
||||
export const colTableCircuit = [
|
||||
AddCol({ name: '_id', label_trans: 'circuit.Id' }), // da togliere poi
|
||||
// AddCol({ name: '_id', label_trans: 'circuit.Id' }), // da togliere poi
|
||||
AddCol({
|
||||
name: 'name', label_trans: 'circuit.name',
|
||||
required: true,
|
||||
@@ -2909,6 +2923,17 @@ export const colTableCircuit = [
|
||||
remote_field: 'comune',
|
||||
required: true,
|
||||
}),
|
||||
AddCol({
|
||||
name: 'strProv',
|
||||
label_trans: 'reg.provincia',
|
||||
fieldtype: costanti.FieldType.select,
|
||||
jointable: 'provinces',
|
||||
tablesel: 'provinces',
|
||||
noshowlabel: true,
|
||||
icon: 'fas fa-map-marker-alt',
|
||||
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView_OnlyifExist,
|
||||
required: true,
|
||||
}),
|
||||
AddCol({
|
||||
name: 'visibility',
|
||||
label_trans: 'bot.visibility',
|
||||
|
||||
@@ -23,7 +23,7 @@ import { lists } from '@store/Modules/lists'
|
||||
import { costanti } from '@store/Modules/costanti'
|
||||
import { copyToClipboard, date, Screen, useQuasar, colors, Cookies, scroll } from 'quasar'
|
||||
|
||||
const { getScrollTarget, setScrollPosition } = scroll
|
||||
const { getScrollTarget, setVerticalScrollPosition } = scroll
|
||||
import { func_tools, toolsext } from '@store/Modules/toolsext'
|
||||
import { preloadedimages, static_data } from '@src/db/static_data'
|
||||
import { useGlobalStore } from '@store/globalStore'
|
||||
@@ -2672,8 +2672,8 @@ export const tools = {
|
||||
})
|
||||
},
|
||||
|
||||
showPositiveNotif(q: any, msg: string) {
|
||||
this.showNotif(q, msg, { color: 'positive', icon: 'notifications' })
|
||||
showPositiveNotif(q: any, msg: string, time?: number) {
|
||||
this.showNotif(q, msg, { color: 'positive', icon: 'notifications' }, time)
|
||||
},
|
||||
|
||||
showNegativeNotif(q: any, msg: string, time = 5000) {
|
||||
@@ -4180,6 +4180,9 @@ export const tools = {
|
||||
return Cookies.remove(mytok)
|
||||
},
|
||||
|
||||
scrollToTopAll() {
|
||||
window.scrollTo(0,0);
|
||||
},
|
||||
scrollToTop() {
|
||||
const element = document.getElementById('mypage')
|
||||
this.scrollToElement(element)
|
||||
@@ -4194,7 +4197,7 @@ export const tools = {
|
||||
const offset = el.offsetTop
|
||||
const duration = 500
|
||||
console.log('target', target, 'offset', offset, 'duration', duration)
|
||||
setScrollPosition(target, offset, duration)
|
||||
setVerticalScrollPosition(target, offset, duration)
|
||||
}
|
||||
},
|
||||
|
||||
@@ -7693,6 +7696,56 @@ export const tools = {
|
||||
return user.name ? user.name + ' ' + (user.surname ? user.surname : '') : user.username
|
||||
},
|
||||
|
||||
getNomeUtenteEUsernameByRecUser(user: IUserFields) {
|
||||
if (user.name)
|
||||
return user.name + ' ' + user.surname + ' (' + user.username + ')'
|
||||
else
|
||||
return user.username
|
||||
},
|
||||
|
||||
updateLink(link: string) {
|
||||
const userStore = useUserStore()
|
||||
|
||||
if (link === '/circuits') {
|
||||
let path = userStore.my.profile.last_circuitpath
|
||||
if (path) {
|
||||
return '/circuit/' + path
|
||||
}
|
||||
return link
|
||||
}
|
||||
return link
|
||||
},
|
||||
|
||||
async receiveRis($q: any, t: any) {
|
||||
const userStore = useUserStore()
|
||||
|
||||
let username = userStore.my.username
|
||||
|
||||
await userStore.setUserReceiveRIS(username, '').then((data) => {
|
||||
if (data.code === serv_constants.RIS_CODE_OK) {
|
||||
this.showPositiveNotif($q, t('circuit.coins_requestedris', {username}), 6000)
|
||||
} else {
|
||||
this.showNegativeNotif($q, t('db.recfailed'))
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
async receiveRisGroup(groupname: string, $q: any, t: any) {
|
||||
const userStore = useUserStore()
|
||||
|
||||
await userStore.setUserReceiveRIS('', groupname).then((data) => {
|
||||
if (data.code === serv_constants.RIS_CODE_OK) {
|
||||
this.showPositiveNotif($q, t('circuit.coins_requestedris', {groupname}), 6000)
|
||||
} else {
|
||||
this.showNegativeNotif($q, t('db.recfailed'))
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
// FINE !
|
||||
|
||||
// getLocale() {
|
||||
|
||||
@@ -69,6 +69,8 @@ export const DefaultUser: IUserFields = {
|
||||
handshake: [],
|
||||
mygroups: [],
|
||||
mycircuits: [],
|
||||
last_circuitpath: '',
|
||||
lastdate_reqRis: tools.getLastDateReadReset(),
|
||||
manage_mygroups: [],
|
||||
asked_friends: [],
|
||||
asked_groups: [],
|
||||
@@ -79,6 +81,8 @@ export const DefaultUser: IUserFields = {
|
||||
notif_regions: [],
|
||||
notif_sectors: [],
|
||||
notif_sector_goods: [],
|
||||
stepTutorial: 0,
|
||||
noNameSurname: false,
|
||||
asked_circuits: [],
|
||||
refused_circuits: [],
|
||||
manage_mycircuits: [],
|
||||
@@ -128,6 +132,7 @@ export const DefaultProfile: IUserProfile = {
|
||||
handshake: [],
|
||||
mygroups: [],
|
||||
mycircuits: [],
|
||||
last_circuitpath: '',
|
||||
manage_mygroups: [],
|
||||
asked_friends: [],
|
||||
asked_groups: [],
|
||||
@@ -138,7 +143,8 @@ export const DefaultProfile: IUserProfile = {
|
||||
notif_regions: [],
|
||||
notif_sectors: [],
|
||||
notif_sector_goods: [],
|
||||
|
||||
stepTutorial: 0,
|
||||
noNameSurname: false,
|
||||
asked_circuits: [],
|
||||
refused_circuits: [],
|
||||
manage_mycircuits: [],
|
||||
@@ -218,6 +224,15 @@ export const useUserStore = defineStore('UserStore', {
|
||||
},
|
||||
|
||||
actions: {
|
||||
|
||||
|
||||
getMypaginationMembers(): any {
|
||||
return { sortBy: 'name,username', descending: '1,1', page: 1, rowsNumber: 0, rowsPerPage: 10 }
|
||||
},
|
||||
getSortFieldsAvailable(): any[] {
|
||||
return [{ label: 'Username', value: 'username,name' }, { label: 'Nome', value: 'name,username' }, { label: 'Ultimi reg.', value: 'date_reg,username' }]
|
||||
},
|
||||
|
||||
IsMyFriendByUsername(username: string): boolean {
|
||||
if (this.my.profile.friends)
|
||||
return this.my.profile.friends.findIndex((rec) => rec.username === username) >= 0
|
||||
@@ -416,6 +431,7 @@ export const useUserStore = defineStore('UserStore', {
|
||||
},
|
||||
|
||||
|
||||
|
||||
IsMyCircuitByName(circuitname: string): boolean {
|
||||
|
||||
if (this.my.profile.mycircuits)
|
||||
@@ -483,7 +499,7 @@ export const useUserStore = defineStore('UserStore', {
|
||||
if (acc.circuit) {
|
||||
chi += ' (' + circuitStore.getNameByCircuitId(acc.circuitId) + ')'
|
||||
}
|
||||
arr.push({label: chi, value: acc._id})
|
||||
arr.push({ label: chi, value: acc._id })
|
||||
}
|
||||
}
|
||||
return arr
|
||||
@@ -823,6 +839,27 @@ export const useUserStore = defineStore('UserStore', {
|
||||
})
|
||||
},
|
||||
|
||||
async saveStepTutorial(step: number) {
|
||||
const mydata = {
|
||||
_id: this.my._id,
|
||||
dbop: 'saveStepTut',
|
||||
value: step,
|
||||
}
|
||||
this.my.profile.stepTutorial = step
|
||||
return await this.execDbOp({mydata})
|
||||
},
|
||||
async savenoNameSurname(val: boolean) {
|
||||
const mydata = {
|
||||
_id: this.my._id,
|
||||
dbop: 'noNameSurname',
|
||||
value: val,
|
||||
}
|
||||
if (this.my.profile.noNameSurname !== val) {
|
||||
this.my.profile.noNameSurname = val
|
||||
return await this.execDbOp({mydata})
|
||||
}
|
||||
},
|
||||
|
||||
async newsletterload(paramquery: any) {
|
||||
|
||||
return Api.SendReq('/news/load', 'POST', paramquery)
|
||||
@@ -1323,6 +1360,22 @@ export const useUserStore = defineStore('UserStore', {
|
||||
|
||||
},
|
||||
|
||||
async setUserReceiveRIS(username: string, groupname: string) {
|
||||
const data = {
|
||||
username,
|
||||
groupname,
|
||||
}
|
||||
|
||||
return Api.SendReq('/users/receiveris', 'POST', data)
|
||||
.then((ris) => {
|
||||
console.log('out:', ris)
|
||||
return ris.data
|
||||
}).catch((error) => {
|
||||
return {}
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
async loadGroup(groupname: string, idnotif: string) {
|
||||
const data = {
|
||||
groupname,
|
||||
@@ -1348,6 +1401,7 @@ export const useUserStore = defineStore('UserStore', {
|
||||
|
||||
return Api.SendReq('/circuit/load', 'POST', data)
|
||||
.then((res) => {
|
||||
this.my.profile.last_circuitpath = path
|
||||
if (res && res.data.arrrecnotif) {
|
||||
notifStore.updateArrRecNotifFromServer(res.data.arrrecnotif)
|
||||
}
|
||||
|
||||
@@ -1688,7 +1688,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
|
||||
return Api.SendReq('/site/load', 'POST', paramquery)
|
||||
.then((res) => {
|
||||
// console.log('datastat', res)
|
||||
console.log('datastat', res)
|
||||
this.datastat = res.data.datastat
|
||||
return this.datastat
|
||||
}).catch((error) => {
|
||||
|
||||
@@ -397,6 +397,11 @@
|
||||
</div>
|
||||
</template>
|
||||
</q-field>
|
||||
<q-btn
|
||||
label="Set strProv by IdCity (table circuits)"
|
||||
color="negative"
|
||||
@click="EseguiFunz('setstrProvByIdCityCircuits')"
|
||||
></q-btn>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./dbop.ts">
|
||||
|
||||
@@ -9,6 +9,26 @@
|
||||
:canopen="true"
|
||||
>
|
||||
<div class="column">
|
||||
<div class="">
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.username')"
|
||||
table="users"
|
||||
mykey="username"
|
||||
:disable="true"
|
||||
:readonly="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.email')"
|
||||
table="users"
|
||||
mykey="email"
|
||||
:disable="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
<div> {{ $t('profile.info_msg') }} </div>
|
||||
<div class="myrow">
|
||||
<div v-if="site.confpages.showNameSurname">
|
||||
<CMyFieldDb
|
||||
@@ -28,15 +48,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="myrow">
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.username')"
|
||||
table="users"
|
||||
mykey="username"
|
||||
:disable="true"
|
||||
:readonly="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.username_telegram')"
|
||||
table="users"
|
||||
@@ -47,14 +58,6 @@
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
<div class="myrow">
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.email')"
|
||||
table="users"
|
||||
mykey="email"
|
||||
:disable="true"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.website')"
|
||||
table="users"
|
||||
@@ -81,10 +84,9 @@
|
||||
</div>
|
||||
</CTitleBanner>
|
||||
|
||||
|
||||
<CTitleBanner
|
||||
class="q-pa-xs"
|
||||
title="Informazioni su di te"
|
||||
:title="$t('profile.info')"
|
||||
bgcolor="bg-primary"
|
||||
clcolor="text-white"
|
||||
myclass="myshad"
|
||||
@@ -153,19 +155,6 @@
|
||||
/>
|
||||
-->
|
||||
|
||||
<CMyFieldRec
|
||||
:title="$t('reg.born_city')"
|
||||
table="users"
|
||||
tablesel="cities"
|
||||
:id="myuser._id"
|
||||
:rec="myuser"
|
||||
field="profile.born_city_id"
|
||||
:sameclassasfielddb="true"
|
||||
:canEdit="true"
|
||||
:canModify="true"
|
||||
>
|
||||
</CMyFieldRec>
|
||||
|
||||
<CMyFieldDb
|
||||
:title="$t('reg.dateofbirth')"
|
||||
table="users"
|
||||
|
||||
@@ -84,7 +84,6 @@ export default defineComponent({
|
||||
const filtercustom_rich: any = ref([])
|
||||
const searchList = ref([] as ISearchList[])
|
||||
|
||||
|
||||
const cities = ref([] as ICity[])
|
||||
|
||||
watch(() => path.value, (to: any, from: any) => {
|
||||
@@ -164,6 +163,7 @@ export default defineComponent({
|
||||
username: 1,
|
||||
name: 1,
|
||||
surname: 1,
|
||||
date_reg: 1,
|
||||
profile: 1, idapp: 1, 'circuit.name': 1, 'circuit._id': 1
|
||||
}
|
||||
|
||||
@@ -290,6 +290,7 @@ export default defineComponent({
|
||||
async function mounted() {
|
||||
tabcircuit.value = tools.getCookie(tools.COOK_TAB_CIRCUIT + path.value, 'info')
|
||||
|
||||
|
||||
await loadCircuit()
|
||||
|
||||
}
|
||||
|
||||
@@ -23,6 +23,14 @@
|
||||
<CCheckIfIsLogged></CCheckIfIsLogged>
|
||||
</div>
|
||||
<div v-if="circuit">
|
||||
<div style="align-self: center; vertical-align: middle">
|
||||
<q-btn
|
||||
label="Lista Circuiti"
|
||||
to="/circuits"
|
||||
rounded
|
||||
icon="fas fa-arrow-circle-left"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
v-if="circuit.name"
|
||||
class="fit column no-wrap justify-evenly items-center content-start"
|
||||
@@ -66,7 +74,7 @@
|
||||
|
||||
<br />
|
||||
|
||||
<div>
|
||||
<div class="row text-center">
|
||||
<q-banner
|
||||
v-if="
|
||||
userStore.my.profile &&
|
||||
@@ -74,15 +82,11 @@
|
||||
userStore.IsMyCircuitByName(circuit.name)
|
||||
"
|
||||
rounded
|
||||
class="bg-orange text-white"
|
||||
class="bg-deep-purple text-white"
|
||||
style="text-align: center"
|
||||
>
|
||||
<template v-slot:avatar>
|
||||
<q-icon
|
||||
name="fas fa-info"
|
||||
color="red"
|
||||
size="sm"
|
||||
/>
|
||||
<q-icon name="fas fa-info" color="red" size="sm" />
|
||||
</template>
|
||||
|
||||
<em style="font-weight: bold">{{
|
||||
@@ -93,7 +97,7 @@
|
||||
<q-banner
|
||||
v-else-if="userStore.my.profile.calc.numGoodsAndServices <= 0"
|
||||
rounded
|
||||
class="bg-orange text-white"
|
||||
class="bg-deep-purple text-white"
|
||||
style="text-align: center"
|
||||
>
|
||||
<template v-slot:avatar>
|
||||
@@ -111,6 +115,7 @@
|
||||
><br />
|
||||
</q-banner>
|
||||
|
||||
<div class="centermydiv q-mt-md">
|
||||
<q-btn
|
||||
v-if="
|
||||
!userStore.IsMyCircuitByName(circuit.name) &&
|
||||
@@ -192,13 +197,19 @@
|
||||
"
|
||||
icon="fas fa-user-minus"
|
||||
flat
|
||||
outline
|
||||
:label="$t('shared.cancel_ask_short')"
|
||||
@click="
|
||||
tools.cancelReqCircuit($q, userStore.my.username, circuit.name)
|
||||
tools.cancelReqCircuit(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
circuit.name
|
||||
)
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="circuit.name"
|
||||
class="no-wrap justify-evenly items-center content-start"
|
||||
@@ -262,6 +273,7 @@
|
||||
label="Rifiutati"
|
||||
name="refused"
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
></q-tab>
|
||||
</q-tabs>
|
||||
|
||||
@@ -320,6 +332,7 @@
|
||||
"
|
||||
icon="fas fa-user-minus"
|
||||
flat
|
||||
outline
|
||||
:label="$t('shared.cancel_ask_short')"
|
||||
@click="
|
||||
tools.cancelReqCircuit(
|
||||
@@ -371,7 +384,7 @@
|
||||
:prop_search="true"
|
||||
hint="gruppo da trovare"
|
||||
:finder="false"
|
||||
:choose_visutype="true"
|
||||
:choose_visutype="false"
|
||||
:finder_noNull="false"
|
||||
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
|
||||
:butt_modif_new="false"
|
||||
@@ -388,7 +401,7 @@
|
||||
:visufind="
|
||||
tools.iAmAdminCircuit(circuit.name)
|
||||
? costanti.REQ_ADD_USER_TO_CIRCUIT
|
||||
: costanti.FIND_PEOPLE
|
||||
: costanti.FIND_GROUP
|
||||
"
|
||||
>
|
||||
</CGridTableRec>
|
||||
@@ -404,7 +417,7 @@
|
||||
:vertical="costanti.VISUTABLE_GROUP_CIRCUIT"
|
||||
nodataLabel="Nessuna Richiesta Collettiva in sospeso"
|
||||
:prop_search="false"
|
||||
hint="Username da trovare"
|
||||
hint="Username o nome da trovare"
|
||||
:finder="false"
|
||||
:choose_visutype="false"
|
||||
:finder_noNull="false"
|
||||
@@ -840,6 +853,7 @@
|
||||
label="Rifiutati"
|
||||
name="refused"
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
></q-tab>
|
||||
</q-tabs>
|
||||
|
||||
@@ -860,9 +874,9 @@
|
||||
:vertical="costanti.VISUTABLE_LISTA"
|
||||
nodataLabel="Nessun Iscritto"
|
||||
:prop_search="true"
|
||||
hint="Username da trovare"
|
||||
hint="Username o nome da trovare"
|
||||
:finder="false"
|
||||
:choose_visutype="true"
|
||||
:choose_visutype="false"
|
||||
:finder_noNull="false"
|
||||
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
|
||||
:butt_modif_new="false"
|
||||
@@ -873,7 +887,12 @@
|
||||
:filterextra2="filterextra2"
|
||||
:prop_searchList="searchList"
|
||||
:showType="costanti.SHOW_USERINFO"
|
||||
:prop_pagination="userStore.getMypaginationMembers()"
|
||||
:prop_SortFieldsAvailable="
|
||||
userStore.getSortFieldsAvailable()
|
||||
"
|
||||
:showCol="false"
|
||||
:labelElemFind="$t('circuit.iscritti')"
|
||||
:circuitname="circuit.name"
|
||||
:extraparams="extraparams()"
|
||||
:visufind="
|
||||
@@ -895,7 +914,7 @@
|
||||
:vertical="costanti.VISUTABLE_USER_TABCIRCUIT"
|
||||
nodataLabel="Nessuna Richiesta in sospeso"
|
||||
:prop_search="false"
|
||||
hint="Username da trovare"
|
||||
hint="Username o nome da trovare"
|
||||
:finder="false"
|
||||
:choose_visutype="false"
|
||||
:finder_noNull="false"
|
||||
@@ -925,7 +944,7 @@
|
||||
:vertical="costanti.VISUTABLE_USER_TABCIRCUIT"
|
||||
nodataLabel="Nessun utente Rifiutato"
|
||||
:prop_search="false"
|
||||
hint="Username da trovare"
|
||||
hint="Username o nome da trovare"
|
||||
:finder="false"
|
||||
:choose_visutype="false"
|
||||
:finder_noNull="false"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
:vertical="costanti.VISUTABLE_LISTA"
|
||||
nodataLabel=" "
|
||||
:prop_search="true"
|
||||
hint="Username da trovare"
|
||||
hint="Username o nome da trovare"
|
||||
:finder="true"
|
||||
:choose_visutype="true"
|
||||
:finder_noNull="true"
|
||||
|
||||
@@ -140,6 +140,7 @@
|
||||
!userStore.IsMyGroupByGroupname(mygrp.groupname)
|
||||
"
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
flat
|
||||
:label="$t('shared.cancel_ask_short')"
|
||||
@click="
|
||||
@@ -388,6 +389,7 @@
|
||||
label="Rifiutati"
|
||||
name="refused"
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
></q-tab>
|
||||
</q-tabs>
|
||||
|
||||
|
||||
@@ -436,6 +436,7 @@
|
||||
/>
|
||||
<q-btn
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
color="negative"
|
||||
:label="$t('friends.reject_ask_friend')"
|
||||
@click="
|
||||
@@ -516,6 +517,7 @@
|
||||
"
|
||||
clickable
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
v-close-popup
|
||||
@click="
|
||||
tools.removeFromMyFriends(
|
||||
@@ -594,6 +596,7 @@
|
||||
)
|
||||
"
|
||||
icon="fas fa-user-minus"
|
||||
outline
|
||||
dense
|
||||
:label="$t('friends.cancel_ask_friend_short')"
|
||||
@click="
|
||||
|
||||
Reference in New Issue
Block a user