58 lines
1.2 KiB
JavaScript
58 lines
1.2 KiB
JavaScript
import Ember from 'ember';
|
|
|
|
const {
|
|
on,
|
|
get,
|
|
set,
|
|
compare,
|
|
isPresent,
|
|
Component,
|
|
inject: {
|
|
service,
|
|
},
|
|
computed: {
|
|
sort,
|
|
alias,
|
|
},
|
|
} = Ember;
|
|
|
|
export default Component.extend({
|
|
selectableData: service('selectable-data'),
|
|
|
|
sexes: alias('selectableData.sexes'),
|
|
|
|
countries: sort('selectableData.countries', function(itemA, itemB) {
|
|
const nameA = get(itemA, 'name');
|
|
const nameB = get(itemB, 'name');
|
|
|
|
const us = 'United States';
|
|
const gb = 'United Kingdom';
|
|
|
|
return nameA === us ? -1 : nameB === us ? 1 : nameA === gb ? -1 : nameB === gb ? 1 : compare(nameA, nameB);
|
|
}),
|
|
|
|
setSelectedSexId: on('didInsertElement', function() {
|
|
get(this, 'model.sex').then(sex => {
|
|
if (isPresent(sex)) {
|
|
set(this, 'selectedSexId', get(sex, 'id'));
|
|
}
|
|
});
|
|
}),
|
|
|
|
actions: {
|
|
sexChanged(newId) {
|
|
set(this, 'model.sex', get(this, 'sexes').findBy('id', newId));
|
|
},
|
|
|
|
saveProfile() {
|
|
set(this, 'isLoading', true);
|
|
|
|
get(this, 'model').save().then(profile => {
|
|
this.sendAction('onProfileSaved', profile);
|
|
}).finally(() => {
|
|
set(this, 'isLoading', false);
|
|
});
|
|
},
|
|
},
|
|
});
|