@jss-rule-engine/edge
Version:
52 lines (38 loc) • 1.66 kB
text/typescript
import { RuleActionData, RuleEngineContext } from "@jss-rule-engine/core";
import { RuleEnginePersonalizationContext } from "../ruleEngineProvider";
export default async function(command:RuleActionData, ruleContext:RuleEngineContext) {
//parameters: renderingName, datasourcePath, placeholderName
var placeholderName = command.attributes.get("placeholderName");
var renderingName = command.attributes.get("renderingName");
if(!ruleContext.sessionContext)
{
throw new Error("Session context is missing");
}
console.log('Running hide rendering command');
let personalizationContext = ruleContext.sessionContext?.get<RuleEnginePersonalizationContext>("personalization");
if (!personalizationContext) {
personalizationContext = {
placeholders: {}
};
}
var placeholder = personalizationContext.placeholders[placeholderName];
var placeholder = placeholder ? placeholder : {
name: placeholderName,
renderings: []
};
personalizationContext.placeholders[placeholderName] = placeholder;
ruleContext.sessionContext?.set("personalization", personalizationContext);
var rendering = placeholder.renderings.find((i:any) => i.name == renderingName);
if(rendering)
{
//update personalization for the rendering
rendering.hide = true;
}else{
//add new personalization
var newPersonalization = {
name: renderingName,
hide: true
};
placeholder.renderings.push(newPersonalization);
}
}