aboutsummaryrefslogtreecommitdiff
path: root/client/js/views/pool_edit_view.js
diff options
context:
space:
mode:
authorRuin0x112020-05-04 00:09:33 -0700
committerRuin0x112020-05-04 00:09:33 -0700
commite6bf102bc03504d9abc584f15da70a5fed7fa950 (patch)
tree346cbeceeb03185b0fee1c9d96a9e7697726575f /client/js/views/pool_edit_view.js
parentd59ecb8e230a55e6875076824723580bd3f4419b (diff)
Add list of posts to pools
Diffstat (limited to 'client/js/views/pool_edit_view.js')
-rw-r--r--client/js/views/pool_edit_view.js31
1 files changed, 30 insertions, 1 deletions
diff --git a/client/js/views/pool_edit_view.js b/client/js/views/pool_edit_view.js
index fac8430..7cd8bc9 100644
--- a/client/js/views/pool_edit_view.js
+++ b/client/js/views/pool_edit_view.js
@@ -4,6 +4,7 @@ const events = require('../events.js');
const api = require('../api.js');
const misc = require('../util/misc.js');
const views = require('../util/views.js');
+const Post = require('../models/post.js');
const template = views.getTemplate('pool-edit');
@@ -22,8 +23,13 @@ class PoolEditView extends events.EventTarget {
'input', e => this._evtNameInput(e));
}
+ if (this._postsFieldNode) {
+ this._postsFieldNode.addEventListener(
+ 'input', e => this._evtPostsInput(e));
+ }
+
for (let node of this._formNode.querySelectorAll(
- 'input, select, textarea')) {
+ 'input, select, textarea, posts')) {
node.addEventListener(
'change', e => {
this.dispatchEvent(new CustomEvent('change'));
@@ -74,6 +80,21 @@ class PoolEditView extends events.EventTarget {
this._namesFieldNode.setCustomValidity('');
}
+ _evtPostsInput(e) {
+ const regex = /^\d+$/;
+ const list = misc.splitByWhitespace(this._postsFieldNode.value);
+
+ for (let item of list) {
+ if (!regex.test(item)) {
+ this._postsFieldNode.setCustomValidity(
+ `Pool ID "${item}" is not an integer.`);
+ return;
+ }
+ }
+
+ this._postsFieldNode.setCustomValidity('');
+ }
+
_evtSubmit(e) {
e.preventDefault();
this.dispatchEvent(new CustomEvent('submit', {
@@ -91,6 +112,10 @@ class PoolEditView extends events.EventTarget {
description: this._descriptionFieldNode ?
this._descriptionFieldNode.value :
undefined,
+
+ posts: this._postsFieldNode ?
+ misc.splitByWhitespace(this._postsFieldNode.value) :
+ undefined,
},
}));
}
@@ -110,6 +135,10 @@ class PoolEditView extends events.EventTarget {
get _descriptionFieldNode() {
return this._formNode.querySelector('.description textarea');
}
+
+ get _postsFieldNode() {
+ return this._formNode.querySelector('.posts input');
+ }
}
module.exports = PoolEditView;

© 2015 - 2026 Jakob L. Kreuze