diff --git a/auto/gui.files.go b/auto/gui.files.go index 430432dd..ea205124 100644 --- a/auto/gui.files.go +++ b/auto/gui.files.go @@ -18,7 +18,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["angular.min.js"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffd43b6d6fdbb6d6dffb2b38af9be4d6b1d3e1c1838bbae9b065dd90db6d2d9a655f027f902ddae62293ba14ddc4c8fcdfefe18b2452a46425696e3b036d6cf2f0bcf3bc50d4e4d95f4546a84073ceae0bcc5f22c1b77884168c0a42b7b8fc9d67db42fed3bfd1b3c993c9b355c6e649869ebe44cb242b0028a1ab6d9670f35b023d89b6f0a5109c2c44347df2e463c251b1a30bb12674854eca15e30d4bb7198ea36a2e1aa1cbd970aa166c79364f00cd098a382e149e0a6e2c19e52ccb308fa3f372f454f00c302cb7f09b308ae2a7c582e5c0e1d3b510f910dd3e41f091b8738e3ffe940889fc785a8daeb078f71686a4acf5a8249e70a1395722022772526397ac50ac08160070bb9f36269764e58f6f76673f49c9226794b2144b2497b30092332a0575d833f39873c603eb0a8ce91b39e75302cde3cc678be39c9588d4f86482cec18c7455a0395e328ed19cb1ac40196357302204e62e45211430a050e3b7247d89a25f4921300544601d907001bea2ac86de7326d882654843a01fd214d45de00200c52e073f8c04be11f0cb58413be27e6421ff2db939c7347d3bcf0b0bfdbbad583169b30fd2ccbf920d11287efb635e0c6bd474bb9963de89fc03a04be81905393f26d9b94540cfa0720ac577c66c1c278cdc4cde1ffffb8427b03fb20ff83f5b00b275031a43a01f584953a5a21aa43f7e4072ba868d8c1b8a97c87f2619467a56ebbfb7e62d02bfa838f303a56f6832cf706ad1d05308e618ec755ce395ced9c9f5af6cd18253cddc07e5b91cff51c751dbbfe530aac76d74cefa8bf7f4bdcf8e1e417232bc78e646a1d5969c87379fd953b6fa2ece1eb2e12e5c4125b61fb6628d21752c1215782f1c910f227c9f14c535e36937520bca20ceeb9110f25243553e80f87ebe5d2c304e711a97e9407ec812c55fa9e86f8f5ada259488783875a7e2e86b8a053070a5826c34945135c9e2684d521c35a0fddc223f7b87853ad3dc918d7a613713a154e6b2b2f755f67302bbd9d7573bb31c8b2da76d4286d5dca6cbdb79b2b84a39cbc1dc400f9c018c7d85777396f0d4541cfb1655f71250a6dc53b6c9138ee36484e64d31a5abb1254ac6bf271b8cbe3a814cbaa5295e120adb157dfb2d3200f32040534e89d1a07a65960c1d805a7fe8e845d3786ad82c7f6d96b7a919c040322832141df5356c27874e8da3a6a6d1bcaed04c6d3d5675c312fc612d955e155f363955808dc1307159d53d47d1a4d8410cda80ad0bb92b8b22ae17a789489afcbadb771ada201a23b021d75b620d758d1487b933c84b47b7d7d5dfed0a690c95d09b64b1b6f0c971cfab8352abd2eb7b097f12c100a60b18b8f87026bd905108780ad718ecd55731167b0af9a54130f314d114ca1130c8ad55ddf63694ac9a29bb06eab2c686aaf63a1e8e1c0891c2642c618eaa5a7c8826e8c5f1f1b10b495213c5cb8f55bac3faa017100a25495dda3766d95654d3ce3c1815c5244584a2362dab442127c7eba478774da17ecd31173b58360cc1cb4fd9534dbdd9bd3722f8ae058b247a49d25925dc6f89588f37c94d7c3c42ff42cfb42514c419fd712770f1071350d01c05da140f4aaa5ea4439f438772a5b876d25055f6a1ed80b512df23c8fc8b358a719b6a3da51cf7152100e85bc371a7e7270d723e06d7c1ec057aa8b10f43cee93693cd287668b3ea46b0f73e6db68f6172fbe993668b08b5add8164eb46fc63f2b777aa109e252779a34c927baa057b0c76964272887828f1a6c03dd12ec6295895b319f0b96e7403988591d57081d632219a30364d47cbdba04577f2f8f6763c12e80003f05d340ae79ae27c02ef342f0f8c570eaca61969fa0816c8ba1a61aa0bfff46f5e8599ae14153163d0d6e3640f1a0e6521e92bcc77c01992459616398e768f0cd701094d6a8c412a899db73769a41a9fdf8f6969dc211a14bf6081657b853d992f24f6675c774110123759337db326a2bda6a5c8576836e7439279b84ef82e8da54eadad6f595473730a4f736d103cad6078d2a5128fcc7fdb03a06cd1702a40208485341d791fb4d939884002c1ea64dddaa34b8c0248b814a3858caee22102c55d3b1741a27c9ac0cfe0017489a6681a9c067ae074ac050a321c7c7b2aaccb0222b75089a0825d3d25bce28920a891a990a6179b0dbbecc042d14cb6dd3240b89e99b61136347208a7e228591bd0ad001b59e2da448ff04a5b2abbbead3b4537751da064acca25d5b7e00ff62d5e507c95e3af383e1419dd961d157993c1afb1f6bcc30a694664ee6ba62fbf71df6b654fed944680481ce3cd52eca9ff8a01924332ea7cad1ac672d2d6c1a888f9817803bc4df63aa27239077ff6ca7ddc3ceea2ce82eda91274e619e6c900e6e5c91cb8a163ac1ff0fa7409c12619d4cb79c0fc5d1d7e5b3a3be677feaa47718ac6a928ff830c9e0b3b5c699a103347e972bab8ff5d9b9d9a08e63f850e7828f8b3c23228e4652b224b79ab21b60a8d4ebcd5840048b87d3409f97b3c23b950152a08e7f9fbffb7d5ca8277464b98b1d4e862374bbc6490a0ef612dd46a78c023fe2e80f28e222506992035bfa6c7df257c168b47708872c329087ca83b6be509d07b7eadb397b764fc1db8eb08b35bb8e0e2bc32c8dfcc3bad607a7011f95fe7c68279568b79c8326cd8aa76328b1314de3dbfda8dc1d3e2b920408f7e606bc22a80307ec1c674b7d42d6086a4e4cf3e5ad191b574f76c003d55999c6540d8fff62848253a2a861f55219f7da87ae5e9334f5d47a509fb736e74032ddd1640334f73d741adebeae529b309f5664681db0c0dd5287287acf6bd4516358d0c30f5c9a1a282f16d83fc74b92096c9f89b7652b5afadf57b503daae663f1750f4db76a2826cf2611d85a813589971893aa2833fafdc73f70cd39558c3c4f3e72d87590aee92cc9aa4dcf11eb23f40fea60e7c7b1cc83a9f23e837fc58e6d04e2fd687fc2aa88c50ca281e2132bdaba0bd7682a18242baf7a0ea00170a7af7ccc6151129a72f867e70e0b9acde651d2e6b9d7b28d8d23d4df9ea06ff8e873ee5e25a62ff6cda70ee269df233e738b9ead138e9c71f80a965f36989f36db18efd44d81295c605e322b61ec3de37787c09bb868935e6259f6d7590dd79b446e2de81585602070fedc59a1407773381f2a5198cefe1d5b4612270cca9e7f6b4679f66097f4967ed2e1a90593dd69045784f53e8c720be2ddafa253cfe83a807f1cddb7607adb1c870c2df944f5d3a4b23fb0a9fc3e7a5cbb5b6073a422f668aad83c944ad9b284ea230974b0eed699aed7c77864d64b3da91b50f3a8b6aafedd81e769942d5b0f0bfcce359b2c0f1a20a8ca3663f2ce786c38e1616f0b4b6011fa04eb85b1b6056d46d400125a03cbb548a8370b2efea0b2c246569e2dd2df06a93c05a87e865b9bd66fe8da37bb426264b4b3a9fa629f0947c50bb01a5dea31df8b482c812a953127d7b38679fa2447278f64a2443c52b91e42a0faa4aa497337fcef5232b32fbae54ed7baa4339a1612ca1b2274c8e964e7ba26985b3812584ae356eb5b3bf348c34ef8335f384fce8362dccef7debbd832d8a55ef55ed88498125239d755eb90855f09fa9ced3922add1b467a743b63e98c05110cf24ab331fbc2ca38ed1ddd51aad7befca44d7c7939dfbd89d62c57784bb9c2c7c106f683be2ae626888719f09fd2e2cadbb4967d7b5c5834cf09ee7ac1c62c0bdeb03940f18e5724abc7fac16b90168479ff445d65f33b88034c192bdd91a9ea559856a6da0ed00f1cb19beede39d0f48accc60998dd52babc1c6c4a2d864ba4cd56d402696cdac04e6a5ba71e01376fa3f6b2cc445eebb89f79aafdaa3cc31e3bd8d5d897d30b5cbdd612bb028dd41dcf638053e254aca57841361023a0a0c8a05cde6eecd7b552b222a2906f072c4a75c9c82a5f8bf12e86987077ec3c18d208caab8bcb8c311eabaf195be92fc95c911ecadb88d5cc8be3b28f90941b371f8147e8b734660365686b36f7f6fb6a264c47340188c47d4bade4deacae2708cdb76284d4eda680886a7a2cd8cfe406a771a54067556d2aa56e9fa139a1f2a9797f7e9a4f16d5a0324375fda7edd2d2316abdf9a4b1bc06e7f8eeffd033fb8f574429c8c94900741aa2daada5ef86f26e5c847e217761ad0f4f0f60e6b77ecc7472f100f26fc3e4ed5b4f9c81b14b7f906ba2437eb6c1f26dd02fc8cfd49530eb4f87369ba00ff1b3bb70d687a587b8592f5e3a997800f5ab4770b2620d69fb9e3ee6301fbcd5d04234c9ae935df17bf946e3e3fb77f00ea5cd7e1bc729e1f2e2ca471c474c55506f52598374316deb47bfcf0d15f66934b2cf0de4799c7961bc1a163ca1c522dba6de8caa065e36af32eb9b0680fbc47cb548ec2db47803e4847cf9ef955698bc927a3290b75c0788ae8ed4ddcd93815b275e1a9c6392ce06af5f4dd4cad7868251d37f010000ffff010000ffff653340c9123f0000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffd43b6d6fdbb6d6dffb2b38af9be4d691d3e1c1838bbae9b0b5dd90db6d2d9a655f027f902ddae62293be14ddc4c8fcdfefe18b2452a464c569ef3a036d6cf2f0bcf3bc50d4f8c99f454ea84033ce6e0acc9f23c1b77884e68c0a42b7b8fcbdc9b785fca77fa327e347e327cb9ccdd21c3d7e8e16695e00504a97db3ce5e6b7047a146de14b2138998b68f2e8d1c794a36247e76245e8129d952b9235cbb6398ea36a2e1aa1abe970a2166c793e4b01cd198a382e149e0a2e918c7296e798c7d14539fa4af01c302cb6f09b308ae2c7c59c6d80c3c72b21364374f708c147e2de70fcf1752a24f2d34935bac4e2dd5b1892b2d6a39278ca85e65c89089cc8498d5db242b1225800c0dd7ed2985c90a53fbede9dbf969245ce2865199648aea60124e7540aeab067e631e78c07d61518d33772cea7049ac7b9cf16c71b562252e3e331ba0033d265816678c1384633c6f202e58c5dc3881098bb148550c080428ddf91ec398a7e2185c01410817540c239f88ab21a7acf99607396230d817ec8325077810b0014bb0df86124f0ad805fc60ada11f7230bf9afe9ed05a6d9dbd9a6b0d0bfdb8a259336fb20cdfc0b591381e2b73f6e8a618d9a6ed733cc3b917f0074293da720e7c734bfb008e819544ea1f8de988de384919bc9e3f1bf4f790afb23ff80ffb305205b37a03104fa819534532aaa41fae30724af56b0917143f112f94f24c748cf6afdf7d6bc45e06715677ea0f40d4d6739ce2c1a7a0ac11c83bd8e6bbcd2393bb9fe85cd5b70aa9963505ec8f11f751cb5fd5b0ea37adc46e7acbf7c4fdffbece8112427c38ba76e145a6ec94578f3993d65abeff2fc211beed2155462fb612b561852c73c5581f7d211f920c2f76951dc309e7523b5a00ce24d3d12425e6aa8ca0710df2fb6f339c619cee2321dc80f59a0f82b15fded514bbb8412110f27ee541c7d4db10006ae55908d8632aaa6791cad4886a306b49f5be467efb050679a7bb2512fec662294ca5c56f6beca7e4a6137fbfa6a679663b1e5b44dc8b09adb7479374be7d719671b3037d0036700635fe3dd8ca53c3315c7be45d5bd049429f7155b6f528ee37484664d31a5abb1054a93dfd235465f9d4126ddd20c2f0885ed8abefd1619805910a029a7c46850bd304b860e40ad3f74f2ac693c356c96bf34cbdbd40c60201914198a8efa1ab69343a7c65153d3685e566826413dcacaa14b8f69f29a7048688cef144bd5afe3b8aa91bdb49139bc5535cd027c75251da22a0c6da2aa384cc069e2b2e27c8aa271b183f8b8063f2c64c4288ab85e9ca5226d72ed86964968f36a8cc0865c6f0937d4f55b1ce6ce202f37a1bdaefe6e576f0954696fd2f9cac227c7bd1d17945a9585df4bf8b30806309dc3c0e5877369594621182b5c09f8525fc558ec29e45706c1d45344532847c020b756e5dddb50b2a2a7ec06a8cbfa1f2aee9b78387220440693b18439a9fa84211aa367a7a7a72e24c94c86293f565b01eb835e4028944b75dbd198655b514d3bf3605414930c118adab4ac92989c4c5669f1ee86426dbdc15cec60d930042f3f65bf37f166f7de8880cd16c622895e916c5a09f76b2a56c93abd8d4f47e85fe889b6848238a73fee042e7e67028aad93400be54149d58b6ce873e850ae14d74e1a2ade3eb41db056e27b0455c97c8562dca65a4f29a77d450800fad670dce9e959839c8fc175307b811e6aecc39073ba8d6e338a1ddaacba49edbd4f9bad6d98dc7ef2a8d9be42dd2db68513ed9bf1cfcaeb5e6882b8d49dc24d0a8a2ee935ec711ad969caa1e0a306db402707bb585509ad982f04db6c807210b33a4a113ac644324607c8a8f97a7509aefe5e9d4e13c12e81007f05a6815cf3544f805d6685e0f1b3e1c495c32c3f4303d9b243bd37407ffd85ead1f32cc783a62c7a1adc6c80e241cda53cc0798ff91c3249bac4c6304fd1e09be12028ad5189255033b743d591431bf0f9ed2dbb98134217ec33585ce1ce64bbcc3f99d51dd345048cd44dde6ccba8ada0ac7115da0dbad16d3859a77c1744d7a652d7b6aeaf7c7603437a6f133da06c7d08aa1285c27fda0fab63d0cd5c80540001692ae83a72bf6912e31080c5c3a4a95b9506e798e4315009074bd9f90482a56a88164e53279995c11fe00249d32c30ddc1d4f54009186a82e47822abca1c2bb25287a08950322dbde59c22a990a891a9109687ceedcb4cd042b1dc364db29098be1936317604a2e835298cec55800ea8f57c2e45fa2728955ddf579fa69dba8fd2d6506216eddaf203f817ab2e3f48f6d2991f0c0feacc0e8bbecae4b1ddff58638631a534736ad815dbbfefb0b7a5f2bf4d844610e8cc53eda2fc810f9a4132e372aa1ccd7a0ed4c2a681f8887901b843fc7d4ef5e404f2ee1fedb47bd8599d53dd473bf2342ccc930dd2c18d2b7259d14227f8ffe114883322ac53f396f3a138faba7caed5f75c529d420f83554dfa111f26197ceed738cf748092771b65f5449feb9b0dea38860f752178526c7222e26824254b375653760b0c957abd4d0444b0783809f4791b5678a732400ad4f1ef8b77bf25857a7a4816bbd8e1643842772b9c66e060cfd15df48a51e0479cfc0e455c042a4d37c0963ef71fff59301aed1dc2218b0ce481f7a0ad2f5467d5adfa76cec5dd13fab6e3f562c56ea2c3ca304b23ffb0aef5a16ec047a53f1fda4925da2de7a049b3e271022536a6597cb71f95bbc367459200e1dedc82570475e0805de07ca14fc81a41cd8969bebc356349f5d4093c509d95694cd570f22723149c12450dab97ca386a1fba7a4db3cc53eb417dded99c03c96c47d335d0dcf7d06978fbba4a6dc27c5a91a175c002774b1da2e83d4b52478d61410f3f0c6a6aa0bcf460ff4c162417d83e136fcb56b4f4bfaf6a07b45dcd7e66a1e8b7ed4405d9e4c33a0a5127b032e3127544077f5eb8e7ee39a64bb18289a74f5b0eb314dc15993649b9e33d647f80fc4d1df8f6389075fe8ea0dff06399433bbd581ff2aba0324219a37884c8e4be82f6da09860a0ae9de83aa035c28e81d998d2b22524e5f0cfde0c07359bdcb3a5cd63af750b0a57b9af2d50dfe1d0f7dcac5b5c4fed9b4e1dc4d3ae567c6717adda371d28f3f0053cbe6d3126fb6c52af613614b544a0ac6456c3d223e36787c09bb868915e6259f6d7590dd79b446e2de81585602070fedc58a1407773381f2a5198c8ff06ada301138e6c4737bdab34fb384bfa2d376170dc8ac1e6bc822bca729f46310df166dfd124e7e27ea9240f326e0416bcc739cf237e55397ced2c8be5ee8f079e572aded814ed0b3a962eb603251ebc68a9328cce582437b9ae53bdf9d6113d9ac7664ed83cea2da6b3bb6875da650352cfc2ff3789ece713caf02e3a8d90fcbb9e1b0a385053cad6dc007a813eed7069815751b50400928cf2e95e2209cecbbfa020b49599a78770bbcda24b0d6217a556eafa97f1bea88d6c4646949e7d334059e920f6a37a0d423da814f2b882c913a25d1379b37ec5394480ecf5e8964a87825925ce5415589f46aeacfb97e644566df95aa7d4f752827348c2554f684c9d1d269cf34ad7036b084d0b5c69d76f6e78691e65db5669e901fdda685f93db6de3bd8a258f55ed58e98145832d259e7958b5005ff37d5795a52a57bc3488f6e2791ce5810c120af341bb32fac8cd3ded11da57aedcb4fdac4972f0eb837d19ae50a6f295778126c603fe8ab626e82789801ff292daebce96bd9b7c78545f39ce0be176cccb2e00d9b0314ef7945b27aac1fbc066941987763d45536bf8338c094b1d23d99aa5ed36965aaed00fdc011bbe9ee9d03cdd6eed4c365427e1b7ca83d6d0d891e727bc70469e84dac6858b77b5b69a8c7c2cd1baabdac3596573d8e3359b58795b7d863073b1dfb327d81abd7706257a091baf7790a704a9c8ab50ccfc91ae20614193994d0dbb5fd7a5946964414f26d8679197d64b495aff17897454c083c751e166904e575c645ce188fd5d79c2df59774a6480fe50dc56ae6d969d95b48ca8ddb90c023f4601ab38132b4359b7bfbfd3a13ba239a0244eabe5557726f56d713846eb66284d48da780886a3a11ec27728bb3b852a0b3aa369552b7cfd08c50f924bd3f3fcda78d6a5099a1ba12d47691e914b5de86d2585e82737cf77fe889fdc72bac14e4f82c003a0951edd6d27743795f2e423f93fbb0d687a70730f36b3f663ab97800f9b761f2f64d28cec0d8a53fc835d1213f5b63f9f6ea17e467ea9a98f5a7439b4dd087f8d97d38ebc3d243dcac172f9d4c3c80faf56770b26205c9f5481f73980fde7468219ae637e9aef8ad7c03f3f3fb77f05ea5cd7e1bc7997aad877cc471c45455f52693f54a17d3b67ef4fbe75075bf8a46f659823ca3332fb857c382a7b498e7dbcc9b51d5c0f3e6f5667dfb00709f99af1689bd8516af819c902f2bbed00a93d754cf06f2e6eb00d1e589bacf7936706bc72b833321d974f0f2c558ad7c69281835fd170000ffff010000ffff9b041804c23f0000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["app.js"] = bs diff --git a/gui/app.js b/gui/app.js index ca92178a..926a52cf 100644 --- a/gui/app.js +++ b/gui/app.js @@ -77,6 +77,13 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { return a.NodeID > b.NodeID; } + function repoCompare(a, b) { + if (a.Directory < b.Directory) { + return -1; + } + return a.Directory > b.Directory; + } + $scope.refresh = function () { $http.get(urlbase + '/system').success(function (data) { getSucceeded(); @@ -437,11 +444,11 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { $scope.config = data; $scope.config.Options.ListenStr = $scope.config.Options.ListenAddress.join(', '); - var nodes = $scope.config.Nodes; - nodes.sort(nodeCompare); - $scope.nodes = nodes; + $scope.nodes = $scope.config.Nodes; + $scope.nodes.sort(nodeCompare); $scope.repos = $scope.config.Repositories; + $scope.repos.sort(repoCompare); $scope.refresh(); });