Add basic support for "between" verb, for date range grid filter
this seems to be complete, but we'll see in practice if i forgot something..
This commit is contained in:
		
							parent
							
								
									14778757d9
								
							
						
					
					
						commit
						d97f95fb92
					
				
					 4 changed files with 177 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -14,6 +14,7 @@ const TailboneDatepicker = {
 | 
			
		|||
        ':value="value ? parseDate(value) : null"',
 | 
			
		||||
        '@input="dateChanged"',
 | 
			
		||||
        ':disabled="disabled"',
 | 
			
		||||
        'ref="trueDatePicker"',
 | 
			
		||||
        '>',
 | 
			
		||||
        '</b-datepicker>'
 | 
			
		||||
    ].join(' '),
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +50,11 @@ const TailboneDatepicker = {
 | 
			
		|||
 | 
			
		||||
        dateChanged(date) {
 | 
			
		||||
            this.$emit('input', this.formatDate(date))
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        focus() {
 | 
			
		||||
            this.$refs.trueDatePicker.focus()
 | 
			
		||||
        },
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,53 @@
 | 
			
		|||
 | 
			
		||||
const GridFilterDateValue = {
 | 
			
		||||
    template: '#grid-filter-date-value-template',
 | 
			
		||||
    props: {
 | 
			
		||||
        value: String,
 | 
			
		||||
        dateRange: Boolean,
 | 
			
		||||
    },
 | 
			
		||||
    data() {
 | 
			
		||||
        return {
 | 
			
		||||
            startDate: null,
 | 
			
		||||
            endDate: null,
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    mounted() {
 | 
			
		||||
        if (this.dateRange) {
 | 
			
		||||
            if (this.value.includes('|')) {
 | 
			
		||||
                let values = this.value.split('|')
 | 
			
		||||
                if (values.length == 2) {
 | 
			
		||||
                    this.startDate = values[0]
 | 
			
		||||
                    this.endDate = values[1]
 | 
			
		||||
                } else {
 | 
			
		||||
                    this.startDate = this.value
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                this.startDate = this.value
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            this.startDate = this.value
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    methods: {
 | 
			
		||||
        focus() {
 | 
			
		||||
            this.$refs.startDate.focus()
 | 
			
		||||
        },
 | 
			
		||||
        startDateChanged(value) {
 | 
			
		||||
            if (this.dateRange) {
 | 
			
		||||
                value += '|' + this.endDate
 | 
			
		||||
            }
 | 
			
		||||
            this.$emit('input', value)
 | 
			
		||||
        },
 | 
			
		||||
        endDateChanged(value) {
 | 
			
		||||
            value = this.startDate + '|' + value
 | 
			
		||||
            this.$emit('input', value)
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Vue.component('grid-filter-date-value', GridFilterDateValue)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const GridFilter = {
 | 
			
		||||
    template: '#grid-filter-template',
 | 
			
		||||
    props: {
 | 
			
		||||
| 
						 | 
				
			
			@ -14,6 +63,23 @@ const GridFilter = {
 | 
			
		|||
            })
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        valuedVerb() {
 | 
			
		||||
            /* this returns true if the filter's current verb should expose value input(s) */
 | 
			
		||||
 | 
			
		||||
            // if filter has no "valueless" verbs, then all verbs should expose value inputs
 | 
			
		||||
            if (!this.filter.valueless_verbs) {
 | 
			
		||||
                return true
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // if filter *does* have valueless verbs, check if "current" verb is valueless
 | 
			
		||||
            if (this.filter.valueless_verbs.includes(this.filter.verb)) {
 | 
			
		||||
                return false
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // current verb is *not* valueless
 | 
			
		||||
            return true
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        focusValue: function() {
 | 
			
		||||
            this.$refs.valueInput.focus()
 | 
			
		||||
            // this.$refs.valueInput.select()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue