@@ -44,9 +44,9 @@ <h1>Extractor Catalog</h1>
4444 < div class ="control-group ">
4545 < div class ="btn-group " data-toggle ="buttons ">
4646 @for(label < - catLabels) {
47- < label class ="btn btn-primary active ">
48- < input id =" [email protected] " class =" label-checkbox " type ="
checkbox "
autocomplete ="
off "
checked > @label.name
49- </ label >
47+ < button onclick =" submitFilters('@ label.name', this) " id =" [email protected] " role =" button " class ="
btn btn-primary label-filter-btn "
> 48+ < input type ="checkbox " autocomplete ="off " checked > @label.name
49+ </ button >
5050 }
5151 </ div >
5252 </ div >
@@ -71,11 +71,11 @@ <h1>Extractor Catalog</h1>
7171 </ div >
7272 </ div >
7373
74- <!-- TODO: Process trigger search filter -->
74+ <!-- Process trigger search filter -->
7575 < div class ="form-group ">
7676 < label for ="processTriggerSearchFilter " class ="col-sm-3 control-label "> Triggers On:</ label >
7777 < div class ="col-sm-9 ">
78- < select class ="form-control " name ="processTriggerSearchFilter " id ="processTriggerSearchFilter " onchange ="this.form.submit( ) ">
78+ < select class ="form-control " name ="processTriggerSearchFilter " id ="processTriggerSearchFilter " onchange ="submitFilters(null, this ) ">
7979 < option > file/*</ option >
8080 < option > dataset/*</ option >
8181 < option > metadata/*</ option >
@@ -344,26 +344,38 @@ <h1>Extractor Catalog</h1>
344344 </ div >
345345 </ div>
346346
347- @if(showOptional("filterSection")) {
348- < script >
349- $ ( 'document' ) . ready ( function ( ) {
350- var params = new URLSearchParams ( window . location . search ) ;
351- var processTriggerParam = "processTriggerSearchFilter"
352- if ( params . has ( processTriggerParam ) ) {
353- document . getElementById ( processTriggerParam ) . value = params . get ( processTriggerParam ) ;
354- }
355- var labelsParam = "labelsFilter"
356- if ( params . has ( labelsParam ) ) {
357- // If we have a label param, uncheck all other labels
358- var labelNames = params . get ( labelsParam ) . split ( ',' ) ;
359- if ( labels => 1 ) { $ ( '.label-checkbox' ) . prop ( "checked" , false ) ; }
360-
361- // Check only the labels in the query string
362- labelNames . forEach ( function ( labelName ) {
363- $ ( 'label-' + labelName ) . prop ( "checked" , true ) ;
364- } ) ;
365- }
366- } ) ;
367- </ script >
368- }
347+ < script >
348+ function submitFilters ( labelName , context ) {
349+ // Grab existing query string values
350+ var currentParams = new URLSearchParams ( window . location . search ) ;
351+ var targets = context . formAction . split ( '@routes.Extractors.selectExtractors()' )
352+
353+ // Set new query strings parameters based on form value
354+ var newParams = new URLSearchParams ( targets [ 1 ] ) ;
355+ var newLabelName = labelName || currentParams . get ( 'labelFilter' )
356+ if ( newLabelName ) {
357+ newParams . set ( 'labelFilter' , newLabelName ) ;
358+ }
359+ window . location . search = newParams . toString ( ) ;
360+ }
361+
362+ $ ( 'document' ) . ready ( function ( ) {
363+ var params = new URLSearchParams ( window . location . search ) ;
364+ var processTriggerParam = "processTriggerSearchFilter"
365+ if ( params . has ( processTriggerParam ) ) {
366+ $ ( processTriggerParam ) . val ( params . get ( processTriggerParam ) ) ;
367+ }
368+ var labelParam = "labelFilter"
369+ if ( params . has ( labelParam ) ) {
370+ // If we have a label param, uncheck all other labels
371+ $ ( '.label-filter-btn' ) . removeClass ( "btn-primary" ) ;
372+ $ ( '.label-filter-btn' ) . addClass ( "btn-default" ) ;
373+
374+ // Check only the label in the query string
375+ var labelName = params . get ( labelParam ) ;
376+ $ ( '#label-' + labelName ) . removeClass ( "btn-default" ) ;
377+ $ ( '#label-' + labelName ) . addClass ( "btn-primary" ) ;
378+ }
379+ } ) ;
380+ </ script >
369381}
0 commit comments