CHUKWA-812. Added throttle to dashboard save. (Eric Yang)
Project: http://git-wip-us.apache.org/repos/asf/chukwa/repo Commit: http://git-wip-us.apache.org/repos/asf/chukwa/commit/fcfcc088 Tree: http://git-wip-us.apache.org/repos/asf/chukwa/tree/fcfcc088 Diff: http://git-wip-us.apache.org/repos/asf/chukwa/diff/fcfcc088 Branch: refs/heads/master Commit: fcfcc088b61a262f81876e24ecce854e13cbd6c1 Parents: 20be5ae Author: Eric Yang <ey...@apache.org> Authored: Sat Nov 12 13:59:47 2016 -0800 Committer: Eric Yang <ey...@apache.org> Committed: Sat Nov 12 13:59:47 2016 -0800 ---------------------------------------------------------------------- CHANGES.txt | 2 ++ src/main/web/hicc/home/index.html | 10 +++++----- src/main/web/hicc/home/js/throttle.js | 22 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/chukwa/blob/fcfcc088/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 44a5350..c7372d2 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -8,6 +8,8 @@ Trunk (unreleased changes) BUGS + CHUKWA-812. Added throttle to dashboard save. (Eric Yang) + Release 0.8 - 05/22/2016 IMPROVEMENTS http://git-wip-us.apache.org/repos/asf/chukwa/blob/fcfcc088/src/main/web/hicc/home/index.html ---------------------------------------------------------------------- diff --git a/src/main/web/hicc/home/index.html b/src/main/web/hicc/home/index.html index aefe260..412a3ba 100755 --- a/src/main/web/hicc/home/index.html +++ b/src/main/web/hicc/home/index.html @@ -32,6 +32,7 @@ <link rel="stylesheet" type="text/css" href="css/component.css" /> <script src="js/modernizr.custom.js"></script> <script src="js/jquery.js" type="text/javascript"></script> + <script src="js/throttle.js" type="text/javascript"></script> <script src="js/jquery-ui.js"></script> <script src="js/lodash.min.js" type="text/javascript"></script> <script src="js/gridstack.min.js" type="text/javascript"></script> @@ -207,11 +208,6 @@ function load() { gridstack.addWidget(buildWidget(this.src), this.col, this.row, this.size_x, this.size_y); }); - // Bind save operation only after load operation has been - // completed to avoid race conditions. - $('.grid-stack').on('change', function(event, ui) { - save(); - }); } ); @@ -343,6 +339,10 @@ $(function(){ //DOM Ready } ); + $('.grid-stack').on('change', throttle(function(event, ui) { + save(); + }, 250)); + }); function setTime() { http://git-wip-us.apache.org/repos/asf/chukwa/blob/fcfcc088/src/main/web/hicc/home/js/throttle.js ---------------------------------------------------------------------- diff --git a/src/main/web/hicc/home/js/throttle.js b/src/main/web/hicc/home/js/throttle.js new file mode 100644 index 0000000..f8f7ff0 --- /dev/null +++ b/src/main/web/hicc/home/js/throttle.js @@ -0,0 +1,22 @@ +function throttle(fn, threshhold, scope) { + threshhold || (threshhold = 250); + var last, + deferTimer; + return function () { + var context = scope || this; + + var now = +new Date, + args = arguments; + if (last && now < last + threshhold) { + // hold on to it + clearTimeout(deferTimer); + deferTimer = setTimeout(function () { + last = now; + fn.apply(context, args); + }, threshhold); + } else { + last = now; + fn.apply(context, args); + } + }; +}