From 4b13e1434f5a67b1f44f09b067959bde72d0d989 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 00:41:20 +0530 Subject: [PATCH] feat: overshadowing handler --- .../workflow-management/classes/Generator.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/server/src/workflow-management/classes/Generator.ts b/server/src/workflow-management/classes/Generator.ts index 901f7269..5ee06273 100644 --- a/server/src/workflow-management/classes/Generator.ts +++ b/server/src/workflow-management/classes/Generator.ts @@ -595,5 +595,35 @@ export class WorkflowGenerator { } + + private handleOverShadowing = async (pair: WhereWhatPair, page: Page, index: number): Promise => { + const overShadowing = (await this.IsOverShadowingAction(pair, page)) + .filter((p) => p.isOverShadowing); + if (overShadowing.length !== 0) { + for (const overShadowedAction of overShadowing) { + if (overShadowedAction.index === index) { + if (pair.where.selectors) { + for (const selector of pair.where.selectors) { + if (this.workflowRecord.workflow[index].where.selectors?.includes(selector)) { + break; + } else { + // add new selector to the where part of the overshadowing pair + this.workflowRecord.workflow[index].where.selectors?.push(selector); + } + } + } + // push the action automatically to the first/the closest rule which would be overShadowed + this.workflowRecord.workflow[index].what = + this.workflowRecord.workflow[index].what.concat(pair.what); + return true; + } else { + // notify client about overshadowing a further rule + return false; + } + } + } + return false; + } + }