Introduces apidoc changes

- Removes modules from the apidoc navigation
- Adds a weight paramater to the search to be
more accurate on searchresults
This commit is contained in:
Kai Volland
2019-09-27 17:25:01 +02:00
parent b045e4ee5b
commit d08c0baff9
4 changed files with 200 additions and 150 deletions
+15 -15
View File
@@ -215,15 +215,21 @@ function buildNav(members) {
return 0; return 0;
}); });
function createEntry(type, v) { _.each(merged, function(v) {
return { // exclude interfaces from sidebar
type: type, if (v.interface !== true && v.kind === 'class') {
nav.push({
type: 'class',
longname: v.longname, longname: v.longname,
prettyname: v.longname
.substring(0, v.longname.indexOf('~'))
.replace('module:', '')
.replace('ol/', ''),
name: v.name, name: v.name,
classes: find({ module: find({
kind: 'class', kind: 'module',
memberof: v.longname longname: v.memberof
}).map(createEntry.bind(this, 'class')), })[0],
members: find({ members: find({
kind: 'member', kind: 'member',
memberof: v.longname memberof: v.longname
@@ -236,18 +242,12 @@ function buildNav(members) {
kind: 'typedef', kind: 'typedef',
memberof: v.longname memberof: v.longname
}), }),
fires: v.fires,
events: find({ events: find({
kind: 'event', kind: 'event',
memberof: v.longname memberof: v.longname
}) })
}; });
}
_.each(merged, function(v) {
// exclude interfaces from sidebar
if (v.interface !== true) {
if (v.kind == 'module') {
nav.push(createEntry('module', v));
}
} }
}); });
return nav; return nav;
@@ -1,29 +1,66 @@
$(function () { $(function () {
// Search Items
$('#include_modules').change(function (e) {
console.log('change');
if ($(this).is(':checked')) {
} else {
}
});
var getSearchWeight = function (searchTerm, $matchedItem) {
let weight = 0;
// We could get smarter on the weight here
if ($matchedItem.data('shortname')
&& $matchedItem.data('shortname').toLowerCase() === searchTerm.toLowerCase()) {
weight++;
}
return weight;
};
// sort function callback
var weightSorter = function (a, b) {
var aW = $(a).data('weight') || 0;
var bW = $(b).data('weight') || 0;
return bW - aW;
};
// Search Items // Search Items
$('#search').on('keyup', function (e) { $('#search').on('keyup', function (e) {
var value = $(this).val(); var value = $(this).val();
var $el = $('.navigation'); var $el = $('.navigation');
if (value) { if (value && value.length > 1) {
var regexp = new RegExp(value, 'i'); var regexp = new RegExp(value, 'i');
$el.find('li, .itemMembers').hide(); $el.find('li, .itemMembers').hide();
$el.find('li').each(function (i, v) { $el.find('li').each(function (i, v) {
var $item = $(v); const $item = $(v);
const name = $item.data('name');
if ($item.data('name') && regexp.test($item.data('name'))) { if (name && regexp.test(name)) {
const container = $item.parent().parent().parent(); const $classEntry = $item.closest('.item');
container.show(); const $members = $item.closest('.itemMembers');
container.closest('.itemMembers').show();
container.closest('.item').show(); // Do the weight thing
$classEntry.removeData('weight');
$classEntry.show();
const weight = getSearchWeight(value, $classEntry);
$classEntry.data('weight', weight);
$members.show();
$classEntry.show();
$item.show(); $item.show();
$item.closest('.itemMembers').show();
$item.closest('.item').show();
} }
}); });
$(".navigation ul.list li.item:visible")
.sort(weightSorter) // sort elements
.appendTo(".navigation ul.list"); // append again to the list
} else { } else {
$el.find('.item, .itemMembers').hide(); $el.find('.item, .itemMembers').show();
$('.navigation>ul>li').show();
} }
$el.find('.list').scrollTop(0); $el.find('.list').scrollTop(0);
@@ -106,6 +106,15 @@ li {
.navigation .applicationName a { .navigation .applicationName a {
color: #fff; color: #fff;
} }
.navigation .include-modules {
color: #e1e1e1;
float: right;
font-size: 0.75em;
padding: 5px 15px;
}
.navigation .include-modules input {
vertical-align: text-bottom;
}
.navigation .search { .navigation .search {
padding: 10px 15px; padding: 10px 15px;
} }
@@ -125,6 +134,11 @@ li {
padding-bottom: 8px; padding-bottom: 8px;
border-bottom: 1px solid #333; border-bottom: 1px solid #333;
} }
.navigation li.perfect-match {
border: 5px solid orange;
}
.navigation li.item a { .navigation li.item a {
color: #bbb; color: #bbb;
} }
@@ -158,6 +172,12 @@ li {
color: #1F6B75; color: #1F6B75;
display: block; display: block;
} }
.navigation li.item .modulelink {
position: relative;
font-size: 0.75em;
padding-left: 5px;
top: -5px;
}
.navigation li.item ul > li { .navigation li.item ul > li {
font-size: 0.75em; font-size: 0.75em;
padding-left: 8px; padding-left: 8px;
@@ -165,6 +185,7 @@ li {
} }
.navigation li.item .itemMembers { .navigation li.item .itemMembers {
display: none; display: none;
padding-left: 8px;
} }
.main { .main {
padding: 20px 20px; padding: 20px 20px;
+8 -16
View File
@@ -10,29 +10,21 @@ function toShortName(name) {
</div> </div>
<ul class="list"> <ul class="list">
<?js <?js
let navbuilder; this.nav.forEach(function (item) {
this.nav.forEach(navbuilder = function (item) {
?> ?>
<li class="item" data-name="<?js= item.longname ?>"> <li class="item" data-name="<?js= item.longname ?>" data-shortname="<?js= item.name.toLowerCase() ?>">
<span class="title"> <span class="title">
<?js= self.linkto(item.longname, item.type === 'module' ? item.longname.replace('module:', '') : item.name) ?> <?js= self.linkto(item.longname, item.prettyname) ?>
<?js if (item.type === 'namespace' && <?js if (item.type === 'namespace' &&
(item.members.length + item.typedefs.length + item.methods.length + (item.members.length + item.typedefs.length + item.methods.length +
item.events.length > 0)) { ?> item.events.length > 0)) { ?>
<?js } ?> <?js } ?>
</span> </span>
<ul class="members itemMembers"> <?js if (item.module && item.module.longname) { ?>
<?js <span class="modulelink">
if (item.classes.length) { <?js= self.linkto(item.module.longname, '↳ module') ?>
?> </span>
<span class="subtitle">Classes</span> <?js } ?>
<?js
item.classes.forEach(function (v) {
navbuilder(v);
});
}
?>
</ul>
<ul class="members itemMembers"> <ul class="members itemMembers">
<?js <?js
if (item.members.length) { if (item.members.length) {