Menu

New add-on : Jumper - the jumping filter

lilive
2020-06-25
2021-06-25
1 2 > >> (Page 1 of 2)
  • lilive

    lilive - 2020-06-25

    Hello dear Freeplane users,

    Perhaps you have already read this discussion during the development. Now Jumper is ready, and I'm happy to write a proper announcement.

    Jumper logo

    Jumper is a fully keyboard driven search box for quick navigation in maps. It filters the nodes on-the-fly as the user types the search terms, and allows to jump to one of the results.

    It provides an easy and quick way to search for nodes in Freeplane maps. Press Jumper shortcut, type some text snippets, and you will instantly see all the nodes (or branches !) that contain them in the Jumper window. Select one of these nodes to select it in the map.

    Link to demonstration video

    Main features:
    - Search results updated as you type
    - Matching text is highlighted in the results list
    - Regular search or transversal search (find words or text snippets across a branch)
    - Words or text snippets can be searched in any order
    - Search in any part of the nodes (core text, details, notes, attributes)
    - Plain text or regular expressions search, case sensitive or insensitive
    - Can focus the map view on the node selected in the results list
    - Search the whole map, only the siblings of the selected node, or its descendants
    - Search history
    - Keyboard shortcuts for all the search options
    - Persistent search settings
    - Many options to customize the results appearence

    There is a lot of options, but I think jumper is pretty straightforward to start with, and I hope it will make you enjoy Freeplane even more !

    You're welcome to get it here and to make any feedback,

    Lilive.

     
    👍
    1

    Last edit: lilive 2020-06-27
    • Simon

      Simon - 2020-12-14

      Hi Lilive,

      I really like Jumper - thank you!

      One option that I personally would value is the option to apply "quick filter" and optionally "highlight all matching nodes" to the search result. For example, rather than pressing "enter" once you've typed in your text, say pressing tab would apply these. "Highlight all matching nodes" might be a toggle in the search settings for this feature.

       
      • lilive

        lilive - 2020-12-14

        Thank you for the feedback.
        About your idea, it may be interesting, but I do not see how to implement it smoothly.
        For the filter, one idea could be to modify the map. If Jumper write some marker in all the matching nodes (an icon, or some special attribute like "Jumper result: true"), it could run the builtin Freeplane filter to filter them. But it will also have to provide a "delete last result markers" function. It doesn't look very convenient to me.
        For the highlight, I don't think a script or add-on can ask to Freeplane to highlight nodes. All I can do is define a filter, then use the "highlight matching nodes" Freeplane builtin feature. Back to previous problem.
        Can I ask why you need such a feature ? Can't you get what your looking for with FP filters and highlight ?

         
        • Simon

          Simon - 2020-12-15

          Thanks for considering my request. I see that this may not be practical.

          I can get what I need with a few manual steps (select node, copy contents, paste into the filter box, press quick filter, press highlight all matching nodes). It's just a bit painful. Underlying this is a desire to find hidden relationships that exist in the map more easily. Quick filter is nice but it's a bit tedious - especially swapping between filter terms.

          Examples of what I am looking for - It's helpful to filter the whole map to see everywhere a person or project or activity is referenced. Using quick filter and highlight gives me that view in context of the rest of the map. I've often wondered if there would be a better way to visualise this.

           
          • lilive

            lilive - 2020-12-15

            Thanks for the use case.

            1) I thought more about this. My conclusion is that Jumper is not suitable to set a Freeplane buit-in filter. And highlight nodes is not part of the scripting API, so I can't ask Jumper to highlight the results.

            2) Do you know that you can use Jumper to retrieve related nodes with this workflow:
            - Menu Edit > Copy > Copy node (single), or copy a part of the text node
            - Start Jumper, paste in the search field
            - Possibly edit the search string to delete unnecessary words
            - Hide Jumper options (Tab key) and put the Jumper window somewhere it do not hide the map too much. Jumper will retain this settings for later invocations.
            - Browse the results with the up and down arrows. The map scroll to show the corresponding nodes (if you have "Focus map view on selected result" ticked in Jumper display settings)
            - If you need to move the map tp see more context for one of the results, press enter to exit Jumper
            - After this, if you want to continue to browse the results, be sure to still have the same node selected and recall Jumper. The search field should be set to the previous search (if you have this option ticked in the display settings). The current node should be selected in the results list. So you just have to continue to browse the results with the up and down keys.

            This make me think about 2 features I could add to Jumper:
            - a new menu entry "Search similar nodes" that will call Jumper with the search field set to the text of the currently selected node
            - a new menu entry "Resume last search" that will call Jumper with the previous search terms and that will select the last selected node in the results list

            What do you think about this ideas?

            3) Have you tried the MapInsight add-on ? I don't use but I believe it could be usefull to find relationships.

            4) The attached scripts allows to filter the map according to the currently selected node, and to keep only the nodes that either
            - have the same text
            - contains the same text
            - contains one word of the node
            Perhaps you will find them usefull.
            After installation, the menu entries are grouped in the menu Filter > Find similar nodes
            You can easily change some parameters at the beginning of the scripts.

             
            • bepolymathe

              bepolymathe - 2020-12-16

              Hi lilive !

              Thanks for that. It’s very useful.
              I use Jumper and MapInsight together. I pretty much agree that the filter tool is a bit tedious. The scripts you offer here are very useful. It makes you think about part of the discussion below about a roam/zettlekasten-like operation.

               
    • user0123

      user0123 - 2020-12-16

      I was a late? adopter. Now that I have used it I just want to say a great big THANK you.
      This ranks as one of the-i my book anyway-most if not the most useful addon for Freeplane.
      I have to admit I have not tried them all but still. This is a true time saver!

      Again, thanks a lot for the effort.

      PS. There's a virtual beverage of you own choosing attached. :)

       

      Last edit: user0123 2020-12-16
      • lilive

        lilive - 2020-12-16

        There's a virtual beverage of you own choosing attached. :)

        Haha ! Thanks for the feedback.
        The last version has been downloaded 188 times. This is not huge, but this is a good sign. But I don't know how much people really use it, so comments, like yours, give me the desire to continue to improve and maintain it.

         
    • Bal Simon

      Bal Simon - 2020-12-23

      I watched the video and it looks like a really cool script. I'm having trouble getting Freeplane to use it. I copied jumper.groovy into the Freeplane scripts folder and reran Freeplane. When I try to run the script, I get an error dialog with the word null.

      Thoughts on what I might be doing wrong?

      Thanks.

      ~ Bal

       
      • bepolymathe

        bepolymathe - 2020-12-24

        Hi,

        Did you authorize freeplane to use scripts ?
        tools --» preferences --» formulas and scripts

         
        • Bal Simon

          Bal Simon - 2020-12-24
           
          • bepolymathe

            bepolymathe - 2020-12-24

            I think you need "read operations" enable too... Could you try ?

             
            • Bal Simon

              Bal Simon - 2020-12-24

              OK - I tried, and I'm still getting the "Error executing script the script" dialog.

              In the Scripts submenu, there is a menu item labeled Install Script Add-On. Is that something that is required for use of this script? I have tried it and I get a different error message dialog: *Error in map structure: Missing properties: [name, version, author, FreeplaneVersionFrom*].

              The thing is that it doesn't even let me get to the point of selecting a script to install.

              Thanks for your patience helping me work through this.

              ~ Bal

               
              • bepolymathe

                bepolymathe - 2020-12-24

                Okay. I read your first message a little too quickly.

                Jumper is not a script but an addon. You have to download the addon at this address (jumper-v1.0.1.addon.mm) : LINK

                Then you have to open this file with freeplane (file --" open) and follow the instructions.

                Before doing this you can remove the jumper.groovy file you put in the user folder.

                 
                • Bal Simon

                  Bal Simon - 2020-12-24

                  Thank you! That did the trick. Now I can put it to the test! :)

                  Much appreciated.

                  ~ Bal

                   
                  • bepolymathe

                    bepolymathe - 2020-12-24

                    Enjoy ;-) And thanks to lilive for this super tool.

                     
    • Christophe Guibert

      Hello Lilive,

      First of all, thank you so much for this wonderfull Freeplane add-on, probably the best of all I tried after years of intensive Freeplane usage : it really helps retrieving information in large maps.

      However, as some users reported, there's a noticeable performance question on large maps : for instance, it takes 12 seconds each time to display the Jumper/search window on a 37 000 node map on an average laptop. This seems to be due apparently to the design choice of yours to clone the entire map before starting the search, and there may be no easy solution.

      But some changes in the behavior could greatly alleviate this problem. I would suggest four independant things but with cumulative advantages, if they are feasible :

      1. The Up / Down arrow keys navigation while the map is focused on the selected item is a clever idea, but the temptation to click on a item to focus the map is irresitible, which results in the unwanted closure of the search window : could it be closed by a double click (in addition to current Escape key and window cross icon) ?

      2. The Jumper add-on would benefit of a modeless search window dialog, which could allow user interactions on the map without closing to the search window, and above all without restarting the (long) search process. In such a case, a single click on a found item might still focus the map on found nodes while keeping the Jumper search window open (as said earlier the current behavior is a little tricky), while a double click (or Escape key, etc.) might also close it.
        Should the user edit map node texts while keeping the Jumper search dialog open, he would not mind if some discrepancies occurred between the search results and the map contents (he would just have to close and restart the search, assuming the waiting time to resynchronize). The add-on would only have to be robust while trying to focus the map on possibly user deleted nodes.

      3. An option to re-focus the map whenever the Jumper search window is closed on the initial node (or an ancestor node if deleted in modeless user interactions) where it was before invoking the Jumper add-on would be useful, especially, again, on large maps and modeless use of the Jumper search window.

      4. The search results seem to be limited to 29 or 30 items, with no option to change this, which is a real problem on large maps : Jumper always search the beginning of such maps. It would be interesting to let the user change such a limitation, and/or have a "more" button to display additional groups of results (and again, let him assume a potential delay to get the search results : it would be his decision, not the add-on's).

      For information, I also experienced two rare and random minor problems :
      a. Loss of current search criteria after several Ctrl + Shift + J : occurred several times but I could not characterize the context.
      b. Impossibility to close the search window whatever I did, had to kill the java process and lost my 37 000 node map last modifications : occurred only once. The only hint is that the modal Jumper search window seemed to be slow to respond to GUI interactions : it was possible to click on option check boxes, and to select node items which where correctly but lately highlighted in the list, but the map would not focus on the corresponding map nodes.

      Again, I am very grateful for this remarkable work, and thank you for considering my request.

      Best Regards,

      Christophe Guibert

       
      • lilive

        lilive - 2021-03-12

        Hi Christophe,

        Thank you for this positive feedback.
        This idea to use a modeless dialog is interesting. The details you give are helping.

        Actual performances when working with large maps make the add-on almost unusable. It takes me some times, but I'm working on a multithreaded version. I hope this will improve the performances. And because the search process will be split in many subprocesses for large maps, the result list will be progressively updated. I guess this will contribute to give a better user experience, and this will solve the current 30 results max limitation. I also have a couple of other idea to increase the speed.

        Even if I can solve the speed problem, I guess that a modeless dialog may have other advantages for some users. Not for me, I think, because I'm more a keyboard shortcut guy than a mouse user, and this is not convenient to switch between 2 freeplane frames with the keyboard. And I'm a little bit concerned about the problems that may appear with a modeless dialog (node deletions for example, like you said). Nevertheless I'm writing this idea in the todo list, we will see.

        About your point 1:

        I have never deal with double clicks in java, but I think your request may not be difficult to implement. Maybe with an option checkbox in the settings to activate this behavior. => also in the todo list.

        About point 3:

        I think I see your point. Often, when I'm creating new nodes about some topic, I need to browse the map, check some stuffs, possibly copy or edit some nodes, then go back to the first place I was writing. To use Jumper like you describe may help. But I'm looking for a more general solution, because sometimes, in these situation, I don't need Jumper to browse the map because I already know where I want to go. How to return to the first place in these cases?

        I think we need a generic and built-in way to "mark" a node in Freeplane, then to be able to jump back to it afterward (related discussion). Jumper may use this feature and "mark" the current node when invoked. The user may use the Freeplane feature to jump back. And we may have a new menu entry for Jumper, "resume search", that will bring back the previous search without marking the currently selected node. This should work either with modal and modeless dialog. What do you think?

        By the way, have you noticed that the behavior you describe is already implemented? When closing the dialog with the esc key, the node that was previously selected is selected again.

        About problem a:

        Do you know that the search criteria is cleared after 60 seconds, that you can recall it with the search history (see the add-on help in the dialog) and that this duration may be changed in the settings?

        About problem b:

        Sorry for this, and thanks to report. I will think about this possible issue in the next version.

        Thank you again for your input and ideas, it helps.

         
        👍
        1

        Last edit: lilive 2021-03-12
  • kewapo

    kewapo - 2020-07-08

    Thats a wonderful plugin!

    Congratulations.

     
    • lilive

      lilive - 2020-07-31

      Thanks kewapo :)

       
  • quickfold

    quickfold - 2020-07-31

    This looks great and I'm sure I'll have some questions after I try it, but first: are you familiar with the exploding Zettelkasten notetaking community? If not, you can start at www.zettelkasten.de or the r/Zettlekesten subreddit, and I'm happy to provide more links if you want. I think that with some modifications, Jumper could allow FreePlane to provide an interesting implementation of the zettelkasten method by using unique ID's as search terms to jump from one node to other linked nodes. I actually abandoned FreePlane for a while because I was looking for a zettlekasten solution and just found your post almost by accident. Now I'm wondering if it is a solution...

     
    • lilive

      lilive - 2020-07-31

      Hi Quickfold,
      No, I'm not familiar with the Zettelkasten notetaking. I'm coming back from https://zettelkasten.de/posts/overview/ (there is a lot to read), and I also watched some videos. This is not clear to me what Freeplane miss to use it for Zettelkasten, nor what Jumper could provide to enhance it.
      Perhaps Jumper could help in the process to make links?
      Can you enlighten me?

      Also, this makes me think about the MapInsight add-on. Don't know if it's relevant.

       

      Last edit: lilive 2020-07-31
      • quickfold

        quickfold - 2020-07-31

        If you are new to it, this article is a better intro than the website overview you mentioned: https://writingcooperative.com/zettelkasten-how-one-german-scholar-was-so-freakishly-productive-997e4e0ca125?gi=427cc98f84bc

        Thanks for the MapInsight link, which was new to me. It is relevant although it's a different sort of implementation.

        It may be tricky to explain to you briefly how Jumper could work as a Zettelkasten (ZK) with FreePlane if you are totally new to it, but I'll try. The ZK method suggests that you keep your notes "atomic", with 1 idea per note. In FreePlane each node would be a note. The notes are structured and connected or linked to each other, as in FreePlane, but an important part of the ZK is that notes can be connected to each other directly, outside of a hierarchy. FreePlane currently does this with connectors, but these are not curretly set up well to allow easy navigation of linked notes or searches of related notes (FP's limitations on these functions may not be obvious if you are not familiar with normal ZK workflow).

        To allow easy creation and navigation of these links, some software implementations of the ZK either use wiki-links to connect items within one file or they have each note as a separate file and link between files with a "file://" path link. However, two popular implementations (TheArchive and Zettlr) don't really use links--instead, each note gets a unique id (often a date/time stamp like 20200731101222) that is the note filename and their "links" are really fuzzy searches for files with that ID in the name. This also allows the "link" to show all of the other notes that link to that note (aka "backlinks"), which helps you navigate the network of connections and gain insight into ideas that you may not have otherwise realized may be connected.

        Jumper could allow a FreePlane map to operate in this way by giving each node an ID (either the actual .mm database id or just one typed in the node) and letting the user easily search for every instance of that ID. With some modification, it could even automate this more, possibly by implementing a wiki-link syntax.

         
        • lilive

          lilive - 2020-08-02

          The article you linked to is indeed a good introduction to ZK. With your explanations, I have now a clearer picture of the topic.

          I feel that Freeplane may be a tool to create a ZK, with some scripts or add-ons to improve the workflow.

          I see 3 ways to link between ZK notes with FP built-in features:
          - Text hyperlinks
          - Connectors
          - Links
          The attached file contains examples for these 3 possibilities.

          Text hyperlinks are quite close to the wiki-link syntax you mentionned.

          MapInsight seems to me a better tool to deal with ZK than Jumper, because it allows to see all connectors from and to a node, and because it allows to find relatives nodes based on text search, then to create connectors. Of course this require to use connectors to handle the links.

          On the other hand, Jumper may also help if I add a new option. For now, it allows to search into all nodes, into current node children, or into current node siblings. It could also allows to search into all nodes that link to the current node, either with a text hyperlink, a connector or a link. I can consider to add this feature to my todo list if you think that it's worth the effort.

           
          • quickfold

            quickfold - 2020-08-03

            I appreciate your response, @lilive. It's not obvious to me that MapInsight would work better for a ZK than Jumper. MapInsight is perfect for concept map, but that's a different way to manage knowledge that focuses more on making implicit connections explicit and systematized, whereas a ZK focuses more on discovering possible connections between ideas and generating new ideas.

            As for the option of changing Jumper to to search just among backlinks, I'm not yet sure that this would be useful, so I would hold off on that for the moment. The ZK thing is really exploding online at the moment so most people, including me, are still fairly new to it and are figuring out how to make it most useful for them.

            Can you answer 3 questions for me?
            1. Re: your notes.mm file, the text hyperlinks between nodes is closest to how I was thinking about it. Can you tell me how you created those links? Is there a way to create such links that does not involve manually clicking both nodes, such as a way to copy a node ID to the clipboard and then paste a link to that node somewhere else? I am becoming more hopeful about FreePlane serving my needs for ZK notes, but it is important to get the workflow smooth because things like linking nodes is something that a user would do dozens of times a day. Manually clicking the two nodes I want to link isn't workable because I am imagining a ZK with 1000s of nodes.
            2. I had trouble using Jumper's Regular Expression search. I was trying to search for id as a whole word. "id didn't do it, nor \ id\. What regex syntax should I be using?
            3. Is there any way to search for an exact phrase in Jumper using quotation marks or some other non-regex method?

            Thank you again!

             
1 2 > >> (Page 1 of 2)