Show top-level title in seach, hide to-do's.

This commit is contained in:
Sergio Martínez Portela 2022-10-18 23:13:21 +02:00
parent 7bad44cfb6
commit d71c28d1e8
3 changed files with 28 additions and 5 deletions

View File

@ -55,7 +55,7 @@ def create_db(path):
os.unlink(path) os.unlink(path)
db = sqlite3.connect(path) db = sqlite3.connect(path)
db.execute('CREATE VIRTUAL TABLE note_search USING fts5(note_id, title, body);') db.execute('CREATE VIRTUAL TABLE note_search USING fts5(note_id, title, body, top_level_title, is_done, is_todo);')
return db return db
def load_all(top_dir_relative): def load_all(top_dir_relative):
@ -191,12 +191,19 @@ def regen_all(src_top, dest_top, *, docs=None, db=None):
"depth": headline.depth, "depth": headline.depth,
} }
topLevelHeadline = headline
while isinstance(topLevelHeadline.parent, org_rw.Headline):
topLevelHeadline = topLevelHeadline.parent
# Save for full-text-search # Save for full-text-search
cur.execute('''INSERT INTO note_search(note_id, title, body) VALUES (?, ?, ?);''', cur.execute('''INSERT INTO note_search(note_id, title, body, top_level_title, is_done, is_todo) VALUES (?, ?, ?, ?, ?, ?);''',
( (
headline.id, headline.id,
headline.title.get_text(), headline.title.get_text(),
''.join(headline.get_contents('raw')), ''.join(headline.get_contents('raw')),
topLevelHeadline.title.get_text(),
headline.is_done,
headline.is_todo,
)) ))
# Render HTML # Render HTML

View File

@ -64,7 +64,7 @@ func main() {
query := c.Query("q") query := c.Query("q")
stm, err := db.Prepare("SELECT note_id, title FROM note_search WHERE title LIKE ?") stm, err := db.Prepare("SELECT note_id, title, top_level_title, is_done, is_todo FROM note_search WHERE title LIKE ?")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
@ -90,8 +90,17 @@ func main() {
for rows.Next() { for rows.Next() {
var note_id string var note_id string
var note_title string var note_title string
var note_top_level_title string
var note_is_done string
var note_is_todo string
err = rows.Scan(&note_id, &note_title) err = rows.Scan(
&note_id,
&note_title,
&note_top_level_title,
&note_is_done,
&note_is_todo,
)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
c.JSON(500, gin.H{ c.JSON(500, gin.H{
@ -104,6 +113,9 @@ func main() {
item := make(map[string]string) item := make(map[string]string)
item["id"] = note_id item["id"] = note_id
item["title"] = note_title item["title"] = note_title
item["top_level_title"] = note_top_level_title
item["is_done"] = note_is_done
item["is_todo"] = note_is_todo
results = append(results, item) results = append(results, item)
} }

View File

@ -73,13 +73,17 @@ function _codigoparallevar_enable_search_box(selector, options) {
resultsList.innerHTML = ''; resultsList.innerHTML = '';
for (const note of body.results.notes) { for (const note of body.results.notes) {
if (note.is_todo === "1") {
return;
}
const resultCard = document.createElement('li'); const resultCard = document.createElement('li');
const resultContents = document.createElement('a'); const resultContents = document.createElement('a');
resultContents.setAttribute('href', './' + note.id + '.node.html'); resultContents.setAttribute('href', './' + note.id + '.node.html');
const resultTitle = document.createElement('h2'); const resultTitle = document.createElement('h2');
resultTitle.innerText = note.title; resultTitle.innerText = `${note.title} (${note.top_level_title})`;
resultContents.appendChild(resultTitle); resultContents.appendChild(resultTitle);
resultCard.appendChild(resultContents); resultCard.appendChild(resultContents);