Skip to content

Commit

Permalink
fix: Smart Browse search with range query criteria. (PanJiaChen#1876)
Browse files Browse the repository at this point in the history
  • Loading branch information
EdwinBetanc0urt authored Jan 24, 2024
1 parent 391c3fc commit 85d10f7
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 26 deletions.
11 changes: 7 additions & 4 deletions src/store/modules/ADempiere/browserManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -165,20 +165,23 @@ const browserControl = {
}

// parameters isQueryCriteria
const filtersList = rootGetters.getBrowserQueryCriteria({
const queryCriteriaFilters = rootGetters.getBrowserQueryCriteria({
containerUuid,
fieldsList
}).map(parameter => {
})
const filtersList = queryCriteriaFilters.map(parameter => {
const {
columnName,
operator,
value,
valueTo
valueTo,
values
} = parameter
return JSON.stringify({
name: columnName,
operator,
values: !isEmptyValue(valueTo) ? [value, valueTo] : value
// values > value, valueTo > value
values: !isEmptyValue(values) ? values : !isEmptyValue(valueTo) ? [value, valueTo] : value
})
}).toString()
let filters
Expand Down
62 changes: 44 additions & 18 deletions src/store/modules/ADempiere/dictionary/browser/getters.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

// Constants
import {
IGNORE_VALUE_OPERATORS_LIST, MULTIPLE_VALUES_OPERATORS_LIST, RANGE_VALUE_OPERATORS_LIST
} from '@/utils/ADempiere/dataUtils'
import { FIELDS_DATE } from '@/utils/ADempiere/references'

// Utils and Helper Methods
import { isEmptyValue } from '@/utils/ADempiere/valueUtils'
import {
Expand Down Expand Up @@ -134,10 +140,11 @@ export default {
const queryParams = []

fieldsList.forEach(fieldItem => {
if (fieldItem.isInfoOnly) {
// default operator
const { isInfoOnly, columnName, columnNameTo, operator, displayType } = fieldItem
if (isInfoOnly) {
return false
}
const { columnName, operator } = fieldItem
const isMandatory = isMandatoryField(fieldItem)
// evaluate displayed fields
const isDisplayed = isDisplayedField(fieldItem) &&
Expand All @@ -147,31 +154,50 @@ export default {
return
}

const value = rootGetters.getValueOfField({
containerUuid,
columnName
const contextValue = rootGetters.getValueOfField({
containerUuid: containerUuid,
columnName: columnName
})

let valueTo
if (fieldItem.isRange && !isNumberField(fieldItem.displayType)) {
valueTo = rootGetters.getValueOfField({
containerUuid,
columnName: fieldItem.columnNameTo
})
// if (!isEmptyValue(valueTo)) {
// queryParams.push({
// columnName: fieldItem.columnNameTo,
// value: valueTo
// })
// }
let value, valueTo, values
if (!IGNORE_VALUE_OPERATORS_LIST.includes(operator)) {
if (isEmptyValue(contextValue)) {
return
}
// TODO: Improve conditions
if (FIELDS_DATE.includes(displayType)) {
if (MULTIPLE_VALUES_OPERATORS_LIST.includes(operator)) {
values = contextValue
} else if (RANGE_VALUE_OPERATORS_LIST.includes(operator)) {
if (Array.isArray(contextValue)) {
value = contextValue.at(0)
valueTo = contextValue.at(1)
} else {
value = contextValue
valueTo = rootGetters.getValueOfField({
containerUuid: containerUuid,
columnName: columnNameTo
})
}
} else {
value = contextValue
}
} else {
if (Array.isArray(contextValue)) {
values = contextValue
} else {
value = contextValue
}
}
}

if (!isEmptyValue(value)) {
queryParams.push({
columnName,
operator,
value,
valueTo,
operator
values
})
}
})
Expand Down
6 changes: 2 additions & 4 deletions src/utils/ADempiere/dictionaryUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,8 @@ export function generateField({
name: decodeHtmlEntities(
fieldToGenerate.name
),
columnNameTo: undefined,
elementNameTo: undefined,
columnNameTo: `${columnName}_To`,
elementNameTo: `${fieldToGenerate.elementColumnName}_To`,
isSameColumnElement: columnName === fieldToGenerate.elementColumnName,
isSOTrxMenu,
// displayed attributes
Expand Down Expand Up @@ -266,8 +266,6 @@ export function generateField({
field.operator = OPERATOR_GREATER_EQUAL.operator
}

field.columnNameTo = `${columnName}_To`
field.elementNameTo = `${field.elementName}_To`
if (typeRange) {
field.operator = OPERATOR_LESS_EQUAL.operator
field.uuid = `${field.uuid}_To`
Expand Down

0 comments on commit 85d10f7

Please sign in to comment.