added redirect and ability to save checkboxes

This commit is contained in:
2025-06-04 22:25:47 +02:00
parent 397189c259
commit e13de7c786
17 changed files with 150 additions and 49 deletions

View File

@@ -51,17 +51,25 @@ void initApi(crow::SimpleApp& app)
return rsp("Failed to create id of character");
}
vector<pair<const string&, const string&>> idValues;
vector<pair<const string, const string>> idValues;
idValues.reserve(ShadowrunCharacterForm::m_formIds.size());
auto checkboxes = std::set<string>(ShadowrunCharacterForm::m_checkboxIds.begin(), ShadowrunCharacterForm::m_checkboxIds.end());
for (auto& id : ShadowrunCharacterForm::m_formIds) {
auto data = params[id];
if(!
data.empty()){
if(!data.empty()){
idValues.push_back(make_pair(id, data));
if (checkboxes.contains(id)){
checkboxes.erase(id);
}
}
}
// append the checkboxes
for (auto& checkbox : checkboxes){
idValues.push_back(make_pair(checkbox, "0"));
}
if (!storeCharacterData(key, idValues)){
CROW_LOG_ERROR << "Failed to store character data of " << name_data;
return rsp("Failed to store character data");
@@ -76,7 +84,7 @@ void initApi(crow::SimpleApp& app)
auto data = getCharacterData(getKeyOfCharacter(name));
return crow::response{ShadowrunCharacterForm().htmx()};
return crow::response{ShadowrunCharacterForm(data).htmx()};
});
CROW_ROUTE(app, "/api/shadowrun/character-list")
@@ -85,7 +93,6 @@ void initApi(crow::SimpleApp& app)
// Simulated character database
auto characters = getCharacters();
html << "<form hx-get='/api/shadowrun/character-form' hx-target='#form-container' hx-params='*'>"
<< "<label>Character Name: "
<< "<select name='name'>";