Skip to content

Commit c55af22

Browse files
authored
changes to meet acceptance criteria (#754)
1 parent f13a3c1 commit c55af22

File tree

1 file changed

+51
-31
lines changed

1 file changed

+51
-31
lines changed

auth-web/src/components/auth/Transactions.vue

Lines changed: 51 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
</v-list-item>
4545
</v-list-item-group>
4646
</v-list>
47-
<div class="date-filter-btns px-6 d-flex flex-end">
47+
<div class="date-filter-btns px-6 mt-4 d-flex flex-end">
4848
<v-btn large
4949
color="primary"
5050
class="font-weight-bold flex-grow-1"
@@ -63,21 +63,29 @@
6363
</v-btn>
6464
</div>
6565
</div>
66-
<div class="pa-6">
67-
<div class="date-range-label mb-6">
68-
{{showDateRangeSelected}}
69-
</div>
70-
<v-date-picker
71-
color="primary"
72-
width="400"
73-
class="text-center"
74-
v-model="dateRangeSelected"
75-
no-title
76-
range
77-
:show-current="false"
78-
:class="{'date-picker-disable': disableDatePicker}"
79-
first-day-of-week="1"
80-
></v-date-picker>
66+
<div class="pa-6 align-self-center">
67+
<template v-if="dateFilterSelected && dateFilterSelected.code">
68+
<div class="date-range-label mb-6">
69+
{{showDateRangeSelected}}
70+
</div>
71+
<v-date-picker
72+
color="primary"
73+
width="400"
74+
class="text-center"
75+
v-model="dateRangeSelected"
76+
no-title
77+
range
78+
:first-day-of-week="1"
79+
:show-current="false"
80+
:picker-date="pickerDate"
81+
@click:date="dateClick"
82+
></v-date-picker>
83+
</template>
84+
<template v-else>
85+
<p class="pa-8">
86+
No Dates Selected
87+
</p>
88+
</template>
8189
</div>
8290
</v-card>
8391
</v-menu>
@@ -196,32 +204,29 @@ export default class Transactions extends Vue {
196204
code: DATEFILTER_CODES.CUSTOMRANGE
197205
}
198206
]
199-
private dateFilterSelectedIndex: number = 0
200-
private dateFilterSelected: any = this.dateFilterRanges[this.dateFilterSelectedIndex]
207+
private dateFilterSelectedIndex: number = null
208+
private dateFilterSelected: any = {}
201209
private dateFilterProp: any = {}
202210
private folioFilterProp: string = ''
203211
private updateTransactionTableCounter: number = 0
204212
private folioNumberSearch: string = ''
205213
private filterArray = []
206214
private totalTransactionsCount: number = 0
215+
private pickerDate: string = ''
207216
208217
private beforeMount () {
209218
this.initDatePicker()
210219
}
211220
212221
private get showDateRangeSelected () {
213222
if ((this.dateFilterSelected?.code === DATEFILTER_CODES.TODAY) || (this.dateFilterSelected?.code === DATEFILTER_CODES.YESTERDAY)) {
214-
return `${this.dateFilterSelected.label} - ${CommonUtils.formatDisplayDate(this.dateRangeSelected[0], 'MMM DD, YYYY')}`
223+
return `${this.dateFilterSelected?.label} - ${CommonUtils.formatDisplayDate(this.dateRangeSelected[0], 'MMM DD, YYYY')}`
215224
}
216-
return `${this.dateFilterSelected.label}
225+
return `${this.dateFilterSelected?.label}
217226
- ${CommonUtils.formatDisplayDate(this.dateRangeSelected[0], 'MMM DD, YYYY')}
218227
- ${CommonUtils.formatDisplayDate(this.dateRangeSelected[1], 'MMM DD, YYYY')}`
219228
}
220229
221-
private get disableDatePicker () {
222-
return this.dateFilterSelected?.code !== DATEFILTER_CODES.CUSTOMRANGE
223-
}
224-
225230
// apply filter button enable only if the date ranges are selected and start date <= end date
226231
private get isApplyFilterBtnValid () {
227232
return this.dateRangeSelected[0] && this.dateRangeSelected[1] && (this.dateRangeSelected[0] <= this.dateRangeSelected[1])
@@ -232,7 +237,9 @@ export default class Transactions extends Vue {
232237
this.formatDatePickerDate(moment(this.dateFilterProp?.startDate)),
233238
this.formatDatePickerDate(moment(this.dateFilterProp?.endDate))
234239
]
235-
this.dateFilterSelected = this.dateFilterRanges[this.dateFilterSelectedIndex]
240+
if (this.dateFilterSelectedIndex) {
241+
this.dateFilterSelected = this.dateFilterRanges[this.dateFilterSelectedIndex]
242+
}
236243
}
237244
238245
openDateFilter () {
@@ -243,30 +250,43 @@ export default class Transactions extends Vue {
243250
dateFilterChange (val) {
244251
if (val > -1) {
245252
this.dateFilterSelected = this.dateFilterRanges[val]
246-
switch (this.dateFilterSelected.code) {
253+
switch (this.dateFilterSelected?.code) {
254+
case DATEFILTER_CODES.TODAY:
255+
const today = this.formatDatePickerDate(moment())
256+
this.dateRangeSelected = [today, today]
257+
this.pickerDate = today.slice(0, -3)
258+
break
247259
case DATEFILTER_CODES.YESTERDAY:
248260
const yesterday = this.formatDatePickerDate(moment().subtract(1, 'days'))
249261
this.dateRangeSelected = [yesterday, yesterday]
262+
this.pickerDate = yesterday.slice(0, -3)
250263
break
251264
case DATEFILTER_CODES.LASTWEEK:
252265
// Week should start from Monday and Ends on Sunday
253266
const weekStart = this.formatDatePickerDate(moment().subtract(1, 'weeks').startOf('isoWeek'))
254267
const weekEnd = this.formatDatePickerDate(moment().subtract(1, 'weeks').endOf('isoWeek'))
255268
this.dateRangeSelected = [weekStart, weekEnd]
269+
this.pickerDate = weekStart.slice(0, -3)
256270
break
257271
case DATEFILTER_CODES.LASTMONTH:
258272
const monthStart = this.formatDatePickerDate(moment().subtract(1, 'months').startOf('month'))
259273
const monthEnd = this.formatDatePickerDate(moment().subtract(1, 'months').endOf('month'))
260274
this.dateRangeSelected = [monthStart, monthEnd]
275+
this.pickerDate = monthStart.slice(0, -3)
261276
break
262277
case DATEFILTER_CODES.CUSTOMRANGE:
263-
case DATEFILTER_CODES.TODAY:
264-
const today = this.formatDatePickerDate(moment())
265-
this.dateRangeSelected = [today, today]
278+
this.pickerDate = ''
266279
}
267280
}
268281
}
269282
283+
private dateClick (date) {
284+
this.pickerDate = ''
285+
// ideally it should find using DATEFILTER_CODES.CUSTOMRANGE, but since its static and date click is often, better give the index as it is
286+
this.dateFilterSelectedIndex = 4 // 4 = Custom Range
287+
this.dateFilterSelected = this.dateFilterRanges[this.dateFilterSelectedIndex]
288+
}
289+
270290
// date formatting required by the date picker
271291
private formatDatePickerDate (dateObj) {
272292
return dateObj.format('YYYY-MM-DD')
@@ -315,13 +335,13 @@ export default class Transactions extends Vue {
315335
if (isAll) {
316336
this.dateFilterProp = {}
317337
this.folioNumberSearch = this.folioFilterProp = ''
318-
this.dateFilterSelectedIndex = 0
338+
this.dateFilterSelectedIndex = null
319339
this.filterArray = []
320340
} else {
321341
switch (filter.type) {
322342
case 'DATE':
323343
this.dateFilterProp = {}
324-
this.dateFilterSelectedIndex = 0
344+
this.dateFilterSelectedIndex = null
325345
break
326346
case 'FOLIO':
327347
this.folioNumberSearch = this.folioFilterProp = ''

0 commit comments

Comments
 (0)