summaryrefslogtreecommitdiff
path: root/static
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2024-02-26 15:40:55 -0600
committerHombreLaser <sebastian-440@live.com>2024-02-26 15:40:55 -0600
commit9e38502edec81c47a54641186d888f191ed999f0 (patch)
treeca24af8b32148d1792250fff1b9d41b5ceb78c7b /static
parentadb6f7e9e73716e58529d96540f204e5e0825179 (diff)
Add pagination handling
Diffstat (limited to 'static')
-rw-r--r--static/js/controllers/base_controller.js3
-rw-r--r--static/js/controllers/comments_controller.js8
-rw-r--r--static/js/paginator.js15
3 files changed, 23 insertions, 3 deletions
diff --git a/static/js/controllers/base_controller.js b/static/js/controllers/base_controller.js
index 6caa9dd..2ef359c 100644
--- a/static/js/controllers/base_controller.js
+++ b/static/js/controllers/base_controller.js
@@ -9,9 +9,8 @@ export class BaseController {
this.parser = new DOMParser();
}
- async submit(event, route) {
+ async submit(event, route, form = new FormData(event.target)) {
event.preventDefault();
- const form = new FormData(event.target);
try {
const response = await fetch(route, { method: "POST", body: form });
diff --git a/static/js/controllers/comments_controller.js b/static/js/controllers/comments_controller.js
index a21bd05..683f5ca 100644
--- a/static/js/controllers/comments_controller.js
+++ b/static/js/controllers/comments_controller.js
@@ -1,10 +1,12 @@
import { BaseController } from "./base_controller.js";
+import { Paginator } from "../paginator.js";
export class CommentsController extends BaseController {
constructor(replies_controller) {
super();
this.replies_controller = replies_controller;
this.comments_node = document.getElementById("comments-thread");
+ this.paginator = new Paginator(this.comments_server_host, "/api/comments", this.post);
this.renderForm();
this.renderComments();
}
@@ -28,6 +30,7 @@ export class CommentsController extends BaseController {
if(comments != null) {
this.comments_node.appendChild(comments);
this.replies_controller.init();
+ this.paginator.populatePageAnchors();
}
});
}
@@ -39,7 +42,10 @@ export class CommentsController extends BaseController {
}
async submit(event) {
- super.submit(event, `${this.comments_server_host}/api/comments?path=${this.post}`);
+ var form = new FormData(event.target);
+ form.append("domain", `${window.location.protocol}//${window.location.host}`);
+
+ super.submit(event, `${this.comments_server_host}/api/comments?path=${this.post}`, form);
}
}
diff --git a/static/js/paginator.js b/static/js/paginator.js
new file mode 100644
index 0000000..9a7ed65
--- /dev/null
+++ b/static/js/paginator.js
@@ -0,0 +1,15 @@
+export class Paginator {
+ constructor(host, context, path) {
+ this.endpoint = `${host}${context}?path=${path}`;
+ }
+
+ populatePageAnchors() {
+ const pagination_widget = document.querySelector(".pagination");
+ var anchors = pagination_widget.querySelectorAll('a');
+
+ for(let anchor of anchors) {
+ var page = /\d/.exec(anchor.id)[0];
+ anchor.setAttribute("href", `${this.endpoint}&page=${page}`);
+ }
+ }
+} \ No newline at end of file