Page History
...
- The source code can be found on githubGitHub: https://github.com/DSpace/dspace-angular
- There's a project board on waffle.ioGitHub: https://wafflegithub.iocom/orgs/DSpace/dspace-angularprojects
Developer Resources
- Overview of the new Technology
- DSpace-Angular Workshop : this workshop was held at OR2017, but all materials are available freely online
- Video Tutorial: A shorter version of this workshop was held as a tutorial at the North American User Group meeting at Georgetown University on Aug 23, 2017. This shorter Angular tutorial (which doesn't include hands-on activities) was recorded and made available at https://youtu.be/c4AJ8HeZzcw
- Official Angular for TypeScript Style Guide
- RxJS - creating new sequences or using existing sequences
- DSpace Wiki: TypeScript-Guideline
...
- Currently the DSpace 7 UI is read-only (submit/edit/admin tools will be coming). Therefore, if you want test content in place, you'll need to do one of the following:
- Option #1: Start with an install of DSpace 6, create some communities, collections and archive some items. In this situation, you'll perform an "ant update" to DSpace 7.
- Option #2: Create some AIPs from a DSpace 5 or 6 instance to load into DSpace 7 for testing.
- Compile/Install/Deploy the current master main (https://github.com/DSpace/DSpace/tree/mastermain) using the normal DSpace install process ("mvn package" and "ant update" or "ant fresh_install").
- This codebase is very similar to DSpace 6, but it includes no XMLUI or JSPUI, and has a new "dspace-spring-rest" project (which is the DSpace 7 REST API)
- Deploy the webapp dspace-springserver-rest as dspace-spring-rest webapp as /server (if you use another path, you may want to change the index.html file within the webapp)
- Start your servlet container and take a look into its logfiles
- If you have problems deploying the webapp in cause for slf4j and log4j, it may be necessary to delete [dspace]/webapps/spring-rest/WEB-INF/lib/slf4j-log4j12-1.7.22.jar
- Test if dspace-spring-rest was loaded successfully by opening it in a browser. You can compare it to the demo site: https://dspace7api7.4sciencedspace.it/dspace-spring-restorg/server/
- Install dspace-angular. You can try it as described in the OR2017 DSpace Angular Workshop or take a look into the Readme.md in the dspace-angular git repository.
...
Workflow
Have a look at the project board
Take an issue that’s in the ready section and has nobody assigned to it
Assign yourself
When you start working on it, move the issue to the “in progress” section
Work on a separate branch for the issue on your fork
- When you’re ready, fire a pull request
in the comments of the pull request, write something akin to “this PR connect’s to #{the ID of the issue}”. That way the issue will be moved automatically to the review column.
When at least two people have reviewed and approved your PR, it can be merged in master.
- You can also help out by reviewing the pull requests of other people
Please keep an eye on your pull request afterwards, the reviewers may have questions or comments about it, or ask you to tackle things in a different way, before they can approve it
Most discussions about the task or the pull request can happen through the github & project board comments.
If it’s more complex you can bring it up in one of these meetings.
After your Pull Request has been merged, drag the issue to the done column on the project board. (this can also be automated by adding “this merge closes #{the id of the issue}” in the merge comment.
- If you've claimed an issue, but can't work on it for some reason, please remember to unassign yourself and put it back in the "ready" column so someone else can take over.
...
- Before firing a PR, always ensure your code works on the server (disable javascript in your browser and see if it still works) as well as the client, and that it works with the AoT build (
npm yarn run start
) as well as the webpack build (npm yarn run watch:dev
) - Keep adaptability in mind. An institution installing DSpace will often want to modify a few things about the UI. The easier we can make that, the better. Therefore keep your components small (divide them in to sub-components), make sub-modules for coherent functionality, use SASS variables, etc.
We agreed to remove the concept of Communities from the UI. They should be called Collections as well. The decision to remove the concept of Communities from the UI was reversed in the meeting of April 13th
...
In the component I specify
collection$
. The dollar is a convention to indicate an observableIn the OnInit:
this.collection$ = this.cds.findAll();
And then in the template, handle the different cases: dedicated messages for
isLoading
andhasFailed
and the actual data forhasSucceeded
of course in a more realistic scenario you might send the error to a notification service instead of handling it yourself
In the template I use an
ng-container
and theasync
pipe to unwrap the observable: every time the observable changes the contents of this block will be re-rendered, andcollectionRD
will have the latest valueThe question marks check for null or undefined: the rest of the statement won't be executed unless that variable before the question mark has a value.
...