diff --git a/TODO b/TODO index 443a2808a..6eae4d8c0 100644 --- a/TODO +++ b/TODO @@ -2,7 +2,6 @@ - conflict detection Later: -- collapse all button - context menu on items (add subnote etc.) - drag and drop for notes (currently only keyboard) - sync with sync server \ No newline at end of file diff --git a/src/app.py b/src/app.py index 781cbe4be..1c4732cea 100644 --- a/src/app.py +++ b/src/app.py @@ -14,6 +14,7 @@ from move_before_note import MoveBeforeNote from move_to_note import MoveToNote from notes import Notes from notes_children import NotesChildren +from notes_search import NotesSearch from sql import connect from tree import Tree @@ -82,6 +83,7 @@ api.add_resource(MoveBeforeNote, '/notes//moveBefore//moveTo/') api.add_resource(ExpandedNote, '/notes//expanded/') api.add_resource(Tree, '/tree') +api.add_resource(NotesSearch, '/notes') login_manager = LoginManager() login_manager.init_app(app) diff --git a/src/notes_search.py b/src/notes_search.py new file mode 100644 index 000000000..2a3511003 --- /dev/null +++ b/src/notes_search.py @@ -0,0 +1,18 @@ +from flask import request +from flask_restful import Resource + +from sql import getResults + + +class NotesSearch(Resource): + def get(self): + search = '%' + request.args['search'] + '%' + + result = getResults("select note_id from notes where note_title like ? or note_text like ?", [search, search]) + + noteIdList = []; + + for res in result: + noteIdList.append(res['note_id']) + + return noteIdList \ No newline at end of file diff --git a/static/js/tree.js b/static/js/tree.js index 0e9e08def..2019f6921 100644 --- a/static/js/tree.js +++ b/static/js/tree.js @@ -185,16 +185,24 @@ $(function(){ }); $("input[name=search]").keyup(function (e) { - const match = $(this).val(); + const searchString = $(this).val(); - if (e && e.which === $.ui.keyCode.ESCAPE || $.trim(match) === "") { + if (e && e.which === $.ui.keyCode.ESCAPE || $.trim(searchString) === "") { $("button#btnResetSearch").click(); return; } - // Pass a string to perform case insensitive matching - const tree = $("#tree").fancytree("getTree"); - tree.filterBranches(match); + if (e && e.which === $.ui.keyCode.ENTER) { + $.get(baseUrl + 'notes?search=' + searchString).then(resp => { + console.log("search: ", resp); + + // Pass a string to perform case insensitive matching + const tree = $("#tree").fancytree("getTree"); + tree.filterBranches(function(node) { + return resp.includes(node.data.note_id); + }); + }); + } }).focus(); $("button#btnResetSearch").click(function () {