55 Zeilen
1,6 KiB
JavaScript
55 Zeilen
1,6 KiB
JavaScript
import Component from "@ember/component";
|
|
import EmberObject from "@ember/object";
|
|
import { cloneJSON } from "discourse-common/lib/object";
|
|
import Category from "discourse/models/category";
|
|
import discourseComputed from "discourse-common/utils/decorators";
|
|
import I18n from "I18n";
|
|
|
|
export default Component.extend({
|
|
classNames: ["realtime-validations"],
|
|
@discourseComputed
|
|
timeUnits() {
|
|
return ["days", "weeks", "months", "years"].map((unit) => {
|
|
return {
|
|
id: unit,
|
|
name: I18n.t(`admin.wizard.field.validations.time_units.${unit}`),
|
|
};
|
|
});
|
|
},
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
if (!this.validations) {return;}
|
|
|
|
if (!this.field.validations) {
|
|
const validations = {};
|
|
|
|
this.validations.forEach((validation) => {
|
|
validations[validation] = {};
|
|
});
|
|
|
|
this.set("field.validations", EmberObject.create(validations));
|
|
}
|
|
|
|
const validationBuffer = cloneJSON(this.get("field.validations"));
|
|
let bufferCategories;
|
|
if (
|
|
validationBuffer.similar_topics &&
|
|
(bufferCategories = validationBuffer.similar_topics.categories)
|
|
) {
|
|
const categories = Category.findByIds(bufferCategories);
|
|
validationBuffer.similar_topics.categories = categories;
|
|
}
|
|
this.set("validationBuffer", validationBuffer);
|
|
},
|
|
|
|
actions: {
|
|
updateValidationCategories(type, validation, categories) {
|
|
this.set(`validationBuffer.${type}.categories`, categories);
|
|
this.set(
|
|
`field.validations.${type}.categories`,
|
|
categories.map((category) => category.id)
|
|
);
|
|
},
|
|
},
|
|
});
|