@@ -17,7 +17,7 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
1717 // value so _appendDropdowns() will create its dropdown
1818 var filters = { } ;
1919 filters [ evt . val ] = [ ] ;
20-
20+
2121 $ ( this ) . select2 ( 'destroy' ) ;
2222 _appendDropdowns ( filtersDiv , resourceId , dropdownTemplate , fields , filters ) ;
2323 evt . preventDefault ( ) ;
@@ -48,10 +48,11 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
4848 let ok_to_add = true ;
4949 // if .resource-view-filter-values exists it's ok
5050 for ( var i = 0 , l = current_filters . length ; i < l ; i ++ ) {
51+
5152 let elems = $ ( current_filters [ i ] ) . find ( '.resource-view-filter-values' ) ;
5253 if ( elems . length > 0 ) {
5354 // OK
54- console . log ( 'OK' )
55+ // console.log('OK')
5556 } else {
5657 ok_to_add = false ;
5758 let elem = $ ( current_filters [ i ] ) ;
@@ -90,6 +91,7 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
9091 function _buildDropdown ( el , template , filterName ) {
9192 var theseFilters = filters [ filterName ] || [ ] ;
9293 template = $ ( template . replace ( / { f i l t e r } / g, filterName ) ) ;
94+
9395 // FIXME: Get the CSS class from some external variable
9496 var dropdowns = template . find ( '.resource-view-filter-values' ) ;
9597
@@ -109,7 +111,7 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
109111 var queryLimit = 20 ;
110112 dropdowns . find ( 'input' ) . select2 ( {
111113 allowClear : true ,
112- placeholder : ' ' , // select2 needs a placeholder to allow clearing
114+ placeholder : 'Select a value ' , // select2 needs a placeholder to allow clearing
113115 width : '300px' ,
114116 minimumInputLength : 0 ,
115117 ajax : {
@@ -160,20 +162,28 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
160162 callback ( data ) ;
161163 } ,
162164 } ) . on ( 'change' , _onChange ) ;
165+
166+ var close_bt = $ ( template ) . find ( '.close' ) ;
167+ close_bt . click ( function ( ) {
168+ ckan . views . filters . unset ( filterName ) ;
169+ $ ( template ) . parent ( ) . find ( 'input[value=' + filterName + ']' ) . parent ( ) . remove ( ) ;
170+ $ ( template ) . remove ( ) ;
171+ } ) ;
163172
164173 return template ;
165174 }
166175 }
167176
168177 function _onChange ( evt ) {
178+
169179 var filterName = evt . currentTarget . name ,
170180 filterValue = evt . val ,
171181 currentFilters = ckan . views . filters . get ( filterName ) || [ ] ,
172182 addToIndex = currentFilters . length ;
173183
174184 // Make sure we're not editing the original array, but a copy.
175185 currentFilters = currentFilters . slice ( ) ;
176-
186+
177187 if ( evt . removed ) {
178188 addToIndex = currentFilters . indexOf ( evt . removed . id ) ;
179189 if ( addToIndex !== - 1 ) {
@@ -189,6 +199,7 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
189199 } else {
190200 ckan . views . filters . unset ( filterName ) ;
191201 }
202+
192203 }
193204
194205 return {
@@ -197,6 +208,11 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
197208 dropdownTemplate : [
198209 '<div class="resource-view-filter">' ,
199210 ' {filter}:' ,
211+ ' <div class="text-left">' ,
212+ ' <button type="button" class="close" aria-label="Close Filter">' ,
213+ ' <span aria-hidden="true">×</span>' ,
214+ ' </button>' ,
215+ ' </div>' ,
200216 ' <div class="resource-view-filter-values"></div>' ,
201217 '</div>' ,
202218 ] . join ( '\n' )
0 commit comments