- varie sistemazioni: filtri iscritti, profilo, ecc...

This commit is contained in:
Surya Paolo
2025-01-11 12:08:03 +01:00
parent 298dc4f5a5
commit 2b1fc9b090
52 changed files with 734 additions and 626 deletions

View File

@@ -35,6 +35,7 @@ export default defineComponent({
const defpersmin = ref(100)
const defpersmax = ref(200)
const search_username = ref('')
const search = ref('')
const replace_username = ref('')
const risultato = ref('')
const incaricamento = ref(false)
@@ -62,6 +63,7 @@ export default defineComponent({
numpersone: numpersone,
search_username,
replace_username,
search: search.value,
valmin: tools.convstrToNum(valmin),
valmax: tools.convstrToNum(valmax),
circuitId,
@@ -105,6 +107,7 @@ export default defineComponent({
incaricamento,
ris,
risultato,
search,
}
},
})

View File

@@ -341,6 +341,13 @@
EseguiFunz('ReplaceUsername', search_username, replace_username)
"
></q-btn>
<q-btn
label="Replace AportadorSolidario"
color="primary"
@click="
EseguiFunz('replaceAportadorSolidario', search_username, replace_username)
"
></q-btn>
<q-btn
label="Replace Circuit"
color="primary"
@@ -350,6 +357,21 @@
></q-btn>
<br />
</div>
<div class="row">
<q-input
v-model="search"
label="stringa da cercare"
style="width: 300px"
></q-input>
<q-btn
label="Cerca Stringa su tutto il DB"
color="primary"
@click="
EseguiFunz('SearchString', search)
"
></q-btn>
<br />
</div>
<div class="row">
<q-btn
label="Create Account Circuits"

View File

@@ -512,7 +512,6 @@
icon="fas fa-users"
></q-tab>
<q-tab
v-if="userStore.IsMyCircuitByName(circuit.name)"
:label="t('circuit.comunitario')"
name="comunitario"
icon="fas fa-campground"

View File

@@ -30,6 +30,19 @@ export default defineComponent({
function mounted() {
searchList.value = [
{
label: 'Filtra per',
table: shared_consts.TABFILTRI_UTENTE,
key: '',
type: costanti.FieldType.select,
value: tools.getCookie(tools.COOK_SEARCH + 'filtroutente', costanti.FILTER_TUTTI),
keycookie: '_fu',
addall: false,
arrvalue: [],
filter: null,
useinput: false,
icon: 'fas fa-filter'
},
{
label: 'Regione',
table: 'regions',

View File

@@ -1,24 +1,9 @@
<template>
<div class="">
<!--
<q-banner
rounded
dense
class="bg-warning text-white"
color="primary q-title"
style="text-align: center;">
<template v-slot:avatar>
<q-icon name="fas fa-exclamation-triangle" color="yellow" size="xs" />
</template>
<span class="mybanner">Questa sezione è ancora in fase di miglioramento.</span>
</q-banner>
-->
<CMyFriends v-if="searchList.length > 0" v-model="filter" :finder="true">
<CGridTableRec
prop_mytable="users"
prop_mytitle=""
subtitle="Seleziona una Regione o provincia per vedere la lista degli iscritti:"
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title="username"
@@ -26,11 +11,11 @@
nodataLabel=" "
:prop_search="true"
:prop_showfilter="true"
hint="Scegli una Regione, Provincia oppure scrivi il nome o Username"
hint=""
:finder="true"
:choose_visutype="false"
:finder_noNull="false"
:finder_noNullFilters="true"
:finder_noNullFilters="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username, Nome o Cognome non trovato"
@@ -38,6 +23,7 @@
:filtercustom="filtercustom"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
:prop_pagination="{ sortBy: 'username', descending: false, page: 1, rowsNumber: 0, rowsPerPage: 10 }"
:showCol="false"
:extraparams="extraparams()"
>

View File

@@ -96,37 +96,12 @@
<div class="col-12 text-h7 text-blue text-shadow-2">
{{ userStore.userprofile.username }}
</div>
<div class="col-12 text-h7">
<span
v-if="
userStore.userprofile.profile &&
userStore.userprofile.profile.born_city_id
"
>
<CMyFieldRec
title=""
table="users"
tablesel="cities"
:id="userStore.userprofile._id"
:rec="userStore.userprofile"
field="profile.born_city_id"
:canEdit="false"
:canModify="false"
>
</CMyFieldRec>
{{ userStore.userprofile.profile.born_city_str }}</span
>
<span
v-if="
userStore.userprofile.profile &&
userStore.userprofile.profile.nationality &&
userStore.userprofile.profile.nationality !== 'Italia'
"
>({{ userStore.userprofile.profile.nationality }})</span
>
</div>
<div v-if="userStore.userprofile._id" class="col-12 text-h8 q-mt-sm">
<div
v-if="
userStore.userprofile && userStore.userprofile.profile.qualifica
"
class="col-12 text-h8 q-mt-sm"
>
<span v-if="userStore.userprofile.profile.qualifica">
<em
><div class="qualifica">
@@ -135,7 +110,12 @@
>
</span>
</div>
<div v-if="userStore.userprofile._id" class="col-12 text-h8 q-mt-sm">
<div
v-if="
userStore.userprofile && userStore.userprofile.profile.biografia
"
class="col-12 text-h8 q-mt-sm"
>
{{ userStore.userprofile.profile.biografia }}
</div>
</div>
@@ -214,36 +194,6 @@
<div class="col-12 text-h7 text-blue text-shadow-2">
{{ userStore.userprofile.username }}
</div>
<div class="col-12 text-h7">
<span
v-if="
userStore.userprofile.profile &&
userStore.userprofile.profile.born_city_id
"
>
<CMyFieldRec
title=""
table="users"
tablesel="cities"
:id="userStore.userprofile._id"
:rec="userStore.userprofile"
field="profile.born_city_id"
:canEdit="false"
:canModify="false"
>
</CMyFieldRec>
{{ userStore.userprofile.profile.born_city_str }}</span
>
<span
v-if="
userStore.userprofile.profile &&
userStore.userprofile.profile.nationality &&
userStore.userprofile.profile.nationality !== 'Italia'
"
>({{ userStore.userprofile.profile.nationality }})</span
>
</div>
<div
v-if="
userStore.userprofile.profile.qualifica &&
@@ -269,14 +219,398 @@
@showed="showed"
/>
<div>
<div class="row justify-center">
<q-btn
v-if="
userStore.userprofile.profile &&
userStore.userprofile.profile.handshake &&
userStore.userprofile.profile.handshake.length > 0
"
:label="quantiHandShake"
class="q-my-sm"
color="grey-3"
:text-color="$q.dark.isActive ? 'black' : 'black'"
rounded
icon="fas fa-handshake"
@click="
usersList.show = true;
usersList.title = 'Lista Strette di mano';
usersList.list = userStore.userprofile.profile.handshake;
"
>
</q-btn>
<q-btn
v-if="
userStore.userprofile.username !== myusername() &&
handshake_inCommon &&
handshake_inCommon.length > 0
"
:label="quanteHandShakeInCommon"
class="q-my-sm"
:text-color="$q.dark.isActive ? 'black' : 'black'"
rounded
icon="fas fa-handshake"
@click="
usersList.show = true;
usersList.title = 'Strette di mano in Comune';
usersList.list = handshake_inCommon;
"
>
</q-btn>
</div>
<div
v-if="userStore.userprofile.username !== myusername()"
class="row justify-center"
>
<q-chip
v-if="
userStore.IsHandShakeByMe(userStore.userprofile) &&
userStore.IsHandShakeByUsername(
userStore.userprofile.username
)
"
color="green"
dense
class="chipbooked shadow-5 q-pa-sm2"
size="md"
text-color="white"
icon="fas fa-handshake"
>
<span
>&nbsp;<em
class="q-pa-xxs text-white rounded-borders shadow-2"
>
{{
$t('db.both_fiducia', {
username: userStore.userprofile.username,
})
}}
</em></span
>
</q-chip>
<q-chip
v-else-if="
!userStore.IsHandShakeByMe(userStore.userprofile) &&
userStore.IsHandShakeByUsername(
userStore.userprofile.username
)
"
color="blue"
dense
class="cltexth4 chipbooked shadow-5 q-pa-sm2"
size="md"
text-color="white"
icon="fas fa-handshake"
>
<span
>&nbsp;<em
class="q-pa-xxs text-white rounded-borders shadow-2"
>
{{
$t('db.handshake_him', {
username: userStore.userprofile.username,
})
}}
</em></span
>
</q-chip>
<q-chip
v-else-if="
userStore.IsHandShakeByMe(userStore.userprofile) &&
!userStore.IsHandShakeByUsername(
userStore.userprofile.username
)
"
color="blue"
dense
class="cltexth4 chipbooked shadow-5 q-pa-sm2"
size="md"
text-color="white"
icon="fas fa-handshake"
>
<span
>&nbsp;<em
class="q-pa-xxs text-white rounded-borders shadow-2"
>
{{
$t('db.handshake_you', {
username: userStore.userprofile.username,
})
}}
</em></span
>
</q-chip>
</div>
<!--HANDSHAKE-->
<div
v-if="
!isMyRecord(userStore.userprofile.username) && tools.isUserOk()
"
>
<div
class="row centeritems q-pa-sm"
v-if="!userStore.IsHandShakeByMe(userStore.userprofile)"
>
<q-btn
v-if="
userStore.IsHandShakeByUsername(
userStore.userprofile.username
)
"
icon="fas fa-handshake"
color="positive"
dense
:label="$t('handshake.accept_you_too_handshake')"
@click="
tools.addToMyHandShake(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
<q-btn
v-else
icon="fas fa-handshake"
color="positive"
dense
:label="$t('handshake.accept_handshake')"
@click="
tools.addToMyHandShake(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
</div>
</div>
</div>
<div
v-if="!isMyRecord(userStore.userprofile.username)"
class="q-ma-sm"
>
<div class="row justify-center">
<div
class="row centeritems q-ma-sm q-pa-sm"
v-if="
costanti.ENABLE_FRIENDS &&
userStore.IsReqFriendByUsername(
userStore.userprofile.username
)
"
>
<q-btn
icon="fas fa-user-plus"
color="positive"
dense
:label="$t('friends.accept_friend')"
@click="
tools.addToMyFriends(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
<q-btn
icon="fas fa-user-minus"
outline
color="negative"
:label="$t('friends.reject_ask_friend')"
@click="
tools.refuseReqFriends(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
</div>
<div v-else>
<q-btn
v-if="
costanti.ENABLE_FRIENDS &&
!userStore.IsMyFriendByUsername(
userStore.userprofile.username
) &&
!userStore.IsAskedFriendByUsername(
userStore.userprofile.username
)
"
icon="fas fa-user-plus"
color="primary"
dense
:label="$t('friends.ask_friend')"
@click="
tools.setRequestFriendship(
$q,
userStore.my.username,
userStore.userprofile.username,
true
)
"
/>
</div>
</div>
<div class="row justify-center">
<q-btn
v-if="
userStore.IsMyFriendByUsername(
userStore.userprofile.username
) || userStore.IsHandShakeByMe(userStore.userprofile)
"
class="text-center"
rounded
dense
icon="fas fa-ellipsis-h"
>
<q-menu>
<q-list style="min-width: 150px">
<q-item
v-if="userStore.IsHandShakeByMe(userStore.userprofile)"
clickable
v-close-popup
@click="
tools.removeFromMyHandShake(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
>
<q-item-section avatar>
<q-icon
color="negative"
name="fas fa-handshake-slash"
/>
</q-item-section>
<q-item-section>{{
$t('handshake.remove_from_myhandshake')
}}</q-item-section>
</q-item>
<q-item
v-if="
costanti.ENABLE_FRIENDS &&
userStore.IsMyFriendByUsername(
userStore.userprofile.username
)
"
clickable
icon="fas fa-user-minus"
outline
v-close-popup
@click="
tools.removeFromMyFriends(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
>
<q-item-section avatar>
<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>
<q-item
v-if="
userStore.IsMyFriendByUsername(
userStore.userprofile.username
)
"
clickable
icon="fas fa-ban"
v-close-popup
@click="
tools.blockUser(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
>
<q-item-section avatar>
<q-icon color="negative" name="fas fa-ban" />
</q-item-section>
<q-item-section>{{
$t('friends.block_user')
}}</q-item-section>
</q-item>
<q-item
v-if="
userStore.IsMyFriendByUsername(
userStore.userprofile.username
)
"
clickable
v-close-popup
@click="
tools.reportUser(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
>
<q-item-section avatar>
<q-icon color="negative" name="fas fa-flag" />
</q-item-section>
<q-item-section>{{
$t('friends.report_user')
}}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
<q-btn
v-if="
costanti.ENABLE_FRIENDS &&
userStore.IsAskedFriendByUsername(
userStore.userprofile.username
) &&
!userStore.IsMyFriendByUsername(
userStore.userprofile.username
)
"
icon="fas fa-user-minus"
outline
dense
:label="$t('friends.cancel_ask_friend_short')"
@click="
tools.cancelReqFriends(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
</div>
</div>
<q-tabs
v-model="tab"
dense
no-caps
class="bg-indigo text-white shadow-2 q-mt-sm full-width"
>
<q-tab name="attivita" label="Annunci" icon="fas fa-pencil-alt" />
<q-tab name="info" label="Info Personali" icon="fas fa-user" />
<q-tab
name="attivita"
:label="t('profile.annunci')"
icon="fas fa-pencil-alt"
/>
<q-tab
name="info"
:label="t('profile.info_pers')"
icon="fas fa-user"
/>
</q-tabs>
<q-tab-panels v-model="tab" animated keep-alive>
@@ -292,386 +626,9 @@
class="col-12 text-h8 q-mt-sm"
>
{{ userStore.userprofile.profile.biografia }}
<br />
</div>
<div>
<div class="row justify-center">
<q-btn
v-if="
userStore.userprofile.profile &&
userStore.userprofile.profile.handshake &&
userStore.userprofile.profile.handshake.length > 0
"
:label="quantiHandShake"
class="q-my-sm"
color="grey-3"
:text-color="$q.dark.isActive ? 'black' : 'black'"
rounded
icon="fas fa-handshake"
@click="
usersList.show = true;
usersList.title = 'Lista Strette di mano';
usersList.list = userStore.userprofile.profile.handshake;
"
>
</q-btn>
<q-btn
v-if="
userStore.userprofile.username !== myusername() &&
handshake_inCommon &&
handshake_inCommon.length > 0
"
:label="quanteHandShakeInCommon"
class="q-my-sm"
:text-color="$q.dark.isActive ? 'black' : 'black'"
rounded
icon="fas fa-handshake"
@click="
usersList.show = true;
usersList.title = 'Strette di mano in Comune';
usersList.list = handshake_inCommon;
"
>
</q-btn>
</div>
<div
v-if="userStore.userprofile.username !== myusername()"
class="row justify-center"
>
<q-chip
v-if="
userStore.IsHandShakeByMe(userStore.userprofile) &&
userStore.IsHandShakeByUsername(
userStore.userprofile.username
)
"
color="green"
dense
class="chipbooked shadow-5 q-pa-sm2"
size="md"
text-color="white"
icon="fas fa-handshake"
>
<span
>&nbsp;<em
class="q-pa-xxs text-white rounded-borders shadow-2"
>
{{
$t('db.both_fiducia', {
username: userStore.userprofile.username,
})
}}
</em></span
>
</q-chip>
<q-chip
v-else-if="
!userStore.IsHandShakeByMe(userStore.userprofile) &&
userStore.IsHandShakeByUsername(
userStore.userprofile.username
)
"
color="blue"
dense
class="cltexth4 chipbooked shadow-5 q-pa-sm2"
size="md"
text-color="white"
icon="fas fa-handshake"
>
<span
>&nbsp;<em
class="q-pa-xxs text-white rounded-borders shadow-2"
>
{{
$t('db.handshake_him', {
username: userStore.userprofile.username,
})
}}
</em></span
>
</q-chip>
<q-chip
v-else-if="
userStore.IsHandShakeByMe(userStore.userprofile) &&
!userStore.IsHandShakeByUsername(
userStore.userprofile.username
)
"
color="blue"
dense
class="cltexth4 chipbooked shadow-5 q-pa-sm2"
size="md"
text-color="white"
icon="fas fa-handshake"
>
<span
>&nbsp;<em
class="q-pa-xxs text-white rounded-borders shadow-2"
>
{{
$t('db.handshake_you', {
username: userStore.userprofile.username,
})
}}
</em></span
>
</q-chip>
</div>
<!--HANDSHAKE-->
<div
v-if="
!isMyRecord(userStore.userprofile.username) &&
tools.isUserOk()
"
>
<div
class="row centeritems q-pa-sm"
v-if="!userStore.IsHandShakeByMe(userStore.userprofile)"
>
<q-btn
v-if="
userStore.IsHandShakeByUsername(
userStore.userprofile.username
)
"
icon="fas fa-handshake"
color="positive"
dense
:label="$t('handshake.accept_you_too_handshake')"
@click="
tools.addToMyHandShake(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
<q-btn
v-else
icon="fas fa-handshake"
color="positive"
dense
:label="$t('handshake.accept_handshake')"
@click="
tools.addToMyHandShake(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
</div>
</div>
</div>
<div
v-if="!isMyRecord(userStore.userprofile.username)"
class="q-ma-sm"
>
<div class="row justify-center">
<div
class="row centeritems q-ma-sm q-pa-sm"
v-if="
costanti.ENABLE_FRIENDS &&
userStore.IsReqFriendByUsername(
userStore.userprofile.username
)
"
>
<q-btn
icon="fas fa-user-plus"
color="positive"
dense
:label="$t('friends.accept_friend')"
@click="
tools.addToMyFriends(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
<q-btn
icon="fas fa-user-minus"
outline
color="negative"
:label="$t('friends.reject_ask_friend')"
@click="
tools.refuseReqFriends(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
</div>
<div v-else>
<q-btn
v-if="
costanti.ENABLE_FRIENDS &&
!userStore.IsMyFriendByUsername(
userStore.userprofile.username
) &&
!userStore.IsAskedFriendByUsername(
userStore.userprofile.username
)
"
icon="fas fa-user-plus"
color="primary"
dense
:label="$t('friends.ask_friend')"
@click="
tools.setRequestFriendship(
$q,
userStore.my.username,
userStore.userprofile.username,
true
)
"
/>
</div>
</div>
<div class="row justify-center">
<q-btn
v-if="
userStore.IsMyFriendByUsername(
userStore.userprofile.username
) || userStore.IsHandShakeByMe(userStore.userprofile)
"
class="text-center"
rounded
dense
icon="fas fa-ellipsis-h"
>
<q-menu>
<q-list style="min-width: 150px">
<q-item
v-if="
userStore.IsHandShakeByMe(userStore.userprofile)
"
clickable
v-close-popup
@click="
tools.removeFromMyHandShake(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
>
<q-item-section avatar>
<q-icon
color="negative"
name="fas fa-handshake-slash"
/>
</q-item-section>
<q-item-section>{{
$t('handshake.remove_from_myhandshake')
}}</q-item-section>
</q-item>
<q-item
v-if="
costanti.ENABLE_FRIENDS &&
userStore.IsMyFriendByUsername(
userStore.userprofile.username
)
"
clickable
icon="fas fa-user-minus"
outline
v-close-popup
@click="
tools.removeFromMyFriends(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
>
<q-item-section avatar>
<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>
<q-item
v-if="
userStore.IsMyFriendByUsername(
userStore.userprofile.username
)
"
clickable
icon="fas fa-ban"
v-close-popup
@click="
tools.blockUser(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
>
<q-item-section avatar>
<q-icon color="negative" name="fas fa-ban" />
</q-item-section>
<q-item-section>{{
$t('friends.block_user')
}}</q-item-section>
</q-item>
<q-item
v-if="
userStore.IsMyFriendByUsername(
userStore.userprofile.username
)
"
clickable
v-close-popup
@click="
tools.reportUser(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
>
<q-item-section avatar>
<q-icon color="negative" name="fas fa-flag" />
</q-item-section>
<q-item-section>{{
$t('friends.report_user')
}}</q-item-section>
</q-item>
</q-list>
</q-menu>
</q-btn>
<q-btn
v-if="
costanti.ENABLE_FRIENDS &&
userStore.IsAskedFriendByUsername(
userStore.userprofile.username
) &&
!userStore.IsMyFriendByUsername(
userStore.userprofile.username
)
"
icon="fas fa-user-minus"
outline
dense
:label="$t('friends.cancel_ask_friend_short')"
@click="
tools.cancelReqFriends(
$q,
userStore.my.username,
userStore.userprofile.username
)
"
/>
</div>
</div>
<div
v-if="
userStore.userprofile &&
@@ -748,37 +705,55 @@
:canModify="false">
</CMyFieldRec>
-->
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<CLabel
v-if="!!userStore.userprofile.useraport"
:label="t('profile.aportador_him')"
>
<CMyUser
:mycontact="userStore.userprofile.useraport"
:visu="costanti.FIND_PEOPLE"
@setCmd="tools.setCmd"
>
</CMyUser>
</CLabel>
</div>
</div>
</div>
</div>
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<CLabel
v-if="!!userStore.userprofile.useraport"
:label="t('profile.aportador_him')"
>
<CMyUser
:mycontact="userStore.userprofile.useraport"
:visu="costanti.FIND_PEOPLE"
@setCmd="tools.setCmd"
>
</CMyUser>
</CLabel>
</div>
</q-tab-panel>
</q-tab-panels>
<div class="row text-center">
<q-btn
v-if="userStore.userprofile.username === myusername()"
outline
icon="fas fa-pencil-alt"
:label="$t('shared.edit_profile')"
@click.stop="gotoPage('/editprofile')"
>
</q-btn>
</div>
</div>
</div>
<q-page-sticky
position="top-right"
:offset="[18, 18]"
class="z-top"
>
<q-fab
icon="fas fa-ellipsis-v"
color="accent"
external-label
vertical-actions-align="right"
direction="down"
>
<q-fab-action
@click="tools.copyToClip($q, getlinkpage(), true)"
color="primary"
icon="fas fa-link"
label-position="right"
:label="$t('profile.share_link')"
/>
<q-fab-action
label-position="right"
v-if="userStore.userprofile.username === myusername()"
color="secondary"
icon="fas fa-user-edit"
:label="$t('shared.edit_profile')"
@click.stop="gotoPage('/editprofile')"
/>
</q-fab>
</q-page-sticky>
<q-dialog v-model="showPic" full-height full-width>
<img :src="getImgUser()" :alt="username" class="full-width" />
</q-dialog>
@@ -789,7 +764,7 @@
>
<div class="column">
<q-btn
v-if="userStore.userprofile.username === myusername()"
v-if="userStore.userprofile.username === myusername() && false"
flat
round
icon="fas fa-ellipsis-h"
@@ -821,17 +796,6 @@
@click.stop="tools.copyToClip($q, getlinkpage(), true)"
>
</q-btn>-->
<q-page-sticky position="top-right" :offset="[18, 18]">
<q-btn
fab
glossy
class="semi-transparent"
icon="fas fa-link"
color="primary"
@click="tools.copyToClip($q, getlinkpage(), true)"
/>
</q-page-sticky>
</div>
</div>
</div>