{{ value }}
+
{{ value.toFixed(2) }}
{{tips}}
diff --git a/src/components/CFinder/CFinder.ts b/src/components/CFinder/CFinder.ts
index 56e0de0b..0c88c6ca 100755
--- a/src/components/CFinder/CFinder.ts
+++ b/src/components/CFinder/CFinder.ts
@@ -114,6 +114,8 @@ export default defineComponent({
const mypagination = computed(() => {
if (props.table === toolsext.TABMYBACHECAS)
return { sortBy: 'dateTimeStart', descending: false, page: 1, rowsNumber: 20, rowsPerPage: 20 }
+ else if (props.table === toolsext.TABMOVEMENTS)
+ return { sortBy: 'transactionDate', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
return { sortBy: 'date_created', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }
})
diff --git a/src/components/CNotifAtTop/CNotifAtTop.scss b/src/components/CNotifAtTop/CNotifAtTop.scss
new file mode 100755
index 00000000..e69de29b
diff --git a/src/components/CNotifAtTop/CNotifAtTop.ts b/src/components/CNotifAtTop/CNotifAtTop.ts
new file mode 100755
index 00000000..24d27489
--- /dev/null
+++ b/src/components/CNotifAtTop/CNotifAtTop.ts
@@ -0,0 +1,75 @@
+import { defineComponent, onMounted, PropType, ref, watch } from 'vue'
+import { useQuasar } from 'quasar'
+import { useI18n } from '@/boot/i18n'
+import { useGlobalStore } from '@store/globalStore'
+import { useUserStore } from '@store/UserStore'
+import { fieldsTable } from '@store/Modules/fieldsTable'
+import { tools } from '@store/Modules/tools'
+import { costanti } from '@costanti'
+import { shared_consts } from '@/common/shared_vuejs'
+import { CMyFieldDb } from '@/components/CMyFieldDb'
+import { CDateTime } from '@/components/CDateTime'
+import { toolsext } from '@src/store/Modules/toolsext'
+import { computed } from 'vue'
+import { INotif } from 'model'
+import { useNotifStore } from '@store/NotifStore'
+import { useCircuitStore } from '@store/CircuitStore'
+import { useRouter } from 'vue-router'
+import MixinUsers from '@/mixins/mixin-users'
+
+export default defineComponent({
+ name: 'CNotifAtTop',
+ props: {
+ },
+ components: { },
+ setup(props, { emit }) {
+ const q = useQuasar()
+ const { t } = useI18n()
+ const globalStore = useGlobalStore()
+ const userStore = useUserStore()
+ const notifStore = useNotifStore()
+ const circuitStore = useCircuitStore()
+ const $router = useRouter()
+
+ const { getImgByNotif, getNotifText, getTypeDirNotif, getTypeIdNotif } = MixinUsers()
+
+ const lasts_notifs_req = computed(() => notifStore.getnotifs_coinsreq())
+ const num_notifs = computed(() => lasts_notifs_req.value.length)
+
+ function mounted() {
+ //
+ }
+
+ function clickNotif(notif: INotif) {
+ if (notif.openUrl) {
+ let mylink = tools.updateQueryStringParameter(notif.openUrl, 'idnotif', notif._id)
+ console.log('mylink', mylink, notif._id)
+ if (mylink) {
+ $router.replace(mylink)
+ }
+ }
+ }
+
+
+ onMounted(mounted)
+
+ return {
+ q,
+ t,
+ getImgByNotif,
+ getNotifText,
+ getTypeDirNotif,
+ getTypeIdNotif,
+ tools,
+ costanti,
+ shared_consts,
+ fieldsTable,
+ globalStore,
+ toolsext,
+ lasts_notifs_req,
+ num_notifs,
+ clickNotif,
+ }
+ },
+})
+
diff --git a/src/components/CNotifAtTop/CNotifAtTop.vue b/src/components/CNotifAtTop/CNotifAtTop.vue
new file mode 100755
index 00000000..da5c1e6d
--- /dev/null
+++ b/src/components/CNotifAtTop/CNotifAtTop.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/CNotifAtTop/index.ts b/src/components/CNotifAtTop/index.ts
new file mode 100755
index 00000000..03058b62
--- /dev/null
+++ b/src/components/CNotifAtTop/index.ts
@@ -0,0 +1 @@
+export {default as CNotifAtTop} from './CNotifAtTop.vue'
diff --git a/src/components/CSendCoins/CSendCoins.ts b/src/components/CSendCoins/CSendCoins.ts
index 2e39690b..81094828 100755
--- a/src/components/CSendCoins/CSendCoins.ts
+++ b/src/components/CSendCoins/CSendCoins.ts
@@ -7,6 +7,8 @@ import { useUserStore } from '@store/UserStore'
import { useCircuitStore } from '@store/CircuitStore'
import { useQuasar } from 'quasar'
import { useI18n } from '@/boot/i18n'
+import { CMyUser } from '@/components/CMyUser'
+import { costanti } from '@costanti'
export default defineComponent({
name: 'CSendCoins',
@@ -21,7 +23,7 @@ export default defineComponent({
required: true,
},
},
- components: { CCurrencyValue },
+ components: { CCurrencyValue, CMyUser },
setup(props, { emit }) {
const $q = useQuasar()
@@ -42,11 +44,13 @@ export default defineComponent({
const accountloaded = ref(
undefined)
const accountdest = ref(undefined)
const remainingCoins = ref(0)
+ const maxsendable = ref(0)
+ const numstep = ref(0)
const priceLabel = computed(() => circuitloaded.value ? `${qty.value} ` + circuitloaded.value.symbol : '')
const arrayMarkerLabel = ref([])
- const qtyRef = ref(null)
+ const qtyRef = ref(null)
watch(() => circuitsel.value, (newval, oldval) => {
aggiorna()
@@ -63,15 +67,30 @@ export default defineComponent({
accountloaded.value = userStore.getAccountByCircuitId(circuitloaded.value._id)
// accountdest.value = userStore.getAccountByCircuitId(circuitloaded.value._id)
if (accountloaded.value) {
- remainingCoins.value = tools.getRemainingCoinsToSend(accountloaded.value)
- const quanti = [ ...Array(100).keys() ].map( i => i+1)
+ remainingCoins.value = circuitStore.getRemainingCoinsToSend(accountloaded.value)
+ if (accountloaded.value.saldo > 0) {
+ maxsendable.value = accountloaded.value.saldo + accountloaded.value.fidoConcesso
+ } else {
+ maxsendable.value = accountloaded.value.fidoConcesso
+ }
+
+ if (remainingCoins.value < 10) {
+ remainingCoins.value = 10
+ }
+
+ numstep.value = Math.round(maxsendable.value / 10)
+ if (numstep.value < 1) {
+ numstep.value = 1
+ }
+
+ const quanti = [...Array(20).keys()].map(i => i + 1)
for (const ind of quanti) {
- let value = ind * 10
+ let value = ind * numstep.value
if (value > remainingCoins.value) {
break
} else {
const label = value.toString()
- arrayMarkerLabel.value.push({value, label})
+ arrayMarkerLabel.value.push({ value, label })
}
}
}
@@ -108,19 +127,19 @@ export default defineComponent({
if (props.to_user.username && qty.value && circuitloaded.value) {
const myrecsendcoin: ISendCoin = {
- qty: qty.value,
+ qty: tools.convstrToNum(qty.value),
dest: props.to_user.username,
circuitname: circuitsel.value,
causal: causal.value,
symbol: circuitloaded.value.symbol,
}
- console.log('myrecsendcoin', myrecsendcoin)
- if (circuitloaded.value) {
- tools.sendCoinsByCircuit($q, circuitloaded.value, myrecsendcoin).then((ris: any) => {
- if (ris) {
- show.value = false
- }
- })
+ if (myrecsendcoin) {
+ tools.sendCoinsByCircuit($q, circuitloaded.value, myrecsendcoin)
+ .then((ris: any) => {
+ if (ris) {
+ show.value = false
+ }
+ })
}
}
}
@@ -145,6 +164,11 @@ export default defineComponent({
arrayMarkerLabel,
remainingCoins,
qtyRef,
+ maxsendable,
+ circuitStore,
+ numstep,
+ costanti,
+ userStore,
}
},
})
diff --git a/src/components/CSendCoins/CSendCoins.vue b/src/components/CSendCoins/CSendCoins.vue
index 10c1f6c0..0bd64bf0 100755
--- a/src/components/CSendCoins/CSendCoins.vue
+++ b/src/components/CSendCoins/CSendCoins.vue
@@ -1,6 +1,6 @@
-
+
@@ -22,48 +22,57 @@
-
-
-
+
+
+
+
+
+
+
+
+ {{ circuitloaded.symbol }}
+
+
+
-
-
-
-
- {{ circuitloaded.symbol }}
-
-
-
-
-
+
+
diff --git a/src/components/index.ts b/src/components/index.ts
index 919cc01d..2cadb8e2 100755
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -62,3 +62,4 @@ export * from './CNotifSettings'
// export * from './CPreloadImages'
export * from './CSendCoins'
export * from './CCurrencyValue'
+export * from './CNotifAtTop'
diff --git a/src/layouts/toolbar/notifPopover/notifPopover.vue b/src/layouts/toolbar/notifPopover/notifPopover.vue
index 004810c4..067f27e9 100755
--- a/src/layouts/toolbar/notifPopover/notifPopover.vue
+++ b/src/layouts/toolbar/notifPopover/notifPopover.vue
@@ -163,7 +163,7 @@
size="sm"
icon="fas fa-user-plus"
color="positive" :label="$t('circuit.accept_coins')"
- @click="tools.acceptCoins($q, notif.sender, notif.extrarec)"
+ @click="tools.acceptCoins($q, notif.sender, notif)"
/>
+
diff --git a/src/root/hosp/hosp.ts b/src/root/hosp/hosp.ts
index 72e7a241..52931c8a 100755
--- a/src/root/hosp/hosp.ts
+++ b/src/root/hosp/hosp.ts
@@ -9,6 +9,8 @@ import { CFinder } from '@/components/CFinder'
import { LandingFooter } from '@/components/LandingFooter'
import { CDashboard } from '@/components/CDashboard'
import { CChartMap } from '@src/components/CChartMap'
+import { CNotifAtTop } from '@src/components/CNotifAtTop'
+
import { CUserNonVerif } from '@/components/CUserNonVerif'
import { CTitlePage } from '@/components/CTitlePage'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
@@ -24,7 +26,7 @@ import { colmyHosp } from '@store/Modules/fieldsTable'
export default defineComponent({
name: 'hosp',
- components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage, LandingFooter },
+ components: { CSkill, CChartMap, CMapsEsempio, CNotifAtTop, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage, LandingFooter },
setup() {
return {
colmyHosp,
diff --git a/src/root/hosp/hosp.vue b/src/root/hosp/hosp.vue
index e9bee41f..df32454b 100755
--- a/src/root/hosp/hosp.vue
+++ b/src/root/hosp/hosp.vue
@@ -3,6 +3,7 @@
+
diff --git a/src/root/mainview/mainview.ts b/src/root/mainview/mainview.ts
index 17c92040..cf470b63 100755
--- a/src/root/mainview/mainview.ts
+++ b/src/root/mainview/mainview.ts
@@ -16,6 +16,8 @@ import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { useGlobalStore } from '@store/globalStore'
import { useUserStore } from '@store/UserStore'
import { static_data } from '@/db/static_data'
+import { useNotifStore } from '@store/NotifStore'
+
import MixinBase from '@/mixins/mixin-base'
import MixinUsers from '@/mixins/mixin-users'
import { shared_consts } from '@/common/shared_vuejs'
@@ -28,6 +30,8 @@ export default defineComponent({
const globalStore = useGlobalStore()
const userStore = useUserStore()
const { getValDb } = MixinBase()
+ const notifStore = useNotifStore()
+
const { setmeta } = MixinMetaTags()
@@ -41,6 +45,7 @@ export default defineComponent({
shared_consts,
globalStore,
setmeta,
+ notifStore,
}
},
})
diff --git a/src/root/services/services.ts b/src/root/services/services.ts
index 1fefb53b..1107ae76 100755
--- a/src/root/services/services.ts
+++ b/src/root/services/services.ts
@@ -10,6 +10,7 @@ import { CDashboard } from '@/components/CDashboard'
import { CTitlePage } from '@/components/CTitlePage'
import { CChartMap } from '@src/components/CChartMap'
import { CUserNonVerif } from '@/components/CUserNonVerif'
+import { CNotifAtTop } from '@src/components/CNotifAtTop'
import { CMapsEsempio } from '@src/components/CMapsEsempio'
import { CVerifyEmail } from '@src/components/CVerifyEmail'
import { CVerifyTelegram } from '@src/components/CVerifyTelegram'
@@ -23,7 +24,7 @@ import { costanti } from '@costanti'
export default defineComponent({
name: 'Services',
- components: { CSkill, CChartMap, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage, LandingFooter },
+ components: { CSkill, CChartMap, CNotifAtTop, CMapsEsempio, CFinder, CVerifyEmail, CVerifyTelegram, CDashboard, CUserNonVerif, CTitlePage, LandingFooter },
setup() {
return {
tools,
diff --git a/src/root/services/services.vue b/src/root/services/services.vue
index 212e5ae4..517a50de 100755
--- a/src/root/services/services.vue
+++ b/src/root/services/services.vue
@@ -4,6 +4,7 @@
+
{
if (res) {
if (res.cansend) {
@@ -5265,7 +5267,7 @@ export const tools = {
})
},
- sendCoinsByCircuit($q: any, circuit: ICircuit, sendcoinrec: ISendCoin): any {
+ async sendCoinsByCircuit($q: any, circuit: ICircuit, sendcoinrec: ISendCoin) {
const userStore = useUserStore()
@@ -5274,7 +5276,7 @@ export const tools = {
let msg = ''
msg = t('circuit.question_sendcoinsto', { coin: circuit.symbol, dest: sendcoinrec.dest, qty: sendcoinrec.qty })
- $q.dialog({
+ return $q.dialog({
message: msg,
ok: {
label: t('dialog.yes'),
@@ -5288,7 +5290,11 @@ export const tools = {
return userStore.setCircuitCmd($q, t, username, sendcoinrec.circuitname, shared_consts.CIRCUITCMD.SENDCOINS_REQ, true, sendcoinrec)
.then((res: any) => {
- if (res.cansend) {
+ console.log('setCircuitCmd ', res)
+ if (res && res.cansend) {
+ if (res.useraccounts && res.useraccounts.length > 0) {
+ userStore.my.profile.useraccounts = res.useraccounts
+ }
tools.showPositiveNotif($q, t('circuit.coins_sendrequest_sent'))
} else {
tools.showNegativeNotif($q, res.errormsg)
@@ -5296,7 +5302,9 @@ export const tools = {
})
})
- return null
+ return await new Promise((resolve, reject) => {
+ resolve(false)
+ })
},
cancelReqCircuit($q: any, username: string, circuitname: string) {
@@ -6311,11 +6319,11 @@ export const tools = {
return ''
}
},
- getRemainingCoinsToSend(account: IAccount) {
- return account.saldo + account.fidoConcesso;
+ roundDec2(mynum: number): number {
+ return (Math.round(mynum * 100)/100);
},
- getMaxCoinsToSend(account: IAccount) {
- return account.qta_maxConcessa - account.saldo;
+ roundDec2Str(mynum: number): string {
+ return (Math.round(mynum * 100)/100).toFixed(2);
},
// getLocale() {
// if (navigator.languages && navigator.languages.length > 0) {
diff --git a/src/store/Modules/toolsext.ts b/src/store/Modules/toolsext.ts
index ee304ba2..31ec7886 100755
--- a/src/store/Modules/toolsext.ts
+++ b/src/store/Modules/toolsext.ts
@@ -60,6 +60,7 @@ export const func_tools = {
export const toolsext = {
TABUSER: 'users',
TABFRIENDS: 'friends',
+ TABMOVEMENTS: 'movements',
TABMYGROUPS: 'mygroups',
TABSKILLS: 'skills',
TABGOODS: 'goods',
diff --git a/src/store/NotifStore.ts b/src/store/NotifStore.ts
index dc6f2ec7..37037123 100755
--- a/src/store/NotifStore.ts
+++ b/src/store/NotifStore.ts
@@ -25,6 +25,12 @@ export const useNotifStore = defineStore('NotifStore', {
},
+ getnotifs_coinsreq: (mystate: INotifState) => (): INotif[] => {
+ const ctrec = (mystate.last_notifs) ? mystate.last_notifs.slice(0, 20).filter((rec) => !rec.read && rec.typedir === shared_consts.TypeNotifs.TYPEDIR_CIRCUITS && rec.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ) : []
+ return (ctrec)
+
+ },
+
getnumNotifUnread: (mystate: INotifState) => () => {
const myarr = mystate.last_notifs.filter((notif) => !notif.read)
return (tools.isArray(myarr) ? myarr.length : 0)
@@ -55,6 +61,19 @@ export const useNotifStore = defineStore('NotifStore', {
this.updateArrNotif()
},
+ updateRecNotif(recnotif: INotif) {
+ if (recnotif) {
+ const myrec = this.last_notifs.find((rec: any) => rec._id === recnotif._id)
+ if (myrec) {
+ myrec.status = recnotif.status
+ myrec.read = recnotif.read
+ myrec.descr = recnotif.descr
+
+ this.updateArrNotif()
+ }
+ }
+ },
+
async setBadgeIconApp(){
// Get our dummy count and update it,
// just to give more context for this demo.
diff --git a/src/store/UserStore.ts b/src/store/UserStore.ts
index 2ba565c3..7a903708 100755
--- a/src/store/UserStore.ts
+++ b/src/store/UserStore.ts
@@ -27,6 +27,7 @@ import { costanti } from '@costanti'
import { IMyGroup } from '@model/UserStore'
import globalroutines from '../globalroutines/index'
+import { useNotifStore } from '@store/NotifStore'
export const DefaultUser: IUserFields = {
_id: '',
@@ -1226,9 +1227,14 @@ export const useUserStore = defineStore('UserStore', {
},
async setCircuitCmd($q: any, t: any, usernameOrig: string, circuitname: string, cmd: number, value: any, extrarec?: any) {
- return Api.SendReq('/users/circuits/cmd', 'POST', { usernameOrig, circuitname, cmd, value, extrarec })
+ return await Api.SendReq('/users/circuits/cmd', 'POST', { usernameOrig, circuitname, cmd, value, extrarec })
.then((res) => {
this.updateTables = true
+ if (res.data.recnotif) {
+ const notifStore = useNotifStore()
+
+ notifStore.updateRecNotif(res.data.recnotif)
+ }
return res.data
}).catch((error) => {
tools.showNegativeNotif($q, t('db.recfailed'))
diff --git a/src/views/user/mycircuit/mycircuit.vue b/src/views/user/mycircuit/mycircuit.vue
index 95db9235..036cbd6e 100755
--- a/src/views/user/mycircuit/mycircuit.vue
+++ b/src/views/user/mycircuit/mycircuit.vue
@@ -123,6 +123,7 @@
:arrfilters="arrfilterand"
:filtercustom="filtercustom_rich"
:prop_searchList="searchList"
+ :prop_pagination="{ sortBy: 'transactionDate', descending: true, page: 1, rowsNumber: 20, rowsPerPage: 20 }"
:showType="costanti.SHOW_MOVEMENTS"
keyMain=""
:showCol="false"
diff --git a/src/views/user/mycircuits/mycircuits.ts b/src/views/user/mycircuits/mycircuits.ts
index 76880279..e5cd656b 100755
--- a/src/views/user/mycircuits/mycircuits.ts
+++ b/src/views/user/mycircuits/mycircuits.ts
@@ -1,6 +1,7 @@
import { CMyCircuits } from '@/components/CMyCircuits'
import { CFinder } from '@/components/CFinder'
import { CGridTableRec } from '@/components/CGridTableRec'
+import { CNotifAtTop } from '@/components/CNotifAtTop'
import { tools } from '@store/Modules/tools'
import { toolsext } from '@store/Modules/toolsext'
import { computed, defineComponent, onMounted, ref, watch } from 'vue'
@@ -14,7 +15,7 @@ import { shared_consts } from '@/common/shared_vuejs'
export default defineComponent({
name: 'mycircuits',
- components: { CMyCircuits, CGridTableRec, CFinder },
+ components: { CMyCircuits, CGridTableRec, CFinder, CNotifAtTop },
props: {},
setup() {
const userStore = useUserStore()
diff --git a/src/views/user/mycircuits/mycircuits.vue b/src/views/user/mycircuits/mycircuits.vue
index bdd43ca5..cdacb6a2 100755
--- a/src/views/user/mycircuits/mycircuits.vue
+++ b/src/views/user/mycircuits/mycircuits.vue
@@ -1,5 +1,6 @@