Skip to content

Instantly share code, notes, and snippets.

View mike-north's full-sized avatar
Wish I had more time to work on OSS

Mike North mike-north

Wish I had more time to work on OSS
View GitHub Profile
@mike-north
mike-north / controllers.application.js
Last active September 13, 2018 00:08
optional-path-params
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
@mike-north
mike-north / controllers.application.js
Last active September 13, 2018 00:03
New Twiddle
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Ember from 'ember';
// items: [{price: 3.40, qty: 3.134}, {price: 1.39, qty: 2.2}],
function totalWithRoundedValue(itemsPropName) {
return Ember.computed(`${itemsPropName}.@each.{price,qty}`, function(key) {
// Calculate the new total
let newTotal = this[itemsPropName]
.reduce((tot, item) => tot + (item.price * item.qty), 0);
// Create a rounded value as another property
Ember.set(this, `${key}Rounded`, Math.round(newTotal * 100) / 100);
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
@mike-north
mike-north / components.list-data.js
Last active September 5, 2018 07:45
display + presentation
import Ember from 'ember';
import hbs from 'htmlbars-inline-precompile';
export default Ember.Component.extend({
layout: hbs`{{yield sortedItems}}`,
sortedItems: Ember.computed('data.@each.id', 'sort', function() {
const sort = this.get('sort');
const sorted = [...this.get('data')].sort((a, b) => {
if (sort === 'up') return a.id - b.id;
return b.id - a.id;
@mike-north
mike-north / components.my-component.js
Created September 4, 2018 23:00
component-data-provider
import Ember from 'ember';
export default Ember.Component.extend({
term: '',
init() {
this._super(...arguments);
this.set('results', []);
},
didReceiveAttrs() {
this._super(...arguments);
import Ember from 'ember';
export default Ember.Component.extend({
init() {
this._super(...arguments);
this.set('list1', [{id: 'a'}, {id: 'b'}, {id: 'c'}]);
this.set('list2', [{id: 'a'}, {id: 'b'}, {id: 'c'}]);
}
});
@mike-north
mike-north / components.lists-provider.js
Last active September 4, 2018 19:42
re-render list
import Ember from 'ember';
export default Ember.Component.extend({
init() {
this._super(...arguments);
this.set('list1', [{id: 'a'}, {id: 'b'}, {id: 'c'}]);
this.set('list2', [{id: 'a'}, {id: 'b'}, {id: 'c'}]);
}
});
@mike-north
mike-north / components.counting-textarea.js
Last active September 14, 2018 18:51
ES6 wrapped in Ember
import Component from '@ember/component';
import { set } from '@ember/object';
import { computed } from '@ember-decorators/object';
import hbs from 'htmlbars-inline-precompile';
const WORDS_PER_SEC = 200 / 60; // Assumption: 200 words per minute
export class CountingTextareaManager {
constructor(str) {
this.isDetailShown = true;
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});