jenkins-bot has submitted this change and it was merged.

Change subject: Refactor the click handlers for requests
......................................................................


Refactor the click handlers for requests

Change-Id: I148ceac9b95aaf4a593a8f2c8a344cbcd4fc6e85
---
M resources/js/ext.translate.special.translatesandbox.js
1 file changed, 155 insertions(+), 128 deletions(-)

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



diff --git a/resources/js/ext.translate.special.translatesandbox.js 
b/resources/js/ext.translate.special.translatesandbox.js
index 5be8ed5..c0facae 100644
--- a/resources/js/ext.translate.special.translatesandbox.js
+++ b/resources/js/ext.translate.special.translatesandbox.js
@@ -332,6 +332,156 @@
                $requestsPane.find( '.requests-list' ).css( 'max-height', 
requestsHeight );
        }
 
+       function selectAllRequests() {
+               var selectedCount,
+                       $requestCheckboxes = $( '.request-selector' ),
+                       $detailsPane = $( '.details.pane' ),
+                       $selectAll = $( '.request-selector-all' ),
+                       $requestRows = $( '.requests .request' ),
+                       selectAllChecked = $selectAll.prop( 'checked' ),
+                       $visibleRows = $requestRows.not( '.hide' );
+
+               $visibleRows.each( function ( index, row ) {
+                       $( row ).find( '.request-selector' ).prop( {
+                               checked: selectAllChecked,
+                               disabled: false
+                       } );
+               } );
+
+               if ( selectAllChecked ) {
+                       displayOnMultipleSelection();
+                       $visibleRows.addClass( 'selected' );
+                       selectedCount = $requestCheckboxes.filter( ':checked' 
).length;
+               } else {
+                       $detailsPane.empty();
+                       $requestRows.removeClass( 'selected' );
+                       selectedCount = 0;
+               }
+
+               updateSelectedIndicator( selectedCount );
+               indicateOlderRequests();
+       }
+
+       /**
+        * Handle click on request row
+        * @param {jQuery.Event} e
+        */
+       function onSelectRequest( e ) {
+               var $requestRow = $( e.target ).closest( '.request'),
+                       $requestRows = $( '.requests .request' ),
+                       $selectAll = $( '.request-selector-all' );
+
+               displayRequestDetails( $requestRow.data( 'data' ) );
+
+               // Clicking a row makes only that row selected and unselects 
all other rows
+               $requestRows.each( function ( i, row ) {
+                       var $row = $( row );
+
+                       if ( row === $requestRow[0] ) {
+                               $row.addClass( 'selected' )
+                                       .find( '.request-selector' ).prop( {
+                                               checked: true,
+                                               disabled: true
+                                       } );
+                       } else {
+                               $row.removeClass( 'selected' )
+                                       .find( '.request-selector' ).prop( {
+                                               checked: false,
+                                               disabled: false
+                                       } );
+                       }
+               } );
+
+               $selectAll.prop( 'indeterminate', true );
+
+               updateSelectedIndicator( 1 );
+               indicateOlderRequests();
+       }
+
+       /**
+        * Event handler for request checkbox selection
+        * @param {jQuery.Event} e
+        */
+       function requestSelectHandler( e ) {
+               var checkedCount, $checkedBoxes,
+                       request = e.target,
+                       $detailsPane = $( '.details.pane' ),
+                       $requestCheckboxes = $( '.request-selector' ),
+                       $selectAll = $( '.request-selector-all' ),
+                       $thisRequestRow = $( request ).parents( 'div.request' );
+
+               // Uncheck the rows that were selected by clicking the row
+               $requestCheckboxes.filter( ':disabled' ).prop( 'disabled', 
false );
+
+               if ( request.checked ) {
+                       $thisRequestRow.addClass( 'selected' );
+               } else {
+                       $thisRequestRow.removeClass( 'selected' );
+               }
+
+               $checkedBoxes = $requestCheckboxes.filter( ':checked' );
+               checkedCount = $checkedBoxes.length;
+
+               if ( checkedCount === $requestCheckboxes.length ) {
+                       // All boxes are selected
+                       $selectAll.prop( {
+                               checked: true,
+                               indeterminate: false
+                       } );
+
+                       displayOnMultipleSelection();
+               } else if ( checkedCount === 0 ) {
+                       // No boxes are selected
+                       $selectAll.prop( {
+                               checked: false,
+                               indeterminate: false
+                       } );
+
+                       $detailsPane.empty();
+               } else if ( checkedCount === 1 ) {
+                       $selectAll.prop( {
+                               checked: false,
+                               indeterminate: true
+                       } );
+
+                       $checkedBoxes.prop( 'disabled', true );
+
+                       // Here we know that only one checkbox is selected,
+                       // so it's OK to query the data from it
+                       displayRequestDetails( $checkedBoxes.parents( 
'div.request' ).data( 'data' ) );
+               } else {
+                       $selectAll.prop( {
+                               checked: false,
+                               indeterminate: true
+                       } );
+
+                       displayOnMultipleSelection();
+               }
+
+               updateSelectedIndicator( checkedCount );
+               indicateOlderRequests();
+
+               e.stopPropagation();
+       }
+
+       /**
+        * Old request click handler
+        * @param {jQuery.Event} e
+        */
+       function oldRequestSelector( e ) {
+               var $requestRows = $( '.requests .request' ),
+                       $lastSelectedRequest = $requestRows.filter( '.selected' 
).last(),
+                       $olderRequests = $lastSelectedRequest.nextAll( 
':not(.hide)' );
+
+               $olderRequests.each( function( index, request ) {
+                       $( request ).find( '.request-selector' )
+                               .prop( 'checked', true ) // Otherwise the state 
doesn't actually change
+                               .change();
+               } );
+
+               e.preventDefault();
+       }
+
        $( document ).ready( function () {
                var $requestCheckboxes = $( '.request-selector' ),
                        $selectAll = $( '.request-selector-all' ),
@@ -346,141 +496,18 @@
                $( '.language-selector' ).languageFilter();
 
                // Handle clicks for the 'Select all' checkbox
-               $selectAll.on( 'click', function () {
-                       var selectedCount,
-                               selectAllChecked = this.checked,
-                               $visibleRows = $requestRows.not( '.hide' );
-
-                       $visibleRows.each( function ( index, row ) {
-                               $( row ).find( '.request-selector' ).prop( {
-                                       checked: selectAllChecked,
-                                       disabled: false
-                               } );
-                       } );
-
-                       if ( selectAllChecked ) {
-                               displayOnMultipleSelection();
-                               $visibleRows.addClass( 'selected' );
-                               selectedCount = $requestCheckboxes.filter( 
':checked' ).length;
-                       } else {
-                               $detailsPane.empty();
-                               $requestRows.removeClass( 'selected' );
-                               selectedCount = 0;
-                       }
-
-                       updateSelectedIndicator( selectedCount );
-                       indicateOlderRequests();
-               } );
-
-               $requestCheckboxes.on( 'click change', function ( e ) {
-                       var checkedCount, $checkedBoxes,
-                               $thisRequestRow = $( this ).parents( 
'div.request' );
-
-                       // Uncheck the rows that were selected by clicking the 
row
-                       $requestCheckboxes.filter( ':disabled' ).prop( 
'disabled', false );
-
-                       if ( this.checked ) {
-                               $thisRequestRow.addClass( 'selected' );
-                       } else {
-                               $thisRequestRow.removeClass( 'selected' );
-                       }
-
-                       $checkedBoxes = $requestCheckboxes.filter( ':checked' );
-                       checkedCount = $checkedBoxes.length;
-
-                       if ( checkedCount === $requestCheckboxes.length ) {
-                               // All boxes are selected
-                               $selectAll.prop( {
-                                       checked: true,
-                                       indeterminate: false
-                               } );
-
-                               displayOnMultipleSelection();
-                       } else if ( checkedCount === 0 ) {
-                               // No boxes are selected
-                               $selectAll.prop( {
-                                       checked: false,
-                                       indeterminate: false
-                               } );
-
-                               $detailsPane.empty();
-                       } else if ( checkedCount === 1 ) {
-                               $selectAll.prop( {
-                                       checked: false,
-                                       indeterminate: true
-                               } );
-
-                               $checkedBoxes.prop( 'disabled', true );
-
-                               // Here we know that only one checkbox is 
selected,
-                               // so it's OK to query the data from it
-                               displayRequestDetails( $checkedBoxes.parents( 
'div.request' ).data( 'data' ) );
-                       } else {
-                               $selectAll.prop( {
-                                       checked: false,
-                                       indeterminate: true
-                               } );
-
-                               displayOnMultipleSelection();
-                       }
-
-                       updateSelectedIndicator( checkedCount );
-                       indicateOlderRequests();
-
-                       e.stopPropagation();
-               } );
-
+               $selectAll.on( 'click', selectAllRequests );
+               // Handle clicks on request checkboxes.
+               $requestCheckboxes.on( 'click change', requestSelectHandler );
                // Handle clicks on request rows.
-               $requestRows.on( 'click', function () {
-                       var requestRow = this;
-
-                       displayRequestDetails( $( requestRow ).data( 'data' ) );
-
-                       // Clicking a row makes only that row selected and 
unselects all other rows
-                       $requestRows.each( function ( i, row ) {
-                               var $row = $( row );
-
-                               if ( row === requestRow ) {
-                                       $row.addClass( 'selected' )
-                                               .find( '.request-selector' 
).prop( {
-                                                       checked: true,
-                                                       disabled: true
-                                               } );
-                               } else {
-                                       $row.removeClass( 'selected' )
-                                               .find( '.request-selector' 
).prop( {
-                                                       checked: false,
-                                                       disabled: false
-                                               } );
-                               }
-                       } );
-
-                       $selectAll.prop( 'indeterminate', true );
-
-                       updateSelectedIndicator( 1 );
-                       indicateOlderRequests();
-               } );
-
-               $( '.older-requests-indicator' ).on( 'click', function ( e ) {
-                       var $lastSelectedRequest = $requestRows.filter( 
'.selected' ).last(),
-                               $olderRequests = $lastSelectedRequest.nextAll( 
':not(.hide)' );
-
-                       $olderRequests.each( function( index, request ) {
-                               $( request ).find( '.request-selector' )
-                                       .prop( 'checked', true ) // Otherwise 
the state doesn't actually change
-                                       .change();
-
-                       } );
-
-                       e.preventDefault();
-               } );
+               $requestRows.on( 'click',  onSelectRequest );
+               $( '.older-requests-indicator' ).on( 'click',  
oldRequestSelector );
 
                if ( $requestRows.length ) {
                        $requestRows.first().click();
                } else {
                        $detailsPane.text( mw.msg( 
'tsb-no-requests-from-new-users' ) );
                }
-
        } );
 
        // ======================================

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I148ceac9b95aaf4a593a8f2c8a344cbcd4fc6e85
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>
Gerrit-Reviewer: Amire80 <[email protected]>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to