0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-25 18:50:27 +01:00
discourse-custom-wizard/assets/javascripts/discourse/components/wizard-table-field.js

140 Zeilen
3,6 KiB
JavaScript

import Component from "@ember/component";
2021-09-03 00:38:30 +02:00
import { action } from "@ember/object";
import { equal, notEmpty } from "@ember/object/computed";
import discourseComputed from "discourse-common/utils/decorators";
import I18n from "I18n";
export default Component.extend({
classNameBindings: ["value.type"],
isText: equal("value.type", "text"),
isComposer: equal("value.type", "composer"),
isDate: equal("value.type", "date"),
isTime: equal("value.type", "time"),
isDateTime: equal("value.type", "date_time"),
isNumber: equal("value.type", "number"),
isCheckbox: equal("value.type", "checkbox"),
isUrl: equal("value.type", "url"),
isUpload: equal("value.type", "upload"),
isDropdown: equal("value.type", "dropdown"),
isTag: equal("value.type", "tag"),
isCategory: equal("value.type", "category"),
2024-06-20 11:25:57 +02:00
isTopic: equal("value.type", "topic"),
isGroup: equal("value.type", "group"),
isUserSelector: equal("value.type", "user_selector"),
isSubmittedAt: equal("field", "submitted_at"),
isComposerPreview: equal("value.type", "composer_preview"),
textState: "text-collapsed",
toggleText: I18n.t("admin.wizard.expand_text"),
@discourseComputed("value", "isUser", "isSubmittedAt")
hasValue(value, isUser, isSubmittedAt) {
if (isUser || isSubmittedAt) {
return value;
}
return value && value.value;
},
@discourseComputed("field", "value.type")
isUser(field, type) {
return field === "username" || field === "user" || type === "user";
},
@discourseComputed("value.type")
isLongtext(type) {
return type === "textarea" || type === "long_text";
},
@discourseComputed("value")
checkboxValue(value) {
const isCheckbox = this.get("isCheckbox");
if (isCheckbox) {
return (
value.value === true ||
(Array.isArray(value.value) && value.value.includes("true"))
);
}
},
@action
expandText() {
const state = this.get("textState");
if (state === "text-collapsed") {
this.set("textState", "text-expanded");
this.set("toggleText", I18n.t("admin.wizard.collapse_text"));
} else if (state === "text-expanded") {
this.set("textState", "text-collapsed");
this.set("toggleText", I18n.t("admin.wizard.expand_text"));
}
},
2021-09-03 00:38:30 +02:00
@discourseComputed("value")
file(value) {
const isUpload = this.get("isUpload");
if (isUpload) {
return value.value;
}
},
2021-09-03 00:38:30 +02:00
@discourseComputed("value")
submittedUsers(value) {
const isUserSelector = this.get("isUserSelector");
const users = [];
2021-09-01 21:46:39 +02:00
if (isUserSelector) {
const userData = value.value;
const usernames = [];
2021-09-03 00:38:30 +02:00
if (userData.indexOf(",")) {
usernames.push(...userData.split(","));
2021-09-03 00:38:30 +02:00
usernames.forEach((u) => {
const user = {
username: u,
2021-09-03 00:38:30 +02:00
url: `/u/${u}`,
2021-09-01 21:46:39 +02:00
};
users.push(user);
2021-09-01 21:46:39 +02:00
});
}
}
return users;
},
@discourseComputed("isUser", "field", "value")
username(isUser, field, value) {
2021-09-14 05:33:16 +02:00
if (isUser) {
return value.username;
}
if (field === "username") {
return value.value;
}
return null;
},
showUsername: notEmpty("username"),
@discourseComputed("username")
userProfileUrl(username) {
2021-09-14 05:33:16 +02:00
if (username) {
return `/u/${username}`;
}
return "/";
},
2021-09-03 00:38:30 +02:00
@discourseComputed("value")
categoryUrl(value) {
2021-09-03 00:38:30 +02:00
const isCategory = this.get("isCategory");
if (isCategory) {
return `/c/${value.value}`;
}
},
2021-09-03 00:38:30 +02:00
@discourseComputed("value")
groupUrl(value) {
2021-09-03 00:38:30 +02:00
const isGroup = this.get("isGroup");
if (isGroup) {
return `/g/${value.value}`;
}
},
});