Skip to content

Commit fe7d94d

Browse files
committed
Add Promotional Message Component
1 parent d6ab33a commit fe7d94d

38 files changed

+1296
-67
lines changed

code-examples.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,15 @@ const activateUser = (componentName) => {
5656
optimizelyClient.track('banner_click', componentName);
5757
};
5858
```
59+
60+
## React SDK Examples
61+
62+
- [Hook useDecision()](https://github.com/jondjones-poc/optimizely-fullstack-demo/blob/master/component/SubscribePage.js#L13)
63+
64+
- [HOC via React SDK](https://github.com/jondjones-poc/optimizely-fullstack-demo/blob/master/pages/landingpage.js#L60)
65+
66+
- [withOptimizely()](https://github.com/jondjones-poc/optimizely-fullstack-demo/blob/master/component/BannerForSubscribeMembers.js#L72)
67+
68+
## Data File Examples
69+
70+
- [Get Data via getServerSideProps()](https://github.com/jondjones-poc/optimizely-fullstack-demo/blob/master/pages/plp.js#L133)

component/BannerForPlpFilter.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const BannerForPlpFilter = ({...props}) => {
77
<div className={`row ${styles.plpFilter}`}>
88
<ul className={`col-6 ${styles.tags}`} >
99
<li>
10-
<b className={`${styles.title}`}>Segment Example:</b>
10+
<b className={`${styles.title}`}>Banner Example:</b>
1111
</li>
1212
<li>
1313
<Link href="/plp?utc_campaign=vip" className={`${styles.tag}`}>
@@ -24,16 +24,12 @@ const BannerForPlpFilter = ({...props}) => {
2424
MARKETING BANNER
2525
</Link>
2626
</li>
27-
<li>
28-
<Link href="/plp" className={`${styles.tag}`}>
29-
NORMAL
30-
</Link>
31-
</li>
27+
3228
</ul>
3329

3430
<ul className={`col-6 ${styles.tags}`} >
3531
<li >
36-
<b className={`${styles.title}`}>Algorithm Example:</b>
32+
<b className={`${styles.title}`}>Menu Example:</b>
3733
</li>
3834
<li>
3935
<Link href="/plp?algorithm=1" className={`${styles.tag}`}>
@@ -52,7 +48,7 @@ const BannerForPlpFilter = ({...props}) => {
5248
</li>
5349
<li>
5450
<Link href="/plp" className={`${styles.tag}`}>
55-
MENU 4
51+
NORMAL
5652
</Link>
5753
</li>
5854
</ul>

component/MultiArmBanditComponent.js

Lines changed: 0 additions & 57 deletions
This file was deleted.

component/RemoteControlComponent.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
const promotionBannerStyle = {
2+
width: '100%',
3+
display: 'block',
4+
position: 'relative',
5+
backgroundSize: '100%',
6+
backgroundColor: 'black',
7+
color: 'white',
8+
textAlign: 'center',
9+
padding: '1rem',
10+
fontSize: '2rem'
11+
}
12+
13+
const RemoteControlComponent = ({...props}) => {
14+
15+
const { promotionMessage } = props;
16+
17+
return (
18+
<div className="container" style={promotionBannerStyle}>
19+
{promotionMessage}
20+
</div>
21+
)
22+
}
23+
24+
export default RemoteControlComponent;

data/datafile.json

Lines changed: 1241 additions & 1 deletion
Large diffs are not rendered by default.

pages/index.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import { getOptimizelyProjectsDataFile, getUserId } from "../utils/optimizelyCon
55

66
import Banner from "../component/Banner";
77
import FeatureFlagComponent from "../component/FeatureFlagComponent";
8+
import RemoteControlComponent from "../component/RemoteControlComponent";
89

910
export default function Home({...props}) {
1011

1112
const { datafile, clientId } = props;
1213

1314
let [ isFeatureEnabled, renderIsFeatureEnabled ] = useState(false);
15+
let [ promotionalMessage, setPromotionalMessage ] = useState('');
1416
let [ backgroundColor, setBackgroundColor ] = useState('');
1517
let [ componentTitle, setComponentTitle ] = useState('');
1618
let [ bannerText, setBannerText ] = useState('');
@@ -44,6 +46,10 @@ export default function Home({...props}) {
4446
console.log('featureFlag', featureFlag);
4547
renderIsFeatureEnabled(featureFlag.enabled);
4648

49+
const remoteControl = optimizelyUserContext.decide('1_homepage_-_remote_control');
50+
console.log('remote_control', remoteControl);
51+
setPromotionalMessage(remoteControl.variables.promotionMessage);
52+
4753
// AB Testing Code
4854
const abTestFlag = optimizelyUserContext.decide('ab_test');
4955
console.log('abTest', abTestFlag);
@@ -64,6 +70,12 @@ export default function Home({...props}) {
6470

6571
<section id="main">
6672

73+
{promotionalMessage &&
74+
<RemoteControlComponent
75+
promotionMessage={promotionalMessage} />
76+
}
77+
78+
6779
{componentTitle &&
6880
<Banner key={`${componentTitle}${backgroundColor}`}
6981
userId={userId}

public/demo/apetito/feature.png

2.26 MB
Loading

public/demo/apetito/footer.png

66.8 KB
Loading

public/demo/apetito/header.png

52.3 KB
Loading

public/demo/apetito/item.png

465 KB
Loading

0 commit comments

Comments
 (0)