110 lines
4.4 KiB
JavaScript
110 lines
4.4 KiB
JavaScript
import Http from './http'
|
|
import OC_msg from './OC/msg'
|
|
import {
|
|
generateUrl
|
|
} from '@nextcloud/router'
|
|
import settingsForm from './settingsForm'
|
|
import autoComplete from './autoComplete';
|
|
import eventHandler from './eventHandler';
|
|
import aria2Options from './aria2Options';
|
|
import helper from './helper';
|
|
import './css/autoComplete.css'
|
|
|
|
'use strict';
|
|
window.addEventListener('DOMContentLoaded', function () {
|
|
|
|
eventHandler.add('click', '.ncdownloader-admin-settings', 'input[type="button"]', function (event) {
|
|
event.stopPropagation();
|
|
OC_msg.startSaving('#ncdownloader-message-banner');
|
|
const target = this.getAttribute("data-rel");
|
|
let inputData = helper.getData(target);
|
|
const path = inputData.url || "/apps/ncdownloader/admin/save";
|
|
let url = generateUrl(path);
|
|
Http.getInstance(url).setData(helper.getData(target)).setHandler(function () {
|
|
OC_msg.finishedSuccess('#ncdownloader-message-banner', "OK");
|
|
}).send();
|
|
});
|
|
eventHandler.add('click', '.ncdownloader-personal-settings', 'input[type="button"]', function (event) {
|
|
event.preventDefault();
|
|
event.stopPropagation();
|
|
if (event.target.matches('.custom-aria2-settings-container')) {
|
|
return;
|
|
}
|
|
OC_msg.startSaving('#ncdownloader-message-banner');
|
|
const target = this.getAttribute("data-rel");
|
|
let inputData = helper.getData(target);
|
|
const path = inputData.url || "/apps/ncdownloader/personal/save";
|
|
let url = generateUrl(path);
|
|
Http.getInstance(url).setData(inputData).setHandler(function (data) {
|
|
OC_msg.finishedSuccess('#ncdownloader-message-banner', "OK");
|
|
}).send();
|
|
});
|
|
eventHandler.add('click', '#custom-aria2-settings-container', "button.add-custom-aria2-settings", function (e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
let element = e.target;
|
|
let selector = "#aria2-settings-key-1";
|
|
let form = settingsForm.getInstance();
|
|
let nodeList, key, value;
|
|
nodeList = document.querySelectorAll("[id^='aria2-settings-key']")
|
|
if (nodeList.length === 0) {
|
|
key = "aria2-settings-key-1";
|
|
value = "aria2-settings-value-1";
|
|
} else {
|
|
let index = nodeList.length + 1;
|
|
key = "aria2-settings-key-" + index;
|
|
value = "aria2-settings-value-" + index;
|
|
selector = "[id^='aria2-settings-key']";
|
|
}
|
|
element.before(form.createCustomInput(key, value));
|
|
//appended the latest one
|
|
nodeList = document.querySelectorAll("[id^='aria2-settings-key']")
|
|
try {
|
|
autoComplete.getInstance({
|
|
selector: (nodeList.length !== 0) ? nodeList : selector,
|
|
minChars: 1,
|
|
source: function (term, suggest) {
|
|
term = term.toLowerCase();
|
|
let suggestions = [], data = aria2Options;
|
|
for (const item of data) {
|
|
if (item.toLowerCase().indexOf(term, 0) !== -1) {
|
|
suggestions.push(item);
|
|
}
|
|
}
|
|
suggest(suggestions);
|
|
}
|
|
}).run();
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
}
|
|
)
|
|
|
|
eventHandler.add("click", "#custom-aria2-settings-container", "button.save-custom-aria2-settings", function (e) {
|
|
e.stopImmediatePropagation();
|
|
let data = helper.getData(this.getAttribute("data-rel"));
|
|
let url = generateUrl(data.path);
|
|
delete data.path;
|
|
OC_msg.startSaving('.message-banner');
|
|
helper.makePair(data);
|
|
Http.getInstance(url).setData(data).setHandler(function (data) {
|
|
OC_msg.finishedSuccess('.message-banner', "OK");
|
|
}).send();
|
|
})
|
|
eventHandler.add('click', '.ncdownloader-personal-settings', 'button.icon-close', function (e) {
|
|
e.stopImmediatePropagation();
|
|
e.preventDefault();
|
|
this.parentNode.remove();
|
|
})
|
|
Http.getInstance(generateUrl("/apps/ncdownloader/personal/aria2/get")).setHandler(function (data) {
|
|
if (!data) {
|
|
return;
|
|
}
|
|
let input = [];
|
|
for (let key in data) {
|
|
if (aria2Options.includes(key))
|
|
input.push({ name: key, value: data[key], id: key });
|
|
}
|
|
settingsForm.getInstance().render(input);
|
|
}).send();
|
|
}); |