Coder Social home page Coder Social logo

Comments (8)

koppor avatar koppor commented on June 1, 2024 3

@ThiloteE The idea is that JabRef automatically tracks readings - without any additional user input. Explanation of the general idea in German: https://de.wikipedia.org/wiki/Mylyn

Scientific background:

from jabref.

ehehela avatar ehehela commented on June 1, 2024 1

To be exact, JabRef should count the number of times that the entry is accessed in a period, e.g., the number of times the attachments (PDF files or others) were accessed in a month.
Or perhaps, JabRef could add a new column named ViewCount to log the number of times in a period set by users. In this case, users can quickly find entries by sorting this column.

from jabref.

ehehela avatar ehehela commented on June 1, 2024 1

I was struggling to articulate my thoughts, but thankfully, @koppor accurately and professionally expressed what I wanted to say.

Take myself for instance, there are many literatures regarding one research topic. Unread and low-quality entries are automatically moved into "Inbox" group, in which priority is used to mark entries to be read and quality-improved first. Other entries are in specific groups according to their research fields. When I decide to do research in one certain direction, I usually first locate a group then scroll down and up to query related papers which may well be the key references and will be looked up many times in the future. However, these papers are scattered in different (sub-)groups. How to quickly get these needed and strongly correlated papers? Maybe Jabref could guess according to user behavior, e.g., times of opening attachments. Maybe some smart groups will promote this. Or like the following drafts (illustrative, not necessary).
屏幕截图 2023-10-17 165522
屏幕截图 2023-10-17 181322

from jabref.

ilippert avatar ilippert commented on June 1, 2024

I guess, it might be possible for JabRef to be aware if an entry was engaged with - though I would want too disable it. For enabling it, an additional timestamp might be used that is updated whenever an entry is shown in the entry editor, or a click on it in the entry table happens.

from jabref.

jiahengguo123 avatar jiahengguo123 commented on June 1, 2024

Hello, I am a new contributor. And I will carefully read the contribution guidelines. Could you please assign this issue to me?

from jabref.

ThiloteE avatar ThiloteE commented on June 1, 2024

@ehehela could you please describe your workflow where you need this? Why do you want to know this information? Is this a shared library or do you work alone? Have you ever thought about simply adding frequently used entries to groups or labeleling them as important? We even have a priority label.

image
You also could create automatic keyword groups that capture entries with certain keywords. E.g.
image

If we were to implement what you suggest, would this not introduce performance issue for large libraries? Also, how to reset the counter? Where to store the counter? - on pc or in library file? What happens, if multiple users have access to the library? Do you want to have separate counters for each user or multiple counters for each? ....

from jabref.

koppor avatar koppor commented on June 1, 2024

To be exact, JabRef should count the number of times that the entry is accessed in a period, e.g., the number of times the attachments (PDF files or others) were accessed in a month.

This is a nice thing. Implementation: Use a MVStore provided by h2 stored in the directory retrieved with

Path.of(AppDirsFactory.getInstance()
                                         .getUserDataDir(
                                                 OS.APP_DIR_APP_NAME,
                                                 "views",
                                                 OS.APP_DIR_APP_AUTHOR))

The database knows tracks for each citation key the number of views. Granularity: one hour (that means, if accessed at 10:05 and 10:43, it counts as one).

Or perhaps, JabRef could add a new column named ViewCount to log the number of times in a period set by users. In this case, users can quickly find entries by sorting this column.

This is the second thing to implement so that the data can be accessed.

8 years ago, we had explicitly writable fields (refs #574). I think, we should have a org.jabref.model.entry.field.FieldProperty adding INMEMORY stating it should not be written and not be synchronized to a server.

Hints

  • On load of the library the field viewcount has to be filled based on the MVStore content
  • The MVStore is updated on each view
  • Use the obersable JavaFX lists to "listen" to changes (personal remark: I like the event bus more, but we decided to focus on one technology)
  • In case the citation key is renamed, it has to be renamed in the count, too

from jabref.

koppor avatar koppor commented on June 1, 2024

A new intelligent group should be introduced. This is comparable to BibDesk's "Smart" groups.

  • Add preference as outlined at screenshot at #10418 (comment)
    • Use "enable internal user behavior analysis" (to indicate that no data is shared to an external server)
    • 屏幕截图 2023-10-17 181322
  • Add group "Popularity"
    • 屏幕截图 2023-10-17 165522
    • Name: "Popularity" (capital "P")
    • Enabled only if above preference is enabled
    • Do not show "Ignore zero times of read". The group always shows entries with read > 0. For the other feature, we
  • The views need to be tracked in a MVStore
  • Introduce new method getOtherDataDir in org.jabref.gui.desktop.os.NativeDesktop
  • Store the MVStore in tracking.mv in getOtherDataDir. Hashtable <BibEntry, Integer>. Hashtable name: hashCode() of fileName of library (or BackupFileUtil.getUniqueFilePrefix(file) + "--" + file.getFileName()). In this way, each library tab has its own hash table
  • Hook into org.jabref.gui.LibraryTab#showAndEdit to update the counter

from jabref.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.