johnfactotum / foliate

Read e-books in style
https://johnfactotum.github.io/foliate/
GNU General Public License v3.0
6.4k stars 293 forks source link

Improvements to Notes #370

Open JamesSwift opened 4 years ago

JamesSwift commented 4 years ago

Firstly, thank you so much @johnfactotum for making this amazing application. It is of such high quality, and your commitment to issue tracking and working on improving it is really appreciated.

Note taking on foliate is already pretty great. In the past I extensively used another app on windows for studying, but am trying to move to exclusively foliate so I can always use my linux laptop. One feature that it had is when you make a note, you can "tag" it. You can add multiple tags/categories. Then later, when you are trying to find your research on a specific topic, you can browse by tag and see all your notes across the various books/publications. You click a link and it takes you back to that part of the appropriate book. It's very helpful to me. I wonder if it would be difficult to implement in foliate?

Another small request is support for spell check when typing notes if possible please.

And finally, font size. Both in the footnote pop-overs and in the note pop-overs, font size doesn't seem to increase when you increase the main text font size. It's a little bit small for me at present. Would it be possible to link these font sizes together?

JamesSwift commented 4 years ago

Sorry, I just noticed the gspell dependency. I thought it was pre-installed. The package name for ubuntu is:

gir1.2-gspell-1
johnfactotum commented 4 years ago

What you're describing is certainly possible. The only foreseeable problem is that Foliate stores things in flat JSON files, so probably not be very efficient to query. The current way of searching metadata probably already performs badly. One can add a database but it's a bit too much complexity.

But of course, the benefits of using plain JSON files is that you don't have to implement this in Foliate at all. You can have full text search of all your notes today with any full text search program.

As for font size, it just simply uses the same font size as the rest of the UI.

JamesSwift commented 4 years ago

From experience using json in my own projects, it performs better than you'd think. :-) Someone would have to have thousands, maybe tens of thousands of annotations for it to become noticeably slow.

If you are worried about performance owhen using the gui to browse the various tags/categories, I'd suggest creating a reverse lookup tags.json of sorts. Create it on each application launch (it should take barely any time). Or perhaps more performant would be to create it internally as an object in memory.

The individual book json file could be modified to allow the extra field like so.

"
{
   annotations":[
      {
         "value":"epubcfi(/6/142[chapter69]!/4/12[p359],/7:1,/7:107)",
         "color":"yellow",
         "tags": [
            "example tag",
            "another tag"
         ],
         "text":"example"
      }
   ]
   /* other data here*/
}
JamesSwift commented 4 years ago

It might also be worth considering a switch to something like sqllite for storing the book data. As an example, Plex uses sqllite for everything (and there is a ton of metadata!) and has excellent performance from it.

digitalethics commented 4 years ago

One feature that it had is when you make a note, you can "tag" it. You can add multiple tags/categories. Then later, when you are trying to find your research on a specific topic, you can browse by tag and see all your notes across the various books/publications.

Do you have a screenshot of the app you were using to see how this was visually realized?

JamesSwift commented 4 years ago

This is from the mobile version. When you type a tag name it suggests previously used tags, or allows you to create a new one. Screenshot