Skip to content

Commit a7522c0

Browse files
committed
[feature][s] - Add a button to remove all values from a filter type.
1 parent bb9ab3b commit a7522c0

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

ckanext/dataexplorer/public/resource-view-filters-override.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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(/{filter}/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">&times;</span>',
214+
' </button>',
215+
' </div>',
200216
' <div class="resource-view-filter-values"></div>',
201217
'</div>',
202218
].join('\n')

0 commit comments

Comments
 (0)