Files
project-work/worker-toolkit-flaredown/repo/frontend/app/components/profile-form.js

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);
});
},
},
});