Page History
...
(NOTE: Currently these goals are very high-level. They need to be broken down into specific tasks / tickets prior to the Sprint, so that those tickets are claimable by individuals.)
- Alphabetic jump to (specific letter) in results listing (NOTE: Below browse tasks have a dependency on this feature. Should we do this prior to the sprint?)
- E.g. Jump Jump to a Title / Author starting with a specific letter or string, like like http://demo.dspace.org/xmlui/browse?type=title
- Build out Administrative Search/Browse tools (each of these tools is limited to Site Administrators)
- Find Item by Internal Item ID/Item Handle (e.g. XMLUI: http://demo.dspace.org/xmlui/admin/item , JSPUI: http://demo.dspace.org/jspui/tools/edit-item)
- Browse Withdrawn Items (by Title) (e.g. XMLUI: http://demo.dspace.org/xmlui/admin/withdrawn , JSPUI: http://demo.dspace.org/jspui/dspace-admin/withdrawn)
- Browse Private Items (by Title) (e.g. XMLUI: http://demo.dspace.org/xmlui/admin/private , JSPUI: http://demo.dspace.org/jspui/dspace-admin/privateitems)
- Improve developer documentation / getting up-to-speed documentation.
UI Tasks
These are somewhat lower level than the goals above, in order to get an idea of the effort required, but need more detail before they can be turned in to github issues
Alphabetic jump to (specific letter) in results listing
- Service
- Effort: 24h
To do
construct the Rest URL based on the params
parse the response
ensure everything gets cached properly
build remotedata objects for results
write tests
- StartsWithComponent
Effort: 16h
To do
- show letters as links
- show a startswith input
- handle the case for phone screens (too small to show the alphabet)
- call the service with the correct query
- links should work with js disabled
- component should be abstract enough to be used with any kind of list
- write tests
Browse By Title Component
- Description
- has an alphabetic selector at the top
- shows an item list
- can be paged and sorted
- can be scoped by a community or collection
- can be filtered by a metadata field
- Effort: 8h
- To do:
- create the component
- configure the routes
- call the service with optional scope and metadatafield filters
- configure existing components for alphabetic filtering, object lists and pagination to work with the correct data
- write tests
Browse By Metadata Field Component:
- Description
- has an alphabetic selector or a date selector at the top
- shows a list of metadata values
- can be paged and sorted
- links go to a browse by title view filtered by the scope and the metadatafield of this component
- Effort: 16h
- To do:
- create the component
- configure the routes
- configure existing components for alphabetic filtering, object lists and pagination to work with the correct data
- create a component to select by date
- reuse the search’s date widget?
- Create an object list entry for metadata values
- the metadatafield it works with should be configurable: title, author, subject, etc.
- this should reflect in the route e.g.
/collection/:id/browse/title
- and the i18n labels.
- this should reflect in the route e.g.
- It should work with or without a scope
- write tests
Build out Administrative Search/Browse tools (each of these tools is limited to Site Administrators)
Find Item by Internal Item ID/Item Handle
- Routing by handle
- Effort: 24h
- To do:
- Create an index that maps handles to self links
- Modify the DSOResponseParsingService, to update the handle index every time an object is added to the cache
- add hasByHandle and getByHandle methods to ObjectCacheService
- modify RequestService.configure to check by handles as well to determine if something is cached.
- perhaps make the fields to check for configurable, I could imaging a check by DOI for example
- Add findByHandle to DataService
- configure handle based routes, that redirect to the DSOType based route
- write tests
- Find Item admin component
- Examples:
- Effort: 8h
- To do:
- write a component that allows you to enter the ID or handle
- on submit, determine whether it’s an id or a handle, and redirect to its edit page
- configure the route, using a guard that limits access to authorized users
- ensure the return button on the edit page returns you to the Find Item admin page
- preferably by using the route history in the store (or even browser history) rather than specifying the source page as a param
- write tests
Browse Withdrawn Items (by Title)
- Examples:
- Effort: 12h
- To do:
- configure the route, using a guard that limits access to authorized users
- create the component based on the browse by title component
- add
findWithdrawn(startsWith: string): Observable<RemoteData<PaginatedList<Item>>>
to ItemDataService- it should determine the correct URL to request on the backend, the rest should already be in place from other findBy methods.
- write tests
Browse Private Items (by Title)
- Examples
- Effort: 12h
- To do:
- configure the route, using a guard that limits access to authorized users
- create the component based on the browse by title component
- add
findPrivate(startsWith: string): Observable<RemoteData<PaginatedList<Item>>>
to ItemDataService- it should determine the correct URL to request on the backend, the rest should already be in place from other findBy methods.
- write tests
Resources
- DSpace 7 Angular UI
- Codebase (master branch): https://github.com/DSpace/dspace-angular (See README for details)
- Demo site: https://dspace7-demo.atmire.com/
- DSpace 7 REST API
- Codebase (master branch): https://github.com/DSpace/DSpace (See README for more details)
- Demo site: https://dspace7.4science.it/dspace-spring-rest/
- REST Contract: https://github.com/DSpace/Rest7Contract
- DSpace 7 REST: Coding DSpace Objects
- DSpace 7 Learning Resources
- DSpace 7 - Angular UI Development : Getting started with DSpace 7 UI (aka dspace-angular) and how to contribute
- DSpace 7 UI Technology Stack : Overview of technologies we are using, and links to third party resources
- OR2017 DSpace Angular Workshop : Angular UI Training Workshop resources (slides and hands-on activities) from the OR2017 conference in Brisbane, Australia.
- The beginning of this workshop was also presented as a tutorial at the 2017 North American User Group meeting (at Georgetown University). Video of that tutorial is available at http://youtube.com/watch?v=c4AJ8HeZzcw
- Contributing Code to DSpace
- Code Style Guide (for Java / REST API)
- For Angular UI we follow the official Angular.io Style Guide
- Code Contribution Guidelines (currently more specific to Java / REST API)
- Code Style Guide (for Java / REST API)
...
Overview
Content Tools