1- $ ( document )
2- . ready ( function ( ) {
3- var form = $ ( "form.review-requests" ) ;
4- var saveButtons = form . find ( "[name=action][value^='save']" ) ;
5-
6- function updateSaveButtons ( ) {
7- saveButtons . prop ( "disabled" , form . find ( "[name$='-action'][value][value!=']" )
8- . length == 0 ) ;
9- }
1+ /* global $ */
2+ $ ( function ( ) {
3+ 'use strict'
4+ const form = $ ( 'form.review-requests' )
5+ const saveButtons = form . find ( '[name=action][value^="save"]' )
6+
7+ function updateSaveButtons ( ) {
8+ saveButtons . prop (
9+ 'disabled' ,
10+ form . find ( '[name$="-action"][value][value!=""]' ) . length === 0
11+ )
12+ }
13+
14+ function setControlDisplay ( row ) {
15+ const action = row . find ( '[name$="-action"]' ) . val ( )
16+ switch ( action ) {
17+ case 'assign' :
18+ row . find ( '.reviewer-controls' ) . show ( )
19+ row . find ( '.close-controls' ) . hide ( )
20+ row . find ( '.assign-action,.close-action' ) . hide ( )
21+ break
22+
23+ case 'close' :
24+ row . find ( '.reviewer-controls' ) . hide ( )
25+ row . find ( '.close-controls' ) . show ( )
26+ row . find ( '.assign-action,.close-action' ) . hide ( )
27+ break
28+
29+ default :
30+ row . find ( '.reviewer-controls,.close-controls' ) . hide ( )
31+ row . find ( '.assign-action,.close-action' ) . show ( )
32+ }
33+
34+ updateSaveButtons ( )
35+ }
36+
37+ form . find ( '.assign-action button' )
38+ . on ( 'click' , function ( ) {
39+ const row = $ ( this ) . closest ( '.review-request' )
40+ const select = row . find ( '.reviewer-controls [name$="-reviewer"]' )
41+ if ( ! select . val ( ) ) {
42+ // collect reviewers already assigned in this session
43+ const reviewerAssigned = { }
44+ select . find ( 'option' )
45+ . each ( function ( ) {
46+ if ( this . value ) {
47+ reviewerAssigned [ this . value ] = 0
48+ }
49+ } )
50+
51+ form . find ( '[name$="-action"][value="assign"]' )
52+ . each ( function ( ) {
53+ const v = $ ( this )
54+ . closest ( '.review-request' )
55+ . find ( '[name$="-reviewer"]' )
56+ . val ( )
57+ if ( v ) {
58+ reviewerAssigned [ v ] += 1
59+ }
60+ } )
1061
11- function setControlDisplay ( row ) {
12- var action = row . find ( "[name$='-action']" )
13- . val ( ) ;
14- if ( action == "assign" ) {
15- row . find ( ".reviewer-controls" )
16- . show ( ) ;
17- row . find ( ".close-controls" )
18- . hide ( ) ;
19- row . find ( ".assign-action,.close-action" )
20- . hide ( ) ;
21- } else if ( action == "close" ) {
22- row . find ( ".reviewer-controls" )
23- . hide ( ) ;
24- row . find ( ".close-controls" )
25- . show ( ) ;
26- row . find ( ".assign-action,.close-action" )
27- . hide ( ) ;
28- } else {
29- row . find ( ".reviewer-controls,.close-controls" )
30- . hide ( ) ;
31- row . find ( ".assign-action,.close-action" )
32- . show ( ) ;
62+ // by default, the select box contains a sorted list, so
63+ // we should be able to select the first, unless that
64+ // person has already been assigned to review in this
65+ // session
66+ let found = null
67+ const options = select . find ( 'option' ) . get ( )
68+ for ( let round = 0 ; round < 100 && ! found ; ++ round ) {
69+ for ( let i = 0 ; i < options . length && ! found ; ++ i ) {
70+ const v = options [ i ] . value
71+ if ( ! v ) {
72+ continue
3373 }
3474
35- updateSaveButtons ( ) ;
75+ if ( reviewerAssigned [ v ] === round ) {
76+ found = v
77+ }
78+ }
3679 }
3780
38- form . find ( ".assign-action button" )
39- . on ( "click" , function ( ) {
40- var row = $ ( this )
41- . closest ( ".review-request" ) ;
42-
43- var select = row . find ( ".reviewer-controls [name$='-reviewer']" ) ;
44- if ( ! select . val ( ) ) {
45- // collect reviewers already assigned in this session
46- var reviewerAssigned = { } ;
47- select . find ( "option" )
48- . each ( function ( ) {
49- if ( this . value )
50- reviewerAssigned [ this . value ] = 0 ;
51- } ) ;
52-
53- form . find ( "[name$='-action'][value='assign']" )
54- . each ( function ( ) {
55- var v = $ ( this )
56- . closest ( ".review-request" )
57- . find ( "[name$='-reviewer']" )
58- . val ( ) ;
59- if ( v )
60- reviewerAssigned [ v ] += 1 ;
61- } ) ;
62-
63- // by default, the select box contains a sorted list, so
64- // we should be able to select the first, unless that
65- // person has already been assigned to review in this
66- // session
67- var found = null ;
68- var options = select . find ( "option" )
69- . get ( ) ;
70- for ( var round = 0 ; round < 100 && ! found ; ++ round ) {
71- for ( var i = 0 ; i < options . length && ! found ; ++ i ) {
72- var v = options [ i ] . value ;
73- if ( ! v )
74- continue ;
75-
76- if ( reviewerAssigned [ v ] == round )
77- found = v ;
78- }
79- }
80-
81- if ( found )
82- select . val ( found ) ;
83- }
84-
85- row . find ( "[name$='-action']" )
86- . val ( "assign" ) ;
87- setControlDisplay ( row ) ;
88- } ) ;
89-
90- form . find ( ".reviewer-controls .undo" )
91- . on ( "click" , function ( ) {
92- var row = $ ( this )
93- . closest ( ".review-request" ) ;
94- row . find ( "[name$='-action']" )
95- . val ( "" ) ;
96- row . find ( "[name$='-reviewer']" )
97- . val ( $ ( this )
98- . data ( "initial" ) ) ;
99- setControlDisplay ( row ) ;
100- } ) ;
101-
102- form . find ( ".close-action button" )
103- . on ( "click" , function ( ) {
104- var row = $ ( this )
105- . closest ( ".review-request" ) ;
106- row . find ( "[name$='-action']" )
107- . val ( "close" ) ;
108- setControlDisplay ( row ) ;
109- } ) ;
110-
111- form . find ( ".close-controls .undo" )
112- . on ( "click" , function ( ) {
113- var row = $ ( this )
114- . closest ( ".review-request" ) ;
115- row . find ( "[name$='-action']" )
116- . val ( "" ) ;
117- setControlDisplay ( row ) ;
118- } ) ;
119-
120- form . find ( "[class$='-action']" )
121- . each ( function ( ) {
122- var row = $ ( this )
123- . closest ( ".review-request" ) ;
124- setControlDisplay ( row ) ;
125- } ) ;
126-
127- updateSaveButtons ( ) ;
128- } ) ;
81+ if ( found ) {
82+ select . val ( found )
83+ }
84+ }
85+
86+ row . find ( '[name$="-action"]' ) . val ( 'assign' )
87+ setControlDisplay ( row )
88+ } )
89+
90+ form . find ( '.reviewer-controls .undo' )
91+ . on ( 'click' , function ( ) {
92+ const row = $ ( this ) . closest ( '.review-request' )
93+ row . find ( '[name$="-action"]' ) . val ( '' )
94+ row . find ( '[name$="-reviewer"]' ) . val ( $ ( this ) . data ( 'initial' ) )
95+ setControlDisplay ( row )
96+ } )
97+
98+ form . find ( '.close-action button' )
99+ . on ( 'click' , function ( ) {
100+ const row = $ ( this ) . closest ( '.review-request' )
101+ row . find ( '[name$="-action"]' ) . val ( 'close' )
102+ setControlDisplay ( row )
103+ } )
104+
105+ form . find ( '.close-controls .undo' )
106+ . on ( 'click' , function ( ) {
107+ const row = $ ( this ) . closest ( '.review-request' )
108+ row . find ( '[name$="-action"]' ) . val ( '' )
109+ setControlDisplay ( row )
110+ } )
111+
112+ form . find ( '.assign-action,.close-action' )
113+ . each ( function ( ) {
114+ const row = $ ( this ) . closest ( '.review-request' )
115+ setControlDisplay ( row )
116+ } )
117+
118+ updateSaveButtons ( )
119+ } )
0 commit comments