diff --git a/resources/js/common/PMColumnFilterPopoverCommonMixin.js b/resources/js/common/PMColumnFilterPopoverCommonMixin.js index 0e749b1269..fa60f52b9b 100644 --- a/resources/js/common/PMColumnFilterPopoverCommonMixin.js +++ b/resources/js/common/PMColumnFilterPopoverCommonMixin.js @@ -31,7 +31,7 @@ const PMColumnFilterCommonMixin = { }, { "type": "datetime", - "includes": ["=", "<", "<=", ">", ">=", "contains", "regex"], + "includes": ["<", "<=", ">", ">="], "control": "PMColumnFilterOpDatetime", "input": "" }, @@ -146,6 +146,9 @@ const PMColumnFilterCommonMixin = { if (column.field === "status" || column.field === "assignee") { operators = ["=", "in"]; } + if (column.field === "initiated_at" || column.field === "completed_at" || column.field === "due_at") { + operators = ["<", "<=", ">", ">=", "between"]; + } return operators; }, getAssignee(filter) { diff --git a/resources/js/components/PMColumnFilterPopover/PMColumnFilterForm.vue b/resources/js/components/PMColumnFilterPopover/PMColumnFilterForm.vue index 476ed8f79e..111f3239dc 100644 --- a/resources/js/components/PMColumnFilterPopover/PMColumnFilterForm.vue +++ b/resources/js/components/PMColumnFilterPopover/PMColumnFilterForm.vue @@ -202,12 +202,13 @@ return root; }, addItem(index) { + let operator = (this.format === "datetime") ? ">" : "="; let item = { subject: { type: this.type, value: this.value }, - operator: "=", + operator: operator, value: "", logical: "and", viewControl: "PMColumnFilterOpInput" diff --git a/resources/js/components/PMColumnFilterPopover/PMColumnFilterOpDatetime.vue b/resources/js/components/PMColumnFilterPopover/PMColumnFilterOpDatetime.vue index feb2ff3c30..4b0a6fb100 100644 --- a/resources/js/components/PMColumnFilterPopover/PMColumnFilterOpDatetime.vue +++ b/resources/js/components/PMColumnFilterPopover/PMColumnFilterOpDatetime.vue @@ -44,7 +44,7 @@ watch: { value: { handler(newValue) { - this.input = newValue; + this.input = this.convertFromISOString(newValue); }, immediate: true }, @@ -63,8 +63,22 @@ this.selectedTime = this.getCurrentTime(this.input); }, methods: { + convertToISOString(dateString) { + let inUTCTimeZone = '' + if (dateString){ + inUTCTimeZone = moment(dateString).tz('UTC').toISOString(); + } + return inUTCTimeZone; + }, + convertFromISOString(dateString) { + let inLocalTimeZone = dateString; + if (dateString){ + inLocalTimeZone = moment(dateString).tz(window.ProcessMaker.user.timezone).format("YYYY-MM-DD HH:mm:ss"); + } + return inLocalTimeZone; + }, emitInput() { - this.$emit("input", this.input); + this.$emit("input", this.convertToISOString(this.input)); }, setInput() { this.input = this.selectedDate + " " + this.selectedTime;