Skip to content

Instantly share code, notes, and snippets.

@kevinkucharczyk
Created August 22, 2018 05:12
Show Gist options
  • Save kevinkucharczyk/60118b9d787b8be8a283cd4ac0029bd3 to your computer and use it in GitHub Desktop.
Save kevinkucharczyk/60118b9d787b8be8a283cd4ac0029bd3 to your computer and use it in GitHub Desktop.
Campaign Options
import Ember from 'ember';
const { computed } = Ember;
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
willExit: computed('model.{exitOnAction,exitOnConversion}', function() {
return this.get('model.exitOnAction') || this.get('model.exitOnConversion');
}),
neverExit: computed.not('willExit'),
actions: {
neverExitSelected() {
let model = this.get('model');
model.set('exitOnAction', false);
model.set('exitOnConversion', false);
},
exitSelected() {
let model = this.get('model');
model.set('exitOnAction', true);
}
}
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
exitOnAction: attr('bool'),
exitOnConversion: attr('bool')
});
import Ember from 'ember';
export default Ember.Route.extend({
model() {
let campaign = this.store.createRecord('campaign', {
exitOnAction: true,
exitOnConversion: false
});
return campaign;
}
});
body {
margin: 12px 16px;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12pt;
}
.mrg-l-lg {
margin-left: 30px;
}
.mrg-t-sm {
margin-top: 10px;
}
.mrg-t-lg {
margin-top: 30px;
}
.pad-t-lg {
padding-top: 20px;
}
.font-xl-and-red {
color: red;
font-size: 24px;
}
.border-top {
border-top: 1px solid black;
}
<div>
<label>
<input type="radio" name="exit-condition" checked={{neverExit}} onchange={{action "neverExitSelected"}}>People will complete the entire campaign
</label>
</div>
<div class="mrg-t-lg">
<label>
<input type="radio" name="exit-condition" checked={{willExit}} onchange={{action "exitSelected"}}>People will exit when <strong>any</strong> of the following are true:
</label>
</div>
<div class="mrg-l-lg">
<div class="mrg-t-sm">
<label>
{{input type="checkbox" checked=model.exitOnAction}} when action is fired
</label>
</div>
<div class="mrg-t-sm">
<label>
{{input type="checkbox" checked=model.exitOnConversion}} when they meet the conversion goal
</label>
</div>
</div>
<div class="mrg-t-lg border-top pad-t-lg">
A user will exit the campaign when:
<div class="mrg-t-sm font-xl-and-red">
{{#if (and (not model.exitOnAction) (not model.exitOnConversion))}}
they complete the entire campaign
{{else if (and model.exitOnAction model.exitOnConversion)}}
action is fired or they meet the conversion goal
{{else if model.exitOnConversion}}
they meet the conversion goal
{{else if model.exitOnAction}}
action is fired
{{/if}}
</div>
</div>
{
"version": "0.15.0",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.2.2",
"ember-template-compiler": "3.2.2",
"ember-testing": "3.2.2"
},
"addons": {
"ember-data": "3.2.0",
"ember-truth-helpers": "2.1.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment