diff --git a/frontend/src/routes/poll/Edit.svelte b/frontend/src/routes/poll/Edit.svelte
index 92e20d3e..dfee2865 100644
--- a/frontend/src/routes/poll/Edit.svelte
+++ b/frontend/src/routes/poll/Edit.svelte
@@ -43,9 +43,7 @@
async function patch_option(option, field, newVal){
let url = api(`poll/${id}/option/${option.id}`);
- let data = {}
- data[field] = newVal;
- let res = await patch(url,data);
+ let res = await patch(url,{[field]: newVal});
if (res.ok) {
yikes();
const json = await res.json();
@@ -64,7 +62,14 @@
if (res.ok) {
yikes();
const json = await res.json();
- console.log(json);
+ const weights = json.weights;
+ for (let weight of Object.keys(data)){
+ let desc = data[weight];
+ console.log(weight, desc);
+ if (desc) {
+ poll.weights[weight] = desc;
+ } else delete poll.weights[weight]; // TODO: this corrupts the display of the following element!
+ }
return true;
}
error(res);
@@ -153,7 +158,7 @@
- patch_weight({weight: desc})} />
+ patch_weight({[weight]: desc})} />
|
{/each}
diff --git a/poll/src/main/java/de/srsoftware/umbrella/poll/PollModule.java b/poll/src/main/java/de/srsoftware/umbrella/poll/PollModule.java
index 7c81aeaf..b0f68754 100644
--- a/poll/src/main/java/de/srsoftware/umbrella/poll/PollModule.java
+++ b/poll/src/main/java/de/srsoftware/umbrella/poll/PollModule.java
@@ -137,8 +137,15 @@ public class PollModule extends BaseHandler implements PollService {
}
private boolean patchWeights(HttpExchange ex, Poll poll) throws IOException {
- // TODO
- return notFound(ex);
+ var json = json(ex);
+ for (var key : json.keySet()) try {
+ var weight = Integer.parseInt(key);
+ if (!(json.get(key) instanceof String description)) throw invalidField(Field.DESCRIPTION,Text.STRING);
+ poll.setWeight(weight,description);
+ } catch (NumberFormatException nfe) {
+ throw invalidField(Text.WEIGHT,Text.NUMBER);
+ }
+ return sendContent(ex,pollDb.save(poll));
}
private boolean patchPollOptions(HttpExchange ex, Path path, Poll poll) throws IOException {
diff --git a/poll/src/main/java/de/srsoftware/umbrella/poll/SqliteDb.java b/poll/src/main/java/de/srsoftware/umbrella/poll/SqliteDb.java
index e957e985..6387ffa3 100644
--- a/poll/src/main/java/de/srsoftware/umbrella/poll/SqliteDb.java
+++ b/poll/src/main/java/de/srsoftware/umbrella/poll/SqliteDb.java
@@ -112,7 +112,7 @@ public class SqliteDb extends BaseDb implements PollDb {
private void dropWeight(Poll poll, int weight){
try {
- delete().from(TABLE_WEIGHTS).where(POLL_ID, equal(poll.id())).where(ID, equal(weight)).execute(db);
+ delete().from(TABLE_WEIGHTS).where(POLL_ID, equal(poll.id())).where(WEIGHT, equal(weight)).execute(db);
poll.weights().remove(weight);
} catch (SQLException e){
throw failedToDropObject(Text.WEIGHT);