@@ -95,9 +95,12 @@ var loadGrid = function(canonical_event_key = null, cand_events_str = null) {
9595 // get rid of loading flash
9696 $ ( '.flash' ) . hide ( ) ;
9797 $ ( '.flash' ) . removeClass ( 'alert-info' ) ;
98+ 9899 return true ;
99100 } )
100101 . fail ( function ( ) { return makeError ( req . responseText ) ; } ) ;
102+ 103+ return true ;
101104}
102105
103106
@@ -279,25 +282,49 @@ var makeError = function(msg) {
279282
280283/**
281284 * Marks the given candidate events as in the grid.
285+ * @param {str } cand_events - optional array of candidate event ids.
282286 * */
283- var markGridEvents = function ( ) {
284- let search_params = new URLSearchParams ( window . location . search ) ;
285- var cand_events = search_params . get ( 'cand_events' ) . split ( ',' ) ;
287+ var markGridEvents = function ( cand_events = null ) {
288+ // If we don't get cand_events, get them from the URL.
289+ if ( cand_events == null ) {
290+ var search_params = new URLSearchParams ( window . location . search ) ;
291+ cand_events = search_params . get ( 'cand_events' ) . split ( ',' ) ;
292+ }
286293
287294 // Mark all events as not in the grid.
288- $ ( '.event-desc' ) . each ( function ( ) {
289- $ ( this ) . find ( '.cande -isactive' ) . hide ( ) ;
290- $ ( this ) . find ( '.cande -makeactive' ) . show ( ) ;
295+ $ ( '.event-desc.candidate-search ' ) . each ( function ( ) {
296+ $ ( this ) . find ( '.cand -isactive' ) . hide ( ) ;
297+ $ ( this ) . find ( '.cand -makeactive' ) . show ( ) ;
291298 } ) ;
292299
293300 // Mark events which are in the grid as active.
294301 for ( var i = 0 ; i < cand_events . length ; i ++ ) {
295302 let event_desc = $ ( '.event-desc[data-event="' + cand_events [ i ] + '"]' ) ;
296- event_desc . find ( '.cande -isactive' ) . show ( ) ;
297- event_desc . find ( '.cande -makeactive' ) . hide ( ) ;
303+ event_desc . find ( '.cand -isactive' ) . show ( ) ;
304+ event_desc . find ( '.cand -makeactive' ) . hide ( ) ;
298305 }
299306}
300307
308+ /**
309+ * Marks the given canonical event as in the grid.
310+ * @param {str } event_desc - optional element to mark as active.
311+ */
312+ var markCanonicalGridEvent = function ( event_desc = null ) {
313+ console . log ( "Marking canonical events as not active." ) ;
314+ 315+ // Mark all canonical event search results as not in the grid.
316+ $ ( '.event-desc.canonical-search' ) . each ( function ( ) {
317+ $ ( this ) . find ( '.canonical-isactive' ) . hide ( ) ;
318+ $ ( this ) . find ( '.canonical-makeactive' ) . show ( ) ;
319+ } ) ;
320+ 321+ // Mark the current canonical event as active.
322+ if ( event_desc != null ) {
323+ event_desc . find ( '.canonical-isactive' ) . show ( ) ;
324+ event_desc . find ( '.canonical-makeactive' ) . hide ( ) ;
325+ }
326+ } ;
327+ 301328/**
302329 * Initialize listeners for search pane.
303330 * Will need to perform this on every reload of the search pane.
@@ -307,12 +334,13 @@ var initializeSearchListeners = function() {
307334 var MAX_CAND_EVENTS = 4 ;
308335
309336 // listeners for current search results
310- $ ( '.cande -makeactive' ) . click ( function ( e ) {
337+ $ ( '.cand -makeactive' ) . click ( function ( e ) {
311338 e . preventDefault ( ) ;
312339
340+ var search_params = new URLSearchParams ( window . location . search ) ;
341+ 313342 var event_desc = $ ( e . target ) . closest ( '.event-desc' ) ;
314343 var event_id = event_desc . attr ( 'data-event' ) ;
315- let search_params = new URLSearchParams ( window . location . search ) ;
316344 var cand_events = search_params . get ( 'cand_events' ) . split ( ',' ) ;
317345
318346 // remove last event from the list if full
@@ -326,40 +354,42 @@ var initializeSearchListeners = function() {
326354 // add this event to the list
327355 cand_events . push ( event_id ) ;
328356
329- loadGrid (
357+ let success = loadGrid (
330358 canonical_event_key = search_params . get ( 'canonical_event_key' ) ,
331359 cand_events_str = cand_events . join ( ',' )
332360 ) ;
333- 334- // update all grid events
335- markGridEvents ( ) ;
336361
337- // $(e.target).hide();
338- // event_desc.find('.cande-isactive').show();
362+ if ( success ) {
363+ markGridEvents ( cand_events ) ;
364+ }
339365
340366 return true ;
341367 } ) ;
368+ }
342369
343- // listener for canonical event.
344- $ ( 'b.ce-makeactive' ) . each ( function ( ) {
345- $ ( this ) . click ( function ( ) {
346- // get key and id from event-desc
347- var search_canonical_event = $ ( this ) . closest ( '.event-desc' ) ;
348- var canonical_event_id = search_canonical_event . attr ( 'id' ) . split ( '_' ) [ 1 ] ;
349- var canonical_event_key = search_canonical_event . attr ( 'data-key' ) ;
350- 351- var success = loadGrid (
352- canonical_event_key = canonical_event_key ,
353- cand_events_str = getCandidates ( )
354- ) ;
370+ /**
371+ * Initialize canonical search listeners.
372+ */
373+ var initializeCanonicalSearchListeners = function ( ) {
374+ // Listener for canonical event search.
375+ $ ( '.canonical-makeactive' ) . click ( function ( e ) {
376+ e . preventDefault ( ) ;
355377
356- if ( success ) {
357- // toggle search buttons
358- $ ( '#search-canonical-event_' + canonical_event_id + ' b.ce-isactive' ) . show ( ) ;
359- $ ( '#search-canonical-event_' + canonical_event_id + ' b.ce-makeactive' ) . hide ( ) ;
360- }
361- } ) ;
362- } ) ;
378+ // get event desc
379+ var event_desc = $ ( e . target ) . closest ( '.event-desc' ) ;
380+ 381+ // get key and id from event-desc
382+ var canonical_event_key = event_desc . attr ( 'data-key' ) ;
383+ 384+ var success = loadGrid (
385+ canonical_event_key = canonical_event_key ,
386+ cand_events_str = getCandidates ( )
387+ ) ;
388+ 389+ if ( success ) {
390+ markCanonicalGridEvent ( event_desc ) ;
391+ }
392+ } ) ;
363393}
364394
365395/**
@@ -599,13 +629,11 @@ var initializeGridListeners = function() {
599629
600630 // Remove canonical event from grid
601631 $ ( 'div.canonical-event-metadata a.glyphicon-remove-sign' ) . click ( function ( ) {
602- var canonical_event_id = $ ( 'div.canonical-event-metadata' ) . attr ( 'id' ) . split ( '_' ) [ 1 ] ;
603632 var success = loadGrid ( '' , getCandidates ( ) ) ;
604633
605634 // Change the buttons in the search section
606635 if ( success ) {
607- $ ( '#search-canonical-event_' + canonical_event_id + ' b.ce-isactive' ) . hide ( ) ;
608- $ ( '#search-canonical-event_' + canonical_event_id + ' b.ce-makeactive' ) . show ( ) ;
636+ markCanonicalGridEvent ( ) ;
609637 }
610638 } ) ;
611639}
@@ -722,6 +750,9 @@ $(function () {
722750 // Update the canonical events in the search list
723751 $ ( '#canonical-search-block' ) . html ( req . responseText ) ;
724752
753+ // Initialize the listeners for the new canonical search results
754+ initializeCanonicalSearchListeners ( ) ;
755+ 725756 // get rid of loading flash
726757 $ ( '.flash' ) . hide ( ) ;
727758 $ ( '.flash' ) . removeClass ( 'alert-info' ) ;
@@ -758,5 +789,5 @@ $(function () {
758789 loadGrid (
759790 search_params . get ( 'canonical_event_key' ) ,
760791 search_params . get ( 'cand_events' )
761- )
792+ ) ;
762793} ) ;
0 commit comments