Skip to content

Instantly share code, notes, and snippets.

@wonderful123
Last active January 20, 2018 10:50
Show Gist options
  • Save wonderful123/eccf17dfcb18ee28c425659baafe1f48 to your computer and use it in GitHub Desktop.
Save wonderful123/eccf17dfcb18ee28c425659baafe1f48 to your computer and use it in GitHub Desktop.
Trade sim
import Ember from 'ember';
export default Ember.Controller.extend({
});
<br>
<br>
{{trade-simulator}}
<br>
<br>
import Ember from 'ember';
export default Ember.Object.extend({
description: "Gives the cheapest prices",
options: [
{
label: "Time period",
selection: "1d",
component: "trade-simulator/trigger-options/select-option",
options: ["1d", "3d", "5d", "30d"]
},
{
label: "Maximum price",
component: "trade-simulator/trigger-options/input-option",
selection: "10"
},
],
priceData: {},
validBuys: function(date) {
// return list of valid buys on date using priceData and options
// Just some test responses....
if (date === "1")
return ["Wünsche", "sind", "Träume"];
if (date === "2")
return ["Was", "geht", "Alter?"];
if (date === "3")
return ["Hello", "my", "name", "is", "Doctor", "Greenthumb"];
}
});
import Ember from 'ember';
import CheapestPrice from './cheapest-price';
export default Ember.Component.extend({
triggers: [
"Cheapest price",
"Highest price"
],
selection: "Cheapest price", //default
buyTrigger: Ember.computed('selection', function() {
let selection = this.get('selection')
var trigger;
if (selection === "Cheapest price") {
trigger = CheapestPrice.create();
} else if (selection === "Highest price") {
return {description: "Would return HighestPrice object with option list"};
}
this.sendAction('setTrigger', trigger);
return trigger;
}),
});
<label>Buy trigger:</label>
<select onchange={{action (mut selection) value="target.value"}}>
{{#each triggers as |t|}}
<option value={{t}}>{{t}}</option>
{{/each}}
</select>
<br><br>
<b>Trigger description:</b> {{buyTrigger.description}}
<h3>Options:</h3>
{{trade-simulator/trigger-options options=buyTrigger.options}}
import Ember from 'ember';
export default Ember.Component.extend({
priceData: {
"abc": [5, 2, 3, 6, 2, 6],
"xyz": [8, 7, 6, 8, 5, 4]
},
date: "1",
actions: {
calculate: function() {
let date = this.get('date');
let buyTrigger = this.get('buyTrigger');
buyTrigger.priceData = this.priceData; // set the object price data
let validBuys = buyTrigger.validBuys(date);
this.set('validBuys', `Cheapest buys on day ${this.get('date')}, max price of $${buyTrigger.options[1].selection} are: ${validBuys}`);
},
}
});
<h1>Trade simulator</h1>
<hr>
{{trade-simulator/buy-trigger priceData=priceData setTrigger=(action (mut buyTrigger))}}
<hr>
<label>Date:</label>
<select onchange={{action (mut date) value="target.value"}}>
<option value=1>1st day</option>
<option value=2>2nd day</option>
<option value=3>3rd day</option>
</select>
<br><br>
<button {{action 'calculate'}}>Calculate</button>
<br><br>
{{validBuys}}
import Ember from 'ember';
export default Ember.Component.extend({
});
import Ember from 'ember';
export default Ember.Component.extend({
});
import Ember from 'ember';
export default Ember.Component.extend({
});
<select onchange={{action (mut options.selection) value="target.value"}}>
{{#each options.options as |o|}}
<option value={{o}}>{{o}}</option>
{{/each}}
</select>
{{#each options as |option|}}
<label><b>{{option.label}}: </b></label>
{{component option.component options=option}}
<br>
{{/each}}
{
"version": "0.13.0",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.16.2",
"ember-template-compiler": "2.16.2",
"ember-testing": "2.16.2"
},
"addons": {
"ember-data": "2.16.3"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment