- 05 Jul, 2016 3 commits
-
-
Nick Stenning authored
-
Nick Stenning authored
-
Nick Stenning authored
-
- 04 Jul, 2016 2 commits
-
-
Sean Hammond authored
Simplify annotation component by removing duplicated state
-
Robert Knight authored
Remove site scripts and assets
-
- 01 Jul, 2016 16 commits
-
-
Nick Stenning authored
-
Nick Stenning authored
-
Nick Stenning authored
-
Robert Knight authored
The correct fix would be to remove new annotations with an empty draft in the reducer function that handles new annotations being created. That is not currently possible because drafts are not stored in the Redux store. Therefore this commit just manually de-registers the listener when <annotation> goes out of scope.
-
Robert Knight authored
-
Robert Knight authored
The `updateViewModel()` function was responsible for computing several pieces of data (links, document domain and title) used by the annotation template. Since we can now rely on vm.annotation being immutable, we can just compute this data lazily when we need it and use memoization to avoid unnecessary recalculation.
-
Robert Knight authored
Replace `updateDomainModel()` with a simpler function which returns a copy of the input annotation with the changes from the editor applied.
-
Robert Knight authored
These variables duplicated the information from the current draft for an annotation. Instead of restoring a draft when an annotation card is created and saving it when the annotation card is destroyed, just update the draft whenever the tags, text or privacy of the annotation is changed. The text/tags/privacy shown in the card are determined by `vm.state()` which merges the annotation and the draft. Removing these variables lets us also remove or simplify the tests that checked that everything remained in sync.
-
Robert Knight authored
Instead of maintaining a state flag indicating whether an annotation is being viewed, edited or created, derive that state from whether the annotation has an ID and whether it has an unsaved draft or not. In the process this commit simplifies the tests for reverting edits and adds a missing test that the annotation is deleted if new when clicking the Cancel button.
-
Robert Knight authored
As a step towards making <annotation> stateless or nearly-stateless and instead just a display of an annotation derived from the current annotation instance and its draft, remove the `domainModel` copy of `vm.annotation`.
-
Robert Knight authored
Make `gulp watch` build CSS, files and images
-
Sean Hammond authored
Make `gulp watch` build the CSS, files and images initially (creating the output files if they don't exist yet, overwriting them if they do) and then watch the source files and re-build them when they change. This matches the existing `gulp watch` behaviour for scripts. This means you can just run `gulp watch` and have everything built, instead of having to run `gulp build watch`.
-
Sean Hammond authored
Fix annotation state not being updated when annotations are saved
-
Robert Knight authored
Annotations in the app's local state store were not being updated after a save was successfully committed on the server. Fixes hypothesis/h#2965
-
Sean Hammond authored
zen-observable update
-
Sean Hammond authored
Remove use of ngResource for search and annotation queries
-
- 30 Jun, 2016 13 commits
-
-
Robert Knight authored
Show direct links on stream page when available (FIRST!)
-
Alice Wyan authored
-
Robert Knight authored
The CHANGES file is part of the 'h' repo and no longer exists in the 'client' repo that was forked from it.
-
Alice Wyan authored
Move relevant tests to annotation-metadata-test.js, and fix a bug in annotation-metadata.js.
-
Robert Knight authored
Several aspects of ngResource make it sub-optimal for our needs: 1. It mutates the model object directly after making an API call, which does not fit well with usage in a Redux app where the UI state should be an immutable object. 2. The ngResource classes can only be constructed once the API description has been retrieved. At least one place in our code, which handled newly created annotations arriving from the page, failed to account for this. This commit therefore replaces use of ngResource for making API calls to the search and annotation endpoints with a simple wrapper around HTTP requests which makes a call and then returns the resulting object. The new wrapper will wait until the API description has been received before attempting to make an API call, avoiding problem (2) above. As a bonus, this brings us a step towards decoupling the JS API client from Angular so we could re-use it outside the app in future. * Replace ngResource with simple $http wrapper in store.js * Add tests for annotation update and deletion API calls * Change tests in annotation-test.js from `assert(predicate(actual, expected))` form to `assert.predicate(actual, expected))` form as this results in errors that are _much_ easier to debug when they fail.
-
Robert Knight authored
The primary change here is an update for zen-observable.
-
Robert Knight authored
Update to zen-observable v0.3.0 which implements several changes to the spec, the most notable of which is that Observable.{of, from, forEach} are now all synchronous [1]. To preserve the previous behavior of `selections()` where no events were emitted until the next tick of the event loop, add a delay before checking for the initial selection. [1] https://github.com/zenparsing/es-observable/issues/88
-
Sean Hammond authored
Trigger Angular digest cycle if necessary during Redux action dispatches
-
Robert Knight authored
This is no longer needed following the addition of middleware to the Redux store which triggers a digest following a UI state change if necessary. Also add a comment in the WebSocket code that we will be able to remove the $apply() call once session state has been moved to the Redux store.
-
Robert Knight authored
At various places in our code that receive external inputs (eg. WebSocket messages, messages from other frames etc.) we have to wrap that handling in a $scope.$apply() call or similar in order to trigger Angular's change detection cycle and sync UI components with the updated state of the app after handling that input. Since most changes to app state now happen as a result of a Redux action being dispatched, we can use Redux' built-in middleware mechanism for adding logic around app state changes.
-
Sean Hammond authored
Improve behavior when selecting pre-created annotations
-
Alice Wyan authored
-
Robert Knight authored
Selecting a pre-created annotation in the page resulted in a 'You do not have permission to see this annotation' being displayed because the selection mechanism only supports annotations which have a server-assigned ID. This commit improves that behavior by ignoring annotations without IDs when selecting annotations. It also fixes an issue in AnnotationUISync that prevents Annotation objects being replaced in the UI state after they are updated on the server. Previously AnnotationUISync would receive the tags of annotations that had been selected in the page and would then look up annotations in a cache maintained by AnnotationSync in order to get Annotation objects that could be passed to `annotationUI` functions which needed objects with an ID. Fixes #3547
-
- 29 Jun, 2016 6 commits
-
-
Alice Wyan authored
-
Alice Wyan authored
-
Alice Wyan authored
-
Nick Stenning authored
-
Nick Stenning authored
-
Nick Stenning authored
-