Circuits...

Circuits Fido e Max Qta
Fixed error eslint: 7.0.0 is OK
This commit is contained in:
Paolo Arena
2022-09-11 11:45:13 +02:00
parent 0332059c8f
commit d28050e71f
35 changed files with 1862 additions and 1435 deletions

View File

@@ -20,6 +20,7 @@ export const shared_consts = {
ALL_SAW_AND_ACCEPTED: 3,
QUERYTYPE_CIRCUIT: 10,
QUERYTYPE_REFUSED_USER_CIRCUIT: 12,
QUERYTYPE_LIST_MOVEMENTS: 15,
FILTER_EXTRALIST_NOT_REGISTERED: 1,
FILTER_EXTRALIST_NOT_CONTACTED: 2,

View File

@@ -15,7 +15,7 @@
<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-icon class="q-ma-sm" size="3rem" :name="icon"/>
<div class="q-ma-sm text-h5 text-cls no-wrap"><span v-html="label"></span></div>
<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-icon class="q-ma-sm" :name="icon" size="sm"/>

View File

@@ -202,6 +202,11 @@ export default defineComponent({
required: false,
default: true
},
showHeaderCol: {
type: Boolean,
required: false,
default: false
},
choose_visutype: {
type: Boolean,
required: false,
@@ -1856,9 +1861,12 @@ export default defineComponent({
action = lists.MenuAction.CAN_EDIT_TABLE
}
if (action > 0) {
const col = props.prop_mycolumns.find((rec: any) => rec.action === action)
if (col) {
console.log('col action', col)
const myarr = serverData.value.find((rec: any) => rec._id === id)
if (myarr)
clickFunz(myarr, col)
@@ -1988,6 +1996,7 @@ export default defineComponent({
onLoadScroll,
numRecLoaded,
myinfscroll,
t,
}
}
})

View File

@@ -209,7 +209,20 @@
>
<div v-for="(row, index) in serverData" :key="index" class="caption">
<div v-if="showHeaderCol">
<div
v-for="col in mycolumns" :key="col.name"
class="text-italic text-weight-bold"
>
<span v-if="col && showColCheck(col, tools.TIPOVIS_SHOW_RECORD, true)">
{{ col.label }}
</span>
</div>
</div>
<div v-for="(row, index) in serverData" :key="index">
<div
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)) ">
@@ -277,6 +290,47 @@
/>
</div>
</div>
<div
v-else-if="((showType === costanti.SHOW_MOVEMENTS) && (tablesel === 'movements'))"
>
<div class="q-pa-xs row items-start q-gutter-xs">
<q-card class="my-card text-white"
:style="`background: radial-gradient(circle, #cccccc 0%, ` + ((tools.isEntrataByRecMov(row)) ? `#aaffaa` : `#ffaaaa`) + ` 100%)`">
<q-toolbar class="bg-primary text-white" style="min-height: 30px;">
<q-toolbar-title>
{{ tools.isEntrataByRecMov(row) ? t('movement.movin') : t('movement.movout') }}
</q-toolbar-title>
</q-toolbar>
<q-card-section>
<div
v-for="col in mycolumns" :key="col.name">
<div
v-if="showColCheck(col, tools.TIPOVIS_SHOW_RECORD, true, 1, row)" class="tdclass">
<div :class="getclrow(row)">
<CMyPopupEdit
:table="mytable"
:canEdit="false"
:canModify="false"
:disable="false"
:mycol="col"
:row="row"
:field="col.field"
:visulabel="true"
:subfield="col.subfield"
minuteinterval="1"
@save="SaveValue"
@show="selItem(row, col)"
@showandsave="showandsel">
</CMyPopupEdit>
</div>
</div>
</div>
</q-card-section>
</q-card>
</div>
</div>
</div>
<template v-slot:loading>

View File

@@ -1,5 +1,5 @@
<template>
<div>
<div class="q-gutter-y-xs column" style="min-width: 100px">
<q-field
:label="label"
stack-label

View File

@@ -21,10 +21,10 @@
<div class="text-center">
<q-img
v-if="userStore.getImgByCircuit(myrec)"
:src="userStore.getImgByCircuit(myrec)"
v-if="tools.getValue(myrec, 'photos', '')"
:src="tools.getFullFileName(tools.getValue(myrec, 'photos', ''), table, myrec.username, myrec.path)"
class="img"
alt="immagine del Circuito"></q-img>
alt="immagine del circuito"></q-img>
</div>
<!--:title="t(mycol.label_trans)"-->
@@ -38,6 +38,11 @@
</div>
</div>
<div v-else-if="mycol.name === 'descr'">
<div class="text-bacheca">
{{ tools.getValue(myrec, mycol.field, mycol.subfield) }}
</div>
</div>
<div v-else-if="mycol.name === 'path'">
</div>
@@ -54,7 +59,7 @@
{{ tools.getValue(myrec, mycol.field, mycol.subfield) }}
</div>
</div>
<div v-else-if="mycol.name === 'img_logo' && myrec.img_logo">
<div v-else-if="mycol.name === 'photos' && myrec.photos.length <= 1">
</div>
<div v-else-if="mycol.name === 'admins'">
<CMyFieldRec

View File

@@ -38,7 +38,7 @@
</div>
</div>
<div v-else-if="mycol.name === 'descr'">
<div v-else-if="mycol.name === 'name'">
<div class="text-bacheca">
{{ tools.getValue(myrec, mycol.field, mycol.subfield) }}
</div>

View File

@@ -685,6 +685,9 @@ export default defineComponent({
} else if (props.table === 'mygroups') {
if (myrow.value.hasOwnProperty('groupname'))
ris = 'mygroups/' + myrow.value['groupname']
} else if (props.table === 'circuits') {
if (myrow.value.hasOwnProperty('path'))
ris = 'circuits/' + myrow.value['path']
} else if (!!myrow.value && !!myrow.value.directory) {
ris = myrow.value.directory
} else {

View File

@@ -85,7 +85,8 @@
@keyup.enter.stop
@update:model-value="changevalRec"
autofocus
:label="col.label">
:label="col.visulabel ? t(col.label_trans) : (col.label)"
>
</q-input>
</div>
<div v-else-if="col.tipovisu === costanti.TipoVisu.TESTO_BORDATO" :class="{ flex: !isInModif}">
@@ -118,10 +119,11 @@
<div v-if="canEdit || isInModif">
<q-input
v-bind="$attrs"
debounce="1000"
v-model="myvalue"
:maxlength="col.maxlength ? col.maxlength : undefined"
@update:model-value="Savedb"
:label="visulabel ? t(col.label_trans) : ''"
:label="col.visulabel ? t(col.label_trans) : (visulabel ? t(col.label_trans) : '')"
type="number"
autofocus>
@@ -615,6 +617,7 @@
:maxlength="col.maxlength ? col.maxlength : undefined"
:minlength="col.minlength ? col.minlength : undefined"
v-model="scope.value"
:label="col.visulabel ? t(col.label_trans) :''"
:autogrow="col.fieldtype !== costanti.FieldType.crypted"
@keyup.enter.stop
autofocus>
@@ -625,9 +628,11 @@
<div v-if="visulabel">
<q-input
v-model="scope.value" type="number"
debounce="1000"
:maxlength="col.maxlength ? col.maxlength : undefined"
autofocus
:label="visulabel ? col.label : ''">
:label="col.visulabel ? t(col.label_trans) : (visulabel ? col.label : '')"
>
</q-input>
</div>

View File

@@ -4,7 +4,7 @@
<q-item v-if="myrec" clickable v-ripple class="shadow-2 q-btn--rounded bg-teal-1">
<q-item-section v-if="myrec.img_logo" avatar
<q-item-section v-if="myrec.photo" avatar
@click="cmdExt(costanti.CMD_SHOW_PAGE, myrec)">
<q-avatar size="60px">
<q-img :src="userStore.getImgByCircuit(myrec)" :alt="myrec.descr"

View File

@@ -37,7 +37,7 @@ export default defineComponent({
watch(() => circuitsel.value, (newval, oldval) => {
circuitloaded.value = circuitStore.listcircuits.find((rec: ICircuit) => rec.name === newval)
aggiorna()
})
watch(() => props.showprop, (newval, oldval) => {
@@ -45,6 +45,11 @@ export default defineComponent({
show.value = newval
})
function aggiorna() {
circuitloaded.value = circuitStore.listcircuits.find((rec: ICircuit) => rec.name === circuitsel.value)
console.log('circuitStore.listcircuits', circuitStore.listcircuits, 'aggiorna', circuitloaded.value)
}
function mounted() {
@@ -56,7 +61,7 @@ export default defineComponent({
circuitsel.value = bothcircuits.value[0]
}
circuitloaded.value = circuitStore.listcircuits.find((rec: ICircuit) => rec.name === circuitsel.value)
aggiorna()
show.value = true
}
@@ -78,7 +83,11 @@ export default defineComponent({
}
console.log('myrecsendcoin', myrecsendcoin)
if (circuitloaded.value) {
tools.sendCoinsByCircuit($q, circuitloaded.value, myrecsendcoin)
tools.sendCoinsByCircuit($q, circuitloaded.value, myrecsendcoin).then((ris: any) => {
if (ris) {
show.value = false
}
})
}
}
}

View File

@@ -17,9 +17,10 @@
</q-input>
<q-input v-model="to_user.username" label="Destinatario" class="full-width" disable>
</q-input>
<q-input v-model="causal" label="Causale" class="full-width">
<q-input v-model="causal" label="Note" class="full-width">
</q-input>
<q-input outlined v-model="qty" type="number"
label="Quantità"
@@ -31,6 +32,7 @@
</template>
</q-input>
</q-card-section>
<q-card-actions align="center">
<q-btn

View File

@@ -61,6 +61,8 @@ export default defineComponent({
const testStore = useTestStore()
const stateconn = ref(globalStore.stateConnection)
const rightCartOpen = ref(globalStore.rightCartOpen)
const rightNotifOpen = ref(globalStore.rightNotifOpen)
const {
getUsernameChatByMsg,
@@ -171,15 +173,15 @@ export default defineComponent({
set: val => {
globalStore.rightDrawerOpen = val
if (globalStore.rightDrawerOpen) globalStore.rightCartOpen = false
if (globalStore.rightDrawerOpen) globalStore.rightNotifOpen = false
},
})
const rightCartOpen = computed({
get: () => globalStore.rightCartOpen,
set: val => {
globalStore.rightCartOpen = val
if (globalStore.rightCartOpen) globalStore.rightDrawerOpen = false
},
watch(() => rightNotifOpen, (newval, oldval) => {
if (newval) {
globalStore.rightDrawerOpen = false
globalStore.rightCartOpen = false
}
})
const lang = computed({
@@ -426,6 +428,7 @@ export default defineComponent({
leftDrawerOpen,
rightDrawerOpen,
rightCartOpen,
rightNotifOpen,
lang,
langshort,
getnumOrdersCart,

View File

@@ -92,7 +92,8 @@
<message-popover></message-popover>
</div>
<div v-if="static_data.functionality.SHOW_NOTIF">
<notif-popover></notif-popover>
<notifPopover
v-model="rightNotifOpen"></notifPopover>
</div>
<!--
@@ -161,7 +162,10 @@
</q-drawer>
<!-- USER BAR -->
<q-drawer v-if="static_data.functionality.ENABLE_ECOMMERCE" v-model="rightCartOpen" side="right" elevated>
<q-drawer v-if="static_data.functionality.ENABLE_ECOMMERCE"
v-model="rightCartOpen"
side="right" elevated>
<q-btn
class="absolute-top-right" style="margin-right: 10px; color: white;"
dense flat round icon="close" @click="rightCartOpen = !rightCartOpen">
@@ -171,7 +175,8 @@
<CMyCart></CMyCart>
</q-drawer>
<!-- USER BAR -->
<q-drawer v-if="static_data.functionality.SHOW_USER_MENU" v-model="rightDrawerOpen" side="right" elevated>
<q-drawer v-if="static_data.functionality.SHOW_USER_MENU"
v-model="rightDrawerOpen" side="right" elevated>
<div id="profile">
<q-img
class="absolute-top" src="images/landing_first_section.png"

View File

@@ -662,9 +662,9 @@ $heightBtn: 100%;
border-color: green;
}
.text-h5 {
.text-h5-diff {
@media (max-width: 600px) {
font-size: 1rem;
font-size: 1.25rem;
font-weight: 400;
line-height: 1.5rem;
letter-spacing: normal;

View File

@@ -23,13 +23,18 @@ import { useQuasar } from 'quasar'
import { costanti } from '@costanti'
import { waitAndcheckPendingNotif } from '../../../store/Modules/ApiTables'
const namespace = 'notifModule'
export default defineComponent({
name: 'notifPopover',
components: { CTitleBanner, CMyFieldRec, CMyFieldDb },
emits: ['update:modelValue'],
props: {
modelValue: {
required: true,
type: [String, Number, Boolean],
}
},
setup(props) {
setup(props, { emit }) {
const $router = useRouter()
const userStore = useUserStore()
const notifStore = useNotifStore()
@@ -49,7 +54,6 @@ export default defineComponent({
const usernotifs = computed(() => userStore.my.profile.notifs)
const userId = ref('')
const open = ref(false)
const polling = ref(<any> null)
const eseguipolling = ref(true)
@@ -59,6 +63,16 @@ export default defineComponent({
datenotif: new Date()
})
const open = computed({
get () {
return props.modelValue
},
set (value) {
return emit('update:modelValue', value)
}
})
const { getNumNotifUnread, getNumNotif, getUsernameChatByNotif, getImgByNotif, getNotifText, getTypeDirNotif, getTypeIdNotif } = MixinUsers()
// function lasts_notifs (state: IUserState) => IMessage[] {

View File

@@ -8,9 +8,11 @@
</q-btn>
<q-drawer v-model="open" side="right" elevated class="text-black" :width="$q.screen.lt.sm ? 370 : 450">
<q-drawer v-model="open" side="right" elevated class="text-black"
:overlay="true"
:breakpoint="1200"
:width="$q.screen.lt.sm ? 370 : 450"
>
<q-bar class="bg-primary text-white">
{{ $t('notifs.notifs') }}
<q-space/>

View File

@@ -261,6 +261,7 @@ export interface IGlobalState {
menuCollapse: boolean
leftDrawerOpen: boolean
rightDrawerOpen: boolean
rightNotifOpen: boolean
rightCartOpen: boolean
category: string
stateConnection: string
@@ -565,6 +566,7 @@ export interface IColGridTable {
align?: string
field?: string
sortable?: boolean
visulabel?: boolean
disable?: boolean
titlepopupedit?: string
visible?: boolean
@@ -889,12 +891,12 @@ export interface IMyHosp extends IMyMain {
}
export interface ICircuitList {
Num: number,
_id: string,
inscription_date?: Date
}
export interface IMyCircuit {
_id: number
_id: string
circuitname: string
date: Date
}
@@ -908,7 +910,7 @@ export interface ISendCoin {
}
export interface ICircuit {
Num: number
_id: number
groupnameId: string
name: string
path: string
@@ -925,6 +927,7 @@ export interface ICircuit {
compara_euro?: number
valuta_per_euro?: number
fido_scoperto_default?: number
qta_max_default?: number
data_costituz?: Date
deperimento: boolean
freq_deper?: string
@@ -934,19 +937,43 @@ export interface ICircuit {
mese_deper?: string
ultimo_deper?: Date
durata_deper?: number
img_logo?: string
photos?: IImgGallery[]
date_created?: Date
date_updated?: Date
admins?: IFriends[]
createdBy?: string
// --- Mem:
movements: IMovement[]
}
export interface IMovement {
transactionDate: Date
accountFromId: string
accountToId: string
amount: number
causal: string
residual: number
expiringDate: Date
}
export interface IMovVisu {
transactionDate: Date
userfrom: IUserFields
userto: IUserFields
amount: number
causal: string
residual: number
expiringDate: Date
}
export interface IAccount {
username: string
circuitId: number
circuit: ICircuit
circuit: ICircuit[]
name: string
deperibile?: boolean
fidoConcesso?: number
qta_maxConcessa?: number
importo_iniziale?: number
saldo?: number
}

View File

@@ -1109,7 +1109,8 @@ const msg_it = {
compara_valuta: 'Compara Valuta',
compara_euro: 'Compara Euro',
valuta_per_euro: 'Valuta per Euro',
fido_scoperto_default: 'Fido scoperto default',
fido_scoperto_default: 'Capacità di finanziamento concessa',
qta_max_default: 'Quantità massima concessa',
data_costituz: 'Data Costituzione',
deperimento: 'Deperimento',
freq_deper: 'Frequenza Deperimento',
@@ -1128,7 +1129,7 @@ const msg_it = {
revoketo: 'Revocato la richiesta d\'invito al Circuito {circuitname}',
domanda_remove: 'Rimuovere dal Circuito {username} ?',
removed: 'Rimosso dal Circuito',
domanda_removerecord: 'Sicuro di voler Eliminare il Circuito {circuitname} ?',
domanda_removecircuit: 'Sicuro di voler Eliminare il Circuito {circuitname} ?',
deleted: 'Circuito {circuitname} Eliminato',
delete: 'Elimina il Circuito',
addasadmin: 'Aggiungi come Admin del Circuito',
@@ -1156,26 +1157,30 @@ const msg_it = {
coins_refused: 'Monete rifiutate',
accept_coins: 'Accetta Monete',
refuse_coins: 'Rifiuta Monete',
movements: 'Movimenti',
},
account: {
deperibile: 'Deperibile',
fidoConcesso: 'Capacità di finanziamento',
qta_maxConcessa: 'Capacità massima accumulabile',
importo_iniziale: 'Importo Iniziale',
saldo: 'Saldo',
user: 'Utente',
},
movement: {
transactionDate: 'Data Transaz',
transactionDate: 'Data Transazione',
accountFromId: 'Dal Conto',
accountToId: 'Al Conto',
amount: 'Quantità',
causal: 'Causale',
causal: 'Note',
causal_table: 'Tabella Causale',
causal_IdRec: 'Id Record Causale',
residual: 'Residuo',
expiringDate: 'Data Scadenza',
movin: 'In Entrata',
movout: 'In Uscita',
},
editor: {
showtool: 'Mostra strumenti per formattare il testo',

View File

@@ -30,16 +30,6 @@ export const useCircuitStore = defineStore('CircuitStore', {
actions: {
getImgByCircuit(circ: ICircuit): string {
try {
return costanti.DIR_UPLOAD + 'circuits/' + circ.img_logo
} catch (e) {
}
return 'images/noimg.png'
},
async loadCircuits() {
return Api.SendReq('/users/circuits', 'POST', null)
.then((res) => {

View File

@@ -28,6 +28,7 @@ export const costanti = {
SHOW_USERINFO: 1,
SHOW_GROUPINFO: 5,
SHOW_MOVEMENTS: 8,
SHOW_MYCARD: 10,
MAINCARDS: [
@@ -273,9 +274,16 @@ export const costanti = {
username_chip: 12000,
link: 12500,
listobj: 13000,
label: 14000,
},
TypeMov: {
Nessuno: 0,
Entrata: 1,
Uscita: -1,
},
FieldTypeArr: [
{ label: 'Boolean', value: 1 },
{ label: 'Date', value: 2 },

View File

@@ -54,6 +54,7 @@ function AddCol(params: IColGridTable) {
visibleif: (params.visibleif === undefined) ? 0 : params.visibleif,
visib_field: (params.visib_field === undefined) ? '' : params.visib_field,
visib_value: (params.visib_value === undefined) ? '' : params.visib_value,
visulabel: (params.visulabel === undefined) ? true : params.visulabel,
align: (params.align === undefined) ? 'left' : params.align,
field: (params.field === undefined) ? params.name : params.field,
subfield: (params.subfield === undefined) ? '' : params.subfield,
@@ -517,6 +518,38 @@ export const colSubSkills = [
*/
export const colmyMovement = [
// AddCol({ name: '_id', label_trans: 'reg.id' }),
AddCol({ name: 'transactionDate', label_trans: 'movement.transactionDate', fieldtype: costanti.FieldType.date }),
AddCol({
name: 'userfrom.username',
label_trans: 'reg.username',
field: 'userfrom',
subfield: 'username',
foredit: false,
tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip,
link: '/my/userfrom.username',
noshowlabel: true,
}),
AddCol({
name: 'userto.username',
label_trans: 'reg.username',
field: 'userto',
subfield: 'username',
foredit: false,
tipovisu: costanti.TipoVisu.LINK,
fieldtype: costanti.FieldType.username_chip,
link: '/my/userto.username',
noshowlabel: true,
}),
AddCol({ name: 'amount', label_trans: 'movement.amount',
fieldtype: costanti.FieldType.string, required: true, tipovisu: costanti.TipoVisu.TESTO_BORDATO }),
AddCol({ name: 'causal', label_trans: 'movement.causal', tipovisu: costanti.TipoVisu.TESTO_BORDATO }),
]
export const colmyUserPeople = [
// AddCol({ name: '_id', label_trans: 'reg.id' }),
AddCol({ name: 'username', label_trans: 'reg.username_short' }),
@@ -2402,6 +2435,7 @@ export const colTableCircuitComplete = [
AddCol({ name: 'compara_euro', label_trans: 'circuit.compara_euro', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'valuta_per_euro', label_trans: 'circuit.valuta_per_euro', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'fido_scoperto_default', label_trans: 'circuit.fido_scoperto_default', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'qta_max_default', label_trans: 'circuit.qta_max_default', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'data_costituz', label_trans: 'circuit.data_costituz', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'deperimento', label_trans: 'circuit.deperimento', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'freq_deper', label_trans: 'circuit.freq_deper' }),
@@ -2411,7 +2445,13 @@ export const colTableCircuitComplete = [
AddCol({ name: 'mese_deper', label_trans: 'circuit.mese_deper', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'ultimo_deper', label_trans: 'circuit.ultimo_deper', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'durata_deper', label_trans: 'circuit.durata_deper', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'img_logo', label_trans: 'circuit.img_logo' }),
AddCol({
name: 'photos',
label_trans: 'skill.photos',
fieldtype: costanti.FieldType.listimages,
jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
}),
AddCol({
name: 'admins',
label_trans: 'shared.admins',
@@ -2434,6 +2474,7 @@ export const colTableCircuitComplete = [
sortable: true,
showWhen: 0
}),
AddCol(ModifRec),
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
@@ -2441,9 +2482,10 @@ export const colTableCircuitComplete = [
export const colTableCircuit = [
AddCol({ name: 'groupnameId', label_trans: 'circuit.groupnameId', fieldtype: costanti.FieldType.select, jointable: 'mygroups' }), // da togliere poi
AddCol({ name: 'name', label_trans: 'circuit.name',
required: true,
maxlength: 40,
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage }),
AddCol({ name: 'path', label_trans: 'circuit.path' }),
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InView }),
AddCol({ name: 'path', label_trans: 'circuit.path', required: true }),
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', }),
@@ -2462,10 +2504,21 @@ export const colTableCircuit = [
sortable: true,
showWhen: 0
}),
AddCol({ name: 'nome_valuta', label_trans: 'circuit.nome_valuta' }),
AddCol({ name: 'nome_valuta', label_trans: 'circuit.nome_valuta', required: true }),
AddCol({ name: 'symbol', label_trans: 'circuit.symbol' }),
AddCol({ name: 'fido_scoperto_default', label_trans: 'circuit.fido_scoperto_default',
fieldtype: costanti.FieldType.number, required: true, visulabel: true }),
AddCol({ name: 'qta_max_default', label_trans: 'circuit.qta_max_default',
fieldtype: costanti.FieldType.number, required: true, visulabel: true }),
AddCol({ name: 'data_costituz', label_trans: 'circuit.data_costituz', fieldtype: costanti.FieldType.date }),
AddCol({ name: 'img_logo', label_trans: 'circuit.img_logo' }),
AddCol({
name: 'photos',
label_trans: 'skill.photos',
fieldtype: costanti.FieldType.listimages,
jointable: '',
showWhen: costanti.showWhen.NewRec + costanti.showWhen.InPage + costanti.showWhen.InEdit + costanti.showWhen.InView,
}),
AddCol(ModifRec),
AddCol(DeleteRec),
AddCol(DuplicateRec),
]
@@ -2475,6 +2528,8 @@ export const colmyUserCircuit = [
AddCol({ name: 'userId', label_trans: 'account.users', fieldtype: costanti.FieldType.select, jointable: 'users', }),
AddCol({ name: 'name', label_trans: 'circuit.name' }),
AddCol({ name: 'deperibile', label_trans: 'account.deperibile', fieldtype: costanti.FieldType.boolean }),
AddCol({ name: 'fidoConcesso', label_trans: 'account.fidoConcesso', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'qta_maxConcessa', label_trans: 'account.qta_maxConcessa', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'importo_iniziale', label_trans: 'account.importo_iniziale', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'saldo', label_trans: 'account.saldo', fieldtype: costanti.FieldType.number }),
AddCol({ name: 'deleted', label_trans: 'reg.deleted', fieldtype: costanti.FieldType.boolean }),
@@ -3079,6 +3134,13 @@ export const fieldsTable = {
colkey: 'groupname',
collabel: 'groupname',
},
{
value: 'movements',
label: 'Movimenti',
columns: colmyMovement,
colkey: '_id',
collabel: 'transactionDate',
},
{
value: 'shippings',
label: 'Spedizione',

View File

@@ -12,7 +12,7 @@ import {
ITodo,
IUserFields,
Privacy,
TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField, IAccount, IMyCircuit, ISendCoin,
TipoVisu, IGroup, IMySkill, IMyBacheca, IImgGallery, IMsgGlobParam, IUserExport, ISpecialField, IAccount, IMyCircuit, ISendCoin, IMovement, IMovVisu,
} from '@model'
import { addToDate } from '@quasar/quasar-ui-qcalendar'
@@ -5259,7 +5259,7 @@ export const tools = {
})
},
sendCoinsByCircuit($q: any, circuit: ICircuit, sendcoinrec: ISendCoin) {
sendCoinsByCircuit($q: any, circuit: ICircuit, sendcoinrec: ISendCoin): any {
const userStore = useUserStore()
@@ -5280,13 +5280,12 @@ export const tools = {
title: t('db.domanda')
}).onOk(() => {
userStore.setCircuitCmd($q, t, username, sendcoinrec.circuitname, shared_consts.CIRCUITCMD.SENDCOINS_REQ, true, sendcoinrec)
return userStore.setCircuitCmd($q, t, username, sendcoinrec.circuitname, shared_consts.CIRCUITCMD.SENDCOINS_REQ, true, sendcoinrec)
.then((res: any) => {
if (res) {
tools.showPositiveNotif($q, t('circuit.coins_sendrequest_sent'))
} else {
tools.showNegativeNotif($q, t('db.coins_sendrequest_failed'))
tools.showNegativeNotif($q, t('circuit.coins_sendrequest_failed'))
}
})
})
@@ -5408,7 +5407,7 @@ export const tools = {
const userStore = useUserStore()
$q.dialog({
message: domanda ? domanda : t('db.domanda_removerecord', { circuitname }),
message: domanda ? domanda : t('circuit.domanda_removecircuit', { circuitname }),
ok: { label: t('dialog.yes'), push: true },
cancel: { label: t('dialog.cancel') },
title: t('db.domanda')
@@ -6263,6 +6262,22 @@ export const tools = {
return common
},
isTypeByRecMov(rec: IMovVisu) {
const userStore = useUserStore()
let type = costanti.TypeMov.Nessuno
if (userStore.my.username === rec.userfrom.username) {
type = rec.amount > 0 ? costanti.TypeMov.Uscita : (rec.amount < 0 ? costanti.TypeMov.Entrata : costanti.TypeMov.Nessuno)
} else if (userStore.my.username === rec.userto.username) {
type = rec.amount > 0 ? costanti.TypeMov.Entrata : (rec.amount < 0 ? costanti.TypeMov.Uscita : costanti.TypeMov.Nessuno)
}
return type
},
isEntrataByRecMov(rec: IMovVisu) {
return this.isTypeByRecMov(rec) === costanti.TypeMov.Entrata
},
// getLocale() {
// if (navigator.languages && navigator.languages.length > 0) {
// return navigator.languages[0]

View File

@@ -309,12 +309,14 @@ export const useUserStore = defineStore('UserStore', {
IsMyCircuitByUser(user: IUserFields): any[] {
if (!this.my.profile.mycircuits || !user.profile.mycircuits)
return []
return tools.getCommon(this.my.profile.mycircuits, user.profile.mycircuits, 'circuitname')
},
getAccountByCircuitName(circuitname: string): any {
return this.my.profile.useraccounts.find((rec: IAccount) => rec.circuit.name === circuitname)
getAccountByCircuitId(circuitId: number): any {
return this.my.profile.useraccounts.find((rec: IAccount) => rec.circuitId === circuitId)
},
IsRefusedCircuitByName(circuitname: string): boolean {
@@ -328,7 +330,8 @@ export const useUserStore = defineStore('UserStore', {
getImgByCircuit(circ: ICircuit): string {
try {
return costanti.DIR_UPLOAD + 'circuits/' + circ.img_logo
if (circ.photos && circ.photos.length > 0)
return costanti.DIR_UPLOAD + 'circuits/' + circ.path + '/' + circ.photos[0].imagefile
} catch (e) {
}
return 'images/noimg.png'

View File

@@ -67,6 +67,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
menuCollapse: true,
leftDrawerOpen: false,
rightDrawerOpen: false,
rightNotifOpen: false,
rightCartOpen: false,
stateConnection: stateConnDefault,
serverError: false,
@@ -1675,7 +1676,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
myserv = window.location.host
if (process.env.DEBUGGING) {
myserv = ' http://192.168.1.102:3000'; // 'http://192.168.1.54:3000'
myserv = 'http://localhost:3000'; // 'http://192.168.1.54:3000'
}
if (!myserv) {

View File

@@ -18,13 +18,14 @@ import { useQuasar } from 'quasar'
import { costanti } from '@costanti'
import { ICity, IFriends, ICircuit, ISearchList, IUserFields, IAccount } from 'model'
import { shared_consts } from '@/common/shared_vuejs'
import { colmyUserPeople, colmyUserCircuit } from '@store/Modules/fieldsTable'
import { colmyUserPeople, colmyUserCircuit, colmyMovement } from '@store/Modules/fieldsTable'
import { useNotifStore } from '@store/NotifStore'
export default defineComponent({
name: 'mycircuit',
components: { CProfile, CTitleBanner, CMyFieldRec, CSkill, CDateTime, CMyFriends, CGridTableRec, CMyUser, CCheckIfIsLogged },
components: { CProfile, CTitleBanner, CMyFieldRec, CSkill, CDateTime, CMyFriends,
CGridTableRec, CMyUser, CCheckIfIsLogged },
props: {},
setup() {
const userStore = useUserStore()
@@ -82,8 +83,10 @@ export default defineComponent({
users_in_circuit.value = []
}
if (circuit.value)
account.value = userStore.getAccountByCircuitName(circuit.value.name)
if (circuit.value) {
account.value = userStore.getAccountByCircuitId(circuit.value._id)
console.log('account', account.value)
}
mystatus.value = status
@@ -150,14 +153,22 @@ export default defineComponent({
function extraparams_rich() {
return {
querytype: shared_consts.QUERYTYPE_CIRCUIT,
myid: circuit.value ? circuit.value.Num : '',
myid: circuit.value ? circuit.value._id : '',
}
}
function extraparams_movs() {
return {
querytype: shared_consts.QUERYTYPE_LIST_MOVEMENTS,
myid: circuit.value ? circuit.value._id : '',
username: userStore.my.username,
}
}
function extraparams_refused() {
return {
querytype: shared_consts.QUERYTYPE_REFUSED_USER_CIRCUIT,
myid: circuit.value ? circuit.value.Num : '',
myid: circuit.value ? circuit.value._id : '',
}
}
@@ -193,11 +204,13 @@ export default defineComponent({
filtercustom,
filtercustom_rich,
searchList,
colmyMovement,
colmyUserPeople,
colmyUserCircuit,
extraparams,
extraparams_rich,
extraparams_refused,
extraparams_movs,
tab,
tabgrp,
tabmembers,
@@ -208,6 +221,7 @@ export default defineComponent({
loading,
mystatus,
cities,
path,
}
}
})

View File

@@ -39,8 +39,34 @@
<em style="font-weight: bold">{{ $t('db.youarerefusedcircuit') }}</em><br>
</q-banner>
<div v-if="account">
Saldo: {{ account.saldo}}
<div v-if="account" style="width: 300px;" class="text-h5">
<q-field outlined
dense
:type="number"
rounded
class="q-pa-sm text-h5"
color="green"
>
<template v-slot:prepend>
<q-avatar>
<!--<img src="https://cdn.quasar.dev/logo-v2/svg/logo.svg">-->
<q-icon name="fas fa-coins" size="sm"/>
</q-avatar>
<div class="text-h6">
Saldo
</div>
</template>
<template v-slot:control>
<div>{{account.saldo ? account.saldo.toFixed(2) : 'N/D'}}</div>
</template>
<template v-slot:append>
<div class="text-h5">
<em class="q-px-sm bg-deep-orange text-white rounded-borders">{{ account.circuit[0].symbol }}</em>
</div>
</template>
</q-field>
</div>
@@ -91,12 +117,46 @@
<q-tabs v-model="tabgrp" class="text-blue">
<q-tab :label="t('shared.info1')" name="info" icon="fas fa-info"></q-tab>
<q-tab :label="t('circuit.movements')" name="mov" icon="fas fa-coins"></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(circuit.name)"
:label="t('shared.subscribes')" name="members" icon="fas fa-users"></q-tab>
</q-tabs>
<q-tab-panels v-model="tabgrp" animated>
<q-tab-panel name="mov">
<CGridTableRec
prop_mytable="movements"
prop_mytitle=""
:prop_mycolumns="colmyMovement"
prop_colkey="_id"
col_title="Lista Movimenti"
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessun Movimento effettuato"
:prop_search="false"
hint="Username da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom_rich"
:prop_searchList="searchList"
:showType="costanti.SHOW_MOVEMENTS"
keyMain=""
:showCol="false"
:showHeaderCol="false"
:extraparams="extraparams_movs()"
extrafield=""
:visufind="costanti.FRIENDS"
>
</CGridTableRec>
</q-tab-panel>
<q-tab-panel name="info">
<div>
<q-card>
@@ -109,15 +169,19 @@
<q-card-section>
<div v-if="circuit.createdBy" class="element">
<q-icon name="fas fa-lightbulb"></q-icon>
{{ $t('shared.createdby', {
username: circuit.createdBy,
date: tools.getstrDateYY(circuit.date_created), })
{{
$t('shared.createdby', {
username: circuit.createdBy,
date: tools.getstrDateYY(circuit.date_created),
})
}}
</div>
<div v-if="!!circuit.date_updated && tools.getstrDate(circuit.date_updated) !== tools.getstrDate(circuit.date_created)" class="element">
<q-icon name="fas fa-pencil-alt"></q-icon>
{{ $t('shared.lastmodify', {
date: tools.getstrDateYY(circuit.date_updated), })
{{
$t('shared.lastmodify', {
date: tools.getstrDateYY(circuit.date_updated),
})
}}
</div>
@@ -137,6 +201,18 @@
>
</CMyUser>
</div>
<div v-if="circuit.fido_scoperto_default" class="members">
<q-icon name="fas fa-battery-quarter"></q-icon>
{{ circuit.fido_scoperto_default }} {{ t('circuit.fido_scoperto_default') }}
</div>
<div v-if="circuit.qta_max_default" class="members">
<q-icon name="fas fa-battery-full"></q-icon>
{{ circuit.qta_max_default }} {{ t('circuit.qta_max_default') }}
</div>
<div v-if="circuit.deperimento" class="members">
<q-icon name="fas fa-battery-full"></q-icon>
{{ t('circuit.deperimento') }}{{ circuit.deperimento ? t('dialog.yes') : t('dialog.no') }} {{ }}
</div>
</q-card-section>
</q-card>
@@ -178,101 +254,104 @@
</q-tabs>
<q-tab-panels v-model="tabmembers" animated>
<q-tab-panel name="all">
<q-tab-panel name="all">
<CGridTableRec
ref="tabMembri"
prop_mytable="users"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title="username"
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessun Iscritto"
:prop_search="true"
hint="Username da trovare"
:finder="false"
:choose_visutype="true"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
:showCol="false"
:circuitname="circuit.name"
:extraparams="extraparams()"
:visufind="tools.iAmAdminCircuit(circuit.name) ? costanti.REQ_REMOVE_USER_TO_CIRCUIT : costanti.FIND_PEOPLE"
>
<CGridTableRec
ref="tabMembri"
prop_mytable="users"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title="username"
:vertical="costanti.VISUTABLE_LISTA"
nodataLabel="Nessun Iscritto"
:prop_search="true"
hint="Username da trovare"
:finder="false"
:choose_visutype="true"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
:showCol="false"
:circuitname="circuit.name"
:extraparams="extraparams()"
:visufind="tools.iAmAdminCircuit(circuit.name) ? costanti.REQ_REMOVE_USER_TO_CIRCUIT : costanti.FIND_PEOPLE"
>
</CGridTableRec>
</q-tab-panel>
<q-tab-panel name="rich">
</CGridTableRec>
</q-tab-panel>
<q-tab-panel name="rich">
<CGridTableRec
prop_mytable="circuits"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title=""
:vertical="costanti.VISUTABLE_USER_TABCIRCUIT"
nodataLabel="Nessuna Richiesta in sospeso"
:prop_search="false"
hint="Username da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom_rich"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
keyMain=""
:showCol="false"
:extraparams="extraparams_rich()"
:circuitname="circuit.name"
:visufind="costanti.REQ_ADD_USER_TO_CIRCUIT"
>
<CGridTableRec
prop_mytable="circuits"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title=""
:vertical="costanti.VISUTABLE_USER_TABCIRCUIT"
nodataLabel="Nessuna Richiesta in sospeso"
:prop_search="false"
hint="Username da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom_rich"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
keyMain=""
:showCol="false"
:extraparams="extraparams_rich()"
:circuitname="circuit.name"
:visufind="costanti.REQ_ADD_USER_TO_CIRCUIT"
>
</CGridTableRec>
</q-tab-panel>
<q-tab-panel name="refused">
</CGridTableRec>
</q-tab-panel>
<q-tab-panel name="refused">
<CGridTableRec
prop_mytable="circuits"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title=""
:vertical="costanti.VISUTABLE_USER_TABCIRCUIT"
nodataLabel="Nessun utente Rifiutato"
:prop_search="false"
hint="Username da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom_rich"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
keyMain=""
:showCol="false"
:extraparams="extraparams_refused()"
:circuitname="circuit.name"
:visufind="costanti.REQ_ADD_USER_TO_CIRCUIT"
>
<CGridTableRec
prop_mytable="circuits"
prop_mytitle=""
:prop_mycolumns="colmyUserPeople"
prop_colkey="_id"
col_title=""
:vertical="costanti.VISUTABLE_USER_TABCIRCUIT"
nodataLabel="Nessun utente Rifiutato"
:prop_search="false"
hint="Username da trovare"
:finder="false"
:choose_visutype="false"
:finder_noNull="false"
:options="shared_consts.OPTIONS_SEARCH_USER_ALL_WORDS"
:butt_modif_new="false"
noresultLabel="Username non trovato"
:arrfilters="arrfilterand"
:filtercustom="filtercustom_rich"
:prop_searchList="searchList"
:showType="costanti.SHOW_USERINFO"
keyMain=""
:showCol="false"
:extraparams="extraparams_refused()"
:circuitname="circuit.name"
:visufind="costanti.REQ_ADD_USER_TO_CIRCUIT"
>
</CGridTableRec>
</q-tab-panel>
</CGridTableRec>
</q-tab-panel>
</q-tab-panels>
</q-tab-panel>
<q-tab-panel name="mov">
</q-tab-panel>
</q-tab-panels>
@@ -284,7 +363,7 @@
<q-skeleton :animation="animation"/>
</div>
<div class="col-12 text-h7 text-grey text-center">
{{ circuit.path }}
{{ path }}
</div>
<div class="col-12 text-h7">
<q-skeleton :animation="animation"/>

View File

@@ -154,7 +154,7 @@
</div>
<div class="col-md-6 col-sm-6 q-ma-xs col-xs-12">
<q-btn
v-if="userStore.IsMyCircuitByUser(myuser).length > 0" icon="fab fa-telegram"
v-if="userStore.IsMyCircuitByUser(myuser).length > 0 && myuser.username !== myusername()" icon="fab fa-telegram"
color="blue"
size="md"
rounded
@@ -311,7 +311,7 @@
<img :src="getImgUser()" :alt="username" class="full-width">
</q-dialog>
showsendCoinTo: {{ showsendCoinTo}}
<div v-if="showsendCoinTo">
<CSendCoins
:showprop="showsendCoinTo"