Skip to content

Instantly share code, notes, and snippets.

@sarus
Forked from alexdiliberto/components.user-portrait.js
Last active August 28, 2019 18:57
Show Gist options
  • Save sarus/7a83c302bb2fcac320e7c17c6f2a01b8 to your computer and use it in GitHub Desktop.
Save sarus/7a83c302bb2fcac320e7c17c6f2a01b8 to your computer and use it in GitHub Desktop.
Polarity Sample Application
import Ember from 'ember';
import Component from '@ember/component';
export default Component.extend({
numberOfSaves: 0,
message: '',
helloMessage: Ember.computed('username', function() {
return `Hello, ${this.get('username')}. Welcome!`;
}),
actions: {
clear: function() {
this.set('numberOfSaves', 0);
this.set('message', '');
},
saveUser: function() {
let self = this;
this.incrementProperty('numberOfSaves');
return this.get('save')()
.then(function(result) {
self.set('message', result);
}, function(err) {
self.set('message', 'Save Failed!');
});
}
}
});
import Controller from '@ember/controller';
import { later } from '@ember/runloop';
export default Controller.extend({
appName: 'Polarity',
username: "admin",
actions: {
test: function() {
console.info("You pressed 'test'");
},
save: function() {
console.info("You pressed 'Save User'");
return new Promise(function(resolve, reject) {
return later(this, function() {
resolve("Save Succeeded");
}, 1000);
});
}
}
});
import Ember from 'ember';
export function equal(params/*, hash*/) {
return params[0] === params[1];
}
export default Ember.Helper.helper(equal);
import Ember from 'ember';
import { later } from '@ember/runloop';
export default Ember.Route.extend({
model() {
return new Promise((resolve) => {
return later(this, function() {
resolve("Polarity!");
}, 2000);
});
}
});
body {
margin: 12px 16px;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12pt;
}
.user-portrait-card {
background-color: #ccc;
padding: 20px;
}
.button-container{
margin-top: 10px
}
.warning{
background-color: red;
color: white;
}
<h1>Welcome to {{model}}</h1>
Username: <input type="text" value={{username}} oninput={{action (mut username) value="target.value"}}><br><br>
<button {{action "test"}}>Test</button><br><br>
{{user-portrait
username=username
save=(action "save")}}
<div class="user-portrait-card">
Username: {{username}}<br><br>
{{helloMessage}}<br><br>
(Number of Saves: {{numberOfSaves}})<br><br>
{{#if (eq numberOfSaves 0)}}
<div class="warning">
<span>Please save before exiting</span>
</div>
{{/if}}
<div class="button-container">
<button {{action "saveUser"}}>Save User</button>
<button {{action "clear"}}>Clear</button><br><br>
</div>
Message: {{message}}
</div>
{
"version": "0.15.1",
"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.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment