added 260907 version of worker toolkit
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Component.extend({
|
||||
items: [],
|
||||
selection: null,
|
||||
resource: null,
|
||||
defaultQueryParams: null,
|
||||
placeholder: 'select item',
|
||||
async: true,
|
||||
create: false,
|
||||
openOnFocus: true,
|
||||
multiple: false,
|
||||
|
||||
classNames: ['select-field'],
|
||||
|
||||
createItemAction: Ember.computed('create', function() {
|
||||
return this.get('create') ? 'createItem' : false;
|
||||
}),
|
||||
|
||||
findAll() {
|
||||
this.store.findAll(this.get('resource')).then( (items) => {
|
||||
this.refreshItems(items);
|
||||
});
|
||||
},
|
||||
|
||||
findByQuery(params = { }, autoAddSelection=false) {
|
||||
this.store.queryRecord('search', this.queryParams(params)).then( (items) => {
|
||||
this.refreshItems(items.get('searchables'), autoAddSelection);
|
||||
});
|
||||
},
|
||||
|
||||
refreshItems(items, autoAddSelection=false) {
|
||||
this.set('items', items);
|
||||
let selectedItem = this.get('selection');
|
||||
if (autoAddSelection && Ember.isPresent(selectedItem)) {
|
||||
let foundItem = items.toArray().findBy('name', selectedItem.get('name'));
|
||||
if (!Ember.isPresent(foundItem)) {
|
||||
items.addObject(selectedItem);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
queryParams(params) {
|
||||
var defaults = this.get('defaultQueryParams');
|
||||
if (Ember.isPresent(defaults)) {
|
||||
if (Ember.isNone(params['query'])) {
|
||||
params['query'] = {};
|
||||
}
|
||||
for (var key in defaults) { params['query'][key] = defaults[key]; }
|
||||
}
|
||||
return params;
|
||||
},
|
||||
|
||||
randomItemsOnInit: false,
|
||||
|
||||
actions: {
|
||||
fetchItems() {
|
||||
if (this.get('randomItemsOnInit')) {
|
||||
this.findByQuery({
|
||||
resource: this.get('resource'),
|
||||
scope: 'random',
|
||||
}, true);
|
||||
} else {
|
||||
if(this.get('async')) {
|
||||
this.findByQuery({ resource: this.get('resource') }, true);
|
||||
} else if (Ember.isEmpty(this.get('items'))) {
|
||||
this.findAll();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
selectItem(item) {
|
||||
Ember.tryInvoke(this, 'onSelect', [item]);
|
||||
},
|
||||
|
||||
createItem(value) {
|
||||
var item = this.store.createRecord(this.get('resource'), { name: value });
|
||||
this.set('selection', item);
|
||||
Ember.tryInvoke(this, 'onSelect', [item]);
|
||||
},
|
||||
|
||||
updateFilter(value) {
|
||||
if( this.get('async') && value.length >= 1 ) {
|
||||
this.findByQuery({ resource: this.get('resource'), query: { name: value } });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user