Separate per-server controls from torrents
The buttons are still broken, will fix later
This commit is contained in:
59
js/trtorrent.js
Normal file
59
js/trtorrent.js
Normal file
@@ -0,0 +1,59 @@
|
||||
"use strict";
|
||||
|
||||
class trtorrent {
|
||||
#element = document.createElement('div');
|
||||
getElement() {
|
||||
return this.#element;
|
||||
}
|
||||
|
||||
#hash;
|
||||
#name = '## NAME NOT SET ##';
|
||||
|
||||
#element_server = {};
|
||||
addControl(srv, control) {
|
||||
this.#element_server[srv] = control;
|
||||
this.#element.appendChild(control.getElement());
|
||||
}
|
||||
getControl(srv) {
|
||||
return this.#element_server[srv];
|
||||
}
|
||||
|
||||
#servers = {};
|
||||
getStatus(srv) {
|
||||
return this.#servers[srv];
|
||||
}
|
||||
setStatus(srv, status) {
|
||||
this.#servers[srv] = status;
|
||||
}
|
||||
|
||||
#handler(e) {
|
||||
switch (e.type) {
|
||||
case 'click':
|
||||
if (e.currentTarget.hasAttributeNS('trweb', 'torrentlistfield')) {
|
||||
switch (e.currentTarget.getAttributeNS('trweb', 'torrentlistfield')) {
|
||||
case 'entry':
|
||||
e.currentTarget.classList.toggle('trweb_hide_buttons');
|
||||
e.stopPropagation();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
constructor(hash) {
|
||||
this.#hash = hash;
|
||||
|
||||
// set up DOM structure
|
||||
let element_name = document.createElement('div');
|
||||
element_name.classList.add('trweb_torrentlistname', 'col');
|
||||
element_name.setAttributeNS('trweb', 'fieldid', 'displayname');
|
||||
|
||||
this.#element.torrent = this;
|
||||
this.#element.classList.add('trweb_torrentlistentry', 'trweb_hide_buttons', 'row');
|
||||
this.#element.setAttributeNS('trweb', 'torrentlistfield', 'entry');
|
||||
this.#element.addEventListener('click', this.#handler.bind(this));
|
||||
this.#element.element_name = element_name;
|
||||
this.#element.appendChild(element_name);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user