natjve comments change tracking in libreoffjce online
play

Natjve comments & change tracking in LibreOffjce Online By - PowerPoint PPT Presentation

C o l l a b o r a P r o d u c t i v i t y Natjve comments & change tracking in LibreOffjce Online By Pranav Kant Sofuware Engineer at Collabora Productjvity pranavk@collabora.com www.collaboraoffjce.co C o l l a


  1. C o l l a b o r a P r o d u c t i v i t y Natjve comments & change tracking in LibreOffjce Online By Pranav Kant Sofuware Engineer at Collabora Productjvity pranavk@collabora.com www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  2. Problems with previous approach Trigger unnecessary rendering of document’s tjles ● Upon user selectjng a comment, the anchor lines would become bold and trigger a tjle invalidatjon in document ● Not ideal for Online where every unnecessary invalidatjon has a huge performance cost ● Invalidatjon would happen even if the document content is unchanged www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  3. Problems with previous approach Harder comment navigatjon ● Imagine a page full of range comments with range positjons completely out of sync with comments’ positjon on the sidebar; fjnding which comment belongs to which text is hard ● Ideal would be to slide the comments to their range positjon as they are clicked www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  4. www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  5. Problems with previous approach Anchor lines all over the document ● Interfering with user experience ● Especially when there are lot of comments www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  6. www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  7. Problems with previous approach Harder to maintain ● Involvement of editeng. ● Typing comment in one view interfering with other views ● Special cases to handle that in LOK ● And many other problems; a lot of bug fjxing involved around comments earlier www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  8. And no change tracking comments support www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  9. So, this is what we wanted ● Betuer UX ● Quicker response tjmes ● Avoid unnecessary round-trips with every typed character ● Animatjons!!! ● Betuer DX ● Low maintenance costs ● Less developer tjme fjxing comments related bugs ● Integrated change tracking comments ● Easier to accept/reject changes, add comment, etc. www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  10. Implementatjon

  11. Implementatjon ● Optjonal feature ● Can be disabled by an optjon in LOK ● Other LOK clients stjll using in-tjled comment rendering ● Pass --enable-tjled-annotatjons in GTV ● Wrapped all comment functjonality under the set of LOK APIs www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  12. Implementatjon ● Single LOK command to get all the comments (with their parent-child relatjonship) ● getCommandValues(ViewAnnotatjons) ● JSON array containing all the comments www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  13. Implementatjon ● Augmented existjng UNO commands ● For insertjon/removal/modifjcatjon of comments ● .uno:InsertAnnotatjon, .uno:RemoveAnnotatjon, .uno:ModifyAnnotatjon now return/accept a ‘Id’ parameter to identjfy the comment www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  14. Implementatjon ● Callbacks to notjfy LOK clients ● For insertjon/removal/modifjcatjon of comments ● LOK_CALLBACK_COMMENT ● With a JSON containing the informatjon about the comment www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  15. JSON structure { "comment": { "actjon": "Add", // “Remove”, “Modify” "id": "11", // Unique ID across lok instance "parent": "4", // “0” if it’s a root comment "author": "Unknown Author", "text": "This is a beautjful comment", "dateTime": "2016-08-18T13:13:00", // ISO 8601 tjme format "anchorPos": "4529, 3906", // positjon of comment in twips "textRange": "1418, 3906, 3111, 919" // rectangle coordinates of range comments in twips } } www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  16. Implementatjon (Writer) ● Only available module with support for reply comments ● Parse the internal data structures and convert it to JSON preserving the parent-child relatjonship ● Calculate the rectangles in twips for range comments ● And put them in JSON ● Give unique Ids to each SwPostItField object to be able to identjfy comments from the LOK API ● Needed to later modify or remove a specifjc comments www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  17. Change tracking ● Simple to expose them through a LOK API ● Support for commentjng was already present in core ● Intuitjve UI – can accept/reject changes easily ● Add comments easily ● And animate them to their actual change www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  18. Client side

  19. Using comments & change tracking API ● Interpret the JSON and feed it to the layoutjng algorithm ● Sort comments by their anchor positjon in the document ● Keep them as closer as possible to actual content ● and animate them when they get the focus near to their actual content ● Send data to backend only afuer comment is commitued/saved ● Whole comment data is sent in one go ● Small performance win ● Use the change tracking API to fetch changes and their comments and integrate in sidebar with comments www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  20. www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  21. More ideas for future ● Betuer root-reply comment relatjonship ● In ODF, all the adjacent <offjce:annotatjon> are treated as reply comments ● Limitatjon: Only one comment thread per anchor positjon ● Give Id to each <offjce:annotatjon> element and link reply comments with a new aturibute, <offjce:parent- annotatjon-name> ● Ability to resolve comments ● Some new offjce:resolved aturibute? www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  22. More ideas for future ● Ability to reply to comments and resolve them in Calc and Impress ● Calc: “Notes” vs. “Comments”? ● Change tracking comment threads ● … instead of only one comment per change www.collaboraoffjce.co C o l l a b o r a P r o d u c t i v i t y m

  23. C o l l a b o r a P r o d u c t i v i t y Any Questjons? By Pranav Kant pranavk@collabora.com

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend