webui-aria2/js/ctrls/nav.js
2018-08-30 15:07:55 +05:30

149 lines
3.9 KiB
JavaScript

angular
.module("webui.ctrls.nav", [
"webui.services.configuration",
"webui.services.modals",
"webui.services.rpc",
"webui.services.rpc.helpers",
"webui.services.settings",
"webui.services.utils"
])
.controller("NavCtrl", [
"$scope",
"$modals",
"$rpc",
"$rpchelpers",
"$fileSettings",
"$globalSettings",
"$globalExclude",
"$utils",
"$translate",
"$filter",
function(
scope,
modals,
rpc,
rhelpers,
fsettings,
gsettings,
gexclude,
utils,
translate,
filter
) {
scope.isFeatureEnabled = function(f) {
return rhelpers.isFeatureEnabled(f);
};
// initially collapsed in mobile resolution
scope.collapsed = true;
scope.onDownloadFilter = function() {
// Forward to MainCtrl.
scope.$parent.downloadFilter = scope.downloadFilter;
scope.$parent.onDownloadFilter();
};
// manage download functions
scope.forcePauseAll = function() {
rpc.once("forcePauseAll", []);
};
scope.purgeDownloadResult = function() {
rpc.once("purgeDownloadResult", []);
};
scope.unpauseAll = function() {
rpc.once("unpauseAll", []);
};
scope.addUris = function() {
modals.invoke("getUris", _.bind(rhelpers.addUris, rhelpers));
};
scope.addMetalinks = function() {
modals.invoke("getMetalinks", _.bind(rhelpers.addMetalinks, rhelpers));
};
scope.addTorrents = function() {
modals.invoke("getTorrents", _.bind(rhelpers.addTorrents, rhelpers));
};
scope.changeCSettings = function() {
modals.invoke("connection", rpc.getConfiguration(), _.bind(rpc.configure, rpc));
};
scope.changeGSettings = function() {
rpc.once("getGlobalOption", [], function(data) {
var starred = utils.getCookie("aria2props");
if (!starred || !starred.indexOf) starred = [];
var vals = data[0];
var settings = {};
// global settings divided into
// file settings + some global specific
// settings
_.forEach([fsettings, gsettings], function(sets) {
for (var i in sets) {
if (gexclude.indexOf(i) != -1) continue;
settings[i] = _.cloneDeep(sets[i]);
settings[i].starred = starred.indexOf(i) != -1;
}
});
for (var i in vals) {
if (i in gexclude) continue;
if (!(i in settings)) {
settings[i] = { name: i, val: vals[i], desc: "", starred: starred.indexOf(i) != -1 };
} else {
settings[i].val = vals[i];
}
}
modals.invoke(
"settings",
_.cloneDeep(settings),
filter("translate")("Global Settings"),
filter("translate")("Save"),
function(chsettings) {
var sets = {};
var starred = [];
for (var i in chsettings) {
// no need to change default values
if (settings[i].val != chsettings[i].val) sets[i] = chsettings[i].val;
if (chsettings[i].starred) {
starred.push(i);
}
}
console.log("saving aria2 settings:", sets);
console.log("saving aria2 starred:", starred);
rpc.once("changeGlobalOption", [sets]);
utils.setCookie("aria2props", starred);
}
);
});
};
scope.showServerInfo = function() {
modals.invoke("server_info");
};
scope.showAbout = function() {
modals.invoke("about");
};
scope.changeLanguage = function(langkey) {
translate.use(langkey);
};
scope.shutDownServer = function() {
rpc.once("shutdown", []);
};
}
]);