From f81f05d2744c9ba49c61db5da3b9047c5bd13b50 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Fri, 19 Apr 2019 16:15:07 +0200 Subject: [PATCH] logs-content: Added character highlighter feature. --- marko/components/menu-link/index.marko | 4 ++-- .../components/logs-content-menu/component.js | 16 +++++++++++++ .../components/logs-content-menu/index.marko | 23 +++++++++++++++---- .../logs-content/components/page/component.js | 5 ++++ .../logs-content/components/page/index.marko | 3 ++- .../logs-content/components/post/component.js | 15 +++++++++++- .../logs-content/components/post/index.marko | 2 +- .../logs-content/components/post/style.less | 4 ++++ 8 files changed, 62 insertions(+), 10 deletions(-) diff --git a/marko/components/menu-link/index.marko b/marko/components/menu-link/index.marko index 59f84af..7b18f33 100644 --- a/marko/components/menu-link/index.marko +++ b/marko/components/menu-link/index.marko @@ -1,6 +1,6 @@ -
-
${input.icon}
+
+
${input.icon}
diff --git a/marko/page/logs-content/components/logs-content-menu/component.js b/marko/page/logs-content/components/logs-content-menu/component.js index ae6c37b..5e4fdea 100644 --- a/marko/page/logs-content/components/logs-content-menu/component.js +++ b/marko/page/logs-content/components/logs-content-menu/component.js @@ -1,5 +1,21 @@ module.exports = class { + onCreate() { + this.state = { + highlights: [], + } + } + select(value) { this.emit("select", value) } + + toggleHighlight(id) { + if (this.state.highlights.includes(id)) { + this.state.highlights = this.state.highlights.filter(id2 => id2 !== id) + } else { + this.state.highlights = this.state.highlights.concat(id) + } + + this.emit("hightlights", this.state.highlights); + } } \ No newline at end of file diff --git a/marko/page/logs-content/components/logs-content-menu/index.marko b/marko/page/logs-content/components/logs-content-menu/index.marko index 88e4ec1..f3aba9d 100644 --- a/marko/page/logs-content/components/logs-content-menu/index.marko +++ b/marko/page/logs-content/components/logs-content-menu/index.marko @@ -4,10 +4,23 @@ Add Post - Links + Channel ${input.log.channel.name} - ${input.log.channel.eventName} - - ${character.name} (${character.author}) - + + + Event + ${input.log.eventName} + + + 0)> + Characters + + 0 && !state.highlights.includes(character.id)) + icon="C" + on-click("toggleHighlight", character.id)> + ${character.name} (${character.author}) + + + + \ No newline at end of file diff --git a/marko/page/logs-content/components/page/component.js b/marko/page/logs-content/components/page/component.js index f543fc7..0c5bb1d 100644 --- a/marko/page/logs-content/components/page/component.js +++ b/marko/page/logs-content/components/page/component.js @@ -9,6 +9,7 @@ module.exports = class { log: input.log, modal: null, removed: false, + highlights: [], } } @@ -161,6 +162,10 @@ module.exports = class { this.state.removed = true } + highlightsChanged(highlights) { + this.state.highlights = highlights.slice(); + } + get title() { if (this.state.log.title) { return this.state.log.title diff --git a/marko/page/logs-content/components/page/index.marko b/marko/page/logs-content/components/page/index.marko index d039f0d..5dadbe9 100644 --- a/marko/page/logs-content/components/page/index.marko +++ b/marko/page/logs-content/components/page/index.marko @@ -1,4 +1,4 @@ - +
@@ -25,6 +25,7 @@ prev=(state.log.posts[loop.getIndex() - 1] || {}) post=post characters=state.log.characters + highlights=state.highlights last=(post.position === state.log.posts.length) />
diff --git a/marko/page/logs-content/components/post/component.js b/marko/page/logs-content/components/post/component.js index 167fc8b..57edf1f 100644 --- a/marko/page/logs-content/components/post/component.js +++ b/marko/page/logs-content/components/post/component.js @@ -14,6 +14,7 @@ module.exports = class { multipart: false, anchored: false, prevWasText: false, + dark: false, } this.mounted = false; @@ -83,18 +84,30 @@ module.exports = class { this.state.text = input.post.text + if (input.highlights.length > 0 && (input.post.kind === "action" || input.post.kind === "text")) { + this.state.dark = true + } else { + this.state.dark = false + } + if (!input.post.nick.startsWith("=")) { const postNick = input.post.nick.replace("'s", "").replace("s'", "s") for (const character of input.characters) { for (const nick of character.nicks) { if (nick === postNick) { - this.state.name = character.name + this.state.name = character.name + character.id this.state.shortName = character.shortName if (input.post.nick.endsWith("'s") || input.post.nick.endsWith("'")) { this.state.nameSuffix = (character.shortName.endsWith("s") || character.shortName.endsWith("z")) ? "'" : "'s" } + if (input.highlights.length > 0) { + this.state.dark = !(input.highlights.includes(character.id)) + } else { + this.state.dark = false + } + return } } diff --git a/marko/page/logs-content/components/post/index.marko b/marko/page/logs-content/components/post/index.marko index 93cf68b..d2b0620 100644 --- a/marko/page/logs-content/components/post/index.marko +++ b/marko/page/logs-content/components/post/index.marko @@ -1,4 +1,4 @@ -