1. 16 Jul, 2014 18 commits
    • Randall Leeds's avatar
      Tweak close X styles · ae6a8a8c
      Randall Leeds authored
      ae6a8a8c
    • Randall Leeds's avatar
      Improve timings and curves on transitions · 2257281e
      Randall Leeds authored
      If anyone doesn't like this, it's easy to revert, so it's going
      straight to master.
      2257281e
    • Randall Leeds's avatar
      Merge pull request #1316 from hypothesis/toolbar-usability · 7f25b15f
      Randall Leeds authored
      Improve the usability and transitions of toolbar
      7f25b15f
    • Randall Leeds's avatar
      Improve the usability and transitions of toolbar · d0331036
      Randall Leeds authored
      Change the toolbar transitions, hover actions, and push states to
      improve usability and feel.
      
      - Animate from the right, so that all buttons enter as a group, so
        as to give them all equal "weight"
      - Colorize the pushed buttons even when not hovering so it's easier
        to see which are active
      - Further emphasize pushed state by "docking" them to the right
      - Rework curves, delays, and durations for great beauty
      - Show hidden buttons when hovering anywhere, not just the top
      
      Close #1268
      d0331036
    • Randall Leeds's avatar
      Merge pull request #1281 from hypothesis/stream-search-refactor · 4a604b5d
      Randall Leeds authored
      Turn Stream into App
      4a604b5d
    • Randall Leeds's avatar
      2e0d71b1
    • Randall Leeds's avatar
      Unify stream and viewer styles · e7f69cd4
      Randall Leeds authored
      - Vertically align the thread expander using ems and taking into
        account the size of the header it's aligned with.
      - Fix excerpt bottom margin to match viewer
      - Tuck the thread border under the content of the parent with a little
        extra padding
      - Align the padding of the content class with card margins
      - Rather than using a space character in the font icon styles, use the
        offset margin by choosing a sensible, non-zero default
      
      Close #1290
      e7f69cd4
    • Randall Leeds's avatar
      Clean up filter, updater, and store interactions · 4919b16b
      Randall Leeds authored
      Rather than having the annotator service handle the API service
      discovery event, handle it in the app controller. That allows for
      all the calls to add the Store plugin to be centralized in this
      controller.
      
      The `reloadAnnotations` function is modified so as not to assume
      that a Store is already loaded, cleaning up only if one is. The
      new store is placed on the scope so that its entities can be watched.
      
      Rather than racing with the store, the updater is configured with
      a new filter when the entities change. When the stream route is loaded,
      these entities are empty, but the configured stream filter is sent
      without re-initializing the filter. The stream search controller only
      has to send a new filter if an updater is already open, otherwise it
      is opened when the store is configured.
      
      The patched `Store.loadAnnotations` is changed so that it creates a
      fresh entities object on each invocation. This change ensures that if
      provider frame disconnection is handled at some point the entities will
      not continue to be included in searches and it makes the scope watcher
      for this property very cheap.
      
      Fixes #1306
      4919b16b
    • Randall Leeds's avatar
      c0ea4674
    • Randall Leeds's avatar
      Simplify duplicate facet handling · e5169552
      Randall Leeds authored
      When a query parameter is used twice in search or the same facet is
      selected twice in the search input handle it the same way.
      
      - Remove special code for multi-value filter clauses
      - Remove special parsing of text facet, which seems to have been
        added by mistake (the space-delimited text field might come from
        the text field being the default remainder field, meaning it takes
        the left-over text in the search box which doesn't match a facet)
      e5169552
    • Randall Leeds's avatar
      Remove unreachable code · 17408a9d
      Randall Leeds authored
      17408a9d
    • Randall Leeds's avatar
      a4cce8d8
    • Randall Leeds's avatar
      Exponential backoff for websocket failures · 8479e3b9
      Randall Leeds authored
      Close #1291
      8479e3b9
    • Randall Leeds's avatar
      Fix infinite scroll for new updater · 01ff10dd
      Randall Leeds authored
      01ff10dd
    • Randall Leeds's avatar
      Avoid updater double initialization · e1fdf324
      Randall Leeds authored
      Don't initialize the updater twice when logged in.
      
      When the session is first loaded, only initialize the updater if there
      are no logged in users in the session. If there are, the updater will
      be initialized by the watcher.
      
      Fix #1307
      e1fdf324
    • Randall Leeds's avatar
      Don't reconnect when deliberately closing updater · d70572b4
      Randall Leeds authored
      Failure to do this results in an infinite loop of reconnections.
      d70572b4
    • Randall Leeds's avatar
      Use $route.reload() instead of refresh events · 4c462bdf
      Randall Leeds authored
      Rather than using extra events to trigger a round trip through the
      visual search directive callbacks and query parsing, simply rely on
      $location.search() at the time the route controller is instantiated
      and stop using `reloadOnSearch: false` in the route definitions so
      that changes to the search trigger a refresh of the view.
      
      The QueryParser now splits `populateFilter` into `parseModels` and
      `populateFilter` so that the models can be parsed when the visual
      search callback fires and the filter can be populated separately
      from the query string after the route reload.
      
      Summary of improvements:
      
      - Drop the VSSearch and RefreshSearch events.
      - Make the search.query scope property a simple value instead of a
        function. This reduces the work required for the watcher and is
        possible because we no longer update the query string unless the
        query changes and the route will reload if it does.
      - Clearing the stream is no longer necessary, since it starts clear
        on each route reload.
      4c462bdf
    • Randall Leeds's avatar
      Turn Stream into App · e2dc84be
      Randall Leeds authored
      This refactor turns the stream page a part of our main H application
      
      Main features:
      * Stream is now accessible from our app at the /stream angular route
      * Stream has the same header (same look, same code) as the main app
      * Authentication from the stream page is now possible
      * The same visualsearch-bar is used both for page- and stream search
      * Stream page now uses our viewer.html to show annotation cards.
      * Replying to/editing/deleting annotations can be done in the stream
      page too.
      
      Details
      * streamsearch.pt is obsolete and has been delete because app.pt is
      used instead of it.
      * streamviewer.html is obsolete and has been deleted because
      viewer.html is used instead of it.
      * The QueryParser class is moved into the streamfilter.coffee and
      available is a new service for the app.
      * The visualsearch directive now uses functions living in the
      <current scope>.search object that any part of the app can configure it.
      e2dc84be
  2. 15 Jul, 2014 7 commits
  3. 14 Jul, 2014 3 commits
  4. 10 Jul, 2014 1 commit
  5. 09 Jul, 2014 2 commits
  6. 08 Jul, 2014 4 commits
  7. 07 Jul, 2014 2 commits
  8. 02 Jul, 2014 3 commits