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

@@ -114,6 +114,13 @@ const baseConfig = {
new CopyWebpackPlugin([{
from: path.resolve(__dirname, 'src/assets'),
}]),
new ForkTsCheckerWebpackPlugin({
async: false,
watch: paths.appSrc,
tsconfig: paths.appTsConfig,
tslint: paths.appTsLint,
memoryLimit: 5000,
}),
],
};

View File

@@ -49,6 +49,13 @@ const webpackDevConfig = {
new DefinePlugin({
'process.env': env,
}),
new ForkTsCheckerWebpackPlugin({
async: false,
watch: paths.appSrc,
tsconfig: paths.appTsConfig,
tslint: paths.appTsLint,
memoryLimit: 5000,
}),
new WebpackDashboard(),
new FriendlyErrorsPlugin(),
new webpack.HotModuleReplacementPlugin(),

View File

@@ -22,52 +22,52 @@
"generate-sw": "workbox generateSW workbox-config.js"
},
"dependencies": {
"@quasar/extras": "^1.14.2",
"@quasar/extras": "^1.15.2",
"@quasar/quasar-ui-qcalendar": "^4.0.0-beta.13",
"@vue-leaflet/vue-leaflet": "^0.6.1",
"@vue/compat": "^3.2.37",
"@vue/compiler-sfc": "^3.2.37",
"@vue/compat": "^3.2.38",
"@vue/compiler-sfc": "^3.2.38",
"@vue/eslint-config-standard": "7.0.0",
"@vuelidate/core": "^2.0.0-alpha.42",
"@vuelidate/validators": "^2.0.0-alpha.30",
"acorn": "^8.7.1",
"autoprefixer": "^10.4.7",
"axios": "^0.26.0",
"@vuelidate/core": "^2.0.0-alpha.44",
"@vuelidate/validators": "^2.0.0-alpha.31",
"acorn": "^8.8.0",
"autoprefixer": "^10.4.8",
"axios": "^0.27.2",
"bcryptjs": "^2.4.3",
"chart.js": "^3.8.0",
"core-js": "^3.23.3",
"chart.js": "^3.9.1",
"core-js": "^3.25.0",
"crypto": "^1.0.1",
"date-fns": "^2.28.0",
"dotenv": "^16.0.1",
"date-fns": "^2.29.2",
"dotenv": "^16.0.2",
"echarts": "^5.3.3",
"eslint-plugin-quasar": "^1.1.0",
"eslint-plugin-standard": "^5.0.0",
"graphql": "^16.5.0",
"graphql": "^16.6.0",
"graphql-tag": "^2.12.6",
"gsap": "^3.10.4",
"jquery": "^3.6.0",
"gsap": "^3.11.1",
"jquery": "^3.6.1",
"js-cookie": "^3.0.1",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"normalize.css": "^8.0.1",
"npm": "^8.13.2",
"npm": "^8.19.1",
"nprogress": "^0.2.0",
"pinia": "^2.0.14",
"pinia": "^2.0.22",
"prerender-spa-plugin": "^3.4.0",
"quasar": "^2.7.5",
"quasar": "^2.7.7",
"quasar-extras": "^2.0.9",
"register-service-worker": "^1.7.2",
"vee-validate": "^4.5.11",
"vue": "^3.2.37",
"vee-validate": "^4.6.7",
"vue": "^3.2.38",
"vue-chart-3": "^3.1.8",
"vue-class-component": "^8.0.0-rc.1",
"vue-country-code": "^1.1.3",
"vue-echarts": "^6.1.0",
"vue-i18n": "^9.2.0-beta.26",
"vue-echarts": "^6.2.3",
"vue-i18n": "^9.2.2",
"vue-idb": "^0.2.0",
"vue-loader": "^17.0.0",
"vue-property-decorator": "^10.0.0-rc.3",
"vue-router": "^4.1.0",
"vue-router": "^4.1.5",
"vue-scroll-reveal": "^1.0.11",
"vue-svgicon": "^4.0.0-alpha.3",
"vue2-dragula": "^2.5.5",
@@ -79,56 +79,56 @@
"@types/bcryptjs": "^2.4.2",
"@types/dotenv": "^8.2.0",
"@types/googlemaps": "^3.43.3",
"@types/jest": "^28.1.4",
"@types/jest": "^29.0.0",
"@types/js-cookie": "^3.0.2",
"@types/node": "18.0.1",
"@types/node": "18.7.15",
"@types/nprogress": "^0.2.0",
"@types/vue-tel-input": "^2.1.2",
"@types/vuelidate": "^0.7.15",
"@typescript-eslint/eslint-plugin": "^5.30.5",
"@typescript-eslint/parser": "^5.30.5",
"eslint": "^8.19.0",
"@typescript-eslint/eslint-plugin": "^5.36.2",
"@typescript-eslint/parser": "^5.36.2",
"eslint": "^8.23.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.0.0",
"eslint-plugin-vue": "^9.1.1",
"eslint-plugin-promise": "^6.0.1",
"eslint-plugin-vue": "^9.4.0",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.5.0",
"http-proxy-middleware": "^2.0.6",
"jest": "^28.1.2",
"jest": "^29.0.2",
"json-loader": "^0.5.7",
"node-sass": "7.0.1",
"npm-check-updates": "^15.0.3",
"npm-check-updates": "^16.1.0",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss": "^8.4.14",
"postcss-loader": "^7.0.0",
"postcss": "^8.4.16",
"postcss-loader": "^7.0.1",
"sass-loader": "^13.0.2",
"strip-ansi": "=7.0.1",
"ts-jest": "^28.0.5",
"ts-jest": "^28.0.8",
"ts-loader": "^9.3.1",
"tslint": "^6.1.3",
"tslint-config-standard": "^9.0.0",
"tslint-loader": "^3.5.4",
"typescript": "^4.7.4",
"typescript": "^4.8.2",
"vue-cli-plugin-element-ui": "^1.1.4",
"vueify": "^9.4.1",
"webpack": "^5.0.0",
"workbox-webpack-plugin": "^6.5.3"
"webpack": "^5.74.0",
"workbox-webpack-plugin": "^6.5.4"
},
"browser": {
"crypto": false
},
"browserslist": [
"last 16 Chrome versions",
"last 16 Firefox versions",
"last 26 Chrome versions",
"last 26 Firefox versions",
"last 4 Edge versions",
"last 13 Safari versions",
"last 16 Android versions",
"last 16 ChromeAndroid versions",
"last 16 FirefoxAndroid versions",
"last 23 Safari versions",
"last 26 Android versions",
"last 26 ChromeAndroid versions",
"last 26 FirefoxAndroid versions",
"last 12 iOS versions",
"last 7 Opera versions"
"last 17 Opera versions"
],
"engines": {
"node": ">= 16.14.0",

View File

@@ -2,7 +2,7 @@ function geturl() {
const miaurl = document.location.href
if (miaurl.includes('localhost')) {
return 'http://localhost:8084/'
// return 'http://192.168.170.47:8084'
}
return ''
}

View File

@@ -1,280 +1,119 @@
db.getCollection('myskills').aggregate(
db.getCollection('movements').aggregate(
[
{
"$match": {
"idapp": "13"
"idapp": "13",
"$or": [
{
"accountFromId": 1
},
{
"accountToId": 1
}
]
}
},
{
"$sort": {
"date_created": -1
"$lookup": {
"from": "accounts",
"localField": "accountFromId",
"foreignField": "_id",
"as": "accfrom"
}
},
{
"$addFields": {
"myId1": {
"$toObjectId": "$userId"
}
"$lookup": {
"from": "accounts",
"localField": "accountToId",
"foreignField": "_id",
"as": "accto"
}
},
{
"$unwind": "$accfrom"
},
{
"$unwind": "$accto"
},
{
"$lookup": {
"from": "users",
"localField": "myId1",
"foreignField": "_id",
"as": "user"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$user",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"website": 1,
"descr": 1,
"date_created": 1,
"date_updated": 1,
"userId": 1,
"username": 1,
"name": 1,
"surname": 1,
"comune": 1,
"mycities": 1,
"profile.img": 1,
reported: 1,
date_report: 1,
username_who_report: 1,
"profile.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "goods",
"localField": "idGood",
"foreignField": "_id",
"as": "recGood"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$recGood",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"website": 1,
"descr": 1,
"date_created": 1,
"date_updated": 1,
"userId": 1,
"username": 1,
"name": 1,
"surname": 1,
"comune": 1,
"mycities": 1,
"profile.img": 1,
reported: 1,
date_report: 1,
username_who_report: 1,
"profile.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "sectorgoods",
"localField": "recGood.idSectorGood",
"foreignField": "_id",
"as": "sectorGood"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$sectorgood",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"website": 1,
"descr": 1,
"date_created": 1,
"date_updated": 1,
"userId": 1,
"username": 1,
"name": 1,
"surname": 1,
"comune": 1,
"mycities": 1,
"profile.img": 1,
reported: 1,
date_report: 1,
username_who_report: 1,
"profile.mygroups": 1,
"profile.qualifica": 1
}
},
{
"$lookup": {
"from": "cities",
"localField": "idCity",
"foreignField": "_id",
"as": "mycities"
}
},
{
"$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{
"$arrayElemAt": [
"$mycities",
0
]
},
"$$ROOT"
]
}
}
},
{
"$project": {
"recGood": 1,
"sectorGood": 1,
"idSectorGood": 1,
"idGood": 1,
"mygood": 1,
"idStatusSkill": 1,
"idContribType": 1,
"idCity": 1,
"pub_to_share": 1,
"numLevel": 1,
"adType": 1,
"photos": 1,
"note": 1,
"website": 1,
"descr": 1,
"date_created": 1,
"date_updated": 1,
"userId": 1,
"username": 1,
"name": 1,
"surname": 1,
"comune": 1,
"mycities": 1,
"profile.img": 1,
reported: 1,
date_report: 1,
username_who_report: 1,
"profile.mygroups": 1,
"profile.qualifica": 1
}
"let": {
"username": "$accfrom.username",
"idapp": "$accfrom.idapp"
},
"pipeline": [
{
"$match": {
"$expr": {
"$and": [
{
"mycities.reg": "EMR"
"$eq": [
"$$username",
"$username"
]
},
{
"idCity": 5730
"$eq": [
"$$idapp",
"$idapp"
]
}
]
}
}
}
],
"as": "userfrom"
}
},
{
"$group": {
"_id": null,
"count": {
"$sum": 1
"$unwind": "$userfrom"
},
"results": {
"$push": "$$ROOT"
{
"$lookup": {
"from": "users",
"let": {
"username": "$accto.username",
"idapp": "$accto.idapp"
},
"pipeline": [
{
"$match": {
"$expr": {
"$and": [
{
"$eq": [
"$$username",
"$username"
]
},
{
"$eq": [
"$$idapp",
"$idapp"
]
}
]
}
}
}
],
"as": "userto"
}
},
{
"$unwind": "$userto"
},
{
"$project": {
"count": 1,
"rows": {
"$slice": [
"$results",
0,
20
]
"transactionDate": 1,
"amount": 1,
"causal": 1,
"userfrom.username": 1,
"userfrom.profile.img": 1
"userto.username": 1,
"userto.profile.img": 1
}
}
}
]
)
])

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', {
{{
$t('shared.createdby', {
username: circuit.createdBy,
date: tools.getstrDateYY(circuit.date_created), })
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>
@@ -273,6 +349,9 @@
</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"

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

2166
yarn.lock

File diff suppressed because it is too large Load Diff