jshint and format app.js

This commit is contained in:
Jakob Borg committed 2014-09-18 21:29:29 +02:00
1 parent 9c68be4d5e
commit bf909db3f9
2 files changed
+78 -61

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@ func Assets() map[string][]byte {
bs, _ = ioutil.ReadAll(gr)
assets["angular/angular.min.js"] = bs
bs, _ = base64.StdEncoding.DecodeString("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 truncated
bs, _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/+x9e3MbN5L4//oUMH/+haRNjSQn69qzouQc2d7TxrFdlpW9KkV7NSRBcqLhDDMYSubG+u7X3cDM4DkcPTa3V3WsxCIHQKPRaPQLDczeHjvOV5simS9KNjgesmf7B9+wv8aX+Zj9kBdzFmdTqJGVRTJel3kh2EBwzsoFZ8fv3336ePLD2af3H0/ZLEn5MNoBcC/TlBE4wQoueHHFpxE7E5zlM2iWCCbydTHhbJJPOYOf8/yKFxmfsvEGOmM/nXzaFeUm5QgrTSY8E9hdXLIJlI45m+VrQCnJCIe3J8ev352+pu6jnZ29J7+KNMlKNi7ya+j7BSuLNR9BX1mZZGte/V6la4H/y9/syR60nKf5OE7Z4xdsFqcCKsXZfJ3GRf0bgIg85fXvqzhNpm+hllCPEM5Ofw1fBJBrUvYPd3au4oKJTTaBkWdzdlQBjZb5dJ3yQb8u64/YeX8Vi0mcrgo+WZRRWcSZSOOS9y+GhwRoXaTjGMAfsT6QluDX7SNAb5bMB7M1PEjyjA0eL8py9aHIr5IpL0bscQ2vejZkv+8w+BgVoymfxeu0FNFnUcz+g8fw7F28pE7/c/f49OOb3U/5Jc+g8y1tj/P8MuFVW6OlbOogFAHtTsu4TCZvYD7F2xw7H0gk8QOEmSWfX7B+CmTcw392+6O6VKxnsjT6VeRZn57fAOXwf5NOZZGnKUDuv77iWXlcFilQXyOcmOQrmGAaW00kehilsSipFYwpW6eppAJODpacvILH+2p8NPXryYQL8SaD500H07iMK7j4AU7/24Jn7LRmFJzeuIAldL0AShCrpzk8XwHiWA6DyLiEBksoyXRQqyKfQ3tBrdRCYFBR5DATK6D3LC+WuDjLdZEJFsOS34dVnWQT6kgHtaDpF2wRC1h6gOEMFs0C1up1Ui4IvoQiFzPAGY5kUZYzHGSkA/uEix/4NwEWTzdsyWH25cpGQNqI6t5QfpQjEkFUBdrpAK+hXpaXLJ6UawIJ1IZxz9Zp028yY4NHNr3xw4siL95kci4OjSI5pubZzU79VXHBY75MykH/7OR9BtPB+8PDHaNHxQvfsX27W6IKTMDreLLQ1ipHlrLr4kcJnSjN54Me1eqNGP2Nkmn1rdwgu8rvnvE4iDutrAY3w7bB60sAezunMaU8m8PE77KDi6ZxvSbspoC8RjKY5U/JkufrUiOJTQ1ajdGcl4NKDD5l/T1CX3xP3HvUh0eyy6FDgEgtxUG9JD11iCkGijV0IozYn4C55YMbbX2rqq2r2+GZ2cxhmvtTIE0A/NFB/+FHfrDvDP2WmLRh4PTcIq5r+dgusnVdB9/TfBJjrYqcOG+gSa5eQbEU19VTGND7H+ERGgXN0yy+SuYAIZu/vI43ONWo7JvynGSA+1zJcKn3VZmuSib5cpVywv+I/X5zaJahMg89P8mQEgaiTbmSosJtTDTG5+cXxnOwRXjqVl9uaOn2+8bTDCp7YIDSKfNJnh4vQCuDgjCooeoUfJUXJZA9djuTZR9gWhJ+HWztGRRYo9lrHJiL6no1L0B/nWSz3NMO7IwKXJCne2Rk9IY1AzcchwXCUuJvEqWpZkkhSoZV1vGcV8ZqmsDDlbR1yNzFh2DyFH1R6WkdGqnGBBW0tHvQgI4boNccFOUVZ/FVnKTxGHQEaFhqMWI9nvV0UAKlteqwsgiuEzDUl3E5WVB1BhSEv7tnp6BgpNXR+8di99PfelRThyYbAdtv6iqoolEV4+/jd72okWzSNMrmI9kMVkMjXEAPsgFWSGgdwp9vqa5Q2gSePH1qS0GsANWp3nlyYWouqXxBbCh19C17FtCq5A9Yas/4VaELfTWWfgSORgmiqOEDYEqRAPWx2NcVGT5coqssi2by91BG7MkytG7kpIyJY9L8WuMHDdwEeDNif0OTabmKCzDacmUgQgMsZOBQCUSOPC5es4wXGBpuNSuBvclTzXqqPvoggR76z6jM32LHx9DxwGN44IwY9dXMfMe0efIRDj/KujTawxrjn9/PaJqH7OioluDGVDKODlkr1FSHZk5jCGrQSqpGWjFNPcojduAbXKOg0Oepm53vX3hIaNujJio3hgQCJhrHk0tEBtYj8S8B59OdQN+4+Cv1XpkkjwfXQJj8ehiN4e+gP+awVPk6S8EjM/SuPjZHTzbaqQGsbKE8G/RqxSx1xqkUsb0Q+EqQoDVZtQTpHxdgSA8jLDm0bHB3QVpDpyqHFiVtXDPOpy8blVrX7hfLPjibr3iq+aDwcJoU6jmYgkkx1EvRrMFCVN/68zJfTxZYcLaaosM/qqwtC4+TSQCLgi/zK+5FxC2qsIAJVjPqwQTMaF4k4rLBxZ7Axv3Rp4yMQPDZCoP4OCHKTvrqK/aoMY3sGWrxvRBGuOE0n6yX6FnUvFFwHNwAuVCfZJ9k0L0sw6vTK6mhJxmY8VZRbQI2LN8MyLUCDaiD/v/LeHmdF5dkxvSHaI/F6aC/ADPBwQFqNxC31xWLdYnTHK7pZ/pqfpWr0m2CLQHw5Qt7JAlzi0m2Z6LxlRxaW8QkTz/MH0E6d6MFhqW4Mm47kAOF1VQaulBCTrmJqW56Swca7dsLB2t/NbJeufK/QQN3GsJbWBjpCeo7KWXuPQ6wSoHei4+A0aDGTfdqQSHJrpjm6yDqa0G2H1o80p8gWxfMELEggwYjRQiMgkmR7UmTJ6BT4x3C8ERVEPbxzCNjCO/jGqeqIgE6eTVi+mhqyjpKUqPtRxCyJf8jiBseBNXCkbj4e3HGwb5KhHIZO2EMXMhhNl1n87waQJRMLxwksSdcQGKwDZ/jWyBDC34LKoH1FKpuqNa6n2y8Ei/Y/sgpyddlqOgk+2FTcvEpL+PUW+H9utxS4+V0imHcFzVzRDE8MevdeFVUs9q2j+6/SonAwf5+EHSLUDmmgARF6j1zZk+XEcWI3q9oBqKzjy/B9FuVGDZAw9ueNBAjJzNwlNHrlXEC1KZ1lDjjICTAoY0rIBmIlimfoJqYjmxIIGSuY/CGwWmKxWXtguPvZXwJPhCbLPJkAh7WD2sSSdM865fUxgYFTcbrOYJYsum6QKTQOEjiFON569WIiZyEGi8RLG2HkERzAAESZbLklcMmwwdXiUjKSO4MyA0wCQFk4woj4y5CVaCcYEG1ZU7CNM5w06xgC/hHsHiejxArNXobxm9rUKFoPu0YJSirCK2fESvUPJW9JbFCaZPGEz7YG3z/Av77+5foyeEv4smwaQS/fjmCfwbnfz+8eDKMnjwefvk7/Ls3Yr3HBz2PN/WoaexzoiwUAKle0+Cox54yDPGBSLwGR+Ip6x0u48+7wERU9PU+e8KefQP/fP183/L1gt4jIvVUI8O3eg+7rIIGfyhoGvA/0RRZew2QGoFWX69lIZ6CG99Fdq5JSZFFIBsOKkGh629/mFeu3j3yInyRMd9uiz98SYJJf9aibUlZ8nEO3fDpG/jXCN7VvetqkxSgpW8vOXqmPa0aMgPWtCxJs69zaOcoE08VHJR62hLID9OWDL3vER3azOAZxmfOPp6gms8zmEk5qK5kt8gvzUiymRT1XdbDj7HppJNqRJSS9oWPbe19JLl5MGK2D7bTQsLaRrBm1mVZyTn2DINeOK6i548S8Xq5Kjfvx7+CujfVj8HoVtRdfjn0l9d6620CPnJ2WhbNBpe3hlLk0a95Agt1xPqerquwugmHDFsHjex25q5rFJjm7j3sgmEANwE6WqIjQ5SeAVfhfPz7U7yyTAPkNhCweZFwoXUi5zECNhEDHc7QQw179ePHkQ5e80n6F3dyLbROWtwLT9c3lqdhCqOapwNzq/YWDWPM9Wv9ovJ0Azy6NGSUXzYJqnhbka92kUjU43cvxSVor0zyySKJcs+RQzcB0eGfETUPdhADA+Johmr43yJ+4eqYplfUNAT+X0jhNFLhe0SNtI7Csf/Vg+sh02Uz5JEzWA+b2E20XT37c9OmB204hkrUSg93vFBwjkE64p6V67VVnwnlR3g2EfBTb3xNlivc67kDSZCU2BpZtSeFda+tPuHk3fbSP36y4QcH/PQoSEFA5SIMFokBjQ8eYK4iOVaMtQJGewg6ME0+yaEtxhFrhMAoOAN/sJFTo1nFJ1TYZKtw1iIanSU0JTfkuNveeDEuQ5e4mT/Aert12sQQCE+Ddj2kqTUbWqYFwDBJR8sgoWTOkNSo87ci0IHvr7MPBUxTUW6g2TDE7mE2dzmtLDYBKJTalEwvIor/APo/xeUiAhdyAHP9Z3DxBnUNPdgDVPIEmexaSMBy6uEuo2cZX2rt2ggjhfs2qgU7v2ET2tofOBH7IFECAs4dwvbt1C2Bus7WQbN4xK1NBNoa6LLeZC7NbY2hOgOHOFr+2j4gidQdzB3ykjrJDqjYeSyuI+ZxBwMTA7X94/iXijk0EQc7gL3d3PKnEVG20R6qFG8yUQv6VZ6Sy/u1EUH2WmNFUAuvBaiVK2X6NhblKQZRQTrza9IDg5Zq4cRSX+1X8UaQ7qggDxsB5YWutAr8+fPzb5yg3Fb+qmepZalUiZx6/AyDtkYGp048y0vybMDIVeYrMHV4+7bIlgWgUnpuy/xVJpDie/XzVktPRtxv27GR62fyboc+VebebTs1E/7sXlWmaUt+bVvaoMFFJv+o6bwPC23hlEotBbpf5adyU1XHwOfcYsp3PvOGA8GN6K+zKZ/hrknf7/FijcsM0wm8vq+zry1DKElG+XPsEXYRhCzKfLWCnr2Qq0roi3p6oN3wIG2O01j8AaRJgF/+CXSZYspB4QdMJ0xUJkAH2lS4qCbQJpmmPDwjcun1fS6NCQbVMqWjBCCtimQZF5sukCZxlt0VlGcmLHZARD/wYsKzEjcT/9k8caDrsJtt/CAPoJGZ7t8H9UM1uGE1QU12QFtQXpZDi0d2seeroOFwaNOVnJBZmoMMhW78sggVOiapGaT1xErNzeDaVbEC0zYBjLine truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
assets["app.js"] = bs
+77 -60
View File
@@ -3,7 +3,7 @@
// license that can be found in the LICENSE file.
/*jslint browser: true, continue: true, plusplus: true */
/*global $: false, angular: false */
/*global $: false, angular: false, console: false, validLangs: false */
'use strict';
@@ -42,15 +42,15 @@ syncthing.controller('EventCtrl', function ($scope, $http) {
console.log("event", event.id, event.type, event.data);
$scope.$emit(event.type, event);
});
};
}
$scope.lastEvent = data[data.length - 1];
lastID = $scope.lastEvent.id;
setTimeout(function () {
$http.get(urlbase + '/events?since=' + lastID)
.success(successFn)
.error(errorFn);
.success(successFn)
.error(errorFn);
}, 500);
};
@@ -59,8 +59,8 @@ syncthing.controller('EventCtrl', function ($scope, $http) {
setTimeout(function () {
$http.get(urlbase + '/events?limit=1')
.success(successFn)
.error(errorFn);
.success(successFn)
.error(errorFn);
}, 1000);
};
@@ -92,7 +92,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
$scope.upgradeInfo = {};
$scope.stats = {};
$http.get(urlbase+"/lang").success(function (langs) {
$http.get(urlbase + "/lang").success(function (langs) {
// Find the first language in the list provided by the user's browser
// that is a prefix of a language we have available. That is, "en"
// sent by the browser will match "en" or "en-US", while "zh-TW" will
@@ -108,11 +108,11 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
// The langs returned by the /rest/langs call will be in lower
// case. We compare to the lowercase version of the language
// code we have as well.
possibleLang = possibleLang.toLowerCase()
possibleLang = possibleLang.toLowerCase();
if (possibleLang.length > lang.length) {
return possibleLang.indexOf(lang) == 0;
return possibleLang.indexOf(lang) === 0;
} else {
return lang.indexOf(possibleLang) == 0;
return lang.indexOf(possibleLang) === 0;
}
});
if (matching.length >= 1) {
@@ -122,9 +122,9 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
}
// Fallback if nothing matched
$translate.use("en");
})
});
$(window).bind('beforeunload', function() {
$(window).bind('beforeunload', function () {
navigatingAway = true;
});
@@ -140,20 +140,20 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
'rmdir': 'Del (dir)',
'sync': 'Sync',
'touch': 'Update',
}
};
$scope.needIcons = {
'rm': 'remove',
'rmdir': 'remove',
'sync': 'download',
'touch': 'asterisk',
}
};
$scope.$on('UIOnline', function (event, arg) {
if (online && !restarting) {
return;
}
if (restarting){
if (restarting) {
document.location.reload(true);
} else {
console.log('UIOnline');
@@ -222,7 +222,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
});
$scope.$on('ConfigLoaded', function (event) {
if ($scope.config.Options.URAccepted == 0) {
if ($scope.config.Options.URAccepted === 0) {
// If usage reporting has been neither accepted nor declined,
// we want to ask the user to make a choice. But we don't want
// to bug them during initial setup, so we set a cookie with
@@ -232,14 +232,14 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
var firstVisit = document.cookie.replace(/(?:(?:^|.*;\s*)firstVisit\s*\=\s*([^;]*).*$)|^.*$/, "$1");
if (!firstVisit) {
document.cookie = "firstVisit=" + Date.now() + ";max-age=" + 30*24*3600;
document.cookie = "firstVisit=" + Date.now() + ";max-age=" + 30 * 24 * 3600;
} else {
if (+firstVisit < Date.now() - 4*3600*1000){
if (+firstVisit < Date.now() - 4 * 3600 * 1000) {
$('#ur').modal();
}
}
}
})
});
$scope.$on('ConfigSaved', function (event, arg) {
updateLocalConfig(arg.data);
@@ -301,7 +301,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
function refreshCompletion(node, repo) {
if (node === $scope.myID) {
return
return;
}
var key = "refreshCompletion" + node + repo;
@@ -313,7 +313,8 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
}
$scope.completion[node][repo] = data.completion;
var tot = 0, cnt = 0;
var tot = 0,
cnt = 0;
for (var cmp in $scope.completion[node]) {
if (cmp === "_total") {
continue;
@@ -333,8 +334,8 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
function refreshConnectionStats() {
$http.get(urlbase + '/connections').success(function (data) {
var now = Date.now(),
td = (now - prevDate) / 1000,
id;
td = (now - prevDate) / 1000,
id;
prevDate = now;
for (id in data) {
@@ -373,7 +374,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
}
var refreshNodeStats = debounce(function () {
$http.get(urlbase+"/stats/node").success(function (data) {
$http.get(urlbase + "/stats/node").success(function (data) {
$scope.stats = data;
for (var node in $scope.stats) {
$scope.stats[node].LastSeen = new Date($scope.stats[node].LastSeen);
@@ -383,7 +384,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
});
}, 500);
$scope.init = function() {
$scope.init = function () {
refreshSystem();
refreshConfig();
refreshConnectionStats();
@@ -497,7 +498,9 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
};
$scope.findNode = function (nodeID) {
var matches = $scope.nodes.filter(function (n) { return n.NodeID == nodeID; });
var matches = $scope.nodes.filter(function (n) {
return n.NodeID == nodeID;
});
if (matches.length != 1) {
return undefined;
}
@@ -534,9 +537,13 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
$('#settings').modal();
};
$scope.saveConfig = function() {
$scope.saveConfig = function () {
var cfg = JSON.stringify($scope.config);
var opts = {headers: {'Content-Type': 'application/json'}};
var opts = {
headers: {
'Content-Type': 'application/json'
}
};
$http.post(urlbase + '/config', cfg, opts).success(function () {
$http.get(urlbase + '/config/sync').success(function (data) {
$scope.configInSync = data.configInSync;
@@ -547,17 +554,17 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
$scope.saveSettings = function () {
// Make sure something changed
var changed = !angular.equals($scope.config.Options, $scope.tmpOptions) ||
!angular.equals($scope.config.GUI, $scope.tmpGUI);
!angular.equals($scope.config.GUI, $scope.tmpGUI);
if (changed) {
// Check if usage reporting has been enabled or disabled
if ($scope.tmpOptions.UREnabled && $scope.tmpOptions.URAccepted <= 0) {
$scope.tmpOptions.URAccepted = 1000;
} else if (!$scope.tmpOptions.UREnabled && $scope.tmpOptions.URAccepted > 0){
} else if (!$scope.tmpOptions.UREnabled && $scope.tmpOptions.URAccepted > 0) {
$scope.tmpOptions.URAccepted = -1;
}
// Check if protocol will need to be changed on restart
if($scope.config.GUI.UseTLS !== $scope.tmpGUI.UseTLS){
if ($scope.config.GUI.UseTLS !== $scope.tmpGUI.UseTLS) {
$scope.protocolChanged = true;
}
@@ -565,7 +572,9 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
$scope.thisNode().Name = $scope.tmpOptions.NodeName;
$scope.config.Options = angular.copy($scope.tmpOptions);
$scope.config.GUI = angular.copy($scope.tmpGUI);
$scope.config.Options.ListenAddress = $scope.config.Options.ListenStr.split(',').map(function (x) { return x.trim(); });
$scope.config.Options.ListenAddress = $scope.config.Options.ListenStr.split(',').map(function (x) {
return x.trim();
});
$scope.saveConfig();
}
@@ -580,14 +589,14 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
$scope.configInSync = true;
// Switch webpage protocol if needed
if($scope.protocolChanged){
if ($scope.protocolChanged) {
var protocol = 'http';
if($scope.config.GUI.UseTLS){
protocol = 'https';
if ($scope.config.GUI.UseTLS) {
protocol = 'https';
}
setTimeout(function(){
setTimeout(function () {
window.location.protocol = protocol;
}, 2500);
@@ -628,7 +637,10 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
};
$scope.addNode = function () {
$scope.currentNode = {AddressesStr: 'dynamic', Compression: true};
$scope.currentNode = {
AddressesStr: 'dynamic',
Compression: true
};
$scope.editingExisting = false;
$scope.editingSelf = false;
$scope.nodeEditor.$setPristine();
@@ -660,7 +672,9 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
$('#editNode').modal('hide');
nodeCfg = $scope.currentNode;
nodeCfg.Addresses = nodeCfg.AddressesStr.split(',').map(function (x) { return x.trim(); });
nodeCfg.Addresses = nodeCfg.AddressesStr.split(',').map(function (x) {
return x.trim();
});
done = false;
for (i = 0; i < $scope.nodes.length; i++) {
@@ -682,7 +696,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
};
$scope.otherNodes = function () {
return $scope.nodes.filter(function (n){
return $scope.nodes.filter(function (n) {
return n.NodeID !== $scope.myID;
});
};
@@ -763,7 +777,9 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
};
$scope.addRepo = function () {
$scope.currentRepo = {selectedNodes: {}};
$scope.currentRepo = {
selectedNodes: {}
};
$scope.currentRepo.RescanIntervalS = 60;
$scope.currentRepo.FileVersioningSelector = "none";
$scope.currentRepo.simpleKeep = 5;
@@ -784,7 +800,9 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
repoCfg.selectedNodes[$scope.myID] = true;
for (var nodeID in repoCfg.selectedNodes) {
if (repoCfg.selectedNodes[nodeID] === true) {
repoCfg.Nodes.push({NodeID: nodeID});
repoCfg.Nodes.push({
NodeID: nodeID
});
}
}
delete repoCfg.selectedNodes;
@@ -822,7 +840,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
$scope.saveConfig();
};
$scope.sharesRepo = function(repoCfg) {
$scope.sharesRepo = function (repoCfg) {
var names = [];
repoCfg.Nodes.forEach(function (node) {
names.push($scope.nodeName($scope.findNode(node.NodeID)));
@@ -852,7 +870,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
$('#urPreview').modal().on('hidden.bs.modal', function () {
$('#settings').modal();
});
}
};
$scope.acceptUR = function () {
$scope.config.Options.URAccepted = 1000; // Larger than the largest existing report version
@@ -879,7 +897,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
var fDelete = 4096;
var fDirectory = 16384;
if ((file.Flags & (fDelete+fDirectory)) === fDelete+fDirectory) {
if ((file.Flags & (fDelete + fDirectory)) === fDelete + fDirectory) {
return 'rmdir';
} else if ((file.Flags & fDelete) === fDelete) {
return 'rm';
@@ -958,12 +976,11 @@ function decimals(val, num) {
return decs;
}
function randomString(len, bits)
{
function randomString(len, bits) {
bits = bits || 36;
var outStr = "", newStr;
while (outStr.length < len)
{
var outStr = "",
newStr;
while (outStr.length < len) {
newStr = Math.random().toString(bits).slice(2);
outStr += newStr.slice(0, Math.min(newStr.length, (len - outStr.length)));
}
@@ -981,7 +998,7 @@ function isEmptyObject(obj) {
function debounce(func, wait) {
var timeout, args, context, timestamp, result, again;
var later = function() {
var later = function () {
var last = Date.now() - timestamp;
if (last < wait) {
timeout = setTimeout(later, wait - last);
@@ -995,7 +1012,7 @@ function debounce(func, wait) {
}
};
return function() {
return function () {
context = this;
args = arguments;
timestamp = Date.now();
@@ -1077,15 +1094,15 @@ syncthing.filter('basename', function () {
if (!parts || parts.length < 1) {
return input;
}
return parts[parts.length-1];
return parts[parts.length - 1];
};
});
syncthing.directive('uniqueRepo', function() {
syncthing.directive('uniqueRepo', function () {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
link: function (scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function (viewValue) {
if (scope.editingExisting) {
// we shouldn't validate
ctrl.$setValidity('uniqueRepo', true);
@@ -1102,16 +1119,16 @@ syncthing.directive('uniqueRepo', function() {
};
});
syncthing.directive('validNodeid', function($http) {
syncthing.directive('validNodeid', function ($http) {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
link: function (scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function (viewValue) {
if (scope.editingExisting) {
// we shouldn't validate
ctrl.$setValidity('validNodeid', true);
} else {
$http.get(urlbase + '/nodeid?id='+viewValue).success(function (resp) {
$http.get(urlbase + '/nodeid?id=' + viewValue).success(function (resp) {
if (resp.error) {
ctrl.$setValidity('validNodeid', false);
} else {
@@ -1138,5 +1155,5 @@ syncthing.directive('modal', function () {
close: '@',
large: '@',
},
}
};
});