UNPKG

cheetah-framework

Version:

Cheetah Framework JS used in all our applications

54 lines (43 loc) 1.37 kB
import { Model } from '@cheetah/models/Model' import ArrayMutator from '@cheetah/models/mutators/ArrayMutator' import Criterion from '@cheetah/models/Criterion' const OPERATORS = { AND: 'and', OR: 'or' } class Criteria extends Model { setCriteriaAttribute (criteria) { this._attributes['criteria'] = new ArrayMutator(criteria, criteriaOrCriterion => { if (criteriaOrCriterion instanceof Criteria || criteriaOrCriterion instanceof Criterion) { return criteriaOrCriterion } if ( criteriaOrCriterion.criteria && _.includes(_.values(OPERATORS), criteriaOrCriterion.operator) && !this.relationCriterionCheck(criteriaOrCriterion) ) { return new Criteria(criteriaOrCriterion) } return new Criterion(criteriaOrCriterion) }) } get defaultValue () { return { operator: OPERATORS.AND, criteria: [] } } add (criteriaOrCriterion) { this.criteria.push(criteriaOrCriterion) } removeByIndex (index) { this.criteria.splice(index, 1) } relationCriterionCheck (criteriaOrCriterion) { return _.get(criteriaOrCriterion, 'aggregators.0.aggregation') || _.includes(_.values(Criterion.RELATION_TYPE_OPERATORS), criteriaOrCriterion.type) } } Criteria.OPERATORS = OPERATORS Criteria.allOperators = _.values(OPERATORS) export default Criteria