Fix status updates for remote nodes

This commit is contained in:
Jakob Borg committed 2014-07-29 11:54:00 +02:00
1 parent ee005fbc8e
commit 6115631746
3 files changed
+40 -19

No files matched your search

+2 -2
View File
@@ -28,7 +28,7 @@ func init() {
bs, _ = ioutil.ReadAll(gr)
Assets["angular.min.js"] = bs
bs, _ = hex.DecodeString("1f8b080000096e8800ffec7dff73dbb692f8effe2b107df22a29912927e9ebbc4f1ca7d7bac93bbfa649268e7b37e3fadd502264b1a648955fec6812ffefb7bb00497ca52827cddd9b394d224bc462b1582c16bb8b05349db2e36cbdc9e3cb65c946c763f6f8e0d1b7ec1fe15536633f66f9250bd30820d2328f675599e5051b159cb372c9d9f19bd7efdf9dfc78f6fecdbb53b688133e0ef600dd0f49c2085dc1725ef0fc9a47013b2b38cb16502d2e589155f99cb3791671065f2fb36b9ea73c62b30d34c67e3979bf5f949b8423ae249ef3b4c0e6c292cda174c6d922ab80a438251a5e9d1cbf787dfa829a0ff6f6a60f7e2f92382dd92ccf6ea0eda7accc2b3e81b6d2324e2b5e7f5f275581ffc577f6600a352f936c1626ecfe53b608930280c2f4b24ac25c7e47a0bd61051f0ae0c5bc1c1eeeed5d87392b36e91cba955eb2a3ba46b0caa22ae1a36153369cb0f3e13a2ce661b2cef97c5906651ea64512967c78313e2444559ecc42407fc486c037c48f4fafc3248e5e01e2020ace07111f4c063cc5b702de1639bcad4b782bae07174051d362005d5ec497a345050fe22c65a3fbcbb25cbfcdb3eb38e2f984dd6f28a89f8dd9c73d062f0d3088f822ac92b2083e14f9e2df7908cf5e872b22f33ff78f4fdfbddc7f9f5df114c8dd52f738cbae625ed7d56a8aaa16410170fbb40ccb78fe1286b7789561e3234124be80958bf8c353364c803ffbc3495350540b5110fc5e64e9909edf029bf1bfcea232cf9204900e5f5cf3b43c2ef304864ae15931cfd6200ad4ad863ff43048c2a2a45ad09db44a12c1001cb32c0519c45e92e0b4cfb1c6c94ff0fc407699e4a79acf7951bc4c11be69380acbb06e0f5ff1828dee09bcea63859cfb7c1597a3e1d9c91b821a8e0f35a8862614f8b6e8764f6b4252f89c1d98ad2041c122cb5f84f3a522541c1960c25a541154506e9095a2864edcadf2fdf6b025c9c169a4e39c8849787a592ed93e7b74d1d66e586c560de248415cf0f27dbce259552a7db1188b831e5cf272544fcd876c3825fa8bef8b389df3a3213c124d8eb5aa811cd55133ba4639cff32c1fd13b9429bd9fb0bf1e1cc807b78a9848d0ad42d25346168b4e2151049708f917655c2721490ccc387a346c1be86adc6ab843979cd64fbbf589aa83e17392cd4384aab989a30e1aeefa2728163aa37e0a1d7af3b33695f1292e1a615e8a95480ea0aaafe6d96a9d70a2e3887dbc3dd4cb70b1f03d3f49b1475a836d79caa96f855d997845cbd685f61c56479ed8e0ab0d4ddce1507b9a02b003c73acfca6c9e25c74b50fd603b68222b6172becef212d817da8d89b2b7c0de98df786b3b3a05c64ffa023b66935aad2f7358a14ed24526ebb985f0e1608a0bd660dcc85b2b205850a8f349ac1be9652be9a084d9081fc72415f0e71941145223c293870fcd298900004e70e7f1853eed516fb4764610a711fff06641b48cd9f3237b31a06e35b28bcbb4003eb4a066390faf0c656fa895dbb126a6f7b3743468268318df53c1a7813a955c4c42bd5fd784910a7358abc681ce3eb1cc61cf0ca5d5d99fdbc686d08493f3e88756fc1be861be1a82f5f1134f14a3041e46712e9f83f28ef3b15a8aaa040b71aaa9cfcbac9a2fb1e06c1da1b9288a6e4d324ee61e2272be0203db49875d54131165376902e696931050db3c8f8bab861473f85a23441d3052bb6055e71aeb65b538858549e1f7fdd1f0ffa5bcbcc9f22b9a6dc331aa8d30190d9760190e0dc856f575c315cbaac4aeb9a1ccd1adbb22d7caed7d2123ada5c592305f9f3ecec2f95594676b606e41f62e3476c537b32ccc23e97edc6e15462217cd652e95620f8a71e24442414249801ff599a2aa6c6176a15ebcf0d817265880bde1d26a0bcaac57175ec1044e4e50070989ffec7e80970083b27c07148d1adac68a35088ea6688a296b24925e15a46d43f068c53a447ee80db880cb30e7c29b4564ec262e978129d3b482a8dc788d381c4634e23e5e58f212f119b8ba731ebd131d386e88ab6b10c6939f264ced56c3e22eb17e0753bfe45f83cb46b9d20982c29ed8f43b69c6cefe1417d2e6e8453188238761b5ad95f3ba03e0175c6c69f378870649056c69ce33797ce09a526fda4967ebe2293b985825609afb8a4ed21f37252fde6765983801de54e516881fa2084611d0371486f04487bbed35cd8fc9b4249fdec15893a79a3d1abc59139b82b3773f8061b02ed10074982930af4f16ac2ac24bce84c187c6f1322cd80cac38967298b51ca6778d2385b91ef1396afb68626282597f13820b5a662c2cae28f80476428edf57e11567219b2fb378ce03f663453a22cad26149754c545065565d228a158baa1c89c2f52f0e13f4af2a700c8a8cb40c2f112dc54d48c55888808812dc31115ae36c11e745c9aee3222e03f61f4b9ecac099c000ca6a8d11399b208cf135b8006c9591760b530cb6e56c096f050b2fb30952257b6fe2f8a382850fedae3dad04750691f52b52854b4136af56e8900baa70d627e19c8fa6a3ef9fc2bf7f7e0a1e1cfe563c18b795e0db6f47f0363affe7e1c58371f0e0fef8d33fe17d3a6183fb8f0663db98bdd7567699ae060940d4a0ad70340027117d2e504d3760653e6483c355f8611f84888a9e1c3c78fced8327df1d1c18662de31825744c5520e8a1c282672af67d26703d787400deab5d195f68375477b7161a027b59e1cd3c54f5396966d56873fad5b4fa7f8fb0e4def31423bc67ef4e50e56729f05be071b93d6624831a516d0a5a40a521e158e2dcb49f6ec0525d8db6535e10e07057ca84c34a5a103f1fba8004ea6d94e32c696d8f97d0baea7a9afd320c810933c707450e4b402b1ea9d49a1dc941dbe4a92209fa3a6650748e281f3aed3f3f24f65cda311d1123ffd0b498bf47a42459d43528fce68bc99ad66d2b5e42ddb1faec186cb38a3286e6ebd63dd5dd7834f1574a0ff79c58509aca0c95edc184cd296c7ae0a6a28925cc576bdc52b943d7b1a187475eca01f185bb6d7c217150f9d117e051f05f255a2d18a5028aa688daa103bb02cfcd27bf348fba15ce7163c2a11f56f4d03c8ad1d75bfde078c1ea013d6d1712dd5c293120364298fd268438069ee022a3436a51717c291147a8af738ba425a6bd37df24a20944520a66d69b9bf42dac533c2f37506dec93a27a736edb92453dcb371e2cb43100e67240a63190ff4b083e19acdc2398047f630f042f0942b58381430efbdb8442e695916351d55a16a67767d39a85ed6f5b03f3367ecbe661395f82c9ec63adc5148f1eb0bbe000f41910f872c683775aac2924d267ca88b0f2ae8b75138cde8928e1a4f49bc700b8d3148609725c87ddefc5c58bd5badcbc99fd0eecd3bd9db13143cd90bdde210ba271965ec560898062cad951278474f182dfb318dcb4091b7a08a823f33a2e8a7138c921f8a0002f4c842f40c98639f720afa3eff8f797706df87f68948229Line truncated
bs, _ = hex.DecodeString("1f8b080000096e8800ffec7dff73db36b2f8effe2b107d72a594c89493f43af789e3f4b56e7acfd734c9c471df9b717d6f2811b25853a4ca2f763c89fff7b7bb00497ca56827cd5d679e26912562b1582c168bddc5029acdd861beb92e92f355c5c68713f678efd1d7ec1fd1453e67dfe7c5398bb21820b2aa48e6759517251b979cb36ac5d9e1eb57efde1e7d7ff2eef5db63b64c523e097700dd7769ca085dc90a5ef2e292c7213b2939cb97502d295999d7c582b3451e73065fcff34b5e643c66f36b688cfd7cf46eb7acae538eb8d264c1b3129b8b2ab680d23967cbbc0692928c68787974f8e2d5f10b6a3edcd9993df8ad4c93ac62f322bf82b69fb2aaa8f914dacaaa24ab79f37d93d625fe17dfd98319d43c4ff37994b2fb4fd9324a4b008ab2f33a8d0af91d8176821a3e94c08b4515ecefec5c46052bafb305742b3b67074d8d709dc775cac7415b164cd969b089ca45946e0abe5855615544599946150fce26fb84a82ed27904e80f58007c43fcf8f4324a93f825202ea1e07414f3d174c4337c2be16d59c0dba682b7f272740614b52d86d0e565723e5ed6f020c93336bebfaaaacd9b22bf4c625e4cd9fd9682e6d9847dd861f0d200c3982fa33aadcaf07d592cff9347f0ec55b42632ff7bf7f0f8ed8fbbeff20b9e01b95bea1ee6f945c29bba5a4d51d52228046e1f5751952c7e84e12d5fe6d8f85810892f60e53279ff940529f0673798b60565bd1405e16f659e05f4fc06d88cff751655459ea680347871c9b3eab02a52182a8567e522df802850b75afed0c3308dca8a6a4177b23a4d050370ccf20c64107b4982d33dc71a473fc0f33dd965929f7ab1e065f96386f06dc37154454d7bf84a966c7c4fe0551f2be4dce7eba41a072747af092a98ec6b502d4d28f05dd1cd8ed684a4f039db335b4182c2655ebc88162b45a83832c084c517f0b6cc614ea6f9f9784450a329a3bf6112379faa6b64aef84c3ddeb7f068bdb36a19156e94ef37fb5dd71c2386cd9d52a7529e9d572bb6cb1e9d75b5dba132ab02f50ae29257ef9235cfeb4ae1893540283ce139afc6cd147fc88219d15f7e5b26d9821f04f0483439d1aa86523ac6ad9418e5bc28f2624cef50a6f47ecafebab7271fdc28e22641b70adb40595b2e7b854d990044c89f9471bd84a40930e3e051d035d0d7b8d5708f4e3a6e9ef6eb255597c3e7345f4408d57013471d34e5e50f502c744ff3143af4fa274d25e0535c7ca2a2122b9a1c4055ef2df2f526e544c701fb70b3af97e1a2e37b7e94618fb406bbf28c53df4abb32f18a96bf33ed39acb23cb5c1d7d7347183407b9a01b003c7a6c8ab7c91a7872b5842c006d14456c2147c931715b02fb21b13656f80bd09bff2d676740a8ca8ec0576cc26b5de9c17b0d21d65cb5cd6730be1c3d10c17bed1a495b74e40b0a054e793587fb2f34ed24199b3313e4e482ae0cf338228a54684270f1f9a531201009ce04e93337ddaa3dee8ec9530c962fefef5926899b0e707f6a242dd6a6517977b016c2f03f382471786b237d4cacd4413d3fb79361eb593418cefb1e0d3489d4a2e26a1de6f6ac2484505ac799350679f582eb16786d2eaedcf4d6b8b68c2c979fc5d27fe2d7450ac03b0627ee0a962dcc0c33829e47350de4931514b519560214e35f57995d78b15169c6c62343b45d18d49c6d1c24344c1d760a83be9b08b1a22e2fc2a4bc16c7312026a9b174979d192620e5f67cca803466a17acf34263bdac9664b03029fcbe3f0efe5fc6ababbcb8a0d9164c506d44e9385881851918909deaeb872b5775855d734399a3db7445ae95dbfb42c65e478b2561be3e7d98478b8bb8c837c0dc92ec6668ec825fcff3a888a51b73b35518895c34bbb9548a0328c689130b05092564cbe9334555d9c2ec42bd78e6b12f4cb0107bc3a5d51656f9a02ebc84099c1ea10e1212ffc9fd006f030665f516281ab7b44d146b101c56d11453d64824bd2e49db46e0198b7588fcd92b70255751c185578cc8d85552ad4253a6690551b9f10a71388c71c47db8b4e445d27dd8d2d40012a2a31fa64ced4dcbd93e697e0b33bee25f82b9fe4e1014f6c4a6df493376f687a494a6c6208a410a398ca66da49c361d0077e06c4b9b87b7689066fe96e63c73c607aee9f2b69d6cbe299fb2bda9550216b9afe828fbfebae2e5bbbc8a5227c0ebbada02f15d1cc32802fa96c2089ee870378366f721599414127030d6e4a9668686af37c4a6f0e4ed77600f6c2ab4fb1cd6094ce7a325abcbe89c3361e7a14dbc8a4a3607e38d651c262b8759dde0c8608ac77c814a3e9e9a9860b25f45e07956398bca0b8a5d817950e0f77574c159c416ab3c59f0907d5f936a88f32ca8a88e890aaacceb7344b166715d2051b8ec25518a6e550dfe40999372e115a2a5b00b69160b11105181172622739c2d93a2acd865522655c8fe6bc5331977131840476d30a067138421c2161780ad73526a5186b1ba82ade0ad64d1793e45aa64ef4d1cbfd7b0dea1b9b5a395a0ce20b27e41aa7005c817f51afd704115cefa345af0f16cfced53f8f7cf8fe183fd5fcb0793ae127cfbf500dec6a7ffdc3f7b30091fdc9f7cfc27bccfa66c74ffd16862dbb0f7baca2e8bd52001881a75150e46e01ba2ab05aae90a8ccb876cb4bf8edeef821051d193bd078fbf7ef0e49bbd3dc39a651c838c8ea90a043d5458f04cc5becb04ae078ff6c069b52be30bcd85faee46424be020e39b743c9fe7301d79fc23bc97aa0bd3ce5255db93de369609a007d9aa8021ef1052372beee96d9d423d4b3f3a40508ee4d39ef00331cfe9f9937df22d924301089e612cfbe4ed11ae4e7906a2213ae572cccc588bd6986afdd0522f4d1e7b34f0a585d854564d89536259748da419359b32149f29b9e59679e861616364dfb847f6f81a8cfbb5c652372b4b020c86b24af7f16905c1cffb2e2081dac94217eb04c9238b6d37fd3d35cc2ac17b73fdc11258630e54fa6d33adaa8b4ce17ecf8ce81ac57941d8ff8da64767fd7e8ba4d11c9134065f7df659a3db4c4dcba7d8a0d5598794985594508df9bae99bb5261e6d022ba5fb3b4e2c38c6558e2b1c4cc40585a8f7dc54b4719bc57a83db6077e83ab20c6ba3448efea742736dd4078faf660bcd4d949f3df8c28e3d3cf0720a4839f3a3456640e5479f614c42d1578c4002453344ed190e97825026dd9475737dea1d817f8dea3d6c1d0174e2cb013a58711d062b621440b04180959d39a21bbd154653c708b3dbc69f27c074eab06e73c5c62828e16aa8afb38cc43fa10d609f5610aa0fa71d18ebafafb23760edf0a2ba866a139f98fbc5db96b0aab8f660a15d2570ba4272b080fc9f2370e8c1fe1bc318ff8d3d10bc2408d59b020e39bc38130a9957c50ea9d25a160e5c6fd39a9fe66f5b03f3367ec31651b55881e3e563adc5148f62b3bbe000f499a1f8726e260c5bfcbb4953deda02a020dc90792636326e6bebb4Line truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
Assets["app.js"] = bs
@@ -73,7 +73,7 @@ func init() {
bs, _ = ioutil.ReadAll(gr)
Assets["favicon.png"] = bs
bs, _ = hex.DecodeString("1f8b080000096e8800ffec7d697bdb36b6f0f7fe0a44d3c59ed794ec24cdf4756dddeb259dba4be2c776a6b7b74fef3c100949a8498201403b1ad7f3dbef3900f745a42cdbf1dce987c422b11d1c9c1dc0e1deb3e3b747173f9fbe26731df8e34ff69e39ce27a3113912d142f2d95c938da34df27c7be725f98e5e8a093914724668e8418d504b3e89b5908a6c28c6889e3372f4f6cdc5d9c9e1bb8bb767e764ca7db639c4ee0e7c9f98ee14914c3179c5bc2179a718115368c6155122962e23aef01881c799b86232641e992c6030f2e3c985a3f4c267d897cf5d162a1c8e6ae242e98491a98801241e1a187e38397afde6fcb5197ef889e3c0ac7072c4a7e16c7fc0c20109670e8da2fd815a842e0c1fcecc2b1767247c9fc9fdc1795a72a4a53f20ae4f95da1f60255fd0cb0176c9a837fe8490bd80694adc39958ae9fd41aca7ce5783bc60ae75e4b0f731bfda1ffc97f3eec039124144359ff80cba85115908ad4e5eef336fc60aed421ab0fdc11567d79190ba50f59a7b7abeefb12b4083631eb660e25c73ea3bcaa53edbdf196ed73af29872258f341761a1af5a351aebb990b51a3e0f2f61e17cc018146b37d684bbd8d35cb2e9fe604aaff071180122c79f6003cdb5cfc61912c9efe4e606d7f90dacef1b186963f3f6766f646b6503d8ce264268a5258d46ae52a3ec6918f070086f06091c480d6ace98b6109a67a217114c42b30f1a1b9b124226c25b901bf39390887a1e00e44c84d622d8257fd98e3e7c9d944d61d2ce9406dc5fec92c1b7ccbf629abb94bc61311b6c91ecc516399080ed2da268a81ca0663eb55ddc7e62fec4feff9b7f998d185039e3a1a345b44b76865fb2a0547788c03a8108858a2830c04d132c3fb2d0175be447115217fe02e7290104b9450647c0369c4900f11a20ccbaa90c4181d890ba3de41b6fac0de96a3946d2a99722beda4ba7b020eda559cfded29e1b4bb39ebd0c0b13213d262dee421156e6e58b99a8a079976c7f5d5ee9c21bd38df365bee091501c396217690a78f2aa3a0057da098533894128e86c28f3da109c83046741ab348489f97110666d3cae229fc25af210689d39135fb897291c40da9693811e53fac808c7884d209dbc6042ddcb99448987a30809e0cf261bcf5fbcda22cf5f6ee37f3b9b5f973128a9c763b54b5e14269fe26727fa405ee6ef53443e87d7cfd3d7b7d579019985438f82e0a8d0b9cfa600ed764ee8a5e9ed6ce7af0de5539fcf10ff38c9afbb7195223815c475fce25a90673c40a94943ddc009a023b266d773ae996378069b5e83a02949836b66b1ff727bbbb127af2658ecfc9f8358e982c21baa80fabe53c2622b4049e3ff0c98c729d908e88704a77f79f597e8c366d641c257a06523101340d263fba6c87d596542467f06da075dab092599ac25a0c9348a6d369c0d77b3bae4cf8014095266028a954473c0b402a6223009714d70a92692d14b857ad817d05cb2480a68e303098e14684850e8d75ccf8b3d5a7a5243f2e751f6ba820409684a57e53623c7bd916141d0c423ab8a3fd93333c4228f5f5515faeb2bd06746998ff746506ef514583be44244c05292a0a180ef427a95e97b7a8525f60f8aa1f4a7c7a634f6412d43f7ccd4e3336a94abd5390682a41384820272645286da0ab8a73c8633916054016c3c98a52528df06444917d59d834fcecef3af8c9625d60a18bc780e3ad8d0a8fd3d1a934ce9ee19f24a3b9b730f04adf301b462797cab8062cd60f4df01a950346ed4d6a6bb7152239d49ec17e69162a7f0d330763671a3e971653828fa389a81586227e1540c43765dc08fa90896a51661a2d2ed4366874d74980e803fe15fbe22d68ab0061d988a97d9401b9be5018a4898f98b688e360cc97e39ee9c5d49f81b478374d69fb340650222ef04782654a04058fecbb9a27e0cff33a9802af6073737c5e9620da56f6f07e377f62d1021b9f92ca9fdd96d19c966a09145410193239f97f19accc59322f2c475589e2d4d10f3a741b51ed0f56c86d6280aa2e4a1d84b658ee3d71ed716c0f79f8713c0c7de24237560718dd89ac03f5a1a3f27946cdc8085710948338d71066a710d41ba9eb148e01a762edcdcf32a2b569dc281e711ec0ed4bf908ba42a425c466a1744c81fbd2002ac5c338b990ea8b0cb2e783244f22bee21dbac0035680f7d6ea5bbea05ba2b661d60a7dddd0d8dbc3f16df4b740fbba099832e3a397e481caa79ac91807b012da6d34e886d7777c31f287a4da5ee498653a83eef80e7ccf6f89018a41311f7031954bbd40e0b22bde8e21eec7309d07ba3d86f969e79496219e00f502fd61c68d1e4b63eda0fdf70a9341802d75b4484fe82808b7c1d123e2521739952542ebe26094ec93595211a5689ad919b2aa8109f41ff533e3b09518567621a3ace0d871230be1378601114b56ba11cf0c07c62fe779261cb1aa15a1771ed995a7bf317059d56aa635cf6414a23e077328f796081bd1867b86b1f00edb3aac08f0a4b7831c70810e22096c69a2273aac88431f037e8154683620df620d8aa2e386bd0c21be6e60e09625c860430344b934a2626040646b9ebe1de282a934727f8e8a056ac941e760a1a272a28da2824027f32b18c1e9593ab26448da47ce0b629ff306858ccf28bd263e12137adcbccc166b10f8634d07285f44b449ef6870d73f56cfc6db281d6373a579b790f8d0cf16a193f38e8374703c23dc4773202676a3967245c7473834d8eb060037f0d4f8ec130364b088f8c6adb27ba3ff8f70700bb62732ee5ba523da8094cd8c47a956ac6b42b596e80079f462a35e822b0c93092f7a7d27c536b105fc2c43ee5a1c73ea0415aebbe87a55c34b888c5d2f0984be69ae5fb9d98a0e129d5f3dbdbaeee73d620b9c7821856e038ba738be1734d759caf4123d075db3cebc4b99e3330c9e3f0323406ee3bfba36e74f7ef4b017546e8419ddb1f6bf5e5d2d04aebf3e457776fb53e402a3611550b0c2652db3110211b3737d8ef29932e50149db102177cb6d90cddca9073af91c89bc13e81ca8f08735b49c5d7b1af40259639bf2a521361908aa2221796193f65689271766db43eaab65ab11a286ae67d1bac2a362195c86df2acb4e486059a91aad3e04c73a96c2bc2c279b74284a5ed5486994229b807d0f79281bd52902489652402eee4d86c6178ad731ab54f6afdf9daa09a23221676ccfb1b53f31e269c49f4b5e69d1abb01b872fe2f09267f1df2f08afabc8d7a7aa32531741dc5675d78792da558132dcd73f8986431f3c5a4cb43fe2bd4a17e53fce33e903033bd7fc37da640f353ff9a2ed49b389830797b5b93df5c0384c9f05ba4a5afc385367d4d784891f80e3f1e7ae722e8c2ee0fc27d38e4fad8f9fde0d674f58450ebfa22f61c8c83f88276c5efde821ff8766a7cbf75f0db5e9fb688a910fc5d8bff31d92ec784c4353ac3b9519a863deaab9877b2ee22624f0d6b58b3460a334bLine truncated
bs, _ = hex.DecodeString("1f8b080000096e8800ffec7d6b7bdb3696f0f7fe0a44d38b3daf29d9499ae9ebdadaf5259dba97c48fed4cb7dba73b0f4442126a926000d08ec6f5fcf63d07e0fd225296ed7876fa21b14882c03907e70ee070efd9f1dba38b9f4f5f93b90efcf1277bcf1ce793d1881c896821f96caec9c6d12679bebdf3927c472fc5841c0a392334f4a045a8259fc45a484536146344cf19397afbe6e2ece4f0ddc5dbb37332e53edb1c627707be4f4c778a48a698bc62de90bc538c8829bcc6155122962e23aef01881cb99b86232641e992c6030f2e3c985a3f4c267d897cf5d162a1c8e6ae2c2d30923531103483c3430fc7072f4facdf96b33fcf013c701ac1039e2d370b63f60e18084338746d1fe402d4217860f67e6968b1809df67727f709e3e39d2d21f10d7a74aed0fb0912fe8e500bb64d41b7f42c85ec03425ee9c4ac5f4fe20d653e7ab41fe60ae75e4b0f731bfda1ffc97f3eec039124144359ff80cba851159086f9dbcde67de8c15de0b69c0f607579c5d4742ea42d36beee9f9bec7ae800c8eb9d802c4b9e6d477944b7db6bf33dcae75e431e54a1e692ec2425fb56634d673216b2d7c1e5ec2c4f9403178acdd5813ee624f73c9a6fb8329bdc2cb6104841c7f822f68ae7d36ce88487e27373738cf6f607edfc0481b9bb7b77b23db2a1bc0763611422b2d693472951a6557c3808743b83348e0406e5073c6b485d05c13bd880009cd3e687cd93c216422bc05b9313f0989a8e70140ce44682d825df297ede8c3d7c9b32920ed4c69c0fdc52e197ccbfc2ba6b94bc91b16b3c116c96e6c910309d4de228a86ca016ee653dbc5ed27e64fecffbff997d9880195331e3a5a44bb6467f8250b4a6d8708ac138850a8888200dc34c1f2230b7db1457e142175e12f489e12c0905b64700462c3990410af01c2ac9bca1014980db9db43b9f1c6dab0ae9663649dfa53a457fbd3294c48fbd3ac676f69cf8d4fb39ebd8c0a13213d262ded421156f0f2c54c54c8bc4bb6bf2ecf74e18ee9c6f9329ff048288e12b18b3c053279551d802bed84c299c4a014743694b96d18ce4186b3a0555e04c4fc3808b3773cae229fc25cf210789d39135fb897291cc0da5692811f53fec818c7a84d609dfcc184ba9733891a0f471112c09f4d369ebf78b5459ebfdcc6ff7636bf2e5350528fc76a97bc28209fd26727fa405ee6f753423e87dbcfd3dbb755bc80cdc2a147417154f8dc675380763b67f4127a3bdbf96dc3f9d4e733a43f22f97537ad5202a78ab84e5f9c0bf28c07a83569a81b24016c44f6daf59c6be61899c157af41d194b4c135b3d47fb9bdddd89357532c16ffe7a056baa0f0862aa0beef94a8d80a50f2f27f06cce3946c04f44342d3bfbcfa4bf46133eb20912bb0b211a80960e9b1bd5394beac3121a33f03ef83add584924cd712b0641ad5361bce86bb595bf267208a042d3301c34aa239505a81501140425c139caa8964f452a11df605bc2e592405bce3030b8e14584830e8d75ccf8b3d5a7e5243f2e75176bb420409644a67e53663c7bd911141b0c4236b8a3fd93318e2238f5f550dfaeb2bb067c6988ff746f0dcda29f076c8858840a424414701ef85f42ab3f7f40a9fd83fa886d29f1e9bd2d807b30cdd33d38ecfa831aed6e61808924e100a0ac491c933b456203de5319c8904a70a60e3c12c7d82fa6d409474d1dc3978e5ec3cffca585962bd80c18be760830d8fdadfa331c98cee9e61afb4b339f740d13a1fc02a96c7b70628d60c46ff1d880a8fc68dd6da74374e5aa498c47e018f943a859f46b033c48da5c799e160e8e368066a899d8453310cd975813ea62178965a848949b717991f36d1613a00fe847ff98c582fc23a74e02a5e66036d6c9607281261e62fa239fa3024fbe5b8737625e16f1c0d52ac3f6781ca1444de09c84ca8c080b0fc977345fd18fe67520157ec0f6e6e8ae8620ba56f6f07e377f62e3021b9f92c69fdd96d99c866a09125418192239f97e99ae0e2491179e23a2c634b13c2fc69506d077c3d9ba1378a8a28b928f652c171fcdae3da02f8fef37002f4d89b64ac0e22ae915a13f8474be3e78c928d1bb0302e0169d01867a016e710b4eb198b04ce61e7c4cd3daf326355140e3c8f607760fe855c244d11e23251bb2042f9e8051150e59a59ca7440855d76c19311925f710fc56605a8c17ae873abdd552fd05d31eb003bedee6e64e4fda9f85e6278d805cd1c6cd1c9f143d250cd638d0cdc0b68319d76426cbbbb1bfdc0d06b2a754f369c42f379073c67b6c787a4209d88b81fc860daa5765810e94597f4609f4b80de1bc57eb3f6cc9f249e01fe00f362dd81164b6edba3fff00d974a832370bd4544e82f0884c8d721e1531232972945e5e26b92d0945c5319a26395f81ab9ab8206f119f43fe5b393104d78a6a6a1e3dc712801e33b81071e41d1ba169e031d984fccff4e326cd92254db22ad3dd36a6ffea260d34a6d4cc83e487904e24ee6310f3cb017e38c76ed03a07f5655f851610a2fe69801421ac4d27853644e15993006f106bdc26c50acc11f045fd585600ddef086b9bb438218a721010cddd2a491c909818351ee7ab8378acaecd1093e06a8152fa5879f82ce890a8a3e0a89209e4c3ca34795e4aa0b5163291fa46dca3f0c1a26b37ca37459b8c85debb270b059ec83230dbc5c61fd1293a7fde18bb97936f136d940ef1b83abcdbc87468178b54c1e1c8c9ba301e11ed23b198133b55c321229bab9c1578ef0c106fe1a9e1c83636ca6102e19d5b64f0c7ff0ef0f0076c5e75c2a75a576d01284b049f42acd8c6b57f2dc800e3e8d54ead045e0936126ef4f257c536f106f02629ff2d0631fd021ad75dfc3532e3a5cc4526978cc2573cdf4fd4e4cd2f094eaf9ed6d57f7b968903c62410a2b081cddb9a5f0b9a63acee7a011e8ba6f9e75e25ccf19b8e47178191a07f79dfd5177bafbf7a5803b238ca0ceed8fb5fa726968b5f579f2abbbb75a1fa0159b98aa050693a9ed1888908d9b1becf7944917388ace58410a3edb6c866e65c8b9d7c8e4cd609f40e34784b9ed4925d6b1b7c0249625bfaa52136590aaa2a21496053f15689249766db43ea6b6dab09a286a967d9bac2abe422a99dbe45a69c98d08341355a7c999e6a7b2ed113e9c771b4498da4e639819944278007d2f19d82b2549925c46a2e04e8ecd1286d78ad3a81da9f5f1b5493547442cecc0fb1bd3f21e10ce34fa5a78a7ce6e00a19cff4b42c95f873cbca23e6fe39ede64491c5d47f159175d5e4b29d6244b330e1f932d66be987445c87f8536d46fca7fdc071166a6f76fb8cf14587eea5fd3857a130713266f6f6bfa9b6b8030197e8bb4f475b8d0a6af090f2932dfe1c723ef5c045dd4fd41b80f475c1f3bbf1fda9aae9e10695d5fc49e8379105fd0aefcdd5b8803df4e4decb70e7ddbdbd316351542bc6be93f26dbe59c90b8c66038774ad3b4477d16f34ed69d44eca9610e6bde4801Line truncated
gr, _ = gzip.NewReader(bytes.NewBuffer(bs))
bs, _ = ioutil.ReadAll(gr)
Assets["index.html"] = bs
+36 -15
View File
@@ -34,6 +34,7 @@ syncthing.controller('EventCtrl', function ($scope, $http) {
if (lastID > 0) {
data.forEach(function (event) {
console.log("event", event.id, event.type, event.data);
$scope.$emit(event.type, event);
});
};
@@ -142,7 +143,7 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
// Update completion status for all nodes that we share this repo with.
$scope.repos[data.repo].Nodes.forEach(function (nodeCfg) {
debouncedRefreshCompletion(nodeCfg.NodeID, data.repo);
refreshCompletion(nodeCfg.NodeID, data.repo);
});
});
@@ -188,27 +189,37 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
}
})
var debouncedFuncs = {};
function refreshRepo(repo) {
$http.get(urlbase + '/model?repo=' + encodeURIComponent(repo)).success(function (data) {
$scope.model[repo] = data;
});
var key = "refreshRepo" + repo;
if (!debouncedFuncs[key]) {
debouncedFuncs[key] = debounce(function () {
$http.get(urlbase + '/model?repo=' + encodeURIComponent(repo)).success(function (data) {
$scope.model[repo] = data;
console.log("refreshRepo", repo, data);
});
}, 1000, true);
}
debouncedFuncs[key]();
}
function refreshSystem() {
$http.get(urlbase + '/system').success(function (data) {
$scope.myID = data.myID;
$scope.system = data;
console.log("refreshSystem", data);
});
}
var completionFuncs = {};
function refreshCompletion(node, repo) {
if (node === $scope.myID) {
return
}
if (!completionFuncs[node+repo]) {
completionFuncs[node+repo] = debounce(function () {
var key = "refreshCompletion" + node + repo;
if (!debouncedFuncs[key]) {
debouncedFuncs[key] = debounce(function () {
$http.get(urlbase + '/completion?node=' + node + '&repo=' + encodeURIComponent(repo)).success(function (data) {
if (!$scope.completion[node]) {
$scope.completion[node] = {};
@@ -217,14 +228,19 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
var tot = 0, cnt = 0;
for (var cmp in $scope.completion[node]) {
if (cmp === "_total") {
continue;
}
tot += $scope.completion[node][cmp];
cnt += 1;
}
$scope.completion[node]._total = tot / cnt;
console.log("refreshCompletion", node, repo, $scope.completion[node]);
});
});
}, 1000, true);
}
completionFuncs[node+repo]();
debouncedFuncs[key]();
}
function refreshConnectionStats() {
@@ -247,12 +263,14 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
}
}
$scope.connections = data;
console.log("refreshConnections", data);
});
}
function refreshErrors() {
$http.get(urlbase + '/errors').success(function (data) {
$scope.errors = data;
console.log("refreshErrors", data);
});
}
@@ -277,6 +295,8 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http, $translate, $loca
if (!hasConfig) {
$scope.$emit('ConfigLoaded');
}
console.log("refreshConfig", data);
});
$http.get(urlbase + '/config/sync').success(function (data) {
@@ -837,8 +857,8 @@ function isEmptyObject(obj) {
return true;
}
function debounce(func, wait, immediate) {
var timeout, args, context, timestamp, result;
function debounce(func, wait) {
var timeout, args, context, timestamp, result, again;
var later = function() {
var last = Date.now() - timestamp;
@@ -846,9 +866,10 @@ function debounce(func, wait, immediate) {
timeout = setTimeout(later, wait - last);
} else {
timeout = null;
if (!immediate) {
if (again) {
result = func.apply(context, args);
context = args = null;
again = false;
}
}
};
@@ -857,13 +878,13 @@ function debounce(func, wait, immediate) {
context = this;
args = arguments;
timestamp = Date.now();
var callNow = immediate && !timeout;
var callNow = !timeout;
if (!timeout) {
timeout = setTimeout(later, wait);
}
if (callNow) {
result = func.apply(context, args);
context = args = null;
} else {
again = true;
}
return result;
+2 -2
View File
@@ -294,7 +294,7 @@
<span translate>Up to Date</span> (100%)
</span>
<span ng-if="connections[nodeCfg.NodeID] && completion[nodeCfg.NodeID]._total < 100">
<span translate>Syncing</span> ({{connections[nodeCfg.NodeID].Completion}}%)
<span translate>Syncing</span> ({{completion[nodeCfg.NodeID]._total | number:0}}%)
</span>
<span translate ng-if="!connections[nodeCfg.NodeID]">Disconnected</span>
</span>
@@ -312,7 +312,7 @@
</tr>
<tr>
<th><span class="glyphicon glyphicon-comment"></span>&emsp;<span translate>Synchronization</span></th>
<td class="text-right">{{completion[nodeCfg.NodeID]._total | alwaysNumber}}%</td>
<td class="text-right">{{completion[nodeCfg.NodeID]._total | alwaysNumber | number:0}}%</td>
</tr>
<tr>
<th><span class="glyphicon glyphicon-compressed"></span>&emsp;<span translate>Use Compression</span></th>