import { bufferedProperty } from "discourse/mixins/buffered-content"; import computed from "ember-addons/ember-computed-decorators"; import { on, observes } from "ember-addons/ember-computed-decorators"; import { popupAjaxError } from "discourse/lib/ajax-error"; export default Ember.Component.extend(bufferedProperty("host"), { editToggled: false, tagName: "tr", categoryId: null, editing: Ember.computed.or("host.isNew", "editToggled"), @on("didInsertElement") @observes("editing") _focusOnInput() { Ember.run.schedule("afterRender", () => { this.$(".host-name").focus(); }); }, @computed("buffered.host", "host.isSaving") cantSave(host, isSaving) { return isSaving || Ember.isEmpty(host); }, actions: { edit() { this.set("categoryId", this.get("host.category.id")); this.set("editToggled", true); }, save() { if (this.get("cantSave")) { return; } const props = this.get("buffered").getProperties( "host", "path_whitelist", "class_name" ); props.category_id = this.get("categoryId"); const host = this.get("host"); host .save(props) .then(() => { host.set( "category", Discourse.Category.findById(this.get("categoryId")) ); this.set("editToggled", false); }) .catch(popupAjaxError); }, delete() { bootbox.confirm(I18n.t("admin.embedding.confirm_delete"), result => { if (result) { this.get("host") .destroyRecord() .then(() => { this.deleteHost(this.get("host")); }); } }); }, cancel() { const host = this.get("host"); if (host.get("isNew")) { this.deleteHost(host); } else { this.rollbackBuffer(); this.set("editToggled", false); } } } });