44
44
</v-list-item >
45
45
</v-list-item-group >
46
46
</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" >
48
48
<v-btn large
49
49
color =" primary"
50
50
class =" font-weight-bold flex-grow-1"
63
63
</v-btn >
64
64
</div >
65
65
</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 >
81
89
</div >
82
90
</v-card >
83
91
</v-menu >
@@ -196,32 +204,29 @@ export default class Transactions extends Vue {
196
204
code: DATEFILTER_CODES .CUSTOMRANGE
197
205
}
198
206
]
199
- private dateFilterSelectedIndex: number = 0
200
- private dateFilterSelected: any = this . dateFilterRanges [ this . dateFilterSelectedIndex ]
207
+ private dateFilterSelectedIndex: number = null
208
+ private dateFilterSelected: any = {}
201
209
private dateFilterProp: any = {}
202
210
private folioFilterProp: string = ' '
203
211
private updateTransactionTableCounter: number = 0
204
212
private folioNumberSearch: string = ' '
205
213
private filterArray = []
206
214
private totalTransactionsCount: number = 0
215
+ private pickerDate: string = ' '
207
216
208
217
private beforeMount () {
209
218
this .initDatePicker ()
210
219
}
211
220
212
221
private get showDateRangeSelected () {
213
222
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' )} `
215
224
}
216
- return ` ${this .dateFilterSelected .label }
225
+ return ` ${this .dateFilterSelected ? .label }
217
226
- ${CommonUtils .formatDisplayDate (this .dateRangeSelected [0 ], ' MMM DD, YYYY' )}
218
227
- ${CommonUtils .formatDisplayDate (this .dateRangeSelected [1 ], ' MMM DD, YYYY' )} `
219
228
}
220
229
221
- private get disableDatePicker () {
222
- return this .dateFilterSelected ?.code !== DATEFILTER_CODES .CUSTOMRANGE
223
- }
224
-
225
230
// apply filter button enable only if the date ranges are selected and start date <= end date
226
231
private get isApplyFilterBtnValid () {
227
232
return this .dateRangeSelected [0 ] && this .dateRangeSelected [1 ] && (this .dateRangeSelected [0 ] <= this .dateRangeSelected [1 ])
@@ -232,7 +237,9 @@ export default class Transactions extends Vue {
232
237
this .formatDatePickerDate (moment (this .dateFilterProp ?.startDate )),
233
238
this .formatDatePickerDate (moment (this .dateFilterProp ?.endDate ))
234
239
]
235
- this .dateFilterSelected = this .dateFilterRanges [this .dateFilterSelectedIndex ]
240
+ if (this .dateFilterSelectedIndex ) {
241
+ this .dateFilterSelected = this .dateFilterRanges [this .dateFilterSelectedIndex ]
242
+ }
236
243
}
237
244
238
245
openDateFilter () {
@@ -243,30 +250,43 @@ export default class Transactions extends Vue {
243
250
dateFilterChange (val ) {
244
251
if (val > - 1 ) {
245
252
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
247
259
case DATEFILTER_CODES .YESTERDAY :
248
260
const yesterday = this .formatDatePickerDate (moment ().subtract (1 , ' days' ))
249
261
this .dateRangeSelected = [yesterday , yesterday ]
262
+ this .pickerDate = yesterday .slice (0 , - 3 )
250
263
break
251
264
case DATEFILTER_CODES .LASTWEEK :
252
265
// Week should start from Monday and Ends on Sunday
253
266
const weekStart = this .formatDatePickerDate (moment ().subtract (1 , ' weeks' ).startOf (' isoWeek' ))
254
267
const weekEnd = this .formatDatePickerDate (moment ().subtract (1 , ' weeks' ).endOf (' isoWeek' ))
255
268
this .dateRangeSelected = [weekStart , weekEnd ]
269
+ this .pickerDate = weekStart .slice (0 , - 3 )
256
270
break
257
271
case DATEFILTER_CODES .LASTMONTH :
258
272
const monthStart = this .formatDatePickerDate (moment ().subtract (1 , ' months' ).startOf (' month' ))
259
273
const monthEnd = this .formatDatePickerDate (moment ().subtract (1 , ' months' ).endOf (' month' ))
260
274
this .dateRangeSelected = [monthStart , monthEnd ]
275
+ this .pickerDate = monthStart .slice (0 , - 3 )
261
276
break
262
277
case DATEFILTER_CODES .CUSTOMRANGE :
263
- case DATEFILTER_CODES .TODAY :
264
- const today = this .formatDatePickerDate (moment ())
265
- this .dateRangeSelected = [today , today ]
278
+ this .pickerDate = ' '
266
279
}
267
280
}
268
281
}
269
282
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
+
270
290
// date formatting required by the date picker
271
291
private formatDatePickerDate (dateObj ) {
272
292
return dateObj .format (' YYYY-MM-DD' )
@@ -315,13 +335,13 @@ export default class Transactions extends Vue {
315
335
if (isAll ) {
316
336
this .dateFilterProp = {}
317
337
this .folioNumberSearch = this .folioFilterProp = ' '
318
- this .dateFilterSelectedIndex = 0
338
+ this .dateFilterSelectedIndex = null
319
339
this .filterArray = []
320
340
} else {
321
341
switch (filter .type ) {
322
342
case ' DATE' :
323
343
this .dateFilterProp = {}
324
- this .dateFilterSelectedIndex = 0
344
+ this .dateFilterSelectedIndex = null
325
345
break
326
346
case ' FOLIO' :
327
347
this .folioNumberSearch = this .folioFilterProp = ' '
0 commit comments