import WatchedWord from "admin/models/watched-word"; import { default as computed, on, observes } from "ember-addons/ember-computed-decorators"; export default Ember.Component.extend({ classNames: ["watched-word-form"], formSubmitted: false, actionKey: null, showMessage: false, @computed("regularExpressions") placeholderKey(regularExpressions) { return ( "admin.watched_words.form.placeholder" + (regularExpressions ? "_regexp" : "") ); }, @observes("word") removeMessage() { if (this.get("showMessage") && !Ember.isEmpty(this.get("word"))) { this.set("showMessage", false); } }, @computed("word") isUniqueWord(word) { const words = this.get("filteredContent") || []; const filtered = words.filter( content => content.action === this.get("actionKey") ); return filtered.every( content => content.word.toLowerCase() !== word.toLowerCase() ); }, actions: { submit() { if (!this.get("isUniqueWord")) { this.setProperties({ showMessage: true, message: I18n.t("admin.watched_words.form.exists") }); return; } if (!this.get("formSubmitted")) { this.set("formSubmitted", true); const watchedWord = WatchedWord.create({ word: this.get("word"), action: this.get("actionKey") }); watchedWord .save() .then(result => { this.setProperties({ word: "", formSubmitted: false, showMessage: true, message: I18n.t("admin.watched_words.form.success") }); this.action(WatchedWord.create(result)); Ember.run.schedule("afterRender", () => this.$(".watched-word-input").focus() ); }) .catch(e => { this.set("formSubmitted", false); const msg = e.jqXHR.responseJSON && e.jqXHR.responseJSON.errors ? I18n.t("generic_error_with_reason", { error: e.jqXHR.responseJSON.errors.join(". ") }) : I18n.t("generic_error"); bootbox.alert(msg, () => this.$(".watched-word-input").focus()); }); } } }, @on("didInsertElement") _init() { Ember.run.schedule("afterRender", () => { this.$(".watched-word-input").keydown(e => { if (e.keyCode === 13) { this.send("submit"); } }); }); } });