@@ -20,6 +20,7 @@ import { MsgTypes } from "@/services/constants/messages"
2020
2121/** API */
2222import { fetchTransactions } from " @/services/api/tx"
23+ import { reset } from " @amplitude/analytics-browser"
2324
2425useHead ({
2526 title: " Transactions - Celestia Explorer" ,
@@ -79,6 +80,8 @@ const filters = reactive({
7980 failed: false ,
8081 },
8182 message_type: MsgTypes .reduce ((a , b ) => ({ ... a, [b]: false }), {}),
83+ from: ' ' ,
84+ to: ' ' ,
8285})
8386const savedFiltersBeforeChanges = ref (null )
8487
@@ -91,6 +94,9 @@ const handleClearAllFilters = () => {
9194 filters .message_type [f] = false
9295 })
9396
97+ filters .from = ' '
98+ filters .to = ' '
99+
94100 router .replace ({
95101 query: null ,
96102 })
@@ -104,7 +110,9 @@ const searchTerm = ref("")
104110Object .keys (route .query ).forEach ((key ) => {
105111 if (key === " page" ) return
106112
107- if (route .query [key].split (" ," ).length ) {
113+ if (key === " from" || key === " to" ) {
114+ filters[key] = route .query [key]
115+ } else if (route .query [key].split (" ," ).length ) {
108116 route .query [key].split (" ," ).forEach ((item ) => {
109117 filters[key][item] = true
110118 })
@@ -126,6 +134,8 @@ const updateRouteQuery = () => {
126134 Object .keys (filters .message_type )
127135 .filter ((f ) => filters .message_type [f])
128136 .join (" ," ),
137+ ... (filters .from ? { from: filters .from } : {}),
138+ ... (filters .to ? { to: filters .to } : {}),
129139 },
130140 })
131141}
@@ -190,10 +200,30 @@ const handleApplyMessageTypeFilters = () => {
190200 updateRouteQuery ()
191201}
192202
203+ const handleUpdateDateFilter = (event ) => {
204+ if (event .from && event .to ) {
205+ filters .from = event .from
206+ filters .to = event .to
207+
208+ page .value = 1
209+
210+ getTransactions ()
211+
212+ updateRouteQuery ()
213+ } else if (event .clear ) {
214+ resetFilters (' from' )
215+ resetFilters (' to' , true )
216+ }
217+ }
218+
193219const resetFilters = (target , refetch ) => {
194- Object .keys (filters[target]).forEach ((f ) => {
195- filters[target][f] = false
196- })
220+ if (target === " from" || target === " to" ) {
221+ filters[target] = ' '
222+ } else {
223+ Object .keys (filters[target]).forEach ((f ) => {
224+ filters[target][f] = false
225+ })
226+ }
197227
198228 if (refetch) {
199229 page .value = 1
@@ -263,6 +293,8 @@ const getTransactions = async () => {
263293 Object .keys (filters .message_type )
264294 .filter ((f ) => filters .message_type [f])
265295 .join (" ," ),
296+ from: filters .from ,
297+ to: filters .to ,
266298 })
267299 transactions .value = data .value
268300
@@ -283,7 +315,6 @@ watch(
283315 () => page .value ,
284316 async () => {
285317 getTransactions ()
286-
287318 router .replace ({ query: { page: page .value } })
288319 },
289320)
@@ -465,7 +496,7 @@ const handleNext = () => {
465496 </template >
466497 </Popover >
467498
468- <DatePicker />
499+ <DatePicker @on-update = " handleUpdateDateFilter " :from = " filters.from " :to = " filters.to " />
469500 </Flex >
470501
471502 <Popover :open =" isConfigurePopoverOpen" @on-close =" isConfigurePopoverOpen = false" width =" 150" side =" right" >
0 commit comments