Addshore has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/288013

Change subject: Re add section legend as a module
......................................................................

Re add section legend as a module

Change-Id: I6ad89e2b15435ef35cc1ebddde0f92584ffd9ecf
---
M extension.json
M modules/ext.RevisionSlider.RevisionListView.js
A modules/ext.RevisionSlider.SectionLegend.js
M modules/ext.RevisionSlider.SliderView.js
M modules/ext.RevisionSlider.init.js
5 files changed, 61 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/RevisionSlider 
refs/changes/13/288013/1

diff --git a/extension.json b/extension.json
index 42614fa..3477b81 100755
--- a/extension.json
+++ b/extension.json
@@ -75,9 +75,18 @@
                                "modules/ext.RevisionSlider.SliderView.js"
                        ],
                        "dependencies": [
+                               "ext.RevisionSlider.SectionLegend",
                                "ext.RevisionSlider.Pointer"
                        ]
                },
+               "ext.RevisionSlider.SectionLegend": {
+                       "scripts": [
+                               "modules/ext.RevisionSlider.SectionLegend.js"
+                       ],
+                       "dependencies": [
+                               "ext.RevisionSlider.rainbow"
+                       ]
+               },
                "ext.RevisionSlider.RevisionList": {
                        "scripts": [
                                "modules/ext.RevisionSlider.RevisionList.js"
diff --git a/modules/ext.RevisionSlider.RevisionListView.js 
b/modules/ext.RevisionSlider.RevisionListView.js
index 5f0a815..18ff6d1 100644
--- a/modules/ext.RevisionSlider.RevisionListView.js
+++ b/modules/ext.RevisionSlider.RevisionListView.js
@@ -9,7 +9,7 @@
                 */
                revisionList: null,
 
-               render: function ( revisionTickWidth ) {
+               render: function ( revisionTickWidth, sectionColorMap ) {
                        var $html = $( '<div class="revisions"/>' ),
                                revs = this.revisionList.getRevisions(),
                                maxChangeSizeLogged = Math.log( 
this.revisionList.getBiggestChangeSize() ),
@@ -27,7 +27,7 @@
                                                        height: 
relativeChangeSize + 'px',
                                                        width: 
revisionTickWidth + 'px',
                                                        top: diffSize > 0 ? '-' 
+ relativeChangeSize + 'px' : 0,
-                                                       background: false || 
'black' // TODO: put rainbow thingy here
+                                                       background: 
sectionColorMap[ revs[ i ].getSection() ] || 'black'
                                                } )
                                                .tipsy( {
                                                        gravity: 's',
diff --git a/modules/ext.RevisionSlider.SectionLegend.js 
b/modules/ext.RevisionSlider.SectionLegend.js
new file mode 100644
index 0000000..e15ac52
--- /dev/null
+++ b/modules/ext.RevisionSlider.SectionLegend.js
@@ -0,0 +1,46 @@
+( function ( mw, $ ) {
+       var SectionLegend = function ( revisionList ) {
+               this.revisionList = revisionList;
+       };
+
+       $.extend( SectionLegend.prototype, {
+               /**
+                * @type {RevisionList}
+                */
+               revisionList: null,
+
+               getSectionColorMap: function () {
+                       var sectionMap = [],
+                               revisions = this.revisionList.getRevisions(),
+                               section, i;
+
+                       for ( i = 1; i < revisions.length; i++ ) {
+                               section = revisions[ i ].getSection();
+                               if ( section.length > 0 && !( section in 
sectionMap ) ) {
+                                       sectionMap[ section ] = '';
+                               }
+                       }
+
+                       i = 0;
+                       for ( section in sectionMap ) {
+                               sectionMap[ section ] = 
mw.libs.revisionSlider.rainbow( Object.keys( sectionMap ).length, i );
+                               i++;
+                       }
+
+                       return sectionMap;
+               },
+
+               getHtml: function () {
+                       var sectionMap = this.getSectionColorMap(),
+                               html = '<div class="revisions-legend">',
+                               sectionName;
+                       for ( sectionName in sectionMap ) {
+                               html += '<span class="rvslider-legend-box" 
style="color:' + sectionMap[ sectionName ] + ';"> ■</span>' + sectionName;
+                       }
+                       return html + '</div>';
+               }
+       } );
+
+       mw.libs.revisionSlider = mw.libs.revisionSlider || {};
+       mw.libs.revisionSlider.SectionLegend = SectionLegend;
+}( mediaWiki, jQuery ) );
diff --git a/modules/ext.RevisionSlider.SliderView.js 
b/modules/ext.RevisionSlider.SliderView.js
index 0586229..93a3c5c 100644
--- a/modules/ext.RevisionSlider.SliderView.js
+++ b/modules/ext.RevisionSlider.SliderView.js
@@ -30,7 +30,8 @@
 
                render: function ( $container ) {
                        var containerWidth = 
this.calculateSliderContainerWidth(),
-                               $revisions = 
this.slider.getRevisions().getView().render( this.revisionWidth ),
+                               sectionLegend = new 
mw.libs.revisionSlider.SectionLegend( this.slider.getRevisions() ),
+                               $revisions = 
this.slider.getRevisions().getView().render( this.revisionWidth, 
sectionLegend.getSectionColorMap() ),
                                $slider = $( '<div class="revision-slider"/>' ),
                                self = this;
 
@@ -59,7 +60,8 @@
                                                } )
                                                .append( 
this.leftPointer.getView().render() )
                                                .append( 
this.rightPointer.getView().render() )
-                               );
+                               )
+                               .append( sectionLegend.getHtml() );
 
                        $slider.find( '.arrow' ).click( function () {
                                self.slide( $( this ).data( 'dir' ) );
diff --git a/modules/ext.RevisionSlider.init.js 
b/modules/ext.RevisionSlider.init.js
index adf8be7..ecdbcdc 100755
--- a/modules/ext.RevisionSlider.init.js
+++ b/modules/ext.RevisionSlider.init.js
@@ -9,16 +9,6 @@
        //      location.href = $url;
        // }
 
-       // function getSectionLegend( revs ) {
-       //      var revData = getComposedRevData( revs ),
-       //              html = '<div class="revisions-legend">',
-       //              sectionName;
-       //      for ( sectionName in revData.sectionMap ) {
-       //              html += '<span class="rvslider-legend-box" 
style="color:' + revData.sectionMap[ sectionName ] + ';"> ■</span>' + 
sectionName;
-       //      }
-       //      return html + '</div>';
-       // }
-
        mw.loader.using( [ 'jquery.ui.draggable', 'jquery.ui.tooltip', 
'jquery.tipsy' ], function () {
                $( function () {
                        mw.libs.revisionSlider.fetchRevisions( {
@@ -41,8 +31,6 @@
                                        slider.getView().render( $container );
 
                                        $( '#revision-slider-placeholder' 
).remove();
-
-                                       // TODO add the legend back!
                                }
                        } );
                } );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6ad89e2b15435ef35cc1ebddde0f92584ffd9ecf
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/RevisionSlider
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>

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

Reply via email to