Circuit go on...

This commit is contained in:
paoloar77
2022-08-30 17:00:32 +02:00
parent a3c904c2ac
commit 1f414e19ea
24 changed files with 360 additions and 183 deletions

View File

@@ -19,6 +19,7 @@ export const shared_consts = {
QUERYTYPE_REFUSED_USER_GRP: 2,
ALL_SAW_AND_ACCEPTED: 3,
QUERYTYPE_CIRCUIT: 10,
QUERYTYPE_REFUSED_USER_CIRCUIT: 12,
FILTER_EXTRALIST_NOT_REGISTERED: 1,
FILTER_EXTRALIST_NOT_CONTACTED: 2,
@@ -75,6 +76,13 @@ export const shared_consts = {
REMOVEADMIN_OFMYGROUP: 1185,
},
CIRCUITCMD: {
REQ: 2000,
SET: 2001,
REMOVE_FROM_MYLIST: 2144,
DELETE: 2170,
},
PUBTOSHARE: {
ALL: 0,
ONLY_GROUPS_FOLLOW: 1,
@@ -113,8 +121,8 @@ export const shared_consts = {
TABLES_WITH_SORTING: ['mybachecas', 'myhosps'],
TABLES_REC_ID: ['skills', 'goods', 'subskills', 'myskills', 'mybachecas', 'myhosps', 'mygoods'],
// costanti.VISUTABLE_SCHEDA_USER, VISUTABLE_SCHEDA_GROUP, VISUTABLE_USER_TABGROUP
VERTIC_SHOW_GRID: [-1, 2, -3, -4],
// costanti.VISUTABLE_SCHEDA_USER, VISUTABLE_SCHEDA_GROUP, VISUTABLE_USER_TABGROUP, VISUTABLE_USER_TABCIRCUIT
VERTIC_SHOW_GRID: [-1, 2, -3, -4, -5],
TABLES_UPDATE_LASTIFIED: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'bots'],
TABLES_FINDER: ['myskills', 'mybachecas', 'myhosps', 'mygoods', 'mygroups'],

View File

@@ -1014,6 +1014,16 @@ export default defineComponent({
},
}
} else if (props.table === toolsext.TABCIRCUITS) {
let lk_tab = 'circuits'
let lk_LF = 'idapp'
let lk_FF = 'idapp'
let lk_as = 'circuit'
let af_objId_tab = 'myId'
return {}
} else if (props.table === toolsext.TABMYGOODS) {
return {
lookup1: {

View File

@@ -980,6 +980,7 @@ export default defineComponent({
watch(() => userStore.updateTables, (newval, oldval) => {
if (newval && (myvertical.value === costanti.VISUTABLE_USER_TABGROUP ||
myvertical.value === costanti.VISUTABLE_USER_TABCIRCUIT ||
myvertical.value === costanti.VISUTABLE_SCHEDA_GROUP ||
myvertical.value === costanti.VISUTABLE_SCHEDA_USER ||
(props.showType === costanti.SHOW_USERINFO))) {

View File

@@ -211,7 +211,8 @@
<div v-for="(row, index) in serverData" :key="index" class="caption">
<div
v-if="showType === costanti.SHOW_MYCARD || (myvertical !== costanti.VISUTABLE_USER_TABGROUP && myvertical === costanti.VISUTABLE_LISTA && shared_consts.TABLES_VISU_CMYSRECCARD.includes(tablesel)) ">
v-if="showType === costanti.SHOW_MYCARD || (myvertical !== costanti.VISUTABLE_USER_TABGROUP &&
myvertical !== costanti.VISUTABLE_USER_TABCIRCUIT && myvertical === costanti.VISUTABLE_LISTA && shared_consts.TABLES_VISU_CMYSRECCARD.includes(tablesel)) ">
<div v-if="row && shared_consts.TABLES_WITH_DATE.includes(tablesel)">

View File

@@ -83,7 +83,7 @@ export default defineComponent({
}
function condividipag() {
const msg = self.location.host + tools.getPathByCircuit(myrec.value, props.table)
const msg = self.location.host + tools.getPathByTableAndRec(props.table, myrec.value)
return tools.copyStringToClipboard($q, msg, true)
}

View File

@@ -38,6 +38,17 @@
</div>
</div>
<div v-else-if="mycol.name === 'path'">
</div>
<div v-else-if="mycol.name === 'symbol'">
<div class="text-bacheca">
Simbolo:
{{ tools.getValue(myrec, mycol.field, mycol.subfield) }}
</div>
</div>
<div v-else-if="mycol.name === 'longdescr'">
<div class="text-bacheca">
{{ tools.getValue(myrec, mycol.field, mycol.subfield) }}

View File

@@ -2,13 +2,13 @@
<div v-if="tools.isUserOk()">
<div v-if="circuit">
<q-item class="q-my-sm" clickable>
<q-item-section avatar @click="naviga(tools.getPathByCircuit(circuit, table))">
<q-item-section 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-avatar>
</q-item-section>
<q-item-section @click="naviga(tools.getPathByCircuit(circuit, table))">
<q-item-section @click="naviga(tools.getPathByTableAndRec(table, circuit))">
<q-item-label><strong>{{ circuit.name }}</strong> ({{ circuit.subname }})
</q-item-label>
<q-item-label v-if="circuit.longdescr" caption lines="3"><em>{{ circuit.longdescr }}</em></q-item-label>
@@ -49,10 +49,10 @@
</q-list>
<q-list v-else-if="(!userStore.IsMyGroupByGroupname(circuit.groupnameId) && userStore.IsAskedGroupByGroupname(circuit.groupnameId) && !userStore.IsRefusedGroupByGroupname(circuit.groupnameId))" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), false, circuit.groupnameId)">
<q-item-section>{{ $t('groups.refuse_ask_group') }}</q-item-section>
<q-item-section>{{ $t('shared.refuse_ask') }}</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), false, circuit.groupnameId)">
<q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section>
<q-item-section>{{ $t('shared.cancel_ask') }}</q-item-section>
</q-item>
</q-list>
<q-list v-else-if="userStore.IsMyGroupByGroupname(circuit.groupnameId)" style="min-width: 200px">
@@ -90,11 +90,11 @@
<q-list style="min-width: 150px">
<q-item clickable icon="fas fa-user-minus" v-close-popup
@click="tools.setCmd($q, shared_consts.GROUPSCMD.REFUSE_REQ_GROUP, myusername(), '', circuit.groupnameId)">
<q-item-section>{{ $t('groups.refuse_ask_group') }}</q-item-section>
<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.GROUPSCMD.CANCEL_REQ_GROUP, myusername(), '', circuit.groupnameId)">
<q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section>
<q-item-section>{{ $t('shared.cancel_ask') }}</q-item-section>
</q-item>
</q-list>
</q-menu>

View File

@@ -49,10 +49,10 @@
</q-list>
<q-list v-else-if="(!userStore.IsMyGroupByGroupname(grp.groupname) && userStore.IsAskedGroupByGroupname(grp.groupname) && !userStore.IsRefusedGroupByGroupname(grp.groupname))" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), false, grp.groupname)">
<q-item-section>{{ $t('groups.refuse_ask_group') }}</q-item-section>
<q-item-section>{{ $t('shared.refuse_ask') }}</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), false, grp.groupname)">
<q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section>
<q-item-section>{{ $t('shared.cancel_ask') }}</q-item-section>
</q-item>
</q-list>
<q-list v-else-if="userStore.IsMyGroupByGroupname(grp.groupname)" style="min-width: 200px">
@@ -90,11 +90,11 @@
<q-list style="min-width: 150px">
<q-item clickable icon="fas fa-user-minus" v-close-popup
@click="tools.setCmd($q, shared_consts.GROUPSCMD.REFUSE_REQ_GROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.refuse_ask_group') }}</q-item-section>
<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.GROUPSCMD.CANCEL_REQ_GROUP, myusername(), '', grp.groupname)">
<q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section>
<q-item-section>{{ $t('shared.cancel_ask') }}</q-item-section>
</q-item>
</q-list>
</q-menu>
@@ -112,10 +112,10 @@
</q-list>
<q-list v-else-if="(!userStore.IsMyGroupByGroupname(grp.groupname) && userStore.IsAskedGroupByGroupname(grp.groupname))" style="min-width: 200px">
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REFUSE_REQ_GROUP, myusername(), false, grp.groupname)">
<q-item-section>{{ $t('groups.refuse_ask_group') }}</q-item-section>
<q-item-section>{{ $t('shared.refuse_ask') }}</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="tools.setCmd($q, shared_consts.GROUPSCMD.REQGROUP, myusername(), false, grp.groupname)">
<q-item-section>{{ $t('groups.cancel_ask_group') }}</q-item-section>
<q-item-section>{{ $t('shared.cancel_ask') }}</q-item-section>
</q-item>
</q-list>
<q-list v-else-if="userStore.IsMyGroupByGroupname(grp.groupname)" style="min-width: 200px">

