mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 00:35:31 +08:00
66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
import computed from 'ember-addons/ember-computed-decorators';
|
|
import WatchedWord from 'admin/models/watched-word';
|
|
|
|
export default Ember.Controller.extend({
|
|
actionNameKey: null,
|
|
adminWatchedWords: Ember.inject.controller(),
|
|
showWordsList: Ember.computed.or('adminWatchedWords.filtered', 'adminWatchedWords.showWords'),
|
|
|
|
findAction(actionName) {
|
|
return (this.get('adminWatchedWords.model') || []).findBy('nameKey', actionName);
|
|
},
|
|
|
|
@computed('adminWatchedWords.model', 'actionNameKey')
|
|
filteredContent() {
|
|
if (!this.get('actionNameKey')) { return []; }
|
|
|
|
const a = this.findAction(this.get('actionNameKey'));
|
|
return a ? a.words : [];
|
|
},
|
|
|
|
@computed('actionNameKey')
|
|
actionDescription(actionNameKey) {
|
|
return I18n.t('admin.watched_words.action_descriptions.' + actionNameKey);
|
|
},
|
|
|
|
actions: {
|
|
recordAdded(arg) {
|
|
const a = this.findAction(this.get('actionNameKey'));
|
|
if (a) {
|
|
a.words.unshiftObject(arg);
|
|
a.incrementProperty('count');
|
|
Em.run.schedule('afterRender', () => {
|
|
// remove from other actions lists
|
|
let match = null;
|
|
this.get('adminWatchedWords.model').forEach(action => {
|
|
if (match) return;
|
|
|
|
if (action.nameKey !== this.get('actionNameKey')) {
|
|
match = action.words.findBy('id', arg.id);
|
|
if (match) {
|
|
action.words.removeObject(match);
|
|
action.decrementProperty('count');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
},
|
|
|
|
recordRemoved(arg) {
|
|
const a = this.findAction(this.get('actionNameKey'));
|
|
if (a) {
|
|
a.words.removeObject(arg);
|
|
a.decrementProperty('count');
|
|
}
|
|
},
|
|
|
|
uploadComplete() {
|
|
WatchedWord.findAll().then(data => {
|
|
this.set('adminWatchedWords.model', data);
|
|
});
|
|
}
|
|
}
|
|
|
|
});
|