Browse Source

Refactor Condition class

pull/6419/head
mohamedsalem401 2 years ago
parent
commit
b207f28ba2
  1. 17
      packages/core/src/data_sources/model/conditional_variables/Condition.ts

17
packages/core/src/data_sources/model/conditional_variables/Condition.ts

@ -13,23 +13,15 @@ import { Model } from '../../../common';
export type ConditionProps = ExpressionProps | LogicGroupProps | boolean; export type ConditionProps = ExpressionProps | LogicGroupProps | boolean;
export class Condition extends Model { export class Condition extends Model {
private condition: ConditionProps;
private em: EditorModel; private em: EditorModel;
constructor(props: ConditionProps, opts: { em: EditorModel }) { constructor(props: ConditionProps, opts: { em: EditorModel }) {
super(props); super(props);
this.condition = props;
this.em = opts.em; this.em = opts.em;
} }
evaluate(): boolean { evaluate(): boolean {
return this.evaluateCondition(this.condition); const condition = this.get('condition');
}
/**
* Recursively evaluates conditions and logic groups.
*/
private evaluateCondition(condition: ConditionProps): boolean {
if (typeof condition === 'boolean') return condition; if (typeof condition === 'boolean') return condition;
if (this.isLogicGroup(condition)) { if (this.isLogicGroup(condition)) {
@ -49,7 +41,8 @@ export class Condition extends Model {
return evaluated; return evaluated;
} }
throw new Error('Invalid condition type.'); this.em.logError('Invalid condition type.');
return false;
} }
/** /**
@ -71,7 +64,9 @@ export class Condition extends Model {
*/ */
getDataVariables() { getDataVariables() {
const variables: DataVariableProps[] = []; const variables: DataVariableProps[] = [];
this.extractVariables(this.condition, variables); const condition = this.get('condition');
this.extractVariables(condition, variables);
return variables; return variables;
} }

Loading…
Cancel
Save