From 9e1fd3454fefdbdcd0cc1716df9e4afdb9ac749e Mon Sep 17 00:00:00 2001 From: Audrius Butkevicius Date: Mon, 25 Aug 2014 00:04:12 +0100 Subject: [PATCH] Fix race condition while restarting (fixes #560) --- auto/gui.files.go | 2 +- gui/app.js | 32 +++++++++++++++++++------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/auto/gui.files.go b/auto/gui.files.go index 618fb96ff..503ba88c2 100644 --- a/auto/gui.files.go +++ b/auto/gui.files.go @@ -28,7 +28,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["angular.min.js"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffec7dff73db36b2f8effe2b507d72a594c89493f432f789e3f4a56e72cfd734c9c471efcdb8be37940449ac295225293b7aa9fff7b7bb00497ca528dbedddcd3c4d1b4bc462b1582c16bb8b05381ab1e36cb5c9e3f9a264fde3017b72f0f81bf6b7e8321bb3efb27ccea2740a106999c7e37599e505eb179cb372c1d9f1fb779f3e9e7c77f6e9fdc753368b133e08f700ddab246184ae60392f787ec5a7213b2b38cb66502d2e5891adf30967936cca19fc9c67573c4ff9948d37d018fbf1e4d37e516e128eb89278c2d3029b8b4a3681d23167b36c0d24c529d1f0f6e4f8f5bbd3d7d47cb8b7377af84b91c469c9c679760d6d3f6765bee643682b2de374cdabdfab645de0ffe2377b38829af3241b47097bf09ccda2a400a0289daf932897bf11682f58c3970278312983c3bdbdab2867c5269d40b7d2393baa6a84cb6cba4e783fa8cb82213b0f565131899255ce278b322cf3282d92a8e4c1c5e09010adf3641c01fa231600df087f5d3f840ecce2797fb686077196b2fe834559ae3ee4d9553ce5f9903da8f155cf06eccb1e838f06184ef92c5a2765117e2ef2d97ff2089ebd8b96d4e87fed1f9f7e7cb3ff29bbe42934bea5ee71965dc6bcaaabd514552d8242e0dd691995f1e40d0c56f136c3c6fb8248fc006366f1e7e72c48808dfbc1b02e28d6335110fe52646940cf6f8069f8bfcea232cf92049006afaf785a1e9779028c5778564cb2150c2c75abe60f3d0c93a828a91674275d278960008e4b968244612f490c9ae758e3e47b787e5075b97f1da7d3ec7a108ee16f3f18f35996f3759a404f153afa55cbf87121a77e55ad14ebc98417c59b1461ea9e4ca33252d1c433d6ff4ae0521f2bfd7bc09771d90fce4ede13543038d4a06a3a703e3445377b5a13b2cb2fd981d90a121442775f47938522a51c396ac2e20706abc860ca26d9bcdf23a8de90d1df309e56dfca0d8e96f84e3d3eb4f068bdb36a19156e94df37874dd71c2280cd9d53a7129ececb05db678f2f9adaf5d89b55817a0571c1cb4ff19267eb52e1893540288de19c97fd4a033c62c188e82fbe2de274c28f0278249a1c685543291dfd5a4a8c729ee759dea77fa14ce9fd90fdf9e0403eb851c44d826e15b68eb2369bb50a9b22f444c83d322e898186a3c7c1fd31ecf181c5b11d29686bdd6ab945bb9d564fdb359cba2ac0f7249b440855b111871b74eed5f7502cb458f5143af4fe074d17e0535c94a2bc142b9d1c3955834eb2e52ae144c711fb7273a897e1f2e57b7e92628fb4069bf29453df0abb32f10a9f9f5f68cf61f5e5890dbedcd08c0d02ed690ac00e1cab3c2bb349961c2f603102db4493550993f3559697c0bec86e4c947d00f6c6fcda5bdbd12930aed2d7d8319bd4f56a9ec39a7992ce3259cf2d848f7a235c427b835ade1a01c182429d486064bd81d58a8ca9599c172543907534e7958995c4f07025167132d2f021ace579505466968a8d4c3530eb22b9a0a3d9173548af395b44579c4557519c44635802d8275163c87a3ceda9a80ad4c5b241d912bb8ec1bc5c46e56441e00c18057ff7cf4e61fdb85e8061c17affb3d8fff4f71e41aad84425d03d9b1a046ddb342be9f7f1bb5ed8686eb1c0a7f3a1a80642dfe80258e6581f01629a36f0e705c11672ad80278f1e99ca0a01009ce0cee30b5d21566d00c05594c4d3b7840d6cda12a6bb3278ae9534e7e53a4f0971b556bd3c624fd8d75fb3248491e59fdfcf68d807eca89ee5d5e7c6d0cca8da2b62146c8f5d0d37ca052dbbbadaf9c185639d1ee73cba34da36f4fecd4053270fc052ead54a4bccc35321cf3d55e5a9a455a3860b73551366549483513208b1e4d0b067902dc6aaa2778b40cc25aab6d02a25c2f9f455a3a66ae8205f0660b77ecf13c59c8587d33897cf61758df3815a8a2a1f0b5125aacfcb6c3d5960c1d96a8a6e8328ba31c938997888c8f9121c2d271d7651450458b3d27c7510020609cfe3e2b226c51cbec6da54078c9647f0ae728df5aa41e8b45225de3805d34279ec5a95ea2afde0ffa5bcbccef24b52a9c100d78628e9070bd0651a72806c30b5c3158b75897c714399a251f1415a42bb33c236a1c8d86fa8b504d8d7ebad624cb4a28bc6e5b2d7815c9c7253b104420999e93aa5eaa22c2c6a5cf92e3ca6a3091616a5304fe8519975eac25b98fac909aa3e3157eedc0f58c880df8b8f4051bfa66da018fab0bc88a698620521e9eb82968b08162d6169d0f2088b60b188722ee221880c56ab72119ac24e3682ca8d7788c3e16721eee399250a92eee39aa60a90109d7c3f646a6f6aceb689f247d01525ff2398ebef0441614f6cfa9d346367bf8f0b694c76a218a490c368da66e879d501f0f42eb6b479bc438334a9b734e799333e706d15a8db49c7abe2393b185a25e06cf98a4ed2ef36252f3e6565943801deafcb2d10afa6531845405f5318c1131deee6d0ddbd6ae0b7f7eebf4b4100f86a5ed42d8ae398dc118a4c39c6cc1c2ecd8709dfaf6804c2b38fafc0485995e8341cd98112d0142733309fd116164e022e5d8b086c69b0fc59ca410f80991b553852d01e533ec135603a3431811eb98ec0462e33161597b5618ebf97d12518d96cb2c8e209d8d8dfad49eb4cb33428a98e890aaa8cd77344b164d3758e44e1521b47093ae36b70268b8cf4162f112d45ff486959888088127c7711eead9c8aabb888cb90fd7dc15319cc151840fdad304a6c131449a7847001d832237d19a51800ced902fe0127639e0d912ad97b13c7af6b5825d106dcd34a501d11593f2155b8b86493f512a337822a54284934e1fd51ffdbe7f0df3f7e0b1f1efe5c3c1c3495e0d7cf47f04ffffc1f87170f07e1c30783dffe01ff8ec08b79f0b8e730abbf6a2abbac69830420aad75438eab1470cfd74d07ad760f13e62bdc365f4791f84888a9e1e3c7cf2cdc3a7cf0e4cf39e718c5c3bb40010f44861c10b15fb3e13b81e52c4c3ae8c1f3432d64ed3a26ebb93b14f2b031f6730d3f8f40dfc5ba8ae6d3d01d53582b4bdb1b85cf20d724c0143b620a46136e96d9d433d4bab3a405044e4d3967814f1c5191122abe65b248742793cc5bd8fb38f27b8a665298cbae894cb6137836f5a63aacd4406823494ecd1c08f1673555935244e89c5d43592661855c4c28614aeb18c4a0f0b2b11b9718fece9069c89a5c652372b0b020cbab24a8ffdd0da81df9d0b8d40ed64a18b7582e49ec5b69bf69e1ac698e0bdb9b460092c1f472afdb671878ebfc2fd9619d1348af382b0ff0b4d8f6685ff1649a33922690cbebef759a35b5ab56d810d5a9d754889594509e1999f9bb6596be2d126b0527ab8e7c482630cc60e46a0866c427b16076e2aea70d564b9c298de2dba8e2cc3da28913d6163f5dae0f1536db9ba89f2b3073fd8b147475e4e0129177eb4c80ca8fcf81ec624147dc5c834503442d49ee170290865d20d5933d787de11f8e7a8dee3da7d40d7bfe8a0831587a3b322460104f30258d9581aba3d5b6294bd8f30fbf5bec400984e1dd6cda9a9310aca3606d4d75946e21f53c2804f2b08d587d30eecf0f7d7e9871c86272f37506de01373bf78db1256e61b0f16da6604672624b70cc8ff312a172198767d18e3bfb087829704a1fa60c02187ef674221f3caa943aab49685dbd7dab4e6ddf9dbd6c0bc8ddfb00905e2fbd6eea197291ec56677c101e83343f1e3dc64eab6f83793a6d8d902a0a85c97792636b876b575ea6db16e3d11d4dcc28ca184944eca020077d213300b8fab0dc3afe2e2f572556ede8f7f017eeb3ef7c05003e666a3cd00b7cbfe36064b0eb45fce8e5a21640c23fc258bd37e30648187806a4f51c745b13b2739e96e513dad23da12d244f6dce111fc78432434d8eddb431abd45969782442022cab98719d53e27fefd315a195113f43fc001cdf29817466362c44358c18abe8a6be0e0946943571fcb6fb41584166abd5594d568ac25daea21c15ae54d56d20255cf8a16799099175a1ccb44bed745b94175b74ae834db47b47fb4a3de327201a419dc3cf3aa26656748c95bd15493e1653a82cb429bb90a74e3682b07ae785e00f8aebd97d52cadd581e7228cb86b835af6c2ce6dca5c845d1bd55318cc56650e4c4bc68f2f11c2920c3db82b0753cb6ada513c4c293020aa35ddd3fc2a3b159b412a052ec71f93d7b29933b203be57b04ea77c86a1e0c01d0d4088cb1437270f5d81016b3f4ee8bb38a5ac03f61536e1c55c94d96a052d3b315740e8a83b5aa05d3c2f6f8e93a8f803581383bcfc0e7c99e25669ee464c199c7207b3036f2a5a6415a8134f13ee1f1131f502971fa8a3417d4c1bdb1e4cab3c5e46f9a60ba64994a6b745e51809431c90d00f3c9ff0b4c41d92df5b261eab11f39b6df22032c4c9c721fcd6e68e1bab260dab092e5200011e9653e470a9134d8c5c000a0d87265fc9839b2519e85068c6ad8bd024c11c118db50ec346dfe0aafd3cc3ca3419a0d5f29aa65f7fbddd7ead432f47c4ad96cca720bb0c3a6e7b5435a4d236abb529b62538fb855b6689724b85fd7bf3d4562d9d186b4ffead8cf5eb02a41e5dae6d6ca5d826f053f3b87cdcd5152d027a26311685d2e36bd365dfb608859a11fbcfea824204186e7f6ad5cbfeaefcc4b70e43b56fd150da6d07c3b0805df4fd9eec4962586b7ef2b7bd659c617999bea3dd1a833b7a77b1079421a90606a4df6fa67922bd55b369c34a26b01e6aee629db0c9abec53b056ec7c4d89ad5e0f5b3a2ab19d1f5c7885419efad92a0d727596a51d97e45ecfb722d7e30ccd7b2aab202d7dd425065c987151e618f77ce65e34314deb9dabe3e6108b7d3bb35adf1830852f5d99d297763d551ab4b2681b7fba30a73367f8342e4f7989492c859733a3119826948e824989985a0275378d8729b9b55cc9709b72920e01dd8936766a6883203cfbf83ac5e472da527015d7393a7896c985e9af6727ed64008099182af960664598266e74c5ebf0a6335a41ea0e270cfbdbe9fb77219e374ce7f16c63453fd50ad9aaa4dc89051dea2b9eb32f18062a41b9ed7f0279a384ddd52a894556f4888ed2dd28aeb3f0f35759e10cdf0e91a02135e272f9bb1dcdb94d7048615cf7001171dd15cbb647a2b3f016eb1cfec9965c1cf69c880c597dcceac3225f5582c37f5d4749e196e0a12db803f6db6f56f7c5a71d2548e350975e43e748da1ce968c70b3eb944186f521a97730953d1e282befb2c54e71c6c6c53f71c7ce170a5946172572213d69defa4eef0df8a20540a3b93b3ffb835d0aa72ba3a5d244eb360da3ee5dff15a82689f8512bc0d46dbc31e9e15fcd3db530a526802200bfc1db1cf38e9873fdd9d78054a6403345fb34adf313c6a91249b3d471bbac47b34aa22ffcefd86a6b37e04bac47b29d07772b6ecf79c96795880ca2cfbc110957ab45294d567c54afb1c828ac6c0a11dbab794be9e86dfbe80f4f06441cf175424f96889692a0723f481f59c76186c5d0c6425c7b10ce7413e55879e5ec7b8eb7bcdc72bd432f50c80d980f2af689446c80d013524599c5f9468c0884292036be3c43b61ec796122b3bc5f1db7e38c6adf31d9c499f0b03e8ea4b4527d359aa98f9aba04a9f560a2a092fed5854546cc6f2b2ca2fa6eb2d2b643e03ab2d22e907e4aac333a5df611ba62729b0df200d0adb8e9669672a6a81bb7ac43480eb21592bde76c1de6bcd39b35bcbb0aed3acfc1c094351e84fc3368cd69ffcbcdb072b16c52b009e0ccebcfa0629d1cd2c04e79321369414660418b2bd8fd6d08ab6238bc101bfc15a6fab1b69d6fe041e0d753dc9f0e1fc07cff9013d19a4387a351b16d8be51fdb91028da980299efeaa1c532b16d975e0c6154db720738dd017951778bc6f9346cb78027dc7281196001e7127ca4d8781338fdbb946ce0d73bf7c158775b6f2d6c2664d78d57034baeb76a8dd4bb9330ba425d8e3f4d42b5157ec3a55aa456987492fb2190c3a94b5a539cd3c55b24345a6857fe758647c19a88d820e9dbd4387cd4edb0360db5c0effaf556aaa90ce31fabed32ce543161feeed285475f8cbd12b0baa514b2e5575578314bb60cf499121d99c65d704b6e548bbe2f611ec797ca1067e7595dde2df55959b1e1f5aa09272db41c1cf96c3e5faf4464c1ec1163d5ead8b45df5ebe3c13dc950665c0759b875d8536c3f361152e9ffda1c6d5bd8aa7b3ded14f4c78aca22ad8d93a9962300c4cdd730bc94b0d365a172a502cb4e32e84da79bf10397a0c3e6ffb3854ea4319f566f4fa868a908267858eb55c933a405bb8cd37b47bd177ed281a2255d4960d5ff89887e8f1b097b5b05697956c958e49c2a3fc759599da6ab2a837a068749eeb542b173311595b8d6caa37224a3c46d52c8fc17e4d36f6b01665ae92eaba02a4abf036d1dd56112ec85a857febd388132593d0d88dc1b281f33c801c39c0e38922acb22e0253c1e999985e1f02132e77f321640d2dbae3f521943a202e099db1aec6ec8b6db9aae0dedc4e5f56a2afa9f35449b5356e4d334c4a072ab9e18876b4b273ef0408317c2f8ede1431eee55a476f5ca412245eb4a7b4e45a3f1d75f55aa7d4699a8d55fb5b3108b81f385f41ad47edbdfb10e5d1b2082f0158e16013c8bd3fe695d17cce733eedc4bf0af8de595853b19d8b15e88fd1e757940ca524f874e3ea52d41cb1bf3cfbe6e0c013207535790c5a323d496159b8a2f34fdd9a9ba8b5ba372611151fa07b9699ec69ea4aa963c9cdd6e1f58f4f0ae6a1737b759b98b797fff61bfb73bb1ab306bb0310607dfaac235e7344bbc3522bea56cbddc6d20d0a8de0ceff2da345b81c758c27200d5be209d1746a2d605b57ae2fdaeaf01cd6a1f685e823c754ca8ac9a780e1593b8b3bcbec3649dd55106f2d62b7969a9edd9baed1a7fb9504f4c65a45415c8cb8cab64408b4a6ac088144e09c2e1654ed479e5fd865ba85a2383db691529bb022ad08633f4e2c2eafdfdd5c5a994347a22db7a3a57442783c5f8419f55c12621d8671e862793b8f938c43dddfaf607cb3a7c5acaaaa6acbbfdda5a04aaf106802fb545520d62c80b16b53391a3f882190a7f2a953f594751cd3d239a433cc648ec312ec50e1079f3dd689a15e536b679e56986ec35661fd548c6da4d6d0700fa57564b7405834a3c61a25a7eef360526d162f225515de71e4dd366cb73a8237dd608ffd669fafca4f9af9d66ebf19385c3db18373cd793eac2314a0fce50bd0a9671125b4cbe5dd39624757bd15c6325249a3152f026fdea7ddbdbe2be6049a2132c4a38594ea584115ec9099ab7d25e16f30f0ec230a7414eb7404a4a890b6d17a43e6c95710a3d86e57755a2def679346bfe04d488bc342d1f289ff2071e1e5ab0f273fd0fd2d0d9f26baa8602ca886caa3749a2d4f294db0fff460c89e3ef118b694ad74f671ab65ebbfd24c645d6146c7db289fe35d63782517dd138cbf8b92f1ca441399644c6abded7ca84460edb9a8d31228ba15ed6ebd5193b6ee8b30dcb57dc7456e86f7f452352929f7459cd475d8b4749527a753bcbec40b3dc9b237427871d554ef1e2ecdd1c8642d47ea8d8eb80362662e797d6daec62a7a9588a11667df8bf97ac4be39f8ffcf0e8db23827e303e7c2e3674ffff28d610312c6f04d12cd0bf635e017b81e35f50603b25b1c059e436ee2ea5ca77da43726516af8fd48bb616c881348b7112b2eecdd1224a90ffe6072ae19ff30b7a0604ae7f1b4fd789e3308df1357a18d2a0c1d04d5adc8c6d9da1fb3c66943109d3229b0e82337ae6b6fd327b901eccda6c9c9c5b796bc8e9cc2bab7e58f7a4b32ac27956dd6ac4d74fe4d249a61589076896b0a95ddcc7e3464e38a58e5ec4244a708c4c9d8e6f402866325c0d809609e1091685e48f0814b2455152d1fc96a2f6535c9823d05abf06909afb5fd6ce015f51acca2eacbba2a7047e10dd9621ede4461a389b069e7cc6c6fbd41f0524560d3805769d4f7c1d3e92265ef23715d91a112b13ccf2b9b58922185a53a04643748b6cd526d3151cc54238b64a9369608337489992103b5d78930281596ea54243a15b0e0c74b4c7d470f8ba56b8d98693c8fcb62884055080087e44a1e773c700cc141450bfd1108f4203b7dc59b31e84b34a6a60778b5515df2f8a09a82d832d3af51021ad9bec4ac774d90a9f15835e2129e826c61ad3d41f658d0467f281e7b58f71cf49cc86cebe13563fcfab4daea13af43e88bf26abbf405832f629e350c11b52ae20525fd415866921ca2242cf06d5cfd278a05229b7e7424314810e8b9e0023804b240b43e64d83360894653ed746873418294d9dbec9ae7c7a01551a1a91cd36f06cac6bfa8f290d67a8144137fa2602a504a5beacb97541a8466d76550b9e770c8aea3e63657ba914f2404d3edce8578ed18ff0c3ff139f8becb15de0153ac1384984771aabc7907df3890b79d08c21700b123fda2d61aafee1e11e80b8dbaea2329c4ade5267f99da16bd01a4587bb0c55c68d0342fcb5229a0deb90380d87dd9cf104f246dfa359b906b8efb716439a3dbc30b679bf8a1366d23ba19d5e65bb55c56e3efe279d32a266334f8240df0872eec554aead1d0864937562794358266c357928786672b9fee3a6e06db7665f316163b65a0e2b7f7956175ee00d252db2937ea6b8d64ea499046001ae92f33aa58600c12ebc7e90ae7185dcee198cd540c8ae34dfc994ffbf5aaa1d56acc26e33d4b1541e338c583ecdde9314d1b7a486b4f6dfef80cf403e6bd784360790986da936fd843f58f159727c8d19103d4148d0e5c7a32c05ba603f6d77817d2bad07407627eec464c2b157768fe0777f3eae51b39be9bb29207ac136c93b325c7b749fe0bc919dd4ca2fc69e1a6097a1739db85b22e24dd45cc3ad1d24ac41d5abffc1d840c5cdcbcbca58c69c43bcf837b1a8d92eb6853bc5b2fc73cff43e4db79958f4a7e2736d1e6ccfd92eb2256dde2a6936c514e16bee43325798fce7f1efdfcf3c5c80c7e0b587003e84b6dd91fb1a71ece28bd7772a71786e108a30c02a1b0e255e4fb4f0632be3fea6d5f3ac156477bfbdf938bdecb33b63191d09c6b5c7b7cb18d57b4b978b799e9880c09d0e635167f1acd877883998f9a29c519e22bde0f328a928b0c8a36ba5432c40b919fb3e058d9a5958dcb372e373632be5d6d92aca7560985a6ccbd5c792416701fc9af4a13370a5abe5ca1350c802f84f0601ceaa887466d8fa5f37d8a3b1ef5f4bd80738913df27d37bf96244355f56ef336b63d33a8d7f5dd36e96ebcdbe0e1efdba86ca405d3aff1129517a91c4e9e5f30607b16108f6f6120cf5b2ccd18d2c73ebd57ff82c7c00d256f0bc08d769b18867ca41540c4dfe1425ee240cbad1adcbfe59f511af9a01f5b84ea6f80219b2a181db4e60411970f627848acb8dc12de3eaf27a309b80b7ba275777c47b41bd7ce70c828bbda7824549cea3e9e656e491f7e8a76f3b0d71c104c27be58ec3912619abf96338bc563278ab38d38062b833d6de54adbd28fbff845a1f369d67ed52eda6c07d4b4a4a28bf8da747c1a3a6c78efd3a50bc2b5fe72a8e208c3830d106d9a987be89d1a9ab77e563dd88b3c4cc197343deeb8ca17da59d17c8d781bd649de5099410be70512e937b5f43cbb84c7096fe87914325de4fe8288827780ad87a3c49b2c2858736fe8de737d53b419183ff0b0000ffff010000ffff9f2d3d5864820000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffec7d7b73db4692f8fffa1463febc016953a06c675dfbb32ce71cc5ded3c6b15d969dbd2a457b0592431211083000289967ebbb5f77cf009827084a4a76b7ea588945627a7a7a7a7afa350f8c46ec385b6df278be2859ff78c01e1f3cfa96fd2dbac8c6ecfb2c9fb3289d02445ae6f1785d6679c1fa05e7ac5c7076fceeedc70f27df7ffaf8eec3299bc5091f847b80ee6592304257b09c173cbfe4d3907d2a38cb66502d2e5891adf30967936cca19fc9c67973c4ff9948d37d018fbe9e4e37e516e128eb89278c2d3029b8b4a3681d23167b36c0d24c529d1f0e6e4f8d5dbd357d47cb8b7377af06b91c469c9c67976056d3f6365bee643682b2de374cdabdfab645de0ffe2377b30829af3241b4709bbff8ccda2a400a0289daf932897bf11682f58c3970278312983c3bdbdcb2867c5269d40b7d2393baa6a84cb6cba4e783fa8cb82213b0b565131899255ce278b322cf3282d92a8e4c1f9e09010adf3641c01fa231600df087f5d3f840ecce2797fb686077196b2fefd4559aedee7d9653ce5f990ddaff155cf06eccb1e838f06184ef92c5a2765117e2ef2d97ff2089ebd8d96d4e87fed1f9f7e78bdff31bbe02934bea5ee71965dc4bcaaabd514552d8242e0dd691995f1e4350c56f126c3c6fb8248fc006366f1e7672c48808dfbc1b02e28d6335110fe5a646940cfaf8169f8bfcea232cf92049006af2e795a1e9779028c5778564cb2150c2c75abe60f3d0c93a828a91674275d278960008e0b969cfc008f0f64d768d4d793092f8ad7293c6f1a98466554e15570dfe7cbb8ec079f4edea5209c3c181cd610f59778c6fab2a517ec4045821f441cceb2fc5534592842c0916013163fc08b2283199164f37e8fa07a43467fc3785a7d2b37c80cf19d283fb4f0681db06a1915ae95dfd792571e0e637367d4a984a7f372c1f6d9a3f3a676cd72b32a50af202e78f9315ef26c5d2a3c31d941831dce79d9af26d843168c88fee2bb224e27fc288047a2c981563594a3dcaf47db28e7799ee57dfa17ca94de0fd99f0f0ee4836b456c24e86e42339b79a5e6f61c486268e6e85170773d7f7460757d470ada5ab75a6ed102a7d5d3764da06a4ff89e649308a12a36e2b8816ebafc018a8516a89e4287defd088fd086344fd3e8329e038674fef22adae050a3f968ca335202f67354fa515e0a4b22ca70a8552535c996ab8453178ed897eb43bd0c2d84eff9498accd0686dca534e6c29eccac4667c7e76ae3d0703c7131b7cb9a1591b04dad314801d3856795666932c395e80be07f3af3144c2e47c95e525703eb21b1365ef6164627ee5adede814f82fe92bec984dea7a35cfc12c9da4b34cd673cbefc3de08ad546f508b6a235b5850a87310fc98d731b82ce8afcce2bc281982aca339afbc982486872b6127c90fc287602ef3a0a83c19151b7943e03945d266a267153548af385b44979c4597519c44633003eca3a831643d9ef6545405ea63d9a06c895dc5e0c12da372b22070068c82bffb9f4ec1865c2dc076b3deff2cf63ffebd47902a365109047c5383a0fb986625fd3e7edb0b1bed2d6c6b3a1f8a6a20f78d1a0153c7fa0810d38c833fcf09b690f6029e3c7c68ea39040070823b8bcf75e354b501009751124fdf1036701b4bd014cae0b9ac69cecb759e12e2ca5ebd38628fd937dfb0248491e59fdfcd68d807eca85610d5e7dab09268e82b62146c8f5c0d377a099da7badad9c1b9c3568f731e5d186defe9dfae07529efb574076763508c7f0b71f8c39309cafd3047c32454f6a96c4526b8d2621154c78a5e982aabd5a8f8af97d2ae6494fd5c22afa4a1ad0e8573561a64639383c83104b0e0d5f09d96d183a9d5d047268b140a735e57cfab2517f3574902f0370397fe089e289c2c3699ccbe760b9e37ca096a215c24254b5eaf3325b4f1658f06935458f5f145d9b649c4c3c44e47c093192930ebba8220286578ea783107076781e17173529e6f035ceaa3a6064b12130ca35d6e370dc9356edeb57c58e99e3a37aa54e6f5821224ec1fb318a6acbd9885ef571184f1d6b3ff87f292fafb2fc82547f30401b1625fd60013ad7a201a01b8cdb618bc5ba447efb21ddc257715a7a781d596dcc44d0428231dbd86dfb911a531d5ca3e6fce3d9ca583338e8c20a0c0fb9f4073a700375c654f8065042318cae24546f45841be8129c5b7ac30d1616a570f9e85199751acd37a0bb9213b40962b2dfba1f60e16104161f80a27e4ddb408982c0ee8aa698e21e22e9eb82ec6804d65cb860e4378077502ca29c8b5c0c2203335e2e4233fe20e749e5c65bc4e1084211f7f1cc120e49f7714d530548884e7e1832b5373567077e93127c006557f23f82b9fe4e1014f6c4a6df493376f687b8905e76278a410a398ca6ed9f9f551d8030f87c4b9bc73b3448d37c4b739e39e303d7cc58dd4e3a5e15cfd8c1d02a8100d65774927ebf2979f1312ba3c409f06e5d6e8178399dc22802fa9ac2089ee870d74e2bd4cca8edbdfbef521000f1af17758be238a6388db2628e3133874b0beec2772b1a81f0d38797e065ad4a8ca68eec2c12688a9319c415182488e809ede52282200342229672d003e0ff47158e14b4c7944fd03e4c872626d0235711040f65c6a2e2a28e58f0f732ba80e8834d16593c81e0e3fb35699d69960625d531514195f17a8e28966cbace912834ff71946082630d017a9191dee225a2a5cc23292d0b111051c64b996aaea2adcbb888cb90fd7dc1539948161840fdad30436d1314c9688d7001d832237d19a5987cced902fe81e86b9e0d912ad97b13c76f6bb09be8c4ee6925a88e88ac9f912a342ed964bdc4d496a00a154a124d787fd4ffee19fcf78fafe183c35f8a0783a612fcfae508fee99ffde3f0fcc1207c707ff0f51ff0ef08c2bbfb8f7a8e78e35e53d965c30d1280a85e53e1a8c71e32cc7d80d6bb0297fd21eb1d2ea3cffb204454f4e4e0c1e36f1f3c797a60c63d8c63d6dca10580a0870a0b9eabd8f799c0f580b2487665fca0cbb1f63a1ad476a728882c031f6730d3f8f435fc5ba8317f3d01551b41dade302e171ca3a19e02866c4148dd19b9a7b77506f52cadea004111914f5b727cc41767968dbc9aef901cca73f214d75d3e7d38419b96a530eaa253ae4c869999d41a537d267210a4a3648f067eb484b4caaa21714a1853d7489a6ea4c82f0e2904b0fc6b0f0b2b11b9768fece906a2a1a5c652372b0b020cbab24a4f8a91edc0ef4e4323503b59e8629d20b967b1edbabda7863326786f9a162c01f371a4d26f3b77981151b8df32239a46715e10f67fa1e9d158f8ef90349a2392c6e09b3b9f35baa755fb16d8a0d5598794985594dca6f9b96e9bb5261e6d022ba5877b4e2c38c6e0ec606a6ec826b4a073e0a6a2cee34d962b4c76dea0ebc832ac8d12d9133e56af0d1e3fd572af9b283f7bf0831d7b78e4e5149072ee478bcc80ca8fee604c42d157cc7600452344ed190e97825026dd9035737de81d817f8eea3daec3070cfd8b0e3a5809383a2b625a95c9708da0f134747fb6c4e5873ec2ecd76b3d03603a755877a7a6c628284b43505f6719897f4c9b157c5a41a83e9c76e087bfbb4adfe7303c79b9816a039f98fbc5db96b032df78b0d01a2c043321856540fe4f51b908c1b5ebc318ff853d10bc24083506030e39623f130a99574e1d52a5b52cc2bed6a6b5e8cedfb606e66dfc9a4d6885a26fe5cabc4cf12836bb0b0e409f1b8a1fe7ea5b37e3df4c9a62670f8072745de69958f9dbd5d7a9d70bbbf544507303378636c374521600b8939e8059785cada4de8b8b57cb55b97937fe15f8adc7dc03430d98abb03603dc21fb9b183c39d07e393b6a8590398cf0d72c4efbc190051e02aac5561d17e5ee9ce4a4bb65f5b48e6826a4c9ecb9d323f8f1a64868b0dbd7cd347a8b2c2f0589404494730f33aa0560fcfb53b432b226187f40009ae5312f8cc6c4888760c18abe8a6be0e094e943571f2b6eb41584966abd5196d568ac25dbea21c1b2f2262bc940d5b3a2451ee486152d8f652d0274516e50ddad123acdf6112d80eda8b78c4d12d20d6e9e795593b25aa56cead1549311653a92cb429bb90a74e7682b072e795e00f8aebd97d52cadd581e7228db86b83dab68e9ddb949b34766d54dfdb61b62af715b5eca2f2ed10b124434feecac1d4b67ced281ea6141810954df734bfca4ec562904a812bf0c79d7dd9cc99d981d82b58a7533ec35470e0ce0620c4458aaba087aec480b51e27f45d9cd2760c760f9bf0622eca6cb582969d982b200cd41d2dd02a9e9737c74954fc01ac89415e7e07be4c71a9347723a66daa7205b3036f2a5a6415a8134f13ee1f1131f502571ca8a3417d4cabe81e4cab3c5e46f9a60ba64994a63745e51809431c90d0f73c9ff0b4c41592df5b261ea919f3eb6df22076a7538c43f8adc51d37564d1a561334520001119653e4d0d48926462e0085864393af14c1cd920c742834e3d645e892e026178db50ec7465fe0aae33cc3cb3419a0d5f2baa6df7cb3dd7fad532f47c4ad962d61417611745cf6a86a48a56d566b536c4b08f60bb7cc12e5960afbf7e6a9ad5a3a31d69efc5b19ebd705483d865cdbd84ab94de0a71671f9b8ab2b5a04f44c622c0a65c4d7a6cbbe6b110a75abf03fab0b0a11e0b8fda9552ffbbbf233df3a0cd5ba454369b7150cc30376d1f77bb22789c1d6fcec6f7bcb38837999bea5d51a833b7a77b107b475544d0cc8b8dfdcff8af456cda60d2b99c07aa8858bf54e565e6dcb056fc5dec82ab1d5f6b0a5a312dbd9c1b95718e489a3add220adb32ced68927b3d9f45aec7199af75456415afaa84b0c8430e3a2cc31eff9d46d34719bd65b57c7cd2116eb7666b5be31600a5fba32a52ffd7aaa346865d136fe74614e67cef0695c9ef21237b1145ece8c46e09ad07614dca2885b4ba0eea6893025b7962b996e534ef121a07ba38dc2530b41f8e9c3ab1477ddd39282abb8dea38307bd5c98fefae9a49d0c00502be20e54c907735784e9e24697bc4e6f3ab315a4ee70c2b0bf9dbe7b1be259c7741ecf3656f653ad90ad4ada3bb1a00385c533f605d3402528b7fd8f206fb4e378b54a62b1ad7b44c7f8ae95d059c4f9abac70a66f8748d0901a7185fcdd8e3bdd2439a430ae7b8288b8eeca65db23d159788b750eff644b2e0e9a4ec40e597dccea5334f72ac1e1bfada3a4704bf0d016dc01fbfad5eabef8b4a304691cead26be81c499b633bdaf1824f2e10c6bb298dcbb9845bd1e282befb3c54e71c6c7c53f71c7cee08a5946172572217d6bddf495de1bf1141a814762667ff516ba255e57475ec4a1cf3c17307b4ff8ed71244eb2cb4e5db60b43dece1a7827f7c734a490a4d006481bf23f6e12f7b4fbfdd8997a0443640f315abf41dc3b32249b2d973b4a14bbc47a32af2ef5c6f683aeb47a04bbc97027d2567cb7acf69998705a8ccb21f0c51a9472b45597d56bcb4cf21a8684c1cdaa97b4be9f707cedc80d380f4f00843cf975424f968c9692aa731f481f51cad186c3506b252605b4ce7094755879e5ec5b8ea7bc5c72bd432f50c80d980f2af689446c80d013524599c099568c0894292036be1c43b61ec796122b3a25f1db7e3dc6fdf31d9c429afb03e4fa5b4527d359aa98fefba04a9f5c4a6a092fed5854566cc6f2a2ca2fa6eb2d2b64260b90b5b05d24f897dcca7c33a42574c6eb7419e34ba1137ddcc520e2f75e39675dac941b642b2f700b2c39d7746b3467457a15de7393898b2c6fd907f06ad39ed7fb91e5621964d0a36019c79f51954ac93431ad8294f66625b909158d0f20a767f1bc2aa1c0e2fc4027f85a97eac2de71b7810f8d514d7a7c3fb30dfdfe744b416d0e168546cdbe2f9c776a640632a608aa7bf29e7e28a457615b87145d32dc85c23f445e5059e4fdca4d1329e40df314b84258047dcc772dd61e00ccde31c3937ccddf2551cd6d9ca5b0b9b35e155c7d1e8ae3ba0769b72e72e9096648f3352af445df1eb54a916a51d26bdd8cd60d0a1d896e698f754d91d2a765af8578ec58e2f03b551d0a1b3b7e8b0d9697b006c9fcb11ffb54a4d95d239c6d8779aa57cc8e2c3bd1d85aa4e7f397a6541356ac9a5aa6eeb906217ec392976483687fc35816d39ebaf847d047b169fab895f5d65b7c47755e5a6c78716a8a4dc0e50f0b3e5d4bd3ebd119347b0458f57eb62d1b7cd976782bbb6411970dde66157a1cdf07c5885cbe77fa87975afe2e9ac77f413131eafa84a76b64ea6181c0353f7dc40f252838dd64d13940bedb80aa176de2f448e1e43ccdb3e0e95fa5046bd19bdbea122a4e059a9636daf499da02ddcee1bfabd18bb76140db155d4960d5ffa988718f1b017b5b056b7b86c958e49c2a3fc55b533b5d56551af86d1e83cd3a9566ead22b2b63ad9546f4494789caa591e83ff9a6cec612dca5c25d575374a57e16db2bbad225c90b70affd6a71127ca4e42633506cb06cef30072e4008f278bb0caba084c05a7efc4f4c610b8e172b71842d6d0b23bde1842a903e292d019eb6accbed89eab0aeedddbe9db95e86bea2c55b6daea76c95ca073a0920b8ee8472b2bf74e8010d3f7e2e84d11e35aae75f4c6452a41e2257f4a4b2efbe9a8abd73aa54ed36cacdadf8a41c0fdc8f90a6a3d6cefddfb288f96457801c00a079b44eedd31af8ce6739ef36927fe55c077cec29a8aed5cac407f8a3ebfa4cd50ca069f6e5c5d8a9a23f697a7df1e1c7812a4ae268f414ba6272998854b3affd4adb9895aab7b631251f11eba67b9c99ea62e953a96dc6c1d5efff8a4e01e3a9757b789797bf9d7afeccfed6acc1aec0e4080f5c9d38e78cd11ed0e4bada84b2db71b4b372834822bff37cc16a139ea984f401ab6e413a2e9d432605b2dd717cd3a3c033bd46e883e70dc4a5931f914303c6d67716799dd26a9bb0ae28d45ecc652d3b37bd335fb74b79280d158ab28884b2357d9960c81d694952190089cd3c582aae3c8b373bb4cf75094a0c776526a17566c2bc2dc8f138b2bea77379756eed09168cb1d68299d1011cf17e1463d93845887611cba58decee324e3508ff72b18dfec6971abaaaa9af9b7bb1454db2b049ac03e5515089b0530766d2a47e7073104f2543e75aa9eb28e635a3a87748699cc7178821d2afce8f3c73a31d4eb6aedccd30ad34dd82abc9f8ab18dd41a1aee81f48eec16088be6d458a3e4d47d1e4caacfe245a4aac25b8ebcdb87ed5647f0a61becb1dfedf355f95973dfdafd370387ab277672ae39cf8775840294bf7c093af52ca2847685bc3b67ece8aab7c2302395345af92288e67ddadd1bbbe29e4033458678b494529d2ba8921d72e76a5fd9f0371878d611053aca753a12525448cb68bd21f3ec5710a3d8ee5775b29677b348a35ff026a4c5e1a168fb89ff2071e1e5cbf7273fd2fd2d0d9f26baa8602ea886caa3749a2d4f699b60ffc9c1903d79ec716c69b7d2a70f5b3d5bff956662d715eee87813e573bc6b0cafe4a20b94f17751325eb968622719935a6f3b1f2a11587b6e06b5048a6e45bb5d6fd44d5b774518aedabee5626f86f7f452352969ef8b38a9ebf069e9624f4ea7787d1b2ff44d96bd11c28baba67a7770698e46266b39526f74c49d1033f792d7f7fe6aaca2d798186a71f68398af47ecdb83fffff4d0288b73723e702e3c7afae42fdf1a3e20610c5f27d1bc60df007e81eb61536f3020bfc551e039e426eefe75fa477a6312a586df8fb41bc6863881741bb1e2c6e12d4992fae00f6ece35f31fe612144ce93c9eb61fcf7326e17be22ab45185a183a0ba15d9385bfb73d6386d08a2d34e0a2cfac08d7becdbf4496e007b77d3e414e25b26af23a7b0ee4df9a3dedc0cf6a4f2cd1adb44e7dfc446334c0bd22a714da1b29ad98f866c5c11ab9c5d88e814813819db9c5ec074ac04183b01cc132212cd73093e7089a4aaa2e52359ed85ac2659b0a76015312de1b5969f0dbca25e8359547d515705ee28bc215fccc39b286c341136ed9c99edad37085ea8086c1af02a8dfaa27c3a5da4ac7d24ae2b325422966779e5134b32a4b0548780ec06c9b759aa2d268a9b6aec2259aa8d25c20d5de2ce9081daeb4438940a4b752a129d0a30f8f112b7be6384c5d2b546cc349ec7653144a02a05804372298f3b1e3886e0a0a285fe08047a929dbee2cd18f4251a53d303bcdaa82e7974504d416c99e9d728018d6c5f62d6bb26c8d478ac3a71094f41b6b0d69e207b2c68a33f948f3dac7b0e7a4eec6cebe13563fceab45aea13ef89e88bf26ab9f439832f629e350c11b52ae20525fd415866921ca2242cf04d60fdc78a07229b7e7824314810e8b9e0020404b240b43e64d833608946531d746873418294d99bec8ae7c7a01551a1a91cd36f06cac6bfaaf290d67a8144137fa2602a504a5b8adba5d12034bb2e83ca3d8743761535b7b9d28d7c624330ddee5c88579ef1cff0139f43ecbb5ce11d30c53a41887914a7ca6b89f0950979db89207c3b123bd22f6aadf1eae111813ed7a8ab3e92425c5a6ef62f53dba23780146b0fb6b80b0d9ae6455d2a05d43b770210bb2ffb19e289a44dbf661372cd713f8e2c67747b78e16c133fd4a6ed4437a3da7cabcc6535fe2e9e37ade2668c069fa401fed085bd4a493d1ada30e9ceea84768da0db704ff2d0886ce5d35dc7cd60dbae6cdec262a70c54fc367c7deb88b7a0a5f653aed55745c9ad27411a0168a4bf20aa62813148ac1fa72b9c6374398763365331288ed7f1673eedd75643abd5b84dc6bbab2a82c6718a07d9bbd363ba36f4906c4fedfef81cf403e6bd78436079018edae36fd903f58f959727c8d19103d4148d0e5c7a3cc05ba603f6d77817d2bad0740b627eea464c2b15b768fe4777f3eae51b39be17b39207ac136c93b325c73759fe0bc919dd4ca2fc69e1a6097a1b39db85b22e24dd46cc3ad1d24ac42d5abff81d840c42dcbcbca18c69c43bcf837b1a8d92ab6853bc5d2fc73cff43e4db79958f4a7e2736d1e2ccdd92eb22565de2a6936c514e1ebee4336df21e9dfd32fae597f39199fc16b01006d097dab33f624f3c9c517aefe44e2f0cc31166190442e1c5abc8f71f0f647e7fd4db6e3ac157477ffbdf938bdecb33b63191d09c695c7b74be8d57b4b878bb99e9c80c09d0e635167f1acd877883998f9a29e519e24bde0f32ca928b1d146d74a9648897313f63c1b1b24a2b1b976f7b6e7c647c3ddc24594fad124a4d996bb9f2482ce03e925f9526ae15b47cb9426f18009f0be1c13cd4510f9dda1e4be7fb94773ceae96b01671227be4fa6f7e2f9886abea85ec8d6c6a6751affb6a6d52cd7bbfa1c3cfa6d0d9581ba74fe1352a2f42289d38b670d0e62c310fced2538ea6599631859e6d63b11f159781fa4ade07911aed36211cf9483a8989afc394adc9b30e846b72eeb67d547bc6a06d4e33a99e20b64c887066e3b810565c0d99f112a2e3706b78cabcbebc16c12deea9a5cdd11ef05f5f29d33082ed69e0a1625398fa69b1b9147d1a39fbeed34c4051308ef943b8e409a64ace68f11f05a9bc15bc5990614d39db1f6ee49ed25ddff27d4fab0e93c6b976a3705ee5b525242f95d3c3d0a1e363d76acd781e25df93a57710461c4818936c84e3df44d8c4e5dbd2d1feb469c25e69e3137e49dce185a57dad940be0a6c93f5294fa084f0858b7299dcb90d2de332c159fa1fc61e2af17e4247413cc153c0d6e34992152e3cb4f06f3cbfae5e6a8a1cfc5f000000ffff010000ffff8f9c0192e0820000") 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 aeafc6b57..c82075d76 100644 --- a/gui/app.js +++ b/gui/app.js @@ -22,18 +22,10 @@ syncthing.config(function ($httpProvider, $translateProvider) { syncthing.controller('EventCtrl', function ($scope, $http) { $scope.lastEvent = null; - var online = false; var lastID = 0; - $(window).bind('beforeunload', function() { - online = false; - }); - var successFn = function (data) { - if (!online) { - $scope.$emit('UIOnline'); - online = true; - } + $scope.$emit('UIOnline'); if (lastID > 0) { data.forEach(function (event) { @@ -53,10 +45,8 @@ syncthing.controller('EventCtrl', function ($scope, $http) { }; var errorFn = function (data) { - if (online) { - $scope.$emit('UIOffline'); - online = false; - } + $scope.$emit('UIOffline'); + setTimeout(function () { $http.get(urlbase + '/events?limit=1') .success(successFn) @@ -72,6 +62,8 @@ syncthing.controller('EventCtrl', function ($scope, $http) { syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $location) { var prevDate = 0; var getOK = true; + var navigatingAway = false; + var online = false; var restarting = false; $scope.completion = {}; @@ -108,6 +100,10 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca } }) + $(window).bind('beforeunload', function() { + navigatingAway = true; + }); + $scope.$on("$locationChangeSuccess", function () { var lang = $location.search().lang; if (lang) { @@ -129,8 +125,13 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca } $scope.$on('UIOnline', function (event, arg) { + if (online && !restarting) { + return; + } + console.log('UIOnline'); $scope.init(); + online = true; restarting = false; $('#networkError').modal('hide'); $('#restarting').modal('hide'); @@ -138,7 +139,12 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca }); $scope.$on('UIOffline', function (event, arg) { + if (navigatingAway || !online) { + return; + } + console.log('UIOffline'); + online = false; if (!restarting) { $('#networkError').modal(); }