1. 12 Sep, 2014 5 commits
    • Aron Carroll's avatar
      Fix display of page search results · 03ade9e7
      Aron Carroll authored
      Each controller for the viewer template must now define a
      shouldShowAnnotation method that accepts an annotation id and determines
      whether it should be displayed. This moves the logic out of the template
      and into the controllers.
      03ade9e7
    • Randall Leeds's avatar
      Overhaul the threading, sort, and view further · 957ad49c
      Randall Leeds authored
      Lots of changes to massively simplify things and make them much more
      performant.
      
      - The thread directive gets a few changes
        - Cleared up confusing tuple unpacking in favor of named properties
          in the render queue as per the suggestion of @aron
        - The replies and annotation are set at once. Since the replies in
          turn render lazily, this should be fast enough for all but an
          unwieldy number of threads. If we hit that wall, we'll have to do
          some filtering / pagination.
        - The directive is now triggered only on attributes and parses the
          attribute value to get the thread
      - The threads are rendered from a single thread root rather than using
        a global list of annotations that must be watched for its threads to
        be extracted. This results in a huge performance gain because this
        thread container has a stable set of children.
        - When the first `annotationsLoaded` callback arrives, we set a new
          root from the result of asking the threading plugin to thread them
        - Lots of hackery during store reloads goes away because we just nuke
          the thread root and reload
      - The application controller does not have to modify a root annotation
        set at all anymore
      - Use of the root scope in the controllers goes away entirely
      - The ongoing edit is now stored in the scope again so that it can be
        be pinned to the top of the thread list
      - The editor view and controller go away completely because the top
        level edit is now pinned to the top of the list, removing the need
        to re-render annotations between editing and viewing
      - The selected annotations are now a hash of annotation ids to true
        values if the annotation is selected, or null if the selection is
        empty
      - An ng-show is used to show/hide the selected/unselected annotations,
        further reducing re-renders
      - The view state is gone complete and now there is only sort
      - The sort is not applied programmatically in the controller, but a
        simple watch on the name of the sort is used to set the predicate
        and reverse settings as scope properties that feed into an orderBy
        filter on the thread list, reducing the number of extra watches we
        have to do and further reducing the code
      - The sort is no longer an animated dropdown, but sits at the top of
        the list always (I assume we can style this better, so have at it)
      - Unnecessary helper and logging functions are removed from the
        annotator service because silence is golden
      957ad49c
    • Randall Leeds's avatar
      Overhaul view and sort behavior · dc477032
      Randall Leeds authored
      Bring the view and sort controls closer in line with the latest
      design decisions.
      
      - Start in Document view and Location sort.
      - When in Document view and Location sort, use dynamic bucket.
      - When in any sort other than location, disable dynamic bucket.
      - When in Location sort, all comments always appear at the bottom.
      - Remove the Screen and Comment views.
      - Remove the focus annotation state that was triggered by expanding
        a top level annotation; there is only hover emphasis now.
      - The `showViewer` call always goes to Selection view.
      - Using multi-select (Cmd or Ctrl Click on tabs and highlights) will
        trigger the Selection view, or switch back to the Document view
        if the selection is empty.
      - Page search always searches the whole document.
      - Leaving the page search switches back to the Document view.
      
      Additionally, many cleanups were made as a result.
      
      - No need to track focused state or comments in the client frames.
      - No need to pass the view name in `updateViewer` or `showViewer`.
      - No need to pass the focus purpose in `updateViewer`, `showViewer`,
        or `toggleViewerSelection`.
      - Drop various helper functions around focus.
      - No need to manually unshift or push newly created or streamed
        annotations into the view.
      - The viewer template uses threads at the top repeater, like the
        page search template.
      - The app controller maintains all the annotations on the root scope,
        the current selection shadowing it on the application scope, and
        a cheap, identity watch that retreives the threads.
      - The page search can use a cheap watch on the threads to refresh.
      - The reply list of each annotation is no longer set on the annotation
        object.
      - The thread directive now watches the thread children and keeps them
        sorted, rather than the annotation directive.
      - The recursive `buildReplyList` function is no longer needed.
      - Scattered use of the root scope is much reduced.
      - Drop requestAnimationFrame polyfill because angular has its own.
      - Drop the recursive directive, splitting out thread.html and using
        using ng-include for recursion.
      - Use a single render queue for all threads and sequence updates on
        animation frames, resulting in smooth, progressive rendering.
      - Combine the viewer and page_search templates.
      dc477032
    • Randall Leeds's avatar
      Revert "Move the infinite scroll into stream controller" · 14c216b8
      Randall Leeds authored
      This reverts commit f8107e08c4f89fe41a2825693225609bcd5e17b4.
      14c216b8
    • Randall Leeds's avatar
      b33f2921
  2. 11 Sep, 2014 3 commits
  3. 10 Sep, 2014 4 commits
  4. 08 Sep, 2014 4 commits
  5. 02 Sep, 2014 5 commits
  6. 01 Sep, 2014 1 commit
  7. 29 Aug, 2014 8 commits
  8. 28 Aug, 2014 2 commits
  9. 27 Aug, 2014 2 commits
  10. 26 Aug, 2014 1 commit
  11. 25 Aug, 2014 5 commits