Skip to content

Commit 6c43aea

Browse files
committed
Remove jquery
1 parent f7f270b commit 6c43aea

File tree

11 files changed

+92
-61
lines changed

11 files changed

+92
-61
lines changed

_layouts/dataset.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ <h2>Resources</h2>
5252
<li data-hook="resource-item" property='dcat:distribution' typeof='dcat:Distribution'>
5353
<a href="{{ resource.url }}" property='dcat:accessURL'><span property="dct:title">{{ resource.name }}</span></a>
5454
{% if resource.format %}<span class="badge badge-secondary" property='dcat:mediaType'>{{ resource.format}}</span>{% endif %}
55-
<a href="#" class="show-resource-details" data-hook="show-resource-details">(Details)</a>
55+
<a href="#" class="show-resource-details hidden" data-hook="show-resource-details">(Details)</a>
5656
{% if resource.description %}<div class="resource-description">{{ resource.description }}</div>{% endif %}
57-
<table class="table table-striped table-condensed resource-details" data-hook="resource-details">
57+
<table class="table table-striped table-condensed resource-details hidden" data-hook="resource-details">
5858
{% for field in resource_fields %}
5959
{% unless resource_system_fields contains field.field_name %}
6060
{% assign value = resource[field[field_name]] %}

css/main.css

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,6 @@ dataset {
3838
display: inline-block;
3939
}
4040

41-
.resource-details,
42-
.show-resource-details {
43-
display: none;
44-
}
45-
4641
.show-resource-details {
4742
font-size: 80%;
4843
}
@@ -77,4 +72,6 @@ dataset {
7772

7873
.view-code-link {
7974
margin: 1em;
80-
}
75+
}
76+
77+
.hidden { display: none; }

package-lock.json

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
},
1717
"dependencies": {
1818
"bootstrap": "^4.3.1",
19-
"jquery": "^3.4.1",
2019
"jquery-deparam": "^0.5.3",
2120
"lodash": "^4.17.11"
2221
}

scripts/dist/index.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/src/components/categories-filter.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import $ from 'jquery'
21
import {chain, pick, omit, filter, defaults} from 'lodash'
32

43
import TmplListGroupItem from '../templates/list-group-item'
5-
import {setContent, slugify, createDatasetFilters, collapseListGroup} from '../util'
4+
import {setContent, slugify, createDatasetFilters, collapseListGroup, param} from '../util'
65

