summaryrefslogtreecommitdiff
path: root/client/js/views/posts_page_view.js
diff options
context:
space:
mode:
Diffstat (limited to 'client/js/views/posts_page_view.js')
-rw-r--r--client/js/views/posts_page_view.js38
1 files changed, 37 insertions, 1 deletions
diff --git a/client/js/views/posts_page_view.js b/client/js/views/posts_page_view.js
index c4b1988..463468a 100644
--- a/client/js/views/posts_page_view.js
+++ b/client/js/views/posts_page_view.js
@@ -1,6 +1,7 @@
"use strict";
const events = require("../events.js");
+const tags = require("../tags.js");
const views = require("../util/views.js");
const template = views.getTemplate("posts-page");
@@ -31,6 +32,13 @@ class PostsPageView extends events.EventTarget {
);
}
+ const relationFlipperNode = this._getRelationFlipperNode(listItemNode);
+ if (relationFlipperNode) {
+ relationFlipperNode.addEventListener("click", e =>
+ this._evtBulkAddRelationClick(e, post)
+ );
+ }
+
const safetyFlipperNode = this._getSafetyFlipperNode(listItemNode);
if (safetyFlipperNode) {
for (let linkNode of safetyFlipperNode.querySelectorAll("a")) {
@@ -63,6 +71,10 @@ class PostsPageView extends events.EventTarget {
return listItemNode.querySelector(".safety-flipper");
}
+ _getRelationFlipperNode(listItemNode) {
+ return listItemNode.querySelector(".relation-flipper");
+ }
+
_getDeleteFlipperNode(listItemNode) {
return listItemNode.querySelector(".delete-flipper");
}
@@ -92,6 +104,23 @@ class PostsPageView extends events.EventTarget {
);
}
+ _evtBulkAddRelationClick(e, post) {
+ e.preventDefault();
+ const linkNode = e.target;
+ if (linkNode.getAttribute("data-disabled")) {
+ return;
+ }
+ linkNode.setAttribute("data-disabled", true);
+ this.dispatchEvent(
+ new CustomEvent(
+ linkNode.classList.contains("related") ? "removeRelation" : "addRelation",
+ {
+ detail: { post: post }
+ }
+ )
+ );
+ }
+
_evtBulkEditSafetyClick(e, post) {
e.preventDefault();
const linkNode = e.target;
@@ -133,7 +162,8 @@ class PostsPageView extends events.EventTarget {
if (tagFlipperNode) {
let tagged = true;
for (let tag of this._ctx.bulkEdit.tags) {
- tagged &= post.tags.isTaggedWith(tag);
+ let tagData = tags.parseTagAndCategory(tag);
+ tagged &= post.tags.isTaggedWith(tagData.name);
}
tagFlipperNode.classList.toggle("tagged", tagged);
}
@@ -149,6 +179,12 @@ class PostsPageView extends events.EventTarget {
}
}
+ const relationFlipperNode = this._getRelationFlipperNode(listItemNode);
+ if (relationFlipperNode) {
+ let related = this._ctx.parameters.relations.includes(post.id);
+ relationFlipperNode.classList.toggle("related", related);
+ }
+
const deleteFlipperNode = this._getDeleteFlipperNode(listItemNode);
if (deleteFlipperNode) {
deleteFlipperNode.classList.toggle(