Jakob has submitted this change and it was merged.

Change subject: Fix pointer pointer dragging to edge revisions
......................................................................


Fix pointer pointer dragging to edge revisions

This fixes a problem with not being able to drag a pointer to the newest 
revision,
and an extension allowing to drag pointers to revision further than there
are revisions visible in the plot.

This stops snapping a pointer to the "stopper" element, and introduces a grid
for a pointers to be moved in. Size of the grid reflects a size of the current
revision plot which prevents moving a pointer out of the plot.
Custom "containment" is added for the "newer" edge as jquery ui's "containment"
does not work for this particular case.

Bug: T135837
Change-Id: Ifc6ae29c6d64d2baf44ef2b8ff96a45ae86b4f5f
---
M modules/ext.RevisionSlider.PointerView.js
M modules/ext.RevisionSlider.RevisionListView.js
M modules/ext.RevisionSlider.SliderView.js
M modules/ext.RevisionSlider.css
4 files changed, 11 insertions(+), 23 deletions(-)

Approvals:
  Jakob: Verified; Looks good to me, approved
  jenkins-bot: Verified



diff --git a/modules/ext.RevisionSlider.PointerView.js 
b/modules/ext.RevisionSlider.PointerView.js
index ad8bbb1..e1fa2e2 100644
--- a/modules/ext.RevisionSlider.PointerView.js
+++ b/modules/ext.RevisionSlider.PointerView.js
@@ -52,14 +52,14 @@
 
                slideToPosition: function ( slider, duration ) {
                        var relativePos = this.pointer.getPosition() - 
slider.getFirstVisibleRevisionIndex();
-                       return this.animateTo( relativePos * 
slider.getView().revisionWidth + 4, duration ); // +4 to align triangle and 
revision
+                       return this.animateTo( ( relativePos - 1 ) * 
slider.getView().revisionWidth, duration );
                },
 
                slideToSide: function ( slider, posBeforeSlider, duration ) {
                        if ( posBeforeSlider ) {
-                               return this.animateTo( this.getOffset() - ( 
slider.getView().revisionWidth / 2 ), duration ); // +10 otherwise pointer is 
in arrow
+                               return this.animateTo( this.getOffset() - 2 * 
slider.getView().revisionWidth, duration );
                        } else {
-                               return this.animateTo( ( 
slider.getRevisionsPerWindow() + 1 ) * slider.getView().revisionWidth + 
this.getOffset(), duration );
+                               return this.animateTo( 
slider.getRevisionsPerWindow()  * slider.getView().revisionWidth + 
this.getOffset(), duration );
                        }
                },
 
diff --git a/modules/ext.RevisionSlider.RevisionListView.js 
b/modules/ext.RevisionSlider.RevisionListView.js
index 9e3d05c..98a1454 100644
--- a/modules/ext.RevisionSlider.RevisionListView.js
+++ b/modules/ext.RevisionSlider.RevisionListView.js
@@ -41,12 +41,7 @@
                                                        .addClass( diffSize > 0 
? 'revision-up' : 'revision-down' )
                                                        .append( $( '<div 
class="revision-border-box"/>' ) )
                                                )
-                                       )
-                                       .append( $( '<div class="stopper"/>' )
-                                               .css( {
-                                                       left: revisionTickWidth 
* i + 'px',
-                                                       width: 
revisionTickWidth + 'px'
-                                               } ) );
+                                       );
                        }
 
                        return $html;
diff --git a/modules/ext.RevisionSlider.SliderView.js 
b/modules/ext.RevisionSlider.SliderView.js
index 0e4fdea..76a4f53 100644
--- a/modules/ext.RevisionSlider.SliderView.js
+++ b/modules/ext.RevisionSlider.SliderView.js
@@ -66,10 +66,7 @@
                                .append( $( '<div style="clear: both" />' ) )
                                .append(
                                        $( '<div class="pointer-container" />' )
-                                               .css( {
-                                                       left: 50 - 
this.revisionWidth + 'px', // 50 == arrow + margin right
-                                                       width: containerWidth + 
this.revisionWidth * 1.5 + 'px'
-                                               } )
+                                               .css( { width: containerWidth + 
this.revisionWidth - 1 + 'px' } )
                                                .append( 
this.pointerOne.getView().render() )
                                                .append( 
this.pointerTwo.getView().render() )
                                );
@@ -81,13 +78,13 @@
 
                        $slider.find( '.pointer' ).draggable( {
                                axis: 'x',
-                               snap: '.stopper',
+                               grid: [ this.revisionWidth, null ],
                                containment: '.pointer-container',
                                stop: function () {
                                        var $p = $( this ),
                                                pointer = self.whichPointer( $p 
),
                                                pos = parseInt( $p.css( 'left' 
), 10 ),
-                                               relativeIndex = Math.floor( ( 
pos + self.revisionWidth / 2 ) / self.revisionWidth ),
+                                               relativeIndex = Math.ceil( ( 
pos + self.revisionWidth / 2 ) / self.revisionWidth ),
                                                revId1, revId2;
                                        mw.track( 
'counter.MediaWiki.RevisionSlider.event.pointerMove' );
                                        pointer.setPosition( 
self.slider.getFirstVisibleRevisionIndex() + relativeIndex );
@@ -100,7 +97,9 @@
                                        self.diffPage.refresh( revId1, revId2 );
                                        self.diffPage.pushState( revId1, 
revId2, self );
                                },
-                               drag: function () {
+                               drag: function ( event, ui ) {
+                                       var newestVisibleRevisionLeftPos = 
containerWidth - self.revisionWidth;
+                                       ui.position.left = Math.min( 
ui.position.left, newestVisibleRevisionLeftPos );
                                        self.resetPointerColorsBasedOnValues(
                                                
self.pointerOne.getView().getElement().offset().left,
                                                
self.pointerTwo.getView().getElement().offset().left
diff --git a/modules/ext.RevisionSlider.css b/modules/ext.RevisionSlider.css
index 279bebe..0c0509e 100755
--- a/modules/ext.RevisionSlider.css
+++ b/modules/ext.RevisionSlider.css
@@ -102,13 +102,6 @@
     margin-left: 30px;
 }
 
-.stopper {
-    position: absolute;
-    top: 50%;
-    height: 50px;
-    width: 0;
-}
-
 .revision-slider {
     position: relative;
     margin: auto;
@@ -118,6 +111,7 @@
     position: absolute;
     clear: both;
     height: 1px;
+    left: 55px;
     top: 57px;
     margin: auto;
     z-index: 10;

-- 
To view, visit https://gerrit.wikimedia.org/r/290905
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ifc6ae29c6d64d2baf44ef2b8ff96a45ae86b4f5f
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/RevisionSlider
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Gabriel Birke <[email protected]>
Gerrit-Reviewer: Jakob <[email protected]>
Gerrit-Reviewer: Kai Nissen (WMDE) <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: WMDE-Fisch <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to