correct error when clearing a value in date fields of type range. (#202)

pull/3759/head
EdwinBetanc0urt 2019-12-11 17:34:02 -04:00 committed by Yamel Senih
parent 8b53babb21
commit 137969c70e
2 changed files with 41 additions and 31 deletions

View File

@ -19,7 +19,6 @@
</template> </template>
<script> <script>
import { clientDateTime } from '@/utils/ADempiere'
import { fieldMixin } from '@/components/ADempiere/Field/FieldMixin' import { fieldMixin } from '@/components/ADempiere/Field/FieldMixin'
export default { export default {
@ -44,7 +43,7 @@ export default {
text: this.$t('components.date.Week'), text: this.$t('components.date.Week'),
onClick(picker) { onClick(picker) {
const date = new Date() const date = new Date()
var monthEndDay = new Date(date.getFullYear(), date.getMonth() + 1, 0) const monthEndDay = new Date(date.getFullYear(), date.getMonth() + 1, 0)
picker.$emit('pick', monthEndDay) picker.$emit('pick', monthEndDay)
} }
}] }]
@ -60,14 +59,13 @@ export default {
}, { }, {
text: this.$t('components.date.Week'), text: this.$t('components.date.Week'),
onClick(picker) { onClick(picker) {
var start_date, end_date, date, currenDate, first, last const start_date = new Date()
start_date = new Date()
start_date.setHours(0, 0, 0, 0) start_date.setHours(0, 0, 0, 0)
end_date = new Date() const end_date = new Date()
date = null const date = null
currenDate = date ? new Date(date) : new Date() const currenDate = date ? new Date(date) : new Date()
first = currenDate.getDate() - currenDate.getDay('monday') const first = currenDate.getDate() - currenDate.getDay('monday')
last = first - 7 const last = first - 7
start_date.setDate(last) start_date.setDate(last)
end_date.setDate(first - 1) end_date.setDate(first - 1)
picker.$emit('pick', [start_date, end_date]) picker.$emit('pick', [start_date, end_date])
@ -75,17 +73,17 @@ export default {
}, { }, {
text: this.$t('components.date.LastMonth'), text: this.$t('components.date.LastMonth'),
onClick(picker) { onClick(picker) {
var date = new Date() const date = new Date()
var monthEndDay = new Date(date.getFullYear(), date.getMonth(), 0) const monthEndDay = new Date(date.getFullYear(), date.getMonth(), 0)
var monthStartDay = new Date(date.getFullYear(), date.getMonth() - 1, 1) const monthStartDay = new Date(date.getFullYear(), date.getMonth() - 1, 1)
picker.$emit('pick', [monthStartDay, monthEndDay]) picker.$emit('pick', [monthStartDay, monthEndDay])
} }
}, { }, {
text: this.$t('components.date.CurrentMonth'), text: this.$t('components.date.CurrentMonth'),
onClick(picker) { onClick(picker) {
var date = new Date() const date = new Date()
var monthEndDay = new Date(date.getFullYear(), date.getMonth() + 1, 0) const monthEndDay = new Date(date.getFullYear(), date.getMonth() + 1, 0)
var monthStartDay = new Date(date.getFullYear(), date.getMonth(), 1) const monthStartDay = new Date(date.getFullYear(), date.getMonth(), 1)
picker.$emit('pick', [monthStartDay, monthEndDay]) picker.$emit('pick', [monthStartDay, monthEndDay])
} }
}] }]
@ -143,15 +141,18 @@ export default {
} }
}, },
methods: { methods: {
clientDateTime,
parsedDateValue(value) { parsedDateValue(value) {
// not return undefined to v-model
if (this.isEmptyValue(value)) {
return null
}
// instance date from long value
if (typeof value === 'number') { if (typeof value === 'number') {
value = new Date(value).toUTCString() value = new Date(value).toUTCString()
} }
if (this.isEmptyValue(value)) {
value = undefined
}
// generate range value
if (this.metadata.isRange) { if (this.metadata.isRange) {
let valueTo = this.metadata.valueTo let valueTo = this.metadata.valueTo
if (typeof valueTo === 'number') { if (typeof valueTo === 'number') {
@ -162,26 +163,30 @@ export default {
} }
value = [value, valueTo] value = [value, valueTo]
} }
return value return value
}, },
// validate values before send values to store or server // validate values before send values to store or server
preHandleChange(value) { preHandleChange(value) {
var valueFirst, valueTo let startValue, endValue
valueFirst = value startValue = value
if ((this.metadata.isRange && !this.metadata.inTable) && Array.isArray(value)) { if (this.metadata.isRange && !this.metadata.inTable && Array.isArray(value)) {
valueFirst = value[0] startValue = value[0]
valueTo = value[1] endValue = value[1]
} }
if (valueFirst === null) {
valueFirst = undefined if (startValue === null) {
valueTo = undefined startValue = undefined
endValue = undefined
} }
if (typeof valueFirst !== 'object' && valueFirst !== undefined) {
valueFirst = new Date(valueFirst) if (typeof startValue !== 'object' && startValue !== undefined) {
valueTo = new Date(valueTo) startValue = new Date(startValue)
endValue = new Date(endValue)
} }
this.handleChange(valueFirst, valueTo)
this.handleChange(startValue, endValue)
} }
} }
} }

View File

@ -47,6 +47,11 @@ export const fieldMixin = {
preHandleChange(value) { preHandleChange(value) {
this.handleChange(value) this.handleChange(value)
}, },
/**
* @param {mixed} value, main value in component
* @param {mixed} valueTo, used in end value in range
* @param {string} label, or displayColumn to show in select
*/
handleChange(value, valueTo = undefined, label = undefined) { handleChange(value, valueTo = undefined, label = undefined) {
const sendParameters = { const sendParameters = {
parentUuid: this.metadata.parentUuid, parentUuid: this.metadata.parentUuid,