Closed pedropintosilva closed 1 month ago
I look to my old notes on this subject (navigator) and I think we have an opportunity here to improve also existing things or make it worse:
Please check gh#6248-navigator-online.odp (pass gh#6248-navigator
) for a quick mockup of what I have in mind.
Still any of this ^ should not be taken as a guide or set of instructions. I'm merely initiating a discussion here. Any feedback is welcome.
That's a great idea to have only one Navigator icon where the navigation will popup. What I really really like is that the Navigator is not writer only, there will be also the tabs for calc and the slide previews for impress/draw. Maybe we can expand the Navigator for search and other stuff in the future too (as you show links, comments, ... in the mockup).
At least for mobile it would be also a great improvement to have an navigator icon instead of an preview's toolbar for example.
collected what buttons/controls would work in Lool now:
WRITER: what works: up/down buttons, Page selector SpinField, content navigation view, header/footer, promote/demote/move buttons listbox //works, but when value changed, after treeContent selection is jumped, treecontent selection go back to previous state ... (probably a missplaced update or similar)
what not works: heading lvl dropdown, drag mode selector (drag mode does not work on PC app) List box on-off toggle button (this only works on PC only if navigator is not on sidebar.. it just hide the treeview)
I dont know: anchor works something, but may differ from PC app, and im not sure if that really work right set remainder: i was not able to make it do anything yet... not even at PC app ...
CALC: works: Data Range, Start/End button, toggle button not works: Scenarios, drag mode selector (they not work pl PC app as well) colum/row spinField (probably i could fix it)
IMPRESS: works: prev/next/first/last slide buttons not works: drag mode selection, show shapes dropdownlist
TreeContent works in all 3, but it does not know all the PC capabilities, like right click menu, stepping up/down with keyboard... There are still some glitches with the selection
[edited] Talked with @eszkadev, better to hide all controls for now. Focus solely on the Navigator tree view and its behaviour/performance. We can then think/test one by one and add it if needed. [/edited]
Control | Status | Notes | Screenshot |
---|---|---|---|
Up/Down buttons | Works | ||
Page selector SpinField | Works | ||
Content navigation view | Works | ||
Header/footer | Works | ||
Promote/demote/move buttons | Works | ||
Listbox | Almost works | But when value changed, after treeContent selection is jumped, treecontent selection go back to previous state ... (probably a missplaced update or similar) | |
TreeContent | Almost works | It does not know all the PC capabilities, like right click menu, stepping up/down with keyboard... There are still some glitches with the selection | |
Heading lvl dropdown | Doesn't work | ||
Drag mode selector | Doesn't work | Drag mode does not work on PC app | |
List box on-off toggle button | Doesn't work | This is also flimsy on PC app. It only works on PC only if navigator is not on sidebar | |
Anchor | To test | works something, but may differ from PC app. Not sure if that really works right. I was not able to make it do anything yet... not even at PC app ... | |
Documents dropdown | Hide it | Let's hide this |
Control | Status | Notes | Screenshot |
---|---|---|---|
Data Range, | Works | ||
Start/End button | Works | ||
Toggle button | Works | Pedro: I'm not sure what is this | |
TreeContent | Almost works | It does not know all the PC capabilities, like right click menu, stepping up/down with keyboard... There are still some glitches with the selection | |
Scenarios | Doesn't work | ||
Drag mode selector | Doesn't work | Also doesn't work on PC app | |
Colum/row spinField | Doesn't work | Probably i could fix it | |
Documents dropdown | Hide it | Let's hide this |
Control | Status | Notes | Screenshot |
---|---|---|---|
Prev/next/first/last slide buttons | Works | ||
TreeContent | Almost works | It does not know all the PC capabilities, like right click menu, stepping up/down with keyboard... There are still some glitches with the selection | |
Drag mode selection | Doesn't work | ||
Show shapes dropdownlist | Doesn't work | ||
Documents dropdown | Hide it | Let's hide this |
I found these glitches/errors: used document: https://opengrok.libreoffice.org/xref/core/sw/qa/uitest/data/tdf122449.odt
Single user: TreeScroll: scroll jumps to top then scroll down (FullUpdate?) ... so the selected row will be the most bottom on the tree
Unsuccessful Drag&drop item in Tree, change scrollness (FullUpdate?):
Actual scroll Position changes with sidebar on/off toggle
multi user: expand / collapse synchronized ?! dont views have separate info about what contentTypes are expanded/collapsed ?!
Change on Tree update other user Tree, resulting non needed scolls
Design question:
not sure (maybe not happened):
We should probably rename it from "Navigator" to something else. For example "Document Outline" as tooltip (hover) and as Title maybe just "Outline"
We should probably rename it from "Navigator" to something else. For example "Document Outline" as tooltip (hover) and as Title maybe just "Outline"
Yup, agree with that one! :)
Just a note here. In the long run and once the Navigator is placed as shown in https://github.com/CollaboraOnline/online/issues/6248#issuecomment-1527143532 [1] I still think Navigation
is the best option. However, and for now, I think we can either let it as it is Navigator
or change it to Outline
Label | Pros | Cons |
---|---|---|
Navigator | Familiar to LO users (not all) | Describes the component rather than the function/action |
Navigation | Familiar to MS O users and understandable to anyone else. Emphasis on the function/action | For now: It can be to generic specially since Navigator is still not integrated with pages/slides sorter |
Outline | Familiar to G users. | Describes the display content rather than function/action. Also can be mistaken for other outline types (Bullets and Numbering) and Outline is already a quite prominent label in dialogs and buttons |
1."Please check gh#6248-navigator-online.odp (pass gh#6248-navigator) for a quick mockup of what I have in mind."
@pedropintosilva sure, "Navigation" seems good as well. :) Note that one of the bigger things is also that in both G and MS cases, the navigation is on the left (we do the same for the outline in Nextcloud Text), so that would be something to look into. (It’s also pretty standard in other places like web apps, PDF readers, wikipedia articles etc you know what I mean. ;)
@jancborchardt agreed, that's what I meant in my previous comment with "For now: It can be to generic specially since Navigator is still not integrated with pages/slides sorter" (s/to/too)
@pedropintosilva Can you please update this issue to reflect the current state?
excerpt from https://github.com/CollaboraOnline/online/issues/6248#issuecomment-1527143532
[...]
* It would be good to avoid adding yet another (sidebar) icon on the top toolbar. Specially when integrators tend to add their own additional icon there [...]
Please check gh#6248-navigator-online.odp (pass
gh#6248-navigator
) for a quick mockup of what I have in mind.
Just a quick update:
View
-> Navigator
Detailed description and rationale
Expose the functionality (Navigator) already present in the LibreOffice (LO) Core. The Navigator displays the different parts of a document, such as headings, tables, frames, objects, or hyperlinks. To see it in action. Open LO Writer and press F5, this will open Navigator. Quick jump to a location in the document by double-clicking an item listed in the Navigator window or enter the respective page number in the spin button.
Initially and if easier, this could be limited (by priority):
Milestones with estimated time
Code pointers
These might (not) be helpful, in doubt consult with @aszucs3 and @eszkadev :
Disabled switching to navigator: https://cgit.freedesktop.org/libreoffice/core/commit/?id=ca54fde Code handling uno commands in the core: https://opengrok.libreoffice.org/xref/core/desktop/source/lib/init.cxx?r=aea216e2#4263 Callback commands to send message from core to online: https://opengrok.libreoffice.org/xref/core/include/LibreOfficeKit/LibreOfficeKitEnums.h?r=c4b93412 Navigator panel implementation: https://opengrok.libreoffice.org/xref/core/sw/source/uibase/utlui/navipi.cxx JSDialogs Treeview widget in Online: https://github.com/CollaboraOnline/online/blob/master/browser/src/control/Control.JSDialogBuilder.js#L1715 Navigator's context menu: https://opengrok.libreoffice.org/xref/core/sw/source/uibase/utlui/content.cxx?r=6a031514#1333 JSDialogs core implementation: https://opengrok.libreoffice.org/xref/core/vcl/jsdialog/jsdialogbuilder.cxx Current JSDialogs popups generation: https://github.com/CollaboraOnline/online/blob/master/browser/src/control/Control.JSDialog.js#L105
Required skills / knowledge
C++ - LibreOffice core hacking will be needed JavaScript + CSS - Collabora Online side
WIP
https://github.com/CollaboraOnline/online/pull/6237 https://gerrit.libreoffice.org/c/core/+/150906