Skip to content

Commit ecac586

Browse files
committed
feat: add CustomForm.setSubmitButton
1 parent 85b908c commit ecac586

File tree

4 files changed

+27
-10
lines changed

4 files changed

+27
-10
lines changed

src/legacy/api/GuiAPI.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ ClassDefine<CustomFormClass> CustomFormClassBuilder =
3636
.instanceFunction("addDropdown", &CustomFormClass::addDropdown)
3737
.instanceFunction("addSlider", &CustomFormClass::addSlider)
3838
.instanceFunction("addStepSlider", &CustomFormClass::addStepSlider)
39+
.instanceFunction("setSubmitButton", &CustomFormClass::setSubmitButton)
3940
.build();
4041

4142
//////////////////// Simple Form ////////////////////
@@ -208,6 +209,17 @@ Local<Value> CustomFormClass::setTitle(const Arguments& args) {
208209
CATCH("Fail in setTitle!")
209210
}
210211

212+
Local<Value> CustomFormClass::setSubmitButton(const Arguments& args) {
213+
CHECK_ARGS_COUNT(args, 1)
214+
CHECK_ARG_TYPE(args[0], ValueKind::kString)
215+
216+
try {
217+
form.setSubmitButton(args[0].asString().toString());
218+
return this->getScriptObject();
219+
}
220+
CATCH("Fail in setSubmitButton!")
221+
}
222+
211223
Local<Value> CustomFormClass::addHeader(const Arguments& args) {
212224
CHECK_ARGS_COUNT(args, 1)
213225
CHECK_ARG_TYPE(args[0], ValueKind::kString)

src/legacy/api/GuiAPI.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,6 @@ class CustomFormClass : public ScriptClass {
5151
Local<Value> addDropdown(const Arguments& args);
5252
Local<Value> addSlider(const Arguments& args);
5353
Local<Value> addStepSlider(const Arguments& args);
54+
Local<Value> setSubmitButton(const Arguments& args);
5455
};
5556
extern ClassDefine<CustomFormClass> CustomFormClassBuilder;

src/lse/api/helper/CustomFormWrapper.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
namespace lse::form {
77

8+
std::set<std::string> const CustomFormWrapper::COMMON_ELEMENT_TYPENAMES{"header", "label", "divider"};
9+
810
CustomFormResult
911
CustomFormWrapper::convertResult(std::optional<std::string> const& result, std::vector<int> const& resultIndices) {
1012
if (!result) return {};
@@ -27,18 +29,18 @@ CustomFormWrapper::convertResult(std::optional<std::string> const& result, std::
2729
CustomFormResult
2830
CustomFormWrapper::convertResult(std::optional<std::string> const& result, nlohmann::ordered_json const& formData) {
2931
if (!result) return {};
30-
auto type = formData.find("type");
31-
auto content = formData.find("content");
32-
if (content == formData.end() || type == formData.end() || *type != "custom_form") {
32+
auto formType = formData.find("type");
33+
auto content = formData.find("content");
34+
if (content == formData.end() || formType == formData.end() || *formType != "custom_form") {
3335
return nlohmann::ordered_json::parse(*result);
3436
}
35-
std::vector<int> resultIndices{};
36-
int index = 0;
37-
std::set<std::string> fillNullTypes({"header", "label", "divider"});
38-
for (auto& data : *content) {
39-
auto type = data.find("type");
40-
if (type == data.end()) return {};
41-
if (fillNullTypes.contains(*type)) resultIndices.emplace_back(-1);
37+
std::vector<int> resultIndices{};
38+
resultIndices.reserve(content->size());
39+
int index = 0;
40+
for (auto& element : *content) {
41+
auto elementType = element.find("type");
42+
if (elementType == element.end()) return {};
43+
if (COMMON_ELEMENT_TYPENAMES.contains(*elementType)) resultIndices.emplace_back(-1);
4244
else resultIndices.emplace_back(index++);
4345
}
4446
return convertResult(result, resultIndices);

src/lse/api/helper/CustomFormWrapper.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ namespace lse::form {
99
using CustomFormResult = std::optional<nlohmann::ordered_json>;
1010

1111
class CustomFormWrapper {
12+
static std::set<std::string> const COMMON_ELEMENT_TYPENAMES;
13+
1214
ll::form::CustomForm form;
1315
std::vector<int> resultIndices{};
1416
size_t resultIndex = 0;

0 commit comments

Comments
 (0)