36 lines
1,010 B
Vue
36 lines
1,010 B
Vue
<script lang="ts">
|
|
import _ from 'lodash'
|
|
|
|
import Dates from './Dates.vue'
|
|
import LocationQuery from '../models/LocationQuery'
|
|
|
|
export default {
|
|
mixins: [Dates],
|
|
methods: {
|
|
isQueryChanged({
|
|
newValue,
|
|
oldValue,
|
|
}: {
|
|
newValue?: LocationQuery,
|
|
oldValue?: LocationQuery,
|
|
}): boolean {
|
|
const values = [oldValue, newValue].map((value) =>
|
|
Object.entries(value || {}).reduce((acc, [key, val]) => {
|
|
// Replace all undefined values with null to avoid the comparison from breaking
|
|
// when an attribute is not set and it's undefined on one side and null on the other
|
|
acc[key] = val === undefined ? null : val
|
|
|
|
// Normalize dates to avoid issues with different date formats
|
|
if (key === 'startDate' || key === 'endDate') {
|
|
acc[key] = this.normalizeDate(val)
|
|
}
|
|
|
|
return acc
|
|
}, {} as Record<string, any>)
|
|
)
|
|
|
|
return !_.isEqual(values[0], values[1])
|
|
},
|
|
}
|
|
}
|
|
</script>
|