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

94 lines
2.6 KiB
JavaScript

angular
.module("webui.ctrls.props", [
"webui.services.utils",
"webui.services.settings",
"webui.services.deps",
"webui.services.rpc",
"webui.services.configuration"
])
.controller("StarredPropsCtrl", [
"$scope",
"$_",
"$utils",
"$rpc",
"$globalSettings",
"$fileSettings",
"$starredProps",
function(scope, _, utils, rpc, gsettings, fsettings, starredProps) {
scope._props = [];
scope.dirty = true;
scope.properties = [];
scope.getProps = function() {
var props = utils.getCookie("aria2props");
if (!props || !props.indexOf) props = starredProps; // default properties starred in the global configuration file
return props;
};
scope.enabled = function() {
for (var i = 0; i < scope.properties.length; i++) {
if (scope.properties[i]._val != scope.properties[i].val) return true;
}
return false;
};
scope.save = function() {
var sets = {};
var found = false;
for (var i = 0; i < scope.properties.length; i++) {
if (scope.properties[i]._val != scope.properties[i].val) {
sets[scope.properties[i].name] = scope.properties[i].val;
found = true;
}
}
if (found) {
rpc.once("changeGlobalOption", [sets]);
}
};
rpc.subscribe("getGlobalOption", [], function(data) {
var vals = data[0];
var props = scope.getProps();
var arr = [];
for (var i = 0; i < props.length; i++) {
var set = {};
if (props[i] in gsettings) {
set = gsettings[props[i]];
if (props[i] in vals) {
set.val = vals[props[i]];
}
set.name = props[i];
arr.push(set);
} else if (props[i] in fsettings) {
set = fsettings[props[i]];
if (props[i] in vals) {
set.val = vals[props[i]];
}
set.name = props[i];
arr.push(set);
} else if (props[i] in vals) {
arr.push({ name: props[i], val: vals[props[i]] });
}
}
utils.mergeMap(arr, scope.properties, function(prop, nprop) {
nprop = nprop || {};
nprop.name = prop.name;
nprop.options = prop.options;
nprop.multiline = prop.multiline;
if (nprop._val == nprop.val || nprop.val == prop.val) {
nprop._val = prop.val;
nprop.val = prop.val;
} else {
nprop._val = prop.val;
}
nprop.desc = prop.desc;
return nprop;
});
});
}
]);