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>
|
||||
<div class="dtxn-row__meta">
|
||||
<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 }}
|
||||
</span>
|
||||
<span v-if="isGold">
|
||||
@@ -54,8 +54,9 @@
|
||||
<div>{{ props.item.title }}</div>
|
||||
<div>{{ toJalaliOutOfUTC(props.item.expire_at) }}</div>
|
||||
</div>
|
||||
<div class="flex justify-between mt-2">
|
||||
<div :class="['flex mt-2', isBoursecu ? 'justify-end' : 'justify-between']">
|
||||
<div
|
||||
v-if="!isBoursecu"
|
||||
:class="goldAmount >= 0 ? 'text-green-600' : 'text-red-600'"
|
||||
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 type { Transaction } from '@/models/transaction'
|
||||
import { toJalaliOutOfUTC } from '@/utils/useDateTime'
|
||||
import { isBoursecuProject } from '@/utils/config'
|
||||
import TransactionDetailPanel from './TransactionDetailPanel.vue'
|
||||
|
||||
const isBoursecu = isBoursecuProject()
|
||||
|
||||
const infoVisible = ref(false)
|
||||
|
||||
const props = withDefaults(
|
||||
|
||||
@@ -7,6 +7,7 @@ import {
|
||||
BOURSECU_TRANSACTION_TABS,
|
||||
getBoursecuStatusFilterGroup,
|
||||
getBoursecuStatusOptionsForTab,
|
||||
boursecuTabSupportsProductFilter,
|
||||
type BoursecuTradeSide,
|
||||
type BoursecuTransactionTab,
|
||||
type BoursecuTransactionTabId,
|
||||
@@ -92,7 +93,7 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) {
|
||||
)
|
||||
|
||||
const showProductFilter = computed(
|
||||
() => transactionsBoursecuMode.value && activeTab.value.id !== 'deposit',
|
||||
() => transactionsBoursecuMode.value && boursecuTabSupportsProductFilter(activeTab.value),
|
||||
)
|
||||
|
||||
const emptyText = computed(() => {
|
||||
@@ -129,6 +130,10 @@ export function useTransactionsPageProvider(options?: { boursecu?: boolean }) {
|
||||
transactionStatusFilter.value = undefined
|
||||
}
|
||||
|
||||
if (boursecuTabSupportsProductFilter(currentTab) && !boursecuTabSupportsProductFilter(nextTab)) {
|
||||
transactionProductFilter.value = undefined
|
||||
}
|
||||
|
||||
transactionActiveTabId.value = tabId
|
||||
await reloadTransactionsTable()
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ const TRADE_TYPE_BY_SIDE: Record<BoursecuTradeSide, number> = {
|
||||
}
|
||||
|
||||
export function getBoursecuStatusFilterGroup(tab: BoursecuTransactionTab): BoursecuStatusFilterGroup {
|
||||
return tab.id === 'withdrawal' || tab.id === 'physical' ? 'fulfillment' : 'trade'
|
||||
return tab.id === 'physical' ? 'fulfillment' : 'trade'
|
||||
}
|
||||
|
||||
export function getBoursecuStatusOptionsForTab(
|
||||
@@ -96,6 +96,10 @@ export function getBoursecuStatusOptionsForTab(
|
||||
: BOURSECU_TRADE_STATUS_OPTIONS
|
||||
}
|
||||
|
||||
export function boursecuTabSupportsProductFilter(tab: BoursecuTransactionTab): boolean {
|
||||
return tab.id === 'trades' || tab.id === 'physical'
|
||||
}
|
||||
|
||||
function getBoursecuStatusFilterField(tab: BoursecuTransactionTab): string {
|
||||
if (tab.fetchMode === 'deposit') {
|
||||
return 'sts'
|
||||
@@ -172,7 +176,7 @@ export function buildBoursecuTransactionPagination(
|
||||
})
|
||||
}
|
||||
|
||||
if (productId != null && tab.id !== 'deposit') {
|
||||
if (productId != null && boursecuTabSupportsProductFilter(tab)) {
|
||||
filters.push({
|
||||
field: 'wallet.product_id',
|
||||
cr: 'and',
|
||||
|
||||
Reference in New Issue
Block a user