Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-21 17:00:29 +01:00
Tests and linting
Dieser Commit ist enthalten in:
Ursprung
057b3f989f
Commit
be0af6f919
8 geänderte Dateien mit 44 neuen und 19 gelöschten Zeilen
|
@ -1,5 +1,3 @@
|
|||
import { observes } from "discourse-common/utils/decorators";
|
||||
import Topic from "discourse/models/topic";
|
||||
import Component from "@ember/component";
|
||||
|
||||
export default Component.extend({
|
||||
|
@ -11,14 +9,13 @@ export default Component.extend({
|
|||
if (value) {
|
||||
this.set("topics", value);
|
||||
}
|
||||
console.log(this.field)
|
||||
},
|
||||
|
||||
actions: {
|
||||
setValue(topicIds, topics) {
|
||||
setValue(_, topics) {
|
||||
if (topics.length) {
|
||||
this.set("field.value", topics);
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
});
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
import MultiSelectComponent from "select-kit/components/multi-select";
|
||||
import { computed } from "@ember/object";
|
||||
import { mapBy } from "@ember/object/computed";
|
||||
import { isEmpty } from "@ember/utils";
|
||||
import { searchForTerm } from "discourse/lib/search";
|
||||
import { makeArray } from "discourse-common/lib/helpers";
|
||||
|
@ -23,7 +21,7 @@ export default MultiSelectComponent.extend({
|
|||
|
||||
didReceiveAttrs() {
|
||||
if (this.topics && !this.selectKit.hasSelection) {
|
||||
const values = makeArray(this.topics.map(t => t.id));
|
||||
const values = makeArray(this.topics.map((t) => t.id));
|
||||
const content = makeArray(this.topics);
|
||||
this.selectKit.change(values, content);
|
||||
}
|
||||
|
@ -44,10 +42,7 @@ export default MultiSelectComponent.extend({
|
|||
searchParams.restrictToArchetype = "regular";
|
||||
searchParams.searchForId = true;
|
||||
|
||||
return searchForTerm(
|
||||
filter,
|
||||
searchParams
|
||||
).then((results) => {
|
||||
return searchForTerm(filter, searchParams).then((results) => {
|
||||
if (results?.posts?.length > 0) {
|
||||
return results.posts.mapBy("topic");
|
||||
}
|
||||
|
@ -56,15 +51,14 @@ export default MultiSelectComponent.extend({
|
|||
|
||||
actions: {
|
||||
onChange(value, items) {
|
||||
const content = items.map(t => {
|
||||
const content = items.map((t) => {
|
||||
return {
|
||||
id: t.id,
|
||||
title: t.title,
|
||||
fancy_title: t.fancy_title,
|
||||
url: t.url
|
||||
}
|
||||
url: t.url,
|
||||
};
|
||||
});
|
||||
console.log("onChange: ", value, content)
|
||||
this.setProperties({ value, content });
|
||||
this.onChange(value, content);
|
||||
},
|
||||
|
|
|
@ -22,7 +22,14 @@ export default Component.extend(UndoChanges, {
|
|||
isTextarea: equal("field.type", "textarea"),
|
||||
isUrl: equal("field.type", "url"),
|
||||
isComposer: equal("field.type", "composer"),
|
||||
showPrefill: or("isText", "isCategory", "isTag", "isGroup", "isDropdown", "isTopic"),
|
||||
showPrefill: or(
|
||||
"isText",
|
||||
"isCategory",
|
||||
"isTag",
|
||||
"isGroup",
|
||||
"isDropdown",
|
||||
"isTopic"
|
||||
),
|
||||
showContent: or("isCategory", "isTag", "isGroup", "isDropdown", "isTopic"),
|
||||
showLimit: or("isCategory", "isTag", "isTopic"),
|
||||
isTextType: or("isText", "isTextarea", "isComposer"),
|
||||
|
|
|
@ -64,7 +64,7 @@ export default EmberObject.extend(ValidState, {
|
|||
url: `/w/${wizardId}/steps/${this.get("id")}`,
|
||||
type: "PUT",
|
||||
contentType: "application/json",
|
||||
data: JSON.stringify({ fields })
|
||||
data: JSON.stringify({ fields }),
|
||||
}).catch((response) => {
|
||||
if (response.jqXHR) {
|
||||
response = response.jqXHR;
|
||||
|
|
|
@ -186,4 +186,10 @@ body.custom-wizard {
|
|||
.wizard-topic-selector {
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
.wizard-topic-selector .topic-row {
|
||||
.topic-title {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# subscription_url: https://coop.pavilion.tech
|
||||
# meta_topic_id: 73345
|
||||
|
||||
gem 'liquid', '5.0.1', require: true
|
||||
gem 'liquid', '5.5.0', require: true
|
||||
gem "discourse_subscription_client", "0.1.2", require_name: "discourse_subscription_client"
|
||||
gem 'discourse_plugin_statistics', '0.1.0.pre7', require: true
|
||||
register_asset 'stylesheets/common/admin.scss'
|
||||
|
|
|
@ -63,6 +63,11 @@ describe CustomWizard::Mapper do
|
|||
"step_1_field_1": get_wizard_fixture("field/upload")
|
||||
}
|
||||
}
|
||||
let(:template_params_object_array) {
|
||||
{
|
||||
"step_1_field_1" => [{ text: "Hello" }, { text: "World" }]
|
||||
}
|
||||
}
|
||||
|
||||
def create_template_mapper(data, user)
|
||||
CustomWizard::Mapper.new(
|
||||
|
@ -500,6 +505,21 @@ describe CustomWizard::Mapper do
|
|||
expect(result).to eq("Incorrect")
|
||||
end
|
||||
|
||||
it "iterates over an interpolated list of objects" do
|
||||
template = <<-LIQUID.strip
|
||||
{% for object in step_1_field_1 %}{{object.text}} {% endfor %}
|
||||
LIQUID
|
||||
mapper = create_template_mapper(template_params_object_array, user1)
|
||||
result = mapper.interpolate(
|
||||
template.dup,
|
||||
template: true,
|
||||
user: true,
|
||||
wizard: true,
|
||||
value: true
|
||||
)
|
||||
expect(result).to eq("Hello World ")
|
||||
end
|
||||
|
||||
context "custom filter: 'first_non_empty'" do
|
||||
it "gives first non empty element from list" do
|
||||
template = <<-LIQUID.strip
|
||||
|
|
|
@ -57,6 +57,7 @@ describe DiscoursePluginStatistics::Plugin do
|
|||
tag: 0,
|
||||
category: 0,
|
||||
group: 0,
|
||||
topic: 0,
|
||||
user_selector: 0,
|
||||
},
|
||||
realtime_validations: 0
|
||||
|
|
Laden …
In neuem Issue referenzieren