discourse/app/assets/javascripts/discourse/controllers/group-logs.js.es6
2016-12-12 17:29:54 +08:00

58 lines
1.5 KiB
JavaScript

import { default as computed, observes } from 'ember-addons/ember-computed-decorators';
export default Ember.Controller.extend({
group: Ember.inject.controller(),
loading: false,
offset: 0,
init() {
this._super();
this.set('filters', Ember.Object.create());
},
@computed('filters.action', 'filters.acting_user', 'filters.target_user', 'filters.subject')
filterParams(action, acting_user, target_user, subject) {
return { action, acting_user, target_user, subject };
},
@observes('filters.action', 'filters.acting_user', 'filters.target_user', 'filters.subject')
_refreshModel() {
this.get('group.model').findLogs(0, this.get('filterParams')).then(results => {
this.set('offset', 0);
this.get('model').setProperties({
logs: results.logs,
all_loaded: results.all_loaded
});
});
},
reset() {
this.setProperties({
offset: 0,
filters: Ember.Object.create()
});
},
actions: {
loadMore() {
if (this.get('model.all_loaded')) return;
this.set('loading', true);
this.get('group.model').findLogs(this.get('offset') + 1, this.get('filterParams'))
.then(results => {
results.logs.forEach(result => this.get('model.logs').addObject(result));
this.incrementProperty('offset');
this.set('model.all_loaded', results.all_loaded);
}).finally(() => {
this.set('loading', false);
});
},
clearFilter(key) {
this.set(`filters.${key}`, '');
}
}
});