76
export default class {
87
constructor (opts) {
@@ -34,7 +33,7 @@ export default class {
3433
const itemParams = selected ? omit(params, 'category') : defaults({category: categorySlug}, params)
3534
return {
3635
title: category,
37-
url: '?' + $.param(itemParams),
36+
url: '?' + param(itemParams),
3837
count: filteredDatasets.length,
3938
unfilteredCount: datasetsInCat.length,
4039
selected: selected
Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
1-
import $ from 'jquery'
2-
3-
import {queryByHook} from '../util'
1+
import {queryByHook, show, toggleVisibility} from '../util'
42

53
export default class {
64
constructor (opts) {
7-
const elements = {
8-
resourceItem: queryByHook('resource-item', opts.el)
9-
}
5+
const resourceItems = queryByHook('resource-item', opts.el)
106

117
// Resource details links
12-
elements.resourceItem.each((index, item) => {
13-
if ($('table tr', item).length) {
14-
queryByHook('show-resource-details', item).show()
8+
resourceItems.forEach((resourceItem) => {
9+
const hasDetails = !!resourceItem.querySelector('table tr')
10+
if (hasDetails) {
11+
const showDetailsBtns = queryByHook('show-resource-details', resourceItem)
12+
show(showDetailsBtns)
13+
14+
showDetailsBtns.forEach((btn) => {
15+
const details = queryByHook('resource-details', btn.parentNode)
16+
btn.addEventListener('click', (event) => {
17+
toggleVisibility(details)
18+
event.preventDefault()
19+
})
20+
})
1521
}
1622
})
17-
elements.resourceItem.on('click', '[data-hook~=show-resource-details]', (e) => {
18-
$(e.currentTarget).closest('[data-hook~=resource-item]').children('[data-hook~=resource-details]').toggle()
19-
e.preventDefault()
20-
})
2123
}
2224
}

scripts/src/components/datasets-list.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export default class {
2525

2626
// Filter datasets and render in items container
2727
const paramFilters = pick(opts.params, ['organization', 'category'])
28-
const attributeFilters = pick(opts.el.data(), ['organization', 'category'])
28+
const attributeFilters = pick(opts.el.dataset, ['organization', 'category'])
2929
const filters = createDatasetFilters(defaults(paramFilters, attributeFilters))
3030
const filteredDatasets = filter(opts.datasets, filters)
3131
const datasetsMarkup = filteredDatasets.map(TmplDatasetItem)
@@ -38,7 +38,7 @@ export default class {
3838

3939
// Search datasets listener
4040
const searchFunction = this._createSearchFunction(filteredDatasets)
41-
elements.searchQuery.on('keyup', (e) => {
41+
elements.searchQuery.forEach((el) => el.addEventListener('keyup', (e) => {
4242
const query = e.currentTarget.value
4343

4444
// Datasets
@@ -49,7 +49,7 @@ export default class {
4949
// Dataset count
5050
const resultsCountMarkup = results.length + ' datasets'
5151
setContent(elements.datasetsCount, resultsCountMarkup)
52-
})
52+
}))
5353
}
5454

5555
// Returns a function that can be used to search an array of datasets

scripts/src/components/organizations-filter.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import $ from 'jquery'
21
import {chain, pick, omit, filter, defaults} from 'lodash'
32

43
import TmplListGroupItem from '../templates/list-group-item'
5-
import {setContent, slugify, createDatasetFilters, collapseListGroup} from '../util'
4+
import {setContent, slugify, createDatasetFilters, collapseListGroup, param} from '../util'
65

76
export default class {
87
constructor (opts) {
@@ -23,7 +22,7 @@ export default class {
2322
const itemParams = selected ? omit(params, 'organization') : defaults({organization: orgSlug}, params)
2423
return {
2524
title: organization,
26-
url: '?' + $.param(itemParams),
25+
url: '?' + param(itemParams),
2726
count: filteredDatasets.length,
2827
unfilteredCount: datasetsInOrg.length,
2928
selected: selected

scripts/src/index.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
/* global settings */
2-
import $ from 'jquery'
3-
import 'jquery-deparam'
2+
import deparam from 'jquery-deparam'
43
import 'bootstrap/js/dist/collapse'
54

65
import DatasetsList from './components/datasets-list'
@@ -9,12 +8,13 @@ import OrganizationsFilter from './components/organizations-filter'
98
import DatasetDisplay from './components/dataset-display'
109
import {queryByComponent} from './util'
1110

12-
const params = $.deparam(window.location.search.substr(1))
11+
const params = deparam(window.location.search.substr(1))
1312

1413
// Helper function to ensure datasets.json is only fetched once per page
1514
let datasetsCache
1615
function getDatasets () {
17-
datasetsCache = datasetsCache || $.getJSON(`${settings.BASE_URL}/datasets.json`)
16+
const url = `${settings.BASE_URL}/datasets.json`
17+
datasetsCache = datasetsCache || fetch(url).then((response) => response.json())
1818
return datasetsCache
1919
}
2020

@@ -31,11 +31,11 @@ for (let component of components) {
3131
// If the component depends on datasets.json, fetch it first (once per page) and pass it
3232
if (component.usesDatasets) {
3333
getDatasets().then((datasets) => {
34-
els.each((index, el) => new component.class({el: $(el), params, datasets})) // eslint-disable-line
34+
els.forEach((el) => new component.class({el: el, params, datasets})) // eslint-disable-line
3535
})
3636
// Otherwise simply initialize the component
3737
} else {
38-
els.each((index, el) => new component.class({el: $(el), params})) // eslint-disable-line
38+
els.forEach((el) => new component.class({el: el, params})) // eslint-disable-line
3939
}
4040
}
4141
}

0 commit comments

Comments
 (0)