Skip to content

Commit

Permalink
feat: add support for calculated min/max values and add calc paramete…
Browse files Browse the repository at this point in the history
…rs for isochrones interval
  • Loading branch information
amoncaldas committed Nov 22, 2021
1 parent d5f2ef1 commit af5dba3
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 12 deletions.
20 changes: 10 additions & 10 deletions src/config-examples/ors-map-filters-example.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ const filters = [
required: false,
type: constants.filterTypes.steps,
value: 1,
min: 3,
min: 1,
max: 30,
step: 1,
multiplyValueBy: 60,
Expand All @@ -185,19 +185,19 @@ const filters = [
valuesWhen: {
'driving-*': {
max: [{ref: 'time_range'}, 60], // the max value of range or 60
min: 6
min: [{ref: 'time_range', calc: {dividedBy: 9}, min: 1}]
},
'cycling-*': {
max: [{ref: 'time_range'}, 30], // the max value of range or 30,
min: 3
min: [{ref: 'time_range', calc: {dividedBy: 9}, min: 1}] //set min value by calcing time_range value divided by 9 or ...
},
'foot-*': {
max: [{ref: 'time_range'}, 1200], // the max value of range or 1200,
min: 12
min: [{ref: 'time_range', calc: {dividedBy: 9}, min: 1}]
},
wheelchair: {
max: [{ref: 'time_range'}, 1200], // the max value of range or 1200,
min: 12
min: [{ref: 'time_range', calc: {dividedBy: 9}, min: 1}]
},
}
}
Expand Down Expand Up @@ -237,7 +237,7 @@ const filters = [
required: false,
type: constants.filterTypes.steps,
value: 1,
min: 3,
min: 1,
max: 30,
multiplyValueBy: 1000,
step: 1,
Expand All @@ -261,19 +261,19 @@ const filters = [
valuesWhen: {
'driving-*': {
max: [{ref: 'distance_range'}, 120], // the max value of range or 120
min: 12
min: [{ref: 'distance_range', calc: {dividedBy: 9}, min: 1}]
},
'cycling-*': {
max: [{ref: 'distance_range'}, 120], // the max value of range or 120
min: 12
min: [{ref: 'distance_range', calc: {dividedBy: 9}, min: 1}]
},
'foot-*': {
max: [{ref: 'distance_range'}, 120], // the max value of range or 120
min: 12
min: [{ref: 'distance_range', calc: {dividedBy: 9}, min: 1}]
},
wheelchair: {
max: [{ref: 'distance_range'}, 120], // the max value of range or 120
min: 12
min: [{ref: 'distance_range', calc: {dividedBy: 9}, min: 1}]
},
}
}
Expand Down
17 changes: 15 additions & 2 deletions src/support/dependency-service.js
Original file line number Diff line number Diff line change
Expand Up @@ -407,10 +407,23 @@ const getRuleValue = (rule, ruleKey, propName) => {
if (Array.isArray(propValue)) {
let valueRule = propValue[0]
let dependsOnFilter = getDependencyRelationTargetObj(valueRule.ref)
// if the first option doe not have a valid value, gets the second
if ((!dependsOnFilter || dependsOnFilter.value === undefined) && propValue.length === 2) {
value = propValue[1] // if the first option doe not have a valid value, gets the second
value = propValue[1]
} else {
value = dependsOnFilter.value
if (valueRule.calc) {
let prop = valueRule.prop || 'value'
if (valueRule.calc.dividedBy) {
value = Math.round(dependsOnFilter[prop] / valueRule.calc.dividedBy)
} else if (valueRule.calc.multipliedBy) {
value = Math.round(dependsOnFilter[prop] / valueRule.calc.multipliedBy)
}
if (value < valueRule.min) {
value = valueRule.min
}
} else {
value = dependsOnFilter.value
}
}
} else {
value = propValue
Expand Down

0 comments on commit af5dba3

Please sign in to comment.