Skip to content

Commit 6e7855b

Browse files
committed
Merge branch 'fix/resource-view-page-ui-adjustments' into 'master'
Resource view page UI adjustments. See merge request datopian/clients/nhs-dataexplorer!17
2 parents 2656526 + c14144e commit 6e7855b

File tree

1 file changed

+31
-17
lines changed

1 file changed

+31
-17
lines changed

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

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
66
resourceId = self.options.resourceId,
77
fields = self.options.fields,
88
dropdownTemplate = self.options.dropdownTemplate,
9-
addFilterTemplate = '<a class="btn btn-primary" href="#">' + self._('Add Filter') + '</a>',
10-
filtersDiv = $('<div></div>');
9+
addFilterTemplate = '<a class="btn btn-primary btn-add-filter" href="#">' + self._('Add Filter') + '</a>',
10+
filtersDiv = $('<div class="resource-view-filters-container"></div>');
1111

1212
var filters = ckan.views.filters.get();
1313
_appendDropdowns(filtersDiv, resourceId, dropdownTemplate, fields, filters);
@@ -19,11 +19,12 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
1919
filters[evt.val] = [];
2020

2121
$(this).select2('destroy');
22+
$(this).parent().remove();
2223
_appendDropdowns(filtersDiv, resourceId, dropdownTemplate, fields, filters);
2324
evt.preventDefault();
2425
});
25-
self.el.append(filtersDiv);
2626
self.el.append(addFilterButton);
27+
self.el.append(filtersDiv);
2728
}
2829

2930
function _buildAddFilterButton(self, el, template, fields, filters, onChangeCallback) {
@@ -44,33 +45,47 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
4445
// FIXME: Move this class name to some external variable to keep it DRY
4546

4647
// check if we already have filters without fields
47-
let current_filters = $('.resource-view-filter');
48+
let current_fields = $('.resource-view-filter-field');
4849
let ok_to_add = true;
49-
// if .resource-view-filter-values exists it's ok
50+
51+
if (current_fields.length > 0){
52+
ok_to_add = false;
53+
for ( var i = 0, l = current_fields.length; i < l; i++ ) {
54+
let elem = $(current_fields[i]);
55+
elem.hide(400).show(200);
56+
}
57+
}
58+
59+
// if .resource-view-filter-values exists, check if it has at least one value
60+
let current_filters = $('.resource-view-filter');
5061
for ( var i = 0, l = current_filters.length; i < l; i++ ) {
5162

63+
let hasValue = false;
5264
let elems = $(current_filters[i]).find('.resource-view-filter-values');
53-
if (elems.length > 0) {
54-
// OK
55-
//console.log('OK')
56-
} else {
65+
$.each(elems, function (i, elem) {
66+
let input = $(elem).children('input');
67+
if ($(input).attr('value')){
68+
hasValue = true;
69+
}
70+
});
71+
72+
if (hasValue == false) {
5773
ok_to_add = false;
5874
let elem = $(current_filters[i]);
5975
elem.hide(400).show(200);
6076
}
6177

6278
}
63-
79+
6480
if (ok_to_add) {
65-
var addFilterDiv = $('<div class="resource-view-filter"><input type="hidden"></input></div>'),
81+
var addFilterDiv = $('<div class="resource-view-filter-field"><input type="hidden"></input></div>'),
6682
addFilterInput = addFilterDiv.find('input');
6783
el.append(addFilterDiv);
6884

6985
// TODO: Remove element from "data" when some select selects it.
7086
addFilterInput.select2({
7187
data: data,
7288
placeholder: self._('Select a field'),
73-
width: '350px',
7489
}).on('change', onChangeCallback);
7590
}
7691
evt.preventDefault();
@@ -80,12 +95,13 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
8095
}
8196

8297
function _appendDropdowns(dropdowns, resourceId, template, fields, filters) {
98+
8399
$.each(fields, function (i, field) {
84100
if (filters.hasOwnProperty(field)) {
85101
dropdowns.append(_buildDropdown(self.el, template, field));
86102
}
87103
});
88-
104+
89105
return dropdowns;
90106

91107
function _buildDropdown(el, template, filterName) {
@@ -100,11 +116,9 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
100116
theseFilters = theseFilters.concat([undefined]);
101117
theseFilters.forEach(function (value, i) {
102118
var dropdown = $('<input type="hidden" name="'+filterName+'"></input>');
103-
104119
if (value !== undefined) {
105120
dropdown.val(value);
106121
}
107-
108122
dropdowns.append(dropdown);
109123
});
110124

@@ -207,8 +221,8 @@ this.ckan.module('resource-view-filters-override', function (jQuery) {
207221
options: {
208222
dropdownTemplate: [
209223
'<div class="resource-view-filter">',
210-
' {filter}:',
211-
' <div class="text-left">',
224+
' <div class="resource-view-filter-header">',
225+
' {filter}',
212226
' <button type="button" class="close" aria-label="Close Filter">',
213227
' <span aria-hidden="true">&times;</span>',
214228
' </button>',

0 commit comments

Comments
 (0)