diff --git a/public/js/subscription-manager.js b/public/js/subscription-manager.js
index 089d68c..e54869d 100644
--- a/public/js/subscription-manager.js
+++ b/public/js/subscription-manager.js
@@ -13,86 +13,78 @@ const component = () => {
if (!data.success) throw new Error(data.error);
this.plugins = data.plugins;
- let pid = localStorage.getItem("plugin");
- if (!pid || !this.plugins.find((p) => p.id === pid)) {
- pid = this.plugins[0].id;
- }
+ let pid = localStorage.getItem('plugin');
+ if (!pid || !this.plugins.find((p) => p.id === pid)) {
+ pid = this.plugins[0].id;
+ }
- this.pid = pid;
- this.list(pid);
- })
- .catch((e) => {
- alert(
- "danger",
- `Failed to list the available plugins. Error: ${e}`
- );
- });
- },
- pluginChanged() {
- localStorage.setItem("plugin", this.pid);
- this.list(this.pid);
- },
- list(pid) {
- if (!pid) return;
- fetch(
- `${base_url}api/admin/plugin/subscriptions?${new URLSearchParams(
- {
- plugin: pid,
- }
- )}`,
- {
- method: "GET",
- }
- )
- .then((response) => response.json())
- .then((data) => {
- if (!data.success) throw new Error(data.error);
- this.subscriptions = data.subscriptions;
- })
- .catch((e) => {
- alert(
- "danger",
- `Failed to list subscriptions. Error: ${e}`
- );
- });
- },
- renderStrCell(str) {
- const maxLength = 40;
- if (str.length > maxLength)
- return `
${str.substring(
- 0,
- maxLength
- )}... ${str} | `;
- return `${str} | `;
- },
- renderDateCell(timestamp) {
- return `${moment
- .duration(moment.unix(timestamp).diff(moment()))
- .humanize(true)} | `;
- },
- selected(event, modal) {
- const id = event.currentTarget.getAttribute("sid");
- this.subscription = this.subscriptions.find((s) => s.id === id);
- UIkit.modal(modal).show();
- },
- renderFilterRow(ft) {
- const key = ft.key;
- let type = ft.type;
- switch (type) {
- case "number-min":
- type = "number (minimum value)";
- break;
- case "number-max":
- type = "number (maximum value)";
- break;
- case "date-min":
- type = "minimum date";
- break;
- case "date-max":
- type = "maximum date";
- break;
- }
- let value = ft.value;
+ this.pid = pid;
+ this.list(pid);
+ })
+ .catch((e) => {
+ alert('danger', `Failed to list the available plugins. Error: ${e}`);
+ });
+ },
+ pluginChanged() {
+ localStorage.setItem('plugin', this.pid);
+ this.list(this.pid);
+ },
+ list(pid) {
+ if (!pid) return;
+ fetch(
+ `${base_url}api/admin/plugin/subscriptions?${new URLSearchParams({
+ plugin: pid,
+ })}`,
+ {
+ method: 'GET',
+ },
+ )
+ .then((response) => response.json())
+ .then((data) => {
+ if (!data.success) throw new Error(data.error);
+ this.subscriptions = data.subscriptions;
+ })
+ .catch((e) => {
+ alert('danger', `Failed to list subscriptions. Error: ${e}`);
+ });
+ },
+ renderStrCell(str) {
+ const maxLength = 40;
+ if (str.length > maxLength)
+ return `${str.substring(
+ 0,
+ maxLength,
+ )}... ${str} | `;
+ return `${str} | `;
+ },
+ renderDateCell(timestamp) {
+ return `${moment
+ .duration(moment.unix(timestamp).diff(moment()))
+ .humanize(true)} | `;
+ },
+ selected(event, modal) {
+ const id = event.currentTarget.getAttribute('sid');
+ this.subscription = this.subscriptions.find((s) => s.id === id);
+ UIkit.modal(modal).show();
+ },
+ renderFilterRow(ft) {
+ const key = ft.key;
+ let type = ft.type;
+ switch (type) {
+ case 'number-min':
+ type = 'number (minimum value)';
+ break;
+ case 'number-max':
+ type = 'number (maximum value)';
+ break;
+ case 'date-min':
+ type = 'minimum date';
+ break;
+ case 'date-max':
+ type = 'maximum date';
+ break;
+ }
+ let value = ft.value;
if (ft.type.startsWith('number') && isNaN(value)) value = '';
else if (ft.type.startsWith('date') && value)