Improve boursecu transactions filters and list display.
Align withdrawal status options with deposit, limit product filter to trades and physical delivery tabs, and hide gold amount in transaction rows. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
<p class="dtxn-row__title">{{ props.item.title }}</p>
|
<p class="dtxn-row__title">{{ props.item.title }}</p>
|
||||||
<div class="dtxn-row__meta">
|
<div class="dtxn-row__meta">
|
||||||
<span>{{ toJalaliOutOfUTC(props.item.expire_at) }}</span>
|
<span>{{ toJalaliOutOfUTC(props.item.expire_at) }}</span>
|
||||||
<span :class="goldAmount >= 0 ? 'text-green-600' : 'text-red-600'">
|
<span v-if="!isBoursecu" :class="goldAmount >= 0 ? 'text-green-600' : 'text-red-600'">
|
||||||
{{ formatTransactionGoldAmount(props.item, goldAmount) }} {{ props.item.unit }}
|
{{ formatTransactionGoldAmount(props.item, goldAmount) }} {{ props.item.unit }}
|
||||||
</span>
|
</span>
|
||||||
<span v-if="isGold">
|
<span v-if="isGold">
|
||||||
@@ -54,8 +54,9 @@
|
|||||||
<div>{{ props.item.title }}</div>
|
<div>{{ props.item.title }}</div>
|
||||||
<div>{{ toJalaliOutOfUTC(props.item.expire_at) }}</div>
|
<div>{{ toJalaliOutOfUTC(props.item.expire_at) }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between mt-2">
|
<div :class="['flex mt-2', isBoursecu ? 'justify-end' : 'justify-between']">
|
||||||
<div
|
<div
|
||||||
|
v-if="!isBoursecu"
|
||||||
:class="goldAmount >= 0 ? 'text-green-600' : 'text-red-600'"
|
:class="goldAmount >= 0 ? 'text-green-600' : 'text-red-600'"
|
||||||
class="text-gray-500 text-xs number-ltr"
|
class="text-gray-500 text-xs number-ltr"
|
||||||
>
|
>
|
||||||
@@ -127,8 +128,11 @@ import { computed, ref } from 'vue'
|
|||||||
import BasicButton from '@/components/BasicPacks/BasicButton.vue'
|
import BasicButton from '@/components/BasicPacks/BasicButton.vue'
|
||||||
import type { Transaction } from '@/models/transaction'
|
import type { Transaction } from '@/models/transaction'
|
||||||
import { toJalaliOutOfUTC } from '@/utils/useDateTime'
|
import { toJalaliOutOfUTC } from '@/utils/useDateTime'
|
||||||
|
import { isBoursecuProject } from '@/utils/config'
|
||||||
import TransactionDetailPanel from './TransactionDetailPanel.vue'
|
import TransactionDetailPanel from './TransactionDetailPanel.vue'
|
||||||
|
|
||||||
|
const isBoursecu = isBoursecuProject()
|
||||||
|
|
||||||
const infoVisible = ref(false)
|
const infoVisible = ref(false)
|
||||||
|
|
||||||
const props = withDefaults(
|
const props = withDefaults(
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
BOURSECU_TRANSACTION_TABS,
|
BOURSECU_TRANSACTION_TABS,
|
||||||
getBoursecuStatusFilterGroup,
|
getBoursecuStatusFilterGroup,
|
||||||
getBoursecuStatusOptionsForTab,
|
getBoursecuStatusOptionsForTab,
|
||||||
|
boursecuTabSupportsProductFilter,
|
||||||
type BoursecuTradeSide,
|
type BoursecuTradeSide,
|
||||||
type BoursecuTransactionTab,
|
type BoursecuTransactionTab,
|
||||||
type BoursecuTransactionTabId,
|
type BoursecuTransactionTabId,
|
||||||
@@ -92,7 +93,7 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
const showProductFilter = computed(
|
const showProductFilter = computed(
|
||||||
() => transactionsBoursecuMode.value && activeTab.value.id !== 'deposit',
|
() => transactionsBoursecuMode.value && boursecuTabSupportsProductFilter(activeTab.value),
|
||||||
)
|
)
|
||||||
|
|
||||||
const emptyText = computed(() => {
|
const emptyText = computed(() => {
|
||||||
@@ -129,6 +130,10 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) {
|
|||||||
transactionStatusFilter.value = undefined
|
transactionStatusFilter.value = undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (boursecuTabSupportsProductFilter(currentTab) && !boursecuTabSupportsProductFilter(nextTab)) {
|
||||||
|
transactionProductFilter.value = undefined
|
||||||
|
}
|
||||||
|
|
||||||
transactionActiveTabId.value = tabId
|
transactionActiveTabId.value = tabId
|
||||||
await reloadTransactionsTable()
|
await reloadTransactionsTable()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ const TRADE_TYPE_BY_SIDE: Record<BoursecuTradeSide, number> = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getBoursecuStatusFilterGroup(tab: BoursecuTransactionTab): BoursecuStatusFilterGroup {
|
export function getBoursecuStatusFilterGroup(tab: BoursecuTransactionTab): BoursecuStatusFilterGroup {
|
||||||
return tab.id === 'withdrawal' || tab.id === 'physical' ? 'fulfillment' : 'trade'
|
return tab.id === 'physical' ? 'fulfillment' : 'trade'
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getBoursecuStatusOptionsForTab(
|
export function getBoursecuStatusOptionsForTab(
|
||||||
@@ -96,6 +96,10 @@ export function getBoursecuStatusOptionsForTab(
|
|||||||
: BOURSECU_TRADE_STATUS_OPTIONS
|
: BOURSECU_TRADE_STATUS_OPTIONS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function boursecuTabSupportsProductFilter(tab: BoursecuTransactionTab): boolean {
|
||||||
|
return tab.id === 'trades' || tab.id === 'physical'
|
||||||
|
}
|
||||||
|
|
||||||
function getBoursecuStatusFilterField(tab: BoursecuTransactionTab): string {
|
function getBoursecuStatusFilterField(tab: BoursecuTransactionTab): string {
|
||||||
if (tab.fetchMode === 'deposit') {
|
if (tab.fetchMode === 'deposit') {
|
||||||
return 'sts'
|
return 'sts'
|
||||||
@@ -172,7 +176,7 @@ export function buildBoursecuTransactionPagination(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (productId != null && tab.id !== 'deposit') {
|
if (productId != null && boursecuTabSupportsProductFilter(tab)) {
|
||||||
filters.push({
|
filters.push({
|
||||||
field: 'wallet.product_id',
|
field: 'wallet.product_id',
|
||||||
cr: 'and',
|
cr: 'and',
|
||||||
|
|||||||
Reference in New Issue
Block a user