From 3c35f75f62e876e4ad9b82db49a7e1c9896a3134 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Sun, 30 Sep 2018 15:33:25 +0200 Subject: [PATCH] logs-content: Enabled altering of history (added edit options for log posts) --- .../components/edit-post-modal/component.js | 68 +++++++++++++++++++ .../components/edit-post-modal/index.marko | 26 +++++++ .../logs-content/components/page/component.js | 4 ++ .../logs-content/components/page/index.marko | 1 + .../logs-content/components/post/component.js | 4 ++ .../logs-content/components/post/index.marko | 3 +- rpdata/api/Post.js | 22 ++++++ 7 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 marko/page/logs-content/components/edit-post-modal/component.js create mode 100644 marko/page/logs-content/components/edit-post-modal/index.marko diff --git a/marko/page/logs-content/components/edit-post-modal/component.js b/marko/page/logs-content/components/edit-post-modal/component.js new file mode 100644 index 0000000..981487f --- /dev/null +++ b/marko/page/logs-content/components/edit-post-modal/component.js @@ -0,0 +1,68 @@ +const moment = require("moment") + +const {postApi} = require("../../../../../rpdata/api/Post") + +module.exports = class { + onCreate(input) { + this.state = { + error: null, + loading: false, + values: { + time: "", + kind: "", + nick: "", + text: "", + }, + } + + this.first = false + } + + onInput(input) { + if (input.post) { + const {kind, nick, text} = input.post + const time = moment.utc(input.post.time).format("YYYY-MM-DD HH:mm:ss") + + this.state.values = {time, kind, nick, text} + } + } + + change(key, ev) { + this.state.values[key] = ev.target.value + } + + open() { + } + + close() { + this.first = false + this.emit("close") + } + + save() { + if (this.state.loading) { + return + } + + const values = this.state.values + + let time = new Date(values.time + " UTC") + if (Number.isNaN(time)) { + this.state.error = `Could not parse ${values.time} as date` + return + } + + const input = {id: this.input.post.id, time, kind: this.state.values.kind, nick: this.state.values.nick, text: this.state.values.text} + + this.state.loading = true + postApi.edit(input).then(data => { + this.emit("edited", data) + this.emit("close") + }).catch(errs => { + console.warn("Failed to edit:", errs) + this.state.error = "Failed to edit: " + errs[0].message + }).then(() => { + this.state.loading = false + }) + } +} \ No newline at end of file diff --git a/marko/page/logs-content/components/edit-post-modal/index.marko b/marko/page/logs-content/components/edit-post-modal/index.marko new file mode 100644 index 0000000..c7e6277 --- /dev/null +++ b/marko/page/logs-content/components/edit-post-modal/index.marko @@ -0,0 +1,26 @@ + +

Edit Post ${input.post.position}

+ +

${state.error}

+ + + + + + + + + + + +