Files
ncdownloader/src/index.js

91 lines
3.0 KiB
JavaScript

import helper from './utils/helper'
import eventHandler from './lib/eventHandler'
import Http from './lib/http'
import { translate as t, translatePlural as n } from '@nextcloud/l10n'
import updatePage from './actions/updatePage'
import buttonActions from './actions/buttonActions'
import './css/style.scss'
import './css/table.scss'
import { createApp } from 'vue'
import App from './App';
import tippy, { delegate } from 'tippy.js';
import 'tippy.js/dist/tippy.css';
'use strict'
import settingsBar from './settingsBar';
const basePath = "/apps/ncdownloader";
window.addEventListener('DOMContentLoaded', function () {
helper.showErrors('[data-error-message]');
updatePage.run();
buttonActions.run();
let container = 'ncdownloader-form-wrapper';
const dataContainerID = "app-settings-data";
let app = createApp(App);
let bar = createApp(settingsBar);
const dataContainer = document.getElementById(dataContainerID);
let values = {};
try {
let settings = dataContainer.getAttribute("data-settings");
let searchSites = dataContainer.getAttribute("data-search-sites");
values['settings'] = JSON.parse(settings);
values['search_sites'] = JSON.parse(searchSites);
} catch (e) {
values = {}
console.log(e);
}
bar.provide('settings', values['settings']);
bar.mount("#" + "app-settings-content");
app.provide('settings', values);
let vm = app.mount('#' + container);
helper.addVue(vm.$options.name, vm);
eventHandler.add("click", "#start-aria2", "button", function (e) {
const path = basePath + "/aria2/start";
let element = e.target
if (element.classList.contains("notinstalled")) {
return;
}
let parent = element.parentElement;
let oldHtml = parent.innerHTML;
parent.innerHTML = helper.loadingTpl();
let url = helper.generateUrl(path);
const callback = function (parent, html, data) {
parent.innerHTML = html;
if (!data.status) {
if (data.error)
helper.error(data.error);
return;
}
let element = document.querySelector("#start-aria2 button");
let aria2 = element.getAttribute("data-aria2");
if (!aria2) {
return;
}
if (aria2 === 'on') {
element.setAttribute("data-aria2", "off");
element.textContent = t("ncdownloader", "Start Aria2");
} else {
element.setAttribute("data-aria2", "on");
element.textContent = t("ncdownloader", "Stop Aria2");
}
}
Http.getInstance(url).setHandler(function (data) {
callback(parent, oldHtml, data);
}).send();
})
eventHandler.add("click", "#app-navigation", "#search-download", helper.showDownload);
delegate('#app-ncdownloader-wrapper',
{ target: '[data-tippy-content]' }
);
});