54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
|
$(document).ready(function() {
|
||
|
// add the search form and bind the events
|
||
|
$('h1').after([
|
||
|
'<p>Filter entries by content:',
|
||
|
'<input type="text" value="" id="searchbox" style="width: 50%">',
|
||
|
'<input type="submit" id="searchbox-submit" value="Filter"></p>'
|
||
|
].join('\n'));
|
||
|
|
||
|
function dofilter() {
|
||
|
try {
|
||
|
var query = new RegExp($('#searchbox').val(), 'i');
|
||
|
}
|
||
|
catch (e) {
|
||
|
return; // not a valid regex (yet)
|
||
|
}
|
||
|
// find headers for the versions (What's new in Python X.Y.Z?)
|
||
|
$('#changelog h2').each(function(index1, h2) {
|
||
|
var h2_parent = $(h2).parent();
|
||
|
var sections_found = 0;
|
||
|
// find headers for the sections (Core, Library, etc.)
|
||
|
h2_parent.find('h3').each(function(index2, h3) {
|
||
|
var h3_parent = $(h3).parent();
|
||
|
var entries_found = 0;
|
||
|
// find all the entries
|
||
|
h3_parent.find('li').each(function(index3, li) {
|
||
|
var li = $(li);
|
||
|
// check if the query matches the entry
|
||
|
if (query.test(li.text())) {
|
||
|
li.show();
|
||
|
entries_found++;
|
||
|
}
|
||
|
else {
|
||
|
li.hide();
|
||
|
}
|
||
|
});
|
||
|
// if there are entries, show the section, otherwise hide it
|
||
|
if (entries_found > 0) {
|
||
|
h3_parent.show();
|
||
|
sections_found++;
|
||
|
}
|
||
|
else {
|
||
|
h3_parent.hide();
|
||
|
}
|
||
|
});
|
||
|
if (sections_found > 0)
|
||
|
h2_parent.show();
|
||
|
else
|
||
|
h2_parent.hide();
|
||
|
});
|
||
|
}
|
||
|
$('#searchbox').keyup(dofilter);
|
||
|
$('#searchbox-submit').click(dofilter);
|
||
|
});
|