Skip to content

Commit

Permalink
Added highlighting (issue #133).
Browse files Browse the repository at this point in the history
  • Loading branch information
gigafiga21 committed Feb 22, 2018
1 parent 967adac commit 4ef6862
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 17 deletions.
2 changes: 1 addition & 1 deletion public/build/bundle.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion public/build/bundle.js

Large diffs are not rendered by default.

35 changes: 22 additions & 13 deletions public/javascripts/aside.js
Original file line number Diff line number Diff line change
Expand Up @@ -238,15 +238,17 @@ export default class Aside {
* @param {number} noteData.folderId
*
* @param {Boolean} isRootFolder - true if Note is included to the Root Folder
* @param {Object} searchData - object with search data
*/
addMenuItem(noteData, isRootFolder, isSearch) {
addMenuItem(noteData, isRootFolder, searchData) {
/**
* Creating note DOM
* @param {String} title - name of the note
* @param {Object} dataset - dataset of the root DOM note element
* @param {String} title - name of the note
* @param {Object} dataset - dataset of the root DOM note element
* @param {Object} highlight - object with coords of highlight for search
*/
let createNoteDOM = (title, dataset) => {
let item = this.makeMenuItem(title, dataset);
let createNoteDOM = (title, dataset, highlight) => {
let item = this.makeMenuItem(title, dataset, highlight);

notesMenu.insertAdjacentElement('afterbegin', item);

Expand All @@ -258,9 +260,9 @@ export default class Aside {
return;
}

if (isSearch) {
if (searchData) {
notesMenu = document.querySelector('[name="js-found-notes-menu"]');
createNoteDOM(noteData.title, {id: noteData._id});
createNoteDOM(noteData.title, {id: noteData._id}, searchData.highlight);
return;
} else {
codex.notes.searcher.pushData({title: noteData.title, _id: noteData._id});
Expand Down Expand Up @@ -312,16 +314,23 @@ export default class Aside {

/**
* Makes aside menu item
* @param {String} title - item title
* @param {object} dataset - data to store in dataset
* @param {String} title - item title
* @param {Object} dataset - data to store in dataset
* @param {Object} highlight - pointers to part of title text to highlight
* @return {Element}
*/
makeMenuItem(title, dataset) {
makeMenuItem(title, dataset, highlight) {
title = this.createMenuItemTitle(title);

let item = $.make('li', null, {
textContent: title
});
let item = $.make('li');

if (highlight) {
item.innerHTML = title.substring(0, highlight.start) +
'<span>' + title.substring(highlight.start, highlight.end) + '</span>'
+ title.substring(highlight.end);
} else {
item.textContent = title;
}

for (let key in dataset) {
item.dataset[key] = dataset[key];
Expand Down
12 changes: 10 additions & 2 deletions public/javascripts/searcher.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,11 +122,19 @@ export default class Searcher {
* @param {String} title - key to find data
*/
search( title ) {
let highlight = {
start: 0,
end: 0
};

this.reset();

this.dataset.forEach((element) => {
if (element.title.indexOf(title) == 0) {
codex.notes.aside.addMenuItem(element, true, true);
highlight.start = element.title.indexOf(title);

if (highlight.start > -1) {
highlight.end = highlight.start + title.length;
codex.notes.aside.addMenuItem(element, true, {highlight: highlight});
}
});
}
Expand Down
4 changes: 4 additions & 0 deletions public/stylesheets/components/searcher.css
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@
}

}

[name='js-found-notes-menu'] span {
color: white;
}

0 comments on commit 4ef6862

Please sign in to comment.