Dodanie możliwości włączania i wyłączania automatycznego przewijania.
authorzuber <marek@stepniowski.com>
Tue, 18 Aug 2009 10:50:57 +0000 (12:50 +0200)
committerzuber <marek@stepniowski.com>
Tue, 18 Aug 2009 10:50:57 +0000 (12:50 +0200)
project/static/js/jquery.autoscroll.js
project/templates/explorer/file_xml.html

index c342bdf..f8c07fb 100644 (file)
@@ -1,6 +1,7 @@
 (function($) {
     $.fn.autoscroll = function(synchronizeWith, options) {
-        var self = $(this);
+        var $this = $(this);
+        var self = $this;
         var selfContainer = self.parent();
         var synchronizeWith = $(synchronizeWith);
         var synchronizeWithContainer = synchronizeWith.parent();
             synchronizeWithContainer = $('body', eventContainer);
             synchronizeWith = synchronizeWithContainer;
         }
-
-        synchronizeWithContainer.data('autoscroll.lastCheckedScrollTop', synchronizeWithContainer.scrollTop());
+        
+        $this.data('autoscroll:enabled', true);
+        synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop', synchronizeWithContainer.scrollTop());
         
         eventContainer.scroll(function() {
-            var distanceScrolled = synchronizeWithContainer.scrollTop() - synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop');
-            var percentScrolled = distanceScrolled / synchronizeWith.height();
-            selfContainer.scrollTop(selfContainer.scrollTop() + percentScrolled * self.height());
+            if ($this.data('autoscroll:enabled')) {
+                var distanceScrolled = synchronizeWithContainer.scrollTop() - synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop');
+                var percentScrolled = distanceScrolled / synchronizeWith.height();
+                selfContainer.scrollTop(selfContainer.scrollTop() + percentScrolled * self.height());
+            }
             synchronizeWithContainer.data('autoscroll:lastCheckedScrollTop', synchronizeWithContainer.scrollTop());
         });
-    };
+    },
+    
+    $.fn.enableAutoscroll = function() {
+        $(this).data('autoscroll:enabled', true);
+    },
+        
+    $.fn.disableAutoscroll = function() {
+        $(this).data('autoscroll:enabled', false);
+    },
+    
+    $.fn.toggleAutoscroll = function() {
+        $(this).data('autoscroll:enabled', !$(this).data('autoscroll:enabled'));
+    }
 })(jQuery);
 
index 5bad3c4..e9cd85c 100644 (file)
             
             $('iframe').load(function() {
                 $('#images').autoscroll('iframe');
-                
+                $('.toggleAutoscroll').toggle(function() {
+                    $(this).html('Synchronizuj przewijanie');
+                    $('#images').disableAutoscroll();
+                }, function() {
+                    $(this).html('Nie synchronizuj przewijania');
+                    $('#images').enableAutoscroll();
+                })
                 setTimeout(function() {resizePanels();}, 10);
             })
             
         
         <div id="status-bar">
             {{ form.user.errors }} {{ form.commit_message.errors }}
-            <p>Użytkownik: {{ form.user }} Opis zmian: {{ form.commit_message }} <input type="submit" value="Zapisz"/></p>
+            <p>
+                Użytkownik: {{ form.user }}
+                Opis zmian: {{ form.commit_message }}
+                <input type="submit" value="Zapisz"/>
+                <a href="#" class="toggleAutoscroll" style="float: right">Nie synchronizuj przewijania</a>
+            </p>
         </div>
     </form>
 {% endblock maincontent %}