11
2- var MAX_CAND_EVENTS = 4 ;
3- 42/**
53 *
64 * @param {* } e - Event
@@ -36,17 +34,6 @@ var changeTab = function(e, level = "") {
3634 return false ;
3735}
3836
39- /**
40- * Wrapper to change subtabs
41- * @param {* } e - Event
42- * @returns false
43- * */
44- var changeSubTab = function ( e ) {
45- changeTab ( e , "sub" ) ;
46- return false ;
47- }
48- 49- 5037/**
5138 * Gets the current candidate events in the grid
5239 * @param {str } to_exclude - candidates to exclude
@@ -177,6 +164,7 @@ var removeCanonical = function () {
177164 var new_url = 'adj?' + curr_search_params . toString ( ) ;
178165 window . history . pushState ( { path : new_url } , '' , new_url ) ;
179166
167+ markGridEvents ( ) ;
180168 initializeSearchListeners ( ) ;
181169
182170 // get rid of loading flash
@@ -288,18 +276,43 @@ var makeError = function(msg) {
288276 return false ;
289277}
290278
279+ /**
280+ * Marks the given candidate events as in the grid.
281+ * */
282+ var markGridEvents = function ( ) {
283+ let search_params = new URLSearchParams ( window . location . search ) ;
284+ var cand_events = search_params . get ( 'cand_events' ) . split ( ',' ) ;
285+ 286+ // Mark all events as not in the grid.
287+ $ ( '.event-desc' ) . each ( function ( ) {
288+ $ ( this ) . find ( '.cande-isactive' ) . hide ( ) ;
289+ $ ( this ) . find ( '.cande-makeactive' ) . show ( ) ;
290+ } ) ;
291+ 292+ // Mark events which are in the grid as active.
293+ for ( var i = 0 ; i < cand_events . length ; i ++ ) {
294+ let event_desc = $ ( '.event-desc[data-event="' + cand_events [ i ] + '"]' ) ;
295+ event_desc . find ( '.cande-isactive' ) . show ( ) ;
296+ event_desc . find ( '.cande-makeactive' ) . hide ( ) ;
297+ }
298+ }
299+ 291300/**
292301 * Initialize listeners for search pane.
293302 * Will need to perform this on every reload of the search pane.
294303 *
295304 */
296305var initializeSearchListeners = function ( ) {
306+ var MAX_CAND_EVENTS = 4 ;
307+ 297308 // listeners for current search results
298309 $ ( '.cande-makeactive' ) . click ( function ( e ) {
310+ e . preventDefault ( ) ;
311+ 299312 var event_desc = $ ( e . target ) . closest ( '.event-desc' ) ;
300313 var event_id = event_desc . attr ( 'data-event' ) ;
301314 let search_params = new URLSearchParams ( window . location . search ) ;
302- var cand_events = search_params . get ( 'cand_events' ) . split ( ',' ) ;
315+ var cand_events = search_params . get ( 'cand_events' ) . split ( ',' ) ;
303316
304317 // remove last event from the list if full
305318 if ( cand_events . length == MAX_CAND_EVENTS ) {
@@ -316,10 +329,12 @@ var initializeSearchListeners = function() {
316329 canonical_event_key = search_params . get ( 'canonical_event_key' ) ,
317330 cand_events_str = cand_events . join ( ',' )
318331 ) ;
332+ 333+ // update all grid events
334+ markGridEvents ( ) ;
319335
320- // hide link to add to grid, show cande-isactive
321- $ ( e . target ) . hide ( ) ;
322- event_desc . find ( '.cande-isactive' ) . show ( ) ;
336+ // $(e.target).hide();
337+ // event_desc.find('.cande-isactive').show();
323338
324339 return true ;
325340 } ) ;
@@ -499,6 +514,8 @@ var initializeGridListeners = function() {
499514 canonical_event_key = canonical_event_key ,
500515 cand_event_str = getCandidates ( to_exclude )
501516 ) ;
517+ 518+ markGridEvents ( ) ;
502519 } ) ;
503520
504521 // Remove the link to this canonical event
@@ -573,8 +590,12 @@ $(function () {
573590 } ) ;
574591
575592 // Add listener to subtab links
576- $ ( ".subtablinks" ) . each ( function ( ) {
577- $ ( this ) . click ( changeSubTab ) ;
593+ $ ( ".cand-subtablinks" ) . each ( function ( ) {
594+ $ ( this ) . click ( function ( e ) { changeTab ( e , 'cand-sub' ) ; } ) ;
595+ } ) ;
596+ 597+ $ ( ".canonical-subtablinks" ) . each ( function ( ) {
598+ $ ( this ) . click ( function ( e ) { changeTab ( e , 'canonical-sub' ) ; } ) ;
578599 } ) ;
579600
580601 // hide search panel
@@ -643,6 +664,38 @@ $(function () {
643664 } ) ;
644665 } ) ;
645666
667+ // Listener for canonical event search
668+ $ ( '#canonical-search-button' ) . click ( function ( e ) {
669+ e . preventDefault ( ) ;
670+ // Get the canonical event key from the search box
671+ var canonical_search_term = $ ( '#canonical-search-term' ) . val ( ) ;
672+ 673+ // Get the candidates from the database
674+ var req = $ . ajax ( {
675+ url : $SCRIPT_ROOT + '/search_canonical' ,
676+ type : "POST" ,
677+ data : {
678+ canonical_search_term : canonical_search_term
679+ } ,
680+ beforeSend : function ( ) {
681+ $ ( '.flash' ) . removeClass ( 'alert-danger' ) ;
682+ $ ( '.flash' ) . addClass ( 'alert-info' ) ;
683+ $ ( '.flash' ) . text ( "Loading..." ) ;
684+ $ ( '.flash' ) . show ( ) ;
685+ }
686+ } )
687+ . done ( function ( ) {
688+ // Update the canonical events in the search list
689+ $ ( '#canonical-search-block' ) . html ( req . responseText ) ;
690+ 691+ // get rid of loading flash
692+ $ ( '.flash' ) . hide ( ) ;
693+ $ ( '.flash' ) . removeClass ( 'alert-info' ) ;
694+ return true ;
695+ } )
696+ . fail ( function ( ) { return makeError ( req . responseText ) ; } ) ;
697+ } ) ;
698+ 646699 // initialize the grid and search
647700 let search_params = new URLSearchParams ( window . location . search ) ;
648701 var repeated_fields = [
0 commit comments