View File

@@ -322,7 +322,8 @@ export default defineComponent({
if (col.value && col.value.allowchar === costanti.ALLOWCHAR_CODE) {
myvalue.value = tools.removespaces(newval)
}
console.log('popypedit: changevalRec', newval)
// console.log('popypedit: changevalRec', newval)
// console.log('row', props.row, 'col', props.mycol, 'newval', newval)
// console.log('row[col.value.name]', props.row[col.value.name])
if (props.type === costanti.FieldType.image) {

View File

@@ -78,7 +78,7 @@
<q-icon color="negative" name="fas fa-user-minus"/>
</q-item-section>
<q-item-section>{{ $t('groups.refuse_ask_group') }}</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)">
@@ -86,7 +86,44 @@
<q-icon color="negative" name="fas fa-user-minus"/>
</q-item-section>
<q-item-section>{{ $t('groups.cancel_ask_group_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_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, groupname)">
<q-item-section avatar>
<q-icon color="positive" name="fas fa-user-plus"/>
</q-item-section>
<q-item-section>
{{ $t('groups.accept_circuit') }}
</q-item-section>
</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-section avatar>
<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-section avatar>
<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>
</q-list>
</q-menu>

View File

@@ -624,7 +624,7 @@ const baseroutes: IListRoutes[] = [
},{
active: true,
order: 137,
path: '/circuit/:name',
path: '/circuit/:path',
materialIcon: 'fas fa-user',
name: 'proj.circuit2',
component: () => import('@/views/user/mycircuit/mycircuit.vue'),

View File

@@ -894,6 +894,7 @@ export interface ICircuit {
_id: number
groupnameId: string
name: string
path: string
subname: string
longdescr: string
systemUserDescr: string

View File

@@ -105,7 +105,6 @@ export interface IUserProfile {
refused_circuits: any[]
listUserAccounts: IAccount[]
manage_mycircuits?: ICircuit[]
}
export interface IPaymentType {
@@ -118,7 +117,6 @@ export interface IUserAport {
profile?: IUserProfile
}
export interface IUserFields {
_id: string
ind_order?: number

View File

@@ -197,11 +197,9 @@ const msg_enUs = {
domanda_ask_friend: 'Chiedere l\'Amicizia a {username}?',
domanda_ask_group: 'Chiedere l\'invito al Gruppo {groupname}?',
askedtofriend: 'Chiesto l\'Amicizia a {username}',
askedtogroup: 'Chiesto l\'invito al Gruppo {groupname}',
domanda_revoke_friend: 'Revocare la richiesta di Amicizia a {username}?',
domanda_revoke_group: 'Revocare la richiesta al gruppo {groupname}?',
revoketofriend: 'Revocato la richiesta di Amicizia a {username}',
revoketogroup: 'Revocato la richiesta d\'invito al gruppo {groupname}',
domanda_cancel_req_friend: 'Annullare la richiesta di Amicizia a {username}?',
domanda_cancel_req_group: 'Annullare la richiesta d\'invito di {username} al gruppo {groupname}?',
cancel_req_friend: 'Annullata la richiesta di Amicizia a {username}',
@@ -213,7 +211,8 @@ const msg_enUs = {
domanda_blockgroup: 'Bloccare il gruppo {groupname}?',
blockedfriend: 'Utente Bloccato',
domanda: 'Domanda',
askedtogroup: 'Chiesto l\'invito al Gruppo {groupname}',
revoketogroup: 'Revocato la richiesta d\'invito al gruppo {groupname}',
},
components: {
authentication: {
@@ -913,9 +912,9 @@ const msg_enUs = {
accept_group: 'Accetta la richiesta',
remove_from_mygroups: 'Rimuovi dal Gruppo',
block_group: 'Blocca Gruppo',
cancel_ask_group: 'Annulla la richiesta',
cancel_ask_group_short: 'Annulla richiesta',
refuse_ask_group_short: 'Rifiuta la richiesta',
cancel_ask: 'Annulla la richiesta',
cancel_ask_short: 'Annulla richiesta',
refuse_ask_short: 'Rifiuta la richiesta',
pwd: 'Password per accedere',
},
finder: {

View File

@@ -836,9 +836,9 @@ const msg_es = {
accept_group: 'Accetta la richiesta',
remove_from_mygroups: 'Rimuovi dal Gruppo',
block_group: 'Blocca Gruppo',
cancel_ask_group: 'Annulla la richiesta',
cancel_ask_group_short: 'Annulla richiesta',
refuse_ask_group_short: 'Rifiuta la richiesta',
cancel_ask: 'Annulla la richiesta',
cancel_ask_short: 'Annulla richiesta',
refuse_ask_short: 'Rifiuta la richiesta',
pwd: 'Password per accedere',
},
finder: {

View File

@@ -201,32 +201,30 @@ const msg_it = {
friendsadded: 'Aggiunto alla lista di Amici',
domanda_removefriend: 'Rimuovi dagli Amici {username}?',
domanda_exit_fromgroup: 'Uscire dal Gruppo {groupname} ?',
domanda_remove_group: 'Sicuro di voler Eliminare il Gruppo {groupname} ?',
domanda_removegroup: 'Rimuovere dal Gruppo {username} ?',
domanda_addadminofmygroup: 'Aggiungere {username} come Amministratore del Gruppo {groupname} ?',
domanda_removeadminofmygroup: 'Rimuovere {username} dall\' incarico di Amministratore del Gruppo {groupname} ?',
removedfriend: 'Rimosso dalla lista di Amici',
removedgroup: 'Rimosso dal Gruppo',
addedtoadmin: 'Aggiunto {username} come amministratore',
removedtoadmin: 'Rimosso {username} come amministratore',
refusedgroup: 'Rifiutato a {username} la richiesta di entrare nel Gruppo',
youarerefusedgroup: 'Ti è stato rifiutata la richiesta di entrare in questo Gruppo (per info chiedi all\'amministratore del gruppo)',
youarerefusedcircuit: 'Ti è stato rifiutata la richiesta di entrare in questo Circuito (per info chiedi all\'amministratore del gruppo)',
deletedgroup: 'Gruppo Eliminato',
domanda_addtofriend: 'Aggiungere agli amici {username}?',
domanda_addtogroup: 'Aggiungi {username} al gruppo {groupname}?',
domanda_addtocircuit: 'Aggiungi {username} al Circuito {name}?',
addedfriend: 'Aggiunto alla lista di Amici',
addedgroup: 'Aggiunto al Gruppo',
addedcircuit: 'Aggiunto al Circuito {name}',
domanda_trusted: 'Accettare la Fiducia a {username}?',
trusted: 'Accettato la Fiducia',
domanda_ask_friend: 'Chiedere l\'Amicizia a {username}?',
domanda_ask_group: 'Chiedere l\'invito al Gruppo {groupname}?',
askedtofriend: 'Chiesto l\'Amicizia a {username}',
askedtogroup: 'Chiesto l\'invito al Gruppo {groupname}',
domanda_revoke_friend: 'Revocare la richiesta di Amicizia a {username}?',
domanda_revoke_group: 'Revocare la richiesta al gruppo {groupname}?',
domanda_refuse_group: 'Rifiutare la richiesta di {username} per entrare nel gruppo {groupname}?',
revoketofriend: 'Revocato la richiesta di Amicizia a {username}',
revoketogroup: 'Revocato la richiesta d\'invito al gruppo {groupname}',
domanda_cancel_req_friend: 'Annullare la richiesta di Amicizia a {username}?',
domanda_cancel_req_group: 'Annullare la richiesta d\'invito di {username} al gruppo {groupname}?',
cancel_req_friend: 'Annullata la richiesta di Amicizia a {username}',
@@ -241,6 +239,11 @@ const msg_it = {
blockedfriend: 'Utente Bloccato',
unblockedfriend: 'Utente Sbloccato',
domanda: 'Domanda',
askedtogroup: 'Chiesto l\'invito al Gruppo {groupname}',
revoketogroup: 'Revocato la richiesta d\'invito al gruppo {groupname}',
domanda_removegroup: 'Rimuovere dal Gruppo {username} ?',
removedgroup: 'Rimosso dal Gruppo',
domanda_remove_group: 'Sicuro di voler Eliminare il Gruppo {groupname} ?',
},
components: {
authentication: {
@@ -1018,33 +1021,36 @@ const msg_it = {
reject_ask_friend: 'Rifiuta l\'Amicizia',
report_user: 'Segnala Utente',
},
groups: {
shared: {
info1: 'Info',
subscribes: 'Membri',
cancel_ask: 'Annulla la richiesta',
refuse_ask: 'Rifiuta la richiesta (con avviso)',
cancel_ask_short: 'Annulla richiesta',
refuse_ask_short: 'Rifiuta la richiesta',
members: 'membri',
admin: 'amministratore',
admins: 'Amministratori',
},
groups: {
info: 'Informazioni su questo gruppo',
member: 'membro',
members: 'membri',
accepted: 'Ingresso Accettato',
refused: 'Ingresso Rifiutato',
deleted: 'Cancellato',
blocked: 'Bloccato',
removed: 'Rimosso',
admin: 'amministratore',
admins: 'Amministratori',
createdby: 'Creato da {username} in data {date}',
lastmodify: 'Ultima modifica {date}',
subscribes: 'Membri',
ask_group: 'Chiedi di entrare nel Gruppo',
exit_group: 'Esci dal Gruppo',
delete_group: 'Elimina il Gruppo',
accept_group: 'Accetta la richiesta',
accept_circuit: 'Accetta la richiesta',
addasadmin: 'Aggiungi come Admin del Gruppo',
remove_as_admin: 'Rimuovi come Admin del Gruppo',
remove_from_mygroups: 'Rimuovi dal Gruppo',
block_group: 'Blocca Gruppo',
cancel_ask_group: 'Annulla la richiesta',
refuse_ask_group: 'Rifiuta la richiesta (con avviso)',
cancel_ask_group_short: 'Annulla richiesta',
refuse_ask_group_short: 'Rifiuta la richiesta',
pwd: 'Password per accedere',
private: 'Privato',
hidden: 'Nascosto',
@@ -1089,6 +1095,7 @@ const msg_it = {
},
circuit: {
name: 'Nome Circuito',
path: 'Nome Pagina',
subname: 'SottoNome',
descr: 'Descrizione',
systemUserDescr: 'Descr Utente di Sistema',
@@ -1114,6 +1121,19 @@ const msg_it = {
durata_deper: 'Durata Dep.',
img_logo: 'NomeFile Logo',
regulation: 'Regolamento',
domanda_ask: 'Chiedere l\'invito al Circuito {name}?',
domanda_revoke: 'Revocare la richiesta al Circuito {name}?',
askedto: 'Chiesto l\'invito al Circuito {name}',
revoketo: 'Revocato la richiesta d\'invito al Circuito {name}',
domanda_remove: 'Rimuovere dal Circuito {username} ?',
removed: 'Rimosso dal Circuito',
domanda_removerecord: 'Sicuro di voler Eliminare il Circuito {name} ?',
deleted: 'Circuito {name} Eliminato',
delete: 'Elimina il Circuito',
ask: 'Chiedi di entrare nel Circuito',
exit: 'Esci dal Circuito',
accept: 'Accetta la richiesta',
},
account: {

View File

@@ -26,7 +26,6 @@ export const useCircuitStore = defineStore('CircuitStore', {
getters: {
},
actions: {

View File

@@ -168,6 +168,7 @@ export const costanti = {
VISUTABLE_SCHEDA_USER: -1,
VISUTABLE_SCHEDA_GROUP: -3,
VISUTABLE_USER_TABGROUP: -4,
VISUTABLE_USER_TABCIRCUIT: -5,
DIR_UPLOAD: 'upload/', // upload/
@@ -203,8 +204,9 @@ export const costanti = {
SHOW_ALL: 50,
REQ_ADD_USER_TO_GROUP: 40,
REQ_REMOVE_USER_TO_GROUP: 41,
REQ_ADD_USER_TO_GROUP: 100,
REQ_REMOVE_USER_TO_GROUP: 101,
REQ_ADD_USER_TO_CIRCUIT: 110,
FILTER_NESSUNO: 0,
FILTER_TUTTI: -100,

View File

@@ -2384,6 +2384,7 @@ export const colTableCircuitComplete = [
AddCol({ name: 'Num', label_trans: 'circuit.num', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'groupnameId', label_trans: 'circuit.groupnameId' }), // da togliere poi
AddCol({ name: 'name', label_trans: 'circuit.name' }),
AddCol({ name: 'path', label_trans: 'circuit.path' }),
AddCol({ name: 'subname', label_trans: 'circuit.subname' }),
AddCol({ name: 'longdescr', label_trans: 'circuit.descr', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'regulation', label_trans: 'circuit.regulation', fieldtype: costanti.FieldType.html }),
@@ -2438,6 +2439,7 @@ export const colTableCircuitComplete = [
export const colTableCircuit = [
AddCol({ name: 'groupnameId', label_trans: 'circuit.groupnameId' }), // da togliere poi
AddCol({ name: 'name', label_trans: 'circuit.name' }),
AddCol({ name: 'path', label_trans: 'circuit.path' }),
AddCol({ name: 'subname', label_trans: 'circuit.subname' }),
AddCol({ name: 'longdescr', label_trans: 'circuit.descr', fieldtype: costanti.FieldType.html }),
AddCol({ name: 'systemUserId', label_trans: 'circuit.systemUserId', fieldtype: costanti.FieldType.select, jointable: 'users', }),

View File

@@ -12,7 +12,7 @@ import {
ITodo,
IUserFields,
Privacy,
TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField,
TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField, IAccount,
} from '@model'
import { addToDate } from '@quasar/quasar-ui-qcalendar'
@@ -4734,6 +4734,31 @@ export const tools = {
},
addToMyCircuits($q: any, username: string, name: string) {
const userStore = useUserStore()
const notifStore = useNotifStore()
$q.dialog({
message: t('db.domanda_addtocircuit', { username, name }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setCircuitCmd($q, t, username, name, shared_consts.CIRCUITCMD.SET, true)
.then((res: any) => {
if (res) {
notifStore.updateNotification = true
if (userStore.my.profile.listUserAccounts)
userStore.my.profile.listUserAccounts = [...userStore.my.profile.listUserAccounts, res]
else
userStore.my.profile.listUserAccounts = [res]
tools.showPositiveNotif($q, t('db.addedcircuit', { name }))
}
})
})
},
addToMyGroups($q: any, username: string, groupnameDest: string) {
const userStore = useUserStore()
@@ -4871,7 +4896,7 @@ export const tools = {
const userStore = useUserStore()
$q.dialog({
message: domanda ? domanda : t('db.domanda_remove_group', { username }),
message: domanda ? domanda : t('db.domanda_remove_group', { groupname: groupnameDest }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
@@ -5162,6 +5187,103 @@ export const tools = {
return risultato
},
setRequestCircuit($q: any, username: string, name: string, value: boolean) {
const userStore = useUserStore()
let msg = ''
if (value) {
msg = t('circuit.domanda_ask', { name })
} else {
msg = t('circuit.domanda_revoke', { name })
}
$q.dialog({
message: msg,
ok: {
label: t('dialog.yes'),
push: true
},
cancel: {
label: t('dialog.cancel')
},
title: t('db.domanda')
}).onOk(() => {
userStore.setCircuitCmd($q, t, username, name, shared_consts.CIRCUITCMD.REQ, value)
.then((res: any) => {
if (res) {
if (value) {
// ADD to req
userStore.my.profile.asked_circuits.push(res)
tools.showPositiveNotif($q, t('circuit.askedto', { name }))
} else {
// REMOVE to req
userStore.my.profile.asked_circuits = userStore.my.profile.asked_circuits.filter((rec: ICircuit) => rec.name !== name)
tools.showPositiveNotif($q, t('circuit.revoketo', { name }))
}
} else {
tools.showNegativeNotif($q, t('db.recfailed'))
}
})
})
},
removeFromMyCircuits($q: any, username: string, name: string, domanda: any = '') {
const userStore = useUserStore()
$q.dialog({
message: domanda ? domanda : t('circuit.domanda_remove', { username }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setCircuitCmd($q, t, username, name, shared_consts.CIRCUITCMD.REMOVE_FROM_MYLIST, null).then((res) => {
if (res) {
if (userStore.my.profile.listUserAccounts) {
userStore.my.profile.listUserAccounts = userStore.my.profile.listUserAccounts.filter((rec: IAccount) => rec.name !== name)
tools.showPositiveNotif($q, t('circuit.removed'))
}
}
})
})
},
DeleteCircuit($q: any, username: string, name: string, domanda: any = '') {
const userStore = useUserStore()
$q.dialog({
message: domanda ? domanda : t('db.domanda_removerecord', { name }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
}).onOk(() => {
userStore.setCircuitCmd($q, t, username, name, shared_consts.CIRCUITCMD.DELETE, null).then((res) => {
if (res) {
if (userStore.my.profile.manage_mycircuits) {
userStore.my.profile.manage_mycircuits = userStore.my.profile.manage_mycircuits.filter((rec: ICircuit) => rec.name !== name)
tools.showPositiveNotif($q, t('circuit.deleted', { name } ))
}
}
})
})
},
iCanShowCircuitsMember(circuit: ICircuit) {
/* if (grp && grp.visibility!.includes(shared_consts.Visibility_Group.PRIVATE)) {
// Only if I am part of this group
return this.iAmPartOfThisGroup(grp)
} */
return true
},
iAmAdminCircuit(name: string) {
const userStore = useUserStore()
@@ -5358,6 +5480,12 @@ export const tools = {
tools.refuseReqFriends($q, username, dest)
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND) {
tools.cancelReqFriends($q, username, dest)
} else if (cmd === shared_consts.CIRCUITCMD.SET) {
tools.addToMyCircuits($q, username, dest)
} else if (cmd === shared_consts.CIRCUITCMD.REQ) {
tools.setRequestCircuit($q, username, dest, value)
} else if (cmd === shared_consts.CIRCUITCMD.DELETE) {
tools.DeleteCircuit($q, username, dest)
}
},
isCallable(anything: any) {
@@ -5656,29 +5784,32 @@ export const tools = {
},
getToByCol(col: IColGridTable, table: string, rec: any) {
if (shared_consts.TABLES_REC_ID.includes(table)) {
return '/' + tools.getDirectoryByTable(table) + '/' + rec['_id']
} else if (table === toolsext.TABMYGROUPS) {
return '/grp/' + rec.groupname
} else if (table === toolsext.TABCIRCUITS) {
return '/circuit/' + rec.name
}
return ''
return this.getPathByTableAndRec(table, rec)
},
getPathByGroup(grp: any, table: string) {
return '/' + tools.getDirectoryByTable(table) + '/' + grp.groupname
},
getPathByCircuit(grp: any, table: string) {
return '/' + tools.getDirectoryByTable(table) + '/' + grp.name
getPathByCircuit(circuit: any, table: string) {
return '/' + tools.getDirectoryByTable(table) + '/' + circuit.path
},
getPathByTable(table: string, pagename: string) {
return '/' + tools.getDirectoryByTable(table) + '/' + pagename
},
getPathByTableAndRec(table: string, rec: any) {
if (shared_consts.TABLES_REC_ID.includes(table)) {
return '/' + tools.getDirectoryByTable(table) + '/' + rec['_id']
} else if (table === toolsext.TABMYGROUPS) {
return this.getPathByGroup(rec, table)
} else if (table === toolsext.TABCIRCUITS) {
return this.getPathByCircuit(rec, table)
}
return ''
},
getAportadorSolidario() {
const userStore = useUserStore()
return userStore.my ? userStore.my.aportador_solidario : ''

View File

@@ -212,16 +212,6 @@ export const useUserStore = defineStore('UserStore', {
return false
},
IsMyCircuitByGroupname(mycircuit: string): boolean {
/*if (this.my.profile.mycircuit)
return this.my.profile.mycircuit.findIndex((rec) => rec.name === name) >= 0
else
return false
*/
},
IsAskedFriendByUsername(username: string): boolean {
if (this.my.profile.asked_friends)
return this.my.profile.asked_friends.findIndex((rec) => rec.username === username) >= 0
@@ -297,6 +287,32 @@ export const useUserStore = defineStore('UserStore', {
return ''
},
IsAskedCircuitByName(groupname: string): boolean {
if (this.my.profile.asked_circuits)
return this.my.profile.asked_circuits.findIndex((rec: IMyGroup) => rec.groupname === groupname) >= 0
else
return false
},
IsMyCircuitByName(name: string): boolean {
if (this.my.profile.manage_mycircuits)
return this.my.profile.manage_mycircuits.findIndex((rec: ICircuit) => rec.name === name) >= 0
else
return false
},
IsRefusedCircuitByName(name: string): boolean {
if (this.my.profile.refused_circuits)
return this.my.profile.refused_circuits.findIndex((rec: ICircuit) => rec.name === name) >= 0
else
return false
},
getImgByCircuit(circ: ICircuit): string {
try {
@@ -1092,9 +1108,9 @@ export const useUserStore = defineStore('UserStore', {
},
async loadCIrcuit(name: string, idnotif: string) {
async loadCIrcuit(path: string, idnotif: string) {
const data = {
name,
path,
idnotif,
}
@@ -1194,6 +1210,18 @@ export const useUserStore = defineStore('UserStore', {
},
async setCircuitCmd($q: any, t: any, usernameOrig: string, name: string, cmd: number, value: any) {
return Api.SendReq('/users/circuits/cmd', 'POST', { usernameOrig, name, cmd, value })
.then((res) => {
this.updateTables = true
return res.data
}).catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'))
return {}
})
},
async sendMsgToBotTelegram($q: any, t: any, mydata: IMsgGlobParam, showmsgsent: boolean) {
return Api.SendReq('/users/mgt', 'POST', { mydata })
.then((res) => {

View File

@@ -35,7 +35,7 @@ export default defineComponent({
const animation = ref('fade')
const name = computed(() => $route.params.name ? $route.params.name.toString() : '')
const path = computed(() => $route.params.path ? $route.params.path.toString() : '')
const idnotif = computed(() => $route.query.idnotif ? $route.query.idnotif.toString() : '')
const filtroutente = ref(<any[]>[])
@@ -58,6 +58,11 @@ export default defineComponent({
const cities = ref(<ICity[]>[])
watch(() => path.value, (to: any, from: any) => {
loadCircuit()
})
function profile() {
return userStore.my.profile
}
@@ -68,12 +73,11 @@ export default defineComponent({
async function loadCircuit() {
// Carica il profilo di quest'utente
if (name.value) {
await userStore.loadCIrcuit(name.value, idnotif.value).then(({ data, status }: {data: any, status: number}) => {
if (path.value) {
await userStore.loadCIrcuit(path.value, idnotif.value).then(({ data, status }: {data: any, status: number}) => {
console.log('data', data)
if (data) {
circuit.value = data.circuit
cities.value = data.cities
notifStore.setAsRead(idnotif.value)
users_in_circuit.value = data.users_in_circuit
} else {
@@ -90,23 +94,18 @@ export default defineComponent({
}
}
watch(() => name.value, (to: any, from: any) => {
loadCircuit()
})
async function mounted() {
loading.value = true
await loadCircuit()
searchList.value = []
filtercustom.value = [{ 'profile.mycircuits': { $elemMatch: {name: {$eq: name.value }} } } ]
filtercustom.value = [{ 'profile.listUserAccounts': { $elemMatch: {circuitId: {$eq: path.value }} } } ]
arrfilterand.value = []
filtercustom_rich.value = []
//++TODO: sistemare la filtercustom ... richieste...
}
function getImgGrp() {
function getImgCircuit() {
if (circuit.value)
return userStore.getImgByCircuit(circuit.value)
else
@@ -157,7 +156,8 @@ export default defineComponent({
function extraparams_refused() {
return {
querytype: shared_consts.QUERYTYPE_REFUSED_USER_CIRCUIT,
myid: circuit.value ? circuit.value._id : '',
}
}
@@ -181,7 +181,7 @@ export default defineComponent({
costanti,
circuit,
shared_consts,
getImgGrp,
getImgCircuit,
checkifShow,
filtroutente,

View File

@@ -8,7 +8,7 @@
Occorre prima registrarsi alla App </h3>
</div>
<div v-else>
<h3>Gruppo non Esistente</h3>
<h3>Circuito non Esistente</h3>
</div>
</div>
<div v-else>
@@ -18,19 +18,16 @@
</div>
<div>
<div v-if="circuit.longdescr" class="fit column no-wrap justify-evenly items-center content-start">
<div v-if="circuit.name" class="fit column no-wrap justify-evenly items-center content-start">
<div class="">
<q-avatar size="140px">
<q-img :src="getImgGrp()" :alt="circuitname()" img-class="imgprofile" height="140px" @click="showPic = true"/>
<q-img :src="getImgCircuit()" :alt="circuit.name" img-class="imgprofile" height="140px" @click="showPic = true"/>
</q-avatar>
</div>
<div class="text-h6">
<span v-if="checkifShow('name')"> {{ circuit.title }}</span>
</div>
<div v-if="circuit.title !== circuit.name" class="col-12 text-h7 text-blue text-shadow-2">
{{ circuit.name }}
<span v-if="checkifShow('name')"> {{ circuit.name }}</span>
</div>
<q-banner
@@ -47,7 +44,7 @@
<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('circuits.ask_circuit')"
color="primary" :label="$t('circuit.ask')"
@click="tools.setRequestCircuit($q, userStore.my.username, circuit.name, true)"
/>
<q-btn
@@ -60,15 +57,15 @@
<q-item-section avatar>
<q-icon color="negative" name="fas fa-user-minus"/>
</q-item-section>
<q-item-section>{{ $t('circuits.exit_circuit') }}</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.CIRCUITSCMD.DELETE_CIRCUIT, userStore.my.username, '', circuit.name)">
<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('circuits.delete_circuit') }}</q-item-section>
<q-item-section>{{ $t('circuit.delete') }}</q-item-section>
</q-item>
</q-list>
@@ -80,13 +77,13 @@
<q-btn
v-if="userStore.IsAskedCircuitByName(circuit.name) && !userStore.IsMyCircuitByName(circuit.name)"
icon="fas fa-user-minus"
flat :label="$t('circuits.cancel_ask_circuit_short')"
flat :label="$t('shared.cancel_ask_short')"
@click="tools.cancelReqCircuits($q, userStore.my.username, circuit.name)"
/>
</div>
</div>
<div v-if="circuit.longdescr" class="no-wrap justify-evenly items-center content-start">
<div v-if="circuit.name" class="no-wrap justify-evenly items-center content-start">
<!--
@@ -100,11 +97,10 @@
-->
<q-tabs v-model="tabgrp" class="text-blue">
<q-tab :label="t('circuits.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab v-if="!!circuit.note" :label="t('circuits.page')" name="page" icon="fas fa-file-word"></q-tab>
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab v-if="!!circuit.note" :label="t('circuit.page')" name="page" icon="fas fa-file-word"></q-tab>
<q-tab v-if="tools.iCanShowCircuitsMember(circuit) || tools.iAmAdminCircuit(name)"
:label="t('circuits.subscribes')" name="members" icon="fas fa-users"></q-tab>
<q-tab :label="t('circuits.circuits')" name="circuits" icon="fas fa-coins"></q-tab>
:label="t('shared.subscribes')" name="members" icon="fas fa-users"></q-tab>
</q-tabs>
<q-tab-panels v-model="tabgrp" animated>
@@ -112,66 +108,33 @@
<div>
<q-card>
<q-card-section>
<div class="text-h6">{{ t('circuits.info') }}</div>
<div class="text-h6">{{ t('circuit.info') }}</div>
</q-card-section>
<q-separator/>
<q-card-section>
<div class="element">
<div v-if="circuit.createdBy" class="element">
<q-icon name="fas fa-lightbulb"></q-icon>
{{ $t('circuits.createdby', {
{{ $t('circuit.createdby', {
username: circuit.createdBy,
date: tools.getstrDateYY(circuit.date_created), })
}}
</div>
<div v-if="!!circuit.date_updated && circuit.date_updated !== circuit.createdBy" class="element">
<q-icon name="fas fa-pencil-alt"></q-icon>
{{ $t('circuits.lastmodify', {
{{ $t('circuit.lastmodify', {
date: tools.getstrDateYY(circuit.date_updated), })
}}
</div>
<div v-if="circuit.visibility.includes(shared_consts.Visibility_Circuit.PRIVATE)" class="row">
<div class="q-pa-xs">
<q-icon name="fas fa-lock"></q-icon>
</div>
<div>
<div class="title_param"> {{ $t('circuits.private') }}</div>
{{ $t('circuits.private_descr') }}
</div>
</div>
<div v-if="circuit.visibility.includes(shared_consts.Visibility_Circuit.HIDDEN)" class="row">
<div class="q-pa-xs">
<q-icon name="fas fa-eye-slash"></q-icon>
</div>
<div>
<div class="title_param"> {{ $t('circuits.hidden') }}</div>
{{ $t('circuits.hidden_descr') }}
</div>
</div>
<div v-if="cities.length > 0" class="row">
<div class="q-pa-xs">
<q-icon name="fas fa-map-marker-alt"></q-icon>
</div>
<div>
<div class="title_param">
<div v-for="(city, index) of cities" :key="index">
{{ city.comune }} ({{ city.prov }})
</div>
</div>
</div>
</div>
<div class="members">
<q-icon name="fas fa-users"></q-icon>
{{ numUsers() }} {{ numUsers() === 1 ? t('circuits.member') : t('circuits.members') }}
{{ numUsers() }} {{ numUsers() === 1 ? t('circuit.member') : t('shared.members') }}
</div>
<div class="admins">
<q-icon name="fas fa-user-cog"></q-icon>
{{ numAdmins() }} {{ numAdmins() === 1 ? t('circuits.admin') : t('circuits.admins') }}
{{ numAdmins() }} {{ numAdmins() === 1 ? t('circuit.admin') : t('shared.admins') }}
</div>
<div v-for="(user, index) of circuit.admins" :key="index">
<CMyUser
@@ -186,7 +149,7 @@
<br>
</div>
<q-card v-if="circuit.title">
<q-card v-if="circuit.name">
<q-card-section>
<div class="text-h6">Descrizione:</div>
</q-card-section>
@@ -196,30 +159,6 @@
<div class="col-12 text-h7">
<span v-if="checkifShow('descr')">{{ circuit.longdescr }}</span>
</div>
<div class="col-6 q-ma-xs">
<q-btn
v-if="getLinkGrpTelegram()" icon="fab fa-telegram"
color="blue" type="a"
size="md"
rounded
:label="$t('msgs.telegrammsg')"
:href="getLinkGrpTelegram()" target="__blank">
</q-btn>
</div>
<div class="col-6 q-ma-xs">
<q-btn
v-if="getLinkWebSite()" icon="fas fa-globe"
color="blue" type="a"
size="md"
rounded
:label="$t('reg.website')"
:href="getLinkWebSite()" target="__blank">
</q-btn>
</div>
</q-card-section>
</q-card>
@@ -235,17 +174,6 @@
</div>
</q-tab-panel>
<q-tab-panel name="circuits">
Scegli il Circuito
circuit.circuits_list {{circuit.circuits_list}}
Mostra la lista dei Circuiti Esistenti
(come la lista gruppi, in formato scheda)
con possibilità di aggiungerli ai gruppi in cui sei Admin
</q-tab-panel>
<q-tab-panel name="members" style="max-width: 400px;" v-if="tools.iCanShowCircuitsMember(circuit)">
<q-tabs

View File

@@ -80,7 +80,7 @@
<q-btn
v-if="userStore.IsAskedGroupByGroupname(mygrp.groupname) && !userStore.IsMyGroupByGroupname(mygrp.groupname)"
icon="fas fa-user-minus"
flat :label="$t('groups.cancel_ask_group_short')"
flat :label="$t('shared.cancel_ask_short')"
@click="tools.cancelReqGroups($q, userStore.my.username, mygrp.groupname)"
/>
</div>
@@ -100,10 +100,10 @@
-->
<q-tabs v-model="tabgrp" class="text-blue">
<q-tab :label="t('groups.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab v-if="!!mygrp.note" :label="t('groups.page')" name="page" icon="fas fa-file-word"></q-tab>
<q-tab v-if="tools.iCanShowGroupsMember(mygrp) || tools.iAmAdminGroup(groupname)"
:label="t('groups.subscribes')" name="members" icon="fas fa-users"></q-tab>
:label="t('shared.subscribes')" name="members" icon="fas fa-users"></q-tab>
<q-tab :label="t('groups.circuits')" name="circuits" icon="fas fa-coins"></q-tab>
</q-tabs>
@@ -167,11 +167,11 @@
<div class="members">
<q-icon name="fas fa-users"></q-icon>
{{ numUsers() }} {{ numUsers() === 1 ? t('groups.member') : t('groups.members') }}
{{ numUsers() }} {{ numUsers() === 1 ? t('groups.member') : t('shared.members') }}
</div>
<div class="admins">
<q-icon name="fas fa-user-cog"></q-icon>
{{ numAdmins() }} {{ numAdmins() === 1 ? t('groups.admin') : t('groups.admins') }}
{{ numAdmins() }} {{ numAdmins() === 1 ? t('groups.admin') : t('shared.admins') }}
</div>
<div v-for="(user, index) of mygrp.admins" :key="index">
<CMyUser