1. 16 Sep, 2014 20 commits
  2. 15 Sep, 2014 1 commit
    • Randall Leeds's avatar
      Optimize reply count updates · 04b11378
      Randall Leeds authored
      Rather than traversing all the descendants at every digest of every
      level of every thread, propagate updates from leaf nodes to parents
      by giving each thread access to its parent thread controller. Digests
      are only ever performed at the top level and are debounced so that
      during progressive rendering of threads the number of digests is
      greatly reduced. Some adhoc experimentation yields a 50% reduction in
      digests during thread rendering on top of the performance gain by
      not traversing descendants in `messageContainer#flattenChildren` calls
      on every digest.
      
      To accomplish the debouncing, the render service now returns a cancel
      function making it have the same signature as `requestAnimationFrame`.
      04b11378
  3. 13 Sep, 2014 1 commit
  4. 12 Sep, 2014 18 commits
    • Randall Leeds's avatar
      Remove unused code · 4b600414
      Randall Leeds authored
      Card emphasis on highlight hover isn't supported by the sidebar
      right now and we no longer disable annotating in the sidebar.
      4b600414
    • Randall Leeds's avatar
      923cd7ed
    • Randall Leeds's avatar
      Simplify the render service · d1c0a45d
      Randall Leeds authored
      After I changed it so that it took a callback rather than a scope
      the data parameter became rather useless.
      d1c0a45d
    • Randall Leeds's avatar
      Refactor drafting and authentication interactions · 6c64bd65
      Randall Leeds authored
      Make changes to allow multiple top-level drafts, drafting before
      authenticating, keeping drafts while performing page searches,
      and replying to search results.
      
      - Factor out the userAuthorize option passed to the Permissions
        plugin into a local function in controllers.coffee.
      
      - Only load the Permissions plugin when logged in so that the
        plugin options do not leak information about the last logged in
        user and unattributed drafts have no user or permissions field.
      
      - When switching to highlight mode, show the sidebar and flash an
        info message informing the user that they will need to log in
        before annotations are saved, but don't prohibit highlighting.
      
      - Simplify the logic in the guest for highlight mode by offloading
        work to the annotation controller. The "inject" property is no
        longer needed. The annotation controller saves drafts of highlights
        if they have no user and persists them to the server as soon as
        the user is set.
      
      - When logging in, the app controller simply loops through all the
        drafts are publishes 'beforeAnnotationUpdated' to give the
        Permissions plugin a chance to fire.
      
      - When initializing the Store plugin, don't perform any search at
        all when not logged in. This change makes "single player" mode
        work even before logging in.
      
      - Allow hiding the sidebar when editing. Simplify the guest code
        that no longer needs to track the sidebar state by listening for
        'annotationEditorHide' and 'annotationEditorSubmit' and the
        corresponding sidebar code that fired these. They're nonsensical
        now because there isn't exactly one "editor".
      
      - Remove the concept of an 'ongoing edit' entirely, simplifying the
        sidebar code even further. Any number of edits are allowed and
        top level ones are not treated specially.
      6c64bd65
    • Randall Leeds's avatar
      Remove superfluous digest and bridge sync · 60504257
      Randall Leeds authored
      When the Store updates annotation data it only
      60504257
    • Randall Leeds's avatar
      Move showEditor out of the Bridge · 82c74147
      Randall Leeds authored
      82c74147
    • Randall Leeds's avatar
      Remove ephemeral properties from bridge whitelist · 5903d6c3
      Randall Leeds authored
      With this change, the show differences code is completely out for
      the moment, but there should be no more unexpected properties on
      annotations objects at all.
      
      Fix #1207
      5903d6c3
    • Randall Leeds's avatar
      ebd10baf
    • Randall Leeds's avatar
      Prune empties in threading plugin · 4feb920d
      Randall Leeds authored
      I had decided not to do this initially in order to show annotations
      that were missing. We'll have to decide how we want to show the holes,
      but it's much better if we prune the containers that aren't used so
      that we don't end up with empty threads sitting around all over the
      place.
      
      The only tricky thing is that when new annotations are loaded we must
      thread everything again or existing containers that were lifted up to
      the root will not attach themselves to newly loaded parents.
      4feb920d
    • Randall Leeds's avatar
      Even simpler page search · bac08b10
      Randall Leeds authored
      Improve the already much improved page search.
      
      - Rather than binding the render function to a thread, pass the
        render order list in the accumulator.
      - Instead of moreTop and moreBottom just use a single property, more.
      - More concise everything. What more can I say?
      bac08b10
    • Randall Leeds's avatar
      Fix browser history navigation on stream · c194a431
      Randall Leeds authored
      c194a431
    • Randall Leeds's avatar
      Refactor page search · 67469995
      Randall Leeds authored
      Refactor the page search rendering algorithm for fewer scope
      variables, simpler template expressions, camel case, support
      for holes in threads, less looping, conciseness and readability.
      67469995
    • Randall Leeds's avatar
      Combine Viewer and PageSearch controllers · 5736d80b
      Randall Leeds authored
      No longer change routes when the query changes between the Viewer
      and the PageSearch controller so that the filtering is near instant.
      5736d80b
    • Randall Leeds's avatar
      Drop annotator.discardDrafts helper · 42c8ac83
      Randall Leeds authored
      The annotator service is not a dumping ground for helper functions.
      42c8ac83
    • Aron Carroll & Randall Leeds's avatar
      More view, sort, and threading refactoring · 1e5c93a3
      Aron Carroll & Randall Leeds authored
      Clean up a number of issues.
      
      - Fix page search, especially for deep results.
      
      - Split thread directive into its own file.
      
      - Clean up the separation between CSS of threads and annotations.
      
      - Separate more actions menu for annotations from thread actions strip.
        Edit and delete in the former. Share and reply in the latter. Cleans
        up controllers quite a bit.
      
      - Refactor both thread and annotation directives.
      
      - Break out progressive rendering service.
      
      - Clean up template variables to use the controllerAs syntax to treat
        controller as the view model.
      
      - Clean up thread collapse prevention during editing.
      
      - Refactor threading to remove the thread property from annotations and
        take ownership of the thread root, removing the need to track many
        things about threading in the App controller.
      
      - Clean up annotation edit cycle and drop the ngModel usage (doesn't
        work well with objects since it does a shallow watch).
      
      - New thread and annotation directives come with full documentation in
        ngdoc style as supported by the dgeni documentation tool.
      
      - Preserve annotations, when appropriate, upon changing authentication.
        Fix #567.
      1e5c93a3
    • Randall Leeds's avatar
      00a7ab78
    • Randall Leeds's avatar
      Isolate the search directive · 4618141b
      Randall Leeds authored
      4618141b
    • Aron Carroll's avatar
      Remove raf.js from the karma config · a7a5aaec
      Aron Carroll authored
      a7a5aaec