You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2015/04/21 11:33:34 UTC

[07/14] allura git commit: [#7866] ticket:754 Make ajax status checking more DRY

[#7866] ticket:754 Make ajax status checking more DRY


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/0be08e5f
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/0be08e5f
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/0be08e5f

Branch: refs/heads/ib/7866
Commit: 0be08e5fb7237f54c56c9614238270b923c7abe9
Parents: 76f05fa
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Apr 17 13:20:14 2015 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Tue Apr 21 08:15:31 2015 +0000

----------------------------------------------------------------------
 Allura/allura/templates/repo/merge_request.html | 144 ++++++++++---------
 1 file changed, 77 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/0be08e5f/Allura/allura/templates/repo/merge_request.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/repo/merge_request.html b/Allura/allura/templates/repo/merge_request.html
index 99bcdec..37830b8 100644
--- a/Allura/allura/templates/repo/merge_request.html
+++ b/Allura/allura/templates/repo/merge_request.html
@@ -133,11 +133,12 @@ Merge Request #{{req.request_number}}: {{req.summary}} ({{req.status}})
   .merge-conflicts { color: red; }
   .can-merge-in-progress { color: grey; }
 
+  #merge_task_status .{{ merge_status }} { display: inline-block; }
+  #can_merge_task_status .{{ can_merge_status }} { display: inline-block; }
   .task_status { margin: 0 10px; }
   .task_status h2 { display: none; }
-  .task_status .{{ merge_status }} { display: inline-block; }
   .task_status h2.complete { color: #C6D880; }
-  .task_status h2.busy, .task_status h2.busy { color: #003565; }
+  .task_status h2.busy { color: #003565; }
   .task_status h2.fail { color: #f33; }
 </style>
 {% endblock %}
@@ -146,72 +147,81 @@ Merge Request #{{req.request_number}}: {{req.summary}} ({{req.status}})
 {{ super() }}
 <script type="text/javascript">
 $(function() {
-    {% if merge_status in ('ready', 'busy') %}
-        $('#merge_task_status > .spinner').show();
-        var delay = 500;
-        function check_merge_status() {
-          $.get("{{request.path.rstrip('/') + '/merge_task_status'}}", function(data) {
-                if (data.status === 'complete') {
-                    $('#merge_task_status > .spinner').hide();
-                    $('#merge_task_status h2').hide();
-                    $('#merge_task_status h2.complete').show();
-                    location.reload();
-                } else {
-                    if (data.status === 'ready' || data.status === 'busy') {
-                        // keep waiting
-                        $('#merge_task_status h2').hide();
-                        $('#merge_task_status h2.busy').show();
-                    } else {
-                        // something went wrong
-                        $('#merge_task_status > .spinner').hide();
-                        $('#merge_task_status h2').hide();
-                        $('#merge_task_status h2.fail').show();
-                    }
-                    if (delay < 60000){
-                        delay = delay * 2;
-                    }
-                    window.setTimeout(check_merge_status, delay);
-                }
-            });
-        }
-        window.setTimeout(check_merge_status, delay);
-    {% endif %}
+    function make_status_watcher(spinner_selector, status_url, on_complete, on_progress, on_error) {
+      var delay = 500;
+      var delay_threshold = 60000;
+
+      var check_status = function() {
+        $.get(status_url, function(data) {
+          if (data.status === 'complete') {
+            $(spinner).hide();
+            on_complete();
+          } else {
+            if (data.status === 'ready' || data.status === 'busy') {
+              on_progress();
+            } else {
+              $(spinner).hide();
+              on_error();
+            }
+            if (delay < delay_threshold) {
+              delay = delay * 2;
+            }
+            window.setTimeout(check_status, delay);
+          }
+        });
+      }
+
+      var start = function() {
+        $(spinner_selector).show();
+        window.setTimeout(check_status, delay);
+      }
+
+      return start;
+    }
 
-    {% if can_merge_status in ('ready', 'busy') %}
-        $('#can_merge_task_status > .spinner').show();
-        var delay = 500;
-        function check_can_merge_status() {
-          $.get("{{request.path.rstrip('/') + '/can_merge_task_status'}}", function(data) {
-                if (data.status === 'complete') {
-                    $('#can_merge_task_status > .spinner').hide();
-                    $('#can_merge_task_status h2').hide();
-                    // TODO: check if actually can merge and show appropriate message
-                    $('.merge-help-text').hide();
-                    $('.merge-ok').show();
-                    $('.merge-btn').prop('disabled', false);
-                } else {
-                    if (data.status === 'ready' || data.status === 'busy') {
-                        // keep waiting
-                        $('#can_merge_task_status h2').hide();
-                        $('#can_merge_task_status h2.busy').show();
-                        $('.merge-help-text').hide();
-                        $('.can-merge-in-progress').show();
-                    } else {
-                        // something went wrong
-                        $('#can_merge_task_status > .spinner').hide();
-                        $('#can_merge_task_status h2').hide();
-                        $('#merge_task_status h2.fail').show();
-                        $('.merge-help-text').hide();
-                        $('.merge-conflicts').show();
-                    }
-                    if (delay < 60000){
-                        delay = delay * 2;
-                    }
-                    window.setTimeout(check_can_merge_status, delay);
-                }
-            });
-        }
-        window.setTimeout(check_can_merge_status, delay);
+    {% if merge_status in ('ready', 'busy') %}
+      var spinner = '#merge_task_status > .spinner';
+      var url = "{{request.path.rstrip('/') + '/merge_task_status'}}";
+      function on_complete() {
+        $('#merge_task_status h2').hide();
+        $('#merge_task_status h2.complete').show();
+        location.reload();
+      }
+      function on_progress() {
+        $('#merge_task_status h2').hide();
+        $('#merge_task_status h2.busy').show();
+      }
+      function on_error() {
+        $('#merge_task_status h2').hide();
+        $('#merge_task_status h2.fail').show();
+      }
+      var start_watcher = make_status_watcher(spinner, url, on_complete, on_progress, on_error);
+      start_watcher();
+
+    {% elif can_merge_status in ('ready', 'busy') %}
+      var spinner = '#can_merge_task_status > .spinner';
+      var url = "{{request.path.rstrip('/') + '/can_merge_task_status'}}";
+      function on_complete() {
+        $('#can_merge_task_status h2').hide();
+        // TODO: check if actually can merge and show appropriate message
+        $('.merge-help-text').hide();
+        $('.merge-ok').show();
+        $('#merge-btn').prop('disabled', false);
+      }
+      function on_progress() {
+        $('#can_merge_task_status h2').hide();
+        $('#can_merge_task_status h2.busy').show();
+        $('.merge-help-text').hide();
+        $('.can-merge-in-progress').show();
+      }
+      function on_error() {
+        $('#can_merge_task_status h2').hide();
+        $('#can_merge_task_status h2.fail').show();
+        $('.merge-help-text').hide();
+        $('.merge-conflicts').show();
+      }
+      var start_watcher = make_status_watcher(spinner, url, on_complete, on_progress, on_error);
+      start_watcher();
     {% endif %}
 });
 </script>