SlideShare a Scribd company logo
Hot Topics: DuraSpace Community Webinar Series
Hot Topics: The DuraSpace
Community Webinar Series
Series Fifteen:
Introducing DSpace 7:
Next Generation UI
Hot Topics: DuraSpace Community Webinar Series
Hot Topics: The DuraSpace
Community Webinar Series
Curated by Claire Knowles,
Library Digital Development Manager,
The University of Edinburgh
Hot Topics: DuraSpace Community Webinar Series
Webinar 1:
Introducing DSpace 7
Presented by:
Claire Knowles, The University of Edinburgh
Tim Donohue, DuraSpace
Art Lowel, Atmire
Andrea Bollini, 4Science
History: Why a new UI?
Claire Knowles
Background - Vision
Strategic Plan 2015 - 2018
- Technology
- Community
- Sustainability
https://wiki.duraspace.org/display/DSPACE/DSpace+2015-18+Strategic+Plan
Road Map
- Priority one: a single user interface
- Making DSpace lean and flexible
https://wiki.duraspace.org/display/DSPACE/RoadMap
Background - Two UIs
- Two User Interfaces
- Duplication of effort
- Different features
- New UI Group
- Prototype Challenge (8 entries)
- Rails, EmberJS, AngularJS, Spring
MVC, Spring Boot
https://wiki.duraspace.org/display/DSPACE/DSpace+UI+Prototype
+Challenge
UI Technology Selection Process
Tim Donohue
Prototype Challenge Analysis
(early 2016)
Decision Point: Java vs Javascript UI
● Client Side (JS) benefits
○ Dynamic, innovative
○ Separation of concerns (REST API)
● Client Side (JS) concerns
○ Search Engine Optimization (SEO)?
○ Accessibility?
https://wiki.duraspace.org/display/DSPACE/DSpace+UI+Prototype
+Challenge
Angular 2 Framework
● First beta in Dec 2015
● All benefits of Client Side UI
● Angular = most widely used platform
● SEO support (via Angular Universal)
● Accessibility support
https://angular.io
March - June 2016 (Demo at OR2016)
★ SEO (verified, Google Scholar)
★ Accessibility (verified, U of Kansas)
★ Web archiving (verified, RCAAP,
Portugal)
★ More dynamic user experience
★ Configurable UI
★ Backend still Java (5.x REST API)
DSpace 5 + Angular 2 Prototype
http://www.slideshare.net/tdonohue/introducing-the-
new-dspace-user-interface
OR2016 until Nov 2016
DSpace 6
Time Passes...
DSpace 7 UI Working Group
(late 2016)
Goal: Build the Angular UI / REST API for
DSpace 7
★ Coordination (Tim Donohue, DuraSpace)
★ Angular UI Subteam (Art Lowel, Atmire)
★ REST API Subteam (Andrea Bollini,
4Science)
https://wiki.duraspace.org/display/DSPACE/DSpace
+7+UI+Working+Group
DSpace 7 UI (Angular UI)
Art Lowel
Angular 2
• Framework by Google for building
applications in the browser.
• Only data from the server
• HTML generated by JavaScript in the
browser.
https://angular.io
TypeScript
• Extension of ES6
• Adds types and annotations
• Compiles to regular JavaScript
errors can be detected at compile time.
https://www.typescriptlang.org/
TypeScript
• Result looks familiar to Java and .NET
developers
Interfaces, Generics, Decorators, …
• Much better IDE integration than JS
https://www.typescriptlang.org/
TypeScript
import { autoserializeAs } from "cerialize";
...
export abstract class DSpaceObject implements CacheableObject {
...
@autoserializeAs(Metadatum)
metadata: Array<Metadatum>;
...
private findMetadatum(key: string, language?: string): Metadatum {
return this.metadata
.find((metadatum: Metadatum) => {
return metadatum.key === key &&
(isEmpty(language) || metadatum.language === language)
});
}
}
Angular 2: Main elements
• Components:
– render data
• Services:
– provide components with data
Angular 2: Components
• The building blocks of an angular 2 app
• New HTML tags that come with their
own code and styling
• Consist of a view and a controller in the
traditional MVC sense
Angular 2: Components
<div class="wrapper">
<ds-header></ds-header>
<main>
...
</main>
<ds-footer></ds-footer>
</div>
Angular 2: Components
@Component({
selector: 'ds-header',
styleUrls: ['header.component.css'],
templateUrl: 'header.component.html'
})
export class HeaderComponent implements OnInit {
isNavBarCollapsed: boolean;
constructor() {}
ngOnInit(): void {
this.isNavBarCollapsed = true;
}
toggle(): void {
this.isNavBarCollapsed = !this.isNavBarCollapsed;
}
}
Angular 2: Components
<button (click)="toggle()">
<i class="fa fa-bars fa-fw" aria-hidden="true"></i>
</button>
<div [ngbCollapse]="isNavBarCollapsed">
<a class="nav-link" routerLink="/home"
routerLinkActive="active">
{{ 'header.home' | translate }}
</a>
</div>
Angular 2: Services
• Singletons
• Provide streams of data for the rest of
the app
this.restService.get('/items')
• Provide operations to add or modify
data
this.cacheService.add(item)
Angular 2: Services
@Injectable()
export class RESTService {
constructor(public http: Http) {}
get(relativeURL: string, options?: RequestOptionsArgs): Observable<string> {
return this.http.get(new RESTURLCombiner(relativeURL).toString(), options)
.map(res => res.json())
.catch(err => {
console.log('Error: ', err);
return Observable.throw(err);
});
}
}
Angular Universal
• Sub-project by the angular team.
• Goal: support server-side rendering for
angular apps
• using the same code that's used by the
client
https://universal.angular.io/
Angular Universal
• The universal server imitates a browser
using the angular app
• makes calls to the REST API for data
• sends the HTML as a response
https://universal.angular.io/
Angular Universal
• The first page is rendered on the
universal server
• Don’t have JavaScript?
– The server’s HTML is identical to the
version generated by a client
– Clicking a link = requesting a new
page from the server
https://universal.angular.io/
Angular Universal
• Do have JavaScript?
– start using the page while JS loads
– once loaded, no further requests to
the universal server needed
– Clicking a link = fetching new data
from the REST API and rendering it
in the browser
https://universal.angular.io/
Learning more
• Learn about Angular 2, Universal, and
other related technologies on the wiki:
https://wiki.duraspace.org/display/DSPACE/D
Space+7+UI+Technology+Stack
• Questions? ask on Slack
#angular-ui on dspace-org.slack.com
• How To: https://goo.gl/aJ9u4U
• Project board: https://waffle.io/DSpace/dspace-angular
Contributing
DSpace 7 (new) REST API
Andrea Bollini
Outcome from the prototype challenge
Why do we need a new REST API?
● Only a limited subset of DSpace
functionality is currently exposed
● Handcrafted implementation, no
standard or convention adopted
● Different technology than the other
DSpace code (Jersey)
What are the goals?
● Support the Angular UI development
● Fully documented, tested and stable
REST API
● Modernize the code base, adopting best
practices
● Rely on frameworks widely used in and
outside DSpace (Spring)
REST Levels
https://martinfowler.com/articles/richardsonMaturityModel.html
DSpace REST currently sits here
How? Standards!
★ HATEOAS - Hypertext As The Engine Of
Application State
★ The HAL format
★ Define a REST contract
★ ALPS - Application-Level profile
semantics
★ JSON-Schema
HAL format
http://stateless.co/hal_specification.html
Example: embedded
Bitstream → BitstreamFormat
"name": "license.txt",
"type": "bitstream",
"sizeBytes": 1748,
"_links": {
"format": {
"href": "http://my.dspace.url/api/core/bitstreams/bd30fbfc-.../format"
},
"self": {
"href":"http://my.dspace.url/api/core/bitstreams/bd30fbfc-..."
}
},
"_embedded": {
"format": {
"shortDescription": "License",
"description": "Item-specific license agreed upon to submission",
"mimetype": "text/plain; charset=utf-8",
…
"_links": {
"self": {"href":"http://my.dspace.url/api/core/bitstreamformats/2"}
}
Resource attributes
Links
Embedded resource
Example: pagination
"_links": {
"first": {
"href": “http://my.dspace.url/api/core/bitstreams?page=0&size=5"
},
"self": {
"href": "http://my.dspace.url/api/core/bitstreams"
},
"next": {
"href": "http://my.dspace.url/api/core/bitstreams?page=1&size=5"
},
"last": {
"href": "http://my.dspace.url/api/core/bitstreams?page=2&size=5"
}
},
"page": {
"size": 5,
"totalElements": 14,
"totalPages": 3,
"number": 0
}
ALPS
At the root of the API is a profile document, with a list of all the
available endpoints
{
"_links" : {
"profile" : {
"href" : "http://my.dspace.url/api/profile"
},
"items" : {
"href" : "http://my.dspace.url/api/core/items"
},
"bitstreams" : {
"href" : "http://my.dspace.url/api/core/bitstreams"
},
…
}
}
http://docs.spring.io/spring-data/rest/docs/current/reference/html/#metadata.alps
ALPS
The /api/profile endpoint, as defined in RFC 6906, gives access
to detailed information about each application resource
{
"_links" : {
"self" : {
"href" : "http://my.dspace.url/api/profile"
},
"items" : {
"href" : "http://my.dspace.url/api/profile/items"
},
"bitstreams" : {
"href" : "http://my.dspace.url/api/profile/bitstreams"
},
…
}
}
Points to a json-schema
representation of the
resource structure,
including allowed
methods and returns
The HAL Browser
★ Application agnostic JS UI
★ Available as web-jar from the Spring
Data REST project
★ It allows easy exploration and
self-documentation of the REST API
http://docs.spring.io/spring-data/rest/docs/current/reference/html/#_the_hal_browser
The HAL Browser
Best practices and convention
★ Spring Data REST project
○ projection
○ pagination defaults
○ ETAGs
○ Architecture
★ Look to JSON-API Format for
unresolved issues
Technologies
★ JAVA 8, Servlet 3.1
★ Spring Boot
★ Spring MVC + Spring HATEOAS
★ Spring REST Documentation*
★ Spring Security*
* to be confirmed
Architecture
★ REST Data model
★ A single controller for all the REST
resources
★ Repository Design Pattern
★ Converter to translate REST model
classes to persistence and vice versa
Learning more
• HATEOAS
http://restcookbook.com/Basics/hateoas/
• HAL Specification
http://stateless.co/hal_specification.html
• ALPS
https://tools.ietf.org/html/draft-amundsen-richardson-foster-alps-01
• JSON-Schema
http://json-schema.org/
Learning more
• Spring REST & Spring HATEOAS
https://spring.io/guides/gs/rest-hateoas/
• Take inspiration from Spring DATA Rest
http://projects.spring.io/spring-data-rest/
• Questions? ask on Slack
#rest-api on dspace-org.slack.com
Contributing
★ Rest Contract definition & discussion
https://github.com/DSpace-Labs/Rest7Contract
https://github.com/DSpace-Labs/Rest7Contract/issues
★ Claim a task! “new-REST” component
https://jira.duraspace.org/issues/?filter=13920
★ Source code:
https://github.com/DSpace/DSpace/tree/rest7
Next Steps & Contributing
Tim Donohue
Next Steps / Timeline
OR2017 in Brisbane
★ Angular UI dev workshop
★ DSpace 7 update talk
★ Alpha demo (search/browse?)
7.0 Final Release - est 2018?
Collaboration / Updates
• Meetings: Every Thursday (16:00 UTC)
alternating between text meetings in
Slack, and Google Hangouts.
• Soon: monthly video updates (to lists)
How to contribute
Claim a ticket and/or join a meeting
https://wiki.duraspace.org/display/DSPACE/DSpace
+7+UI+Working+Group
Join us on Slack / ask questions
https://goo.gl/forms/s70dh26zY2cSqn2K3
DSpace 7 Outreach Group
https://wiki.duraspace.org/display/DSPACE/DSpace
+7+UI+Outreach+Group
Hot Topics: DuraSpace Community Webinar Series
Hot Topics: The DuraSpace
Community Webinar Series
Join us for our 2nd webinar:
DSpace for Data:
issues, solutions and challenges
March 7, 2017 at 11:00a.m. ET

More Related Content

PDF
DSpace 7 - The Power of Configurable Entities
PDF
Getting started with DSpace 7 REST API
PPTX
Or2019 DSpace 7 Enhanced submission &amp; workflow
PPTX
DSpace-CRIS technical level introduction
PPTX
DSpace-CRIS: new features and contribution to the DSpace mainstream
PDF
On the Road to DSpace 7: Angular UI + REST
PDF
DSpace 7 - The Angular UI from a user’s perspective
PPTX
Dspace 7 presentation
DSpace 7 - The Power of Configurable Entities
Getting started with DSpace 7 REST API
Or2019 DSpace 7 Enhanced submission &amp; workflow
DSpace-CRIS technical level introduction
DSpace-CRIS: new features and contribution to the DSpace mainstream
On the Road to DSpace 7: Angular UI + REST
DSpace 7 - The Angular UI from a user’s perspective
Dspace 7 presentation

What's hot (20)

PPT
Customizing the look and-feel of DSpace
PDF
Secrets of the DSpace Submission Form
PPTX
SPARQL Cheat Sheet
PDF
DSpace-CRIS, anticipating innovation
PPTX
Azure AD Presentation - @ BITPro - Ajay
PDF
Productizing Structured Streaming Jobs
PPTX
Large Scale Graph Analytics with JanusGraph
PDF
Simplifying Big Data Analytics with Apache Spark
PDF
Open core summit: Observability for data pipelines with OpenLineage
PDF
Azure Data Factory V2; The Data Flows
PPTX
DSpace standard Data model and DSpace-CRIS
PPTX
Linked Data: principles and examples
PDF
RSP4J: An API for RDF Stream Processing
PPTX
Oracle REST Data Services: Options for your Web Services
PDF
Hyperspace for Delta Lake
PPTX
Apache Atlas: Governance for your Data
PDF
Solr Graph Query: Presented by Kevin Watters, KMW Technology
PDF
Making DSpace XMLUI Your Own
PPTX
Azure Data Factory ETL Patterns in the Cloud
PPSX
Big Data Redis Mongodb Dynamodb Sharding
Customizing the look and-feel of DSpace
Secrets of the DSpace Submission Form
SPARQL Cheat Sheet
DSpace-CRIS, anticipating innovation
Azure AD Presentation - @ BITPro - Ajay
Productizing Structured Streaming Jobs
Large Scale Graph Analytics with JanusGraph
Simplifying Big Data Analytics with Apache Spark
Open core summit: Observability for data pipelines with OpenLineage
Azure Data Factory V2; The Data Flows
DSpace standard Data model and DSpace-CRIS
Linked Data: principles and examples
RSP4J: An API for RDF Stream Processing
Oracle REST Data Services: Options for your Web Services
Hyperspace for Delta Lake
Apache Atlas: Governance for your Data
Solr Graph Query: Presented by Kevin Watters, KMW Technology
Making DSpace XMLUI Your Own
Azure Data Factory ETL Patterns in the Cloud
Big Data Redis Mongodb Dynamodb Sharding
Ad

Viewers also liked (20)

PDF
3.7.17 DSpace for Data: issues, solutions and challenges Webinar Slides
PPTX
DuraSpace is OPEN, OR2016
PPT
Introducing the New DSpace User Interface
PPTX
3.15.17 DSpace: How to Contribute Webinar Slides
PPT
DSpace Tutorial : Open Source Digital Library
PPTX
DSpace 4.2 Basics & Configuration
PDF
Running DSpace: Technical overview, lessons learned, workflows and essential ...
PPTX
Fedora 3.6 webinar slides 10 18-12
PPTX
2.24.16 Slides, “VIVO plus SHARE: Closing the Loop on Tracking Scholarly Acti...
PDF
The "Direct" Services - DSpaceDirect and ArchivesDirect
PPT
13 java in oracle
PPTX
How to Get Started Tracking Scholarly Activity with VIVO and SHARE
PPT
How to "Hack" the DSpace Community
PDF
SHRM Certification Resources at a Glance
PPS
περιαστικο δασος 8 Δ Σχ Ροδου
PDF
Implementation of d space controlled dpwm based
PDF
DSpace: State of the art
PPT
Using DSpace as a LOR
PPTX
Carin nguyen earning 6 figures balancing vip conference
PDF
Arquitectura islámica
3.7.17 DSpace for Data: issues, solutions and challenges Webinar Slides
DuraSpace is OPEN, OR2016
Introducing the New DSpace User Interface
3.15.17 DSpace: How to Contribute Webinar Slides
DSpace Tutorial : Open Source Digital Library
DSpace 4.2 Basics & Configuration
Running DSpace: Technical overview, lessons learned, workflows and essential ...
Fedora 3.6 webinar slides 10 18-12
2.24.16 Slides, “VIVO plus SHARE: Closing the Loop on Tracking Scholarly Acti...
The "Direct" Services - DSpaceDirect and ArchivesDirect
13 java in oracle
How to Get Started Tracking Scholarly Activity with VIVO and SHARE
How to "Hack" the DSpace Community
SHRM Certification Resources at a Glance
περιαστικο δασος 8 Δ Σχ Ροδου
Implementation of d space controlled dpwm based
DSpace: State of the art
Using DSpace as a LOR
Carin nguyen earning 6 figures balancing vip conference
Arquitectura islámica
Ad

Similar to 2.28.17 Introducing DSpace 7 Webinar Slides (20)

PDF
Update on DSpace 7
PDF
Node.js server side render in the Age of APIs - Full Stack Toronto 2017
PPTX
Build Modern Web Apps Using ASP.NET Web API and AngularJS
PPTX
The future of web development write once, run everywhere with angular.js and ...
PDF
The future of web development write once, run everywhere with angular js an...
PDF
JavaScript frameworks of tomorrow
PDF
Introduction to REST and Jersey
PDF
Building Killer RESTful APIs with NodeJs
PDF
Introduction to javascript technologies
PPTX
Universal Applications with Universal JavaScript
PDF
Usable REST APIs. BCNdevcon edition.
PDF
Front End Development for Back End Developers - vJUG24 2017
PDF
DSpace RoadMap 2011
PDF
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
PPTX
Angular jS Introduction by Google
 
PPTX
Engineering Frontends
PPT
TypeScript - Javascript done right
PPTX
Rest api with node js and express
PDF
Internship-Report-VitulChauhan-18132023-IT_CRUD-OPERATION.pdf
PPT
JahiaOne - Jahia7 New REST API
Update on DSpace 7
Node.js server side render in the Age of APIs - Full Stack Toronto 2017
Build Modern Web Apps Using ASP.NET Web API and AngularJS
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular js an...
JavaScript frameworks of tomorrow
Introduction to REST and Jersey
Building Killer RESTful APIs with NodeJs
Introduction to javascript technologies
Universal Applications with Universal JavaScript
Usable REST APIs. BCNdevcon edition.
Front End Development for Back End Developers - vJUG24 2017
DSpace RoadMap 2011
Usable REST APIs. Jrubyconf Edition. Javier Ramirez @ teowaki
Angular jS Introduction by Google
 
Engineering Frontends
TypeScript - Javascript done right
Rest api with node js and express
Internship-Report-VitulChauhan-18132023-IT_CRUD-OPERATION.pdf
JahiaOne - Jahia7 New REST API

More from DuraSpace (20)

PDF
12.5.18 "How For-Profit Companies Can Be a Part of the Open Environment" pres...
PDF
11.20.18 DSpace for Research Data Management Webinar
PDF
10.24.18 "Securing Community-Controlled Infrastructure: SPARC’s plan of actio...
PDF
9.26.18 Beyond NA presentation slides
PDF
9.19.18 ArchivesDirect Overview: Standards-Based Preservation with Hosted Arc...
PDF
5.24.18 DuraCloud in 2018 Presentation Slides
PDF
5.17.18 "The 2.5% Commitment: Investing in Open" presentation slides
PDF
3.28.18 "Open Source Repository Upgrades: Top Advice from Practitioners" Pres...
PDF
2.28.18 Getting Started with Fedora presentation slides
PDF
6.15.17 DSpace-Cris Webinar Presentation Slides
PDF
5.15.17 Powering Linked Data and Hosted Solutions with Fedora Webinar Slides
PDF
Digital Preservation in Production (DPN and DuraCloud Vault)
PPTX
DuraSpace and LYRASIS CEO Town Hall Meeting -- April 29, 2016
PPTX
DuraSpace and LYRASIS CEO Town Hall Meeting -- April 21, 2016
PDF
3.11.16 Slides, “Institutional Perspectives on the Impact of SHARE and VIVO T...
PDF
The "Cloud" Services - DuraCloud and DuraCloud Vault
PPTX
Integrating DuraCloud with DPN at Chronopolis and the Texas Digital Library
PPTX
The DuraCloud Workshop - Open Repositories 2015
PPTX
5.26.15 Slides, “Digital Preservation with ArchivesDirect: Go!”
PPTX
5.14.15 Slides, “Digital Preservation with ArchivesDirect: Ready, Set...”
12.5.18 "How For-Profit Companies Can Be a Part of the Open Environment" pres...
11.20.18 DSpace for Research Data Management Webinar
10.24.18 "Securing Community-Controlled Infrastructure: SPARC’s plan of actio...
9.26.18 Beyond NA presentation slides
9.19.18 ArchivesDirect Overview: Standards-Based Preservation with Hosted Arc...
5.24.18 DuraCloud in 2018 Presentation Slides
5.17.18 "The 2.5% Commitment: Investing in Open" presentation slides
3.28.18 "Open Source Repository Upgrades: Top Advice from Practitioners" Pres...
2.28.18 Getting Started with Fedora presentation slides
6.15.17 DSpace-Cris Webinar Presentation Slides
5.15.17 Powering Linked Data and Hosted Solutions with Fedora Webinar Slides
Digital Preservation in Production (DPN and DuraCloud Vault)
DuraSpace and LYRASIS CEO Town Hall Meeting -- April 29, 2016
DuraSpace and LYRASIS CEO Town Hall Meeting -- April 21, 2016
3.11.16 Slides, “Institutional Perspectives on the Impact of SHARE and VIVO T...
The "Cloud" Services - DuraCloud and DuraCloud Vault
Integrating DuraCloud with DPN at Chronopolis and the Texas Digital Library
The DuraCloud Workshop - Open Repositories 2015
5.26.15 Slides, “Digital Preservation with ArchivesDirect: Go!”
5.14.15 Slides, “Digital Preservation with ArchivesDirect: Ready, Set...”

Recently uploaded (20)

PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
PDF
Modernizing your data center with Dell and AMD
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
GamePlan Trading System Review: Professional Trader's Honest Take
PDF
Electronic commerce courselecture one. Pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
MYSQL Presentation for SQL database connectivity
PDF
KodekX | Application Modernization Development
Understanding_Digital_Forensics_Presentation.pptx
Big Data Technologies - Introduction.pptx
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
Machine learning based COVID-19 study performance prediction
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
Modernizing your data center with Dell and AMD
Reach Out and Touch Someone: Haptics and Empathic Computing
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Spectral efficient network and resource selection model in 5G networks
GamePlan Trading System Review: Professional Trader's Honest Take
Electronic commerce courselecture one. Pdf
Review of recent advances in non-invasive hemoglobin estimation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Monthly Chronicles - July 2025
Dropbox Q2 2025 Financial Results & Investor Presentation
MYSQL Presentation for SQL database connectivity
KodekX | Application Modernization Development

2.28.17 Introducing DSpace 7 Webinar Slides

  • 1. Hot Topics: DuraSpace Community Webinar Series Hot Topics: The DuraSpace Community Webinar Series Series Fifteen: Introducing DSpace 7: Next Generation UI
  • 2. Hot Topics: DuraSpace Community Webinar Series Hot Topics: The DuraSpace Community Webinar Series Curated by Claire Knowles, Library Digital Development Manager, The University of Edinburgh
  • 3. Hot Topics: DuraSpace Community Webinar Series Webinar 1: Introducing DSpace 7 Presented by: Claire Knowles, The University of Edinburgh Tim Donohue, DuraSpace Art Lowel, Atmire Andrea Bollini, 4Science
  • 4. History: Why a new UI? Claire Knowles
  • 5. Background - Vision Strategic Plan 2015 - 2018 - Technology - Community - Sustainability https://wiki.duraspace.org/display/DSPACE/DSpace+2015-18+Strategic+Plan Road Map - Priority one: a single user interface - Making DSpace lean and flexible https://wiki.duraspace.org/display/DSPACE/RoadMap
  • 6. Background - Two UIs - Two User Interfaces - Duplication of effort - Different features - New UI Group - Prototype Challenge (8 entries) - Rails, EmberJS, AngularJS, Spring MVC, Spring Boot https://wiki.duraspace.org/display/DSPACE/DSpace+UI+Prototype +Challenge
  • 7. UI Technology Selection Process Tim Donohue
  • 8. Prototype Challenge Analysis (early 2016) Decision Point: Java vs Javascript UI ● Client Side (JS) benefits ○ Dynamic, innovative ○ Separation of concerns (REST API) ● Client Side (JS) concerns ○ Search Engine Optimization (SEO)? ○ Accessibility? https://wiki.duraspace.org/display/DSPACE/DSpace+UI+Prototype +Challenge
  • 9. Angular 2 Framework ● First beta in Dec 2015 ● All benefits of Client Side UI ● Angular = most widely used platform ● SEO support (via Angular Universal) ● Accessibility support https://angular.io
  • 10. March - June 2016 (Demo at OR2016) ★ SEO (verified, Google Scholar) ★ Accessibility (verified, U of Kansas) ★ Web archiving (verified, RCAAP, Portugal) ★ More dynamic user experience ★ Configurable UI ★ Backend still Java (5.x REST API) DSpace 5 + Angular 2 Prototype http://www.slideshare.net/tdonohue/introducing-the- new-dspace-user-interface
  • 11. OR2016 until Nov 2016 DSpace 6 Time Passes...
  • 12. DSpace 7 UI Working Group (late 2016) Goal: Build the Angular UI / REST API for DSpace 7 ★ Coordination (Tim Donohue, DuraSpace) ★ Angular UI Subteam (Art Lowel, Atmire) ★ REST API Subteam (Andrea Bollini, 4Science) https://wiki.duraspace.org/display/DSPACE/DSpace +7+UI+Working+Group
  • 13. DSpace 7 UI (Angular UI) Art Lowel
  • 14. Angular 2 • Framework by Google for building applications in the browser. • Only data from the server • HTML generated by JavaScript in the browser. https://angular.io
  • 15. TypeScript • Extension of ES6 • Adds types and annotations • Compiles to regular JavaScript errors can be detected at compile time. https://www.typescriptlang.org/
  • 16. TypeScript • Result looks familiar to Java and .NET developers Interfaces, Generics, Decorators, … • Much better IDE integration than JS https://www.typescriptlang.org/
  • 17. TypeScript import { autoserializeAs } from "cerialize"; ... export abstract class DSpaceObject implements CacheableObject { ... @autoserializeAs(Metadatum) metadata: Array<Metadatum>; ... private findMetadatum(key: string, language?: string): Metadatum { return this.metadata .find((metadatum: Metadatum) => { return metadatum.key === key && (isEmpty(language) || metadatum.language === language) }); } }
  • 18. Angular 2: Main elements • Components: – render data • Services: – provide components with data
  • 19. Angular 2: Components • The building blocks of an angular 2 app • New HTML tags that come with their own code and styling • Consist of a view and a controller in the traditional MVC sense
  • 20. Angular 2: Components <div class="wrapper"> <ds-header></ds-header> <main> ... </main> <ds-footer></ds-footer> </div>
  • 21. Angular 2: Components @Component({ selector: 'ds-header', styleUrls: ['header.component.css'], templateUrl: 'header.component.html' }) export class HeaderComponent implements OnInit { isNavBarCollapsed: boolean; constructor() {} ngOnInit(): void { this.isNavBarCollapsed = true; } toggle(): void { this.isNavBarCollapsed = !this.isNavBarCollapsed; } }
  • 22. Angular 2: Components <button (click)="toggle()"> <i class="fa fa-bars fa-fw" aria-hidden="true"></i> </button> <div [ngbCollapse]="isNavBarCollapsed"> <a class="nav-link" routerLink="/home" routerLinkActive="active"> {{ 'header.home' | translate }} </a> </div>
  • 23. Angular 2: Services • Singletons • Provide streams of data for the rest of the app this.restService.get('/items') • Provide operations to add or modify data this.cacheService.add(item)
  • 24. Angular 2: Services @Injectable() export class RESTService { constructor(public http: Http) {} get(relativeURL: string, options?: RequestOptionsArgs): Observable<string> { return this.http.get(new RESTURLCombiner(relativeURL).toString(), options) .map(res => res.json()) .catch(err => { console.log('Error: ', err); return Observable.throw(err); }); } }
  • 25. Angular Universal • Sub-project by the angular team. • Goal: support server-side rendering for angular apps • using the same code that's used by the client https://universal.angular.io/
  • 26. Angular Universal • The universal server imitates a browser using the angular app • makes calls to the REST API for data • sends the HTML as a response https://universal.angular.io/
  • 27. Angular Universal • The first page is rendered on the universal server • Don’t have JavaScript? – The server’s HTML is identical to the version generated by a client – Clicking a link = requesting a new page from the server https://universal.angular.io/
  • 28. Angular Universal • Do have JavaScript? – start using the page while JS loads – once loaded, no further requests to the universal server needed – Clicking a link = fetching new data from the REST API and rendering it in the browser https://universal.angular.io/
  • 29. Learning more • Learn about Angular 2, Universal, and other related technologies on the wiki: https://wiki.duraspace.org/display/DSPACE/D Space+7+UI+Technology+Stack • Questions? ask on Slack #angular-ui on dspace-org.slack.com
  • 30. • How To: https://goo.gl/aJ9u4U • Project board: https://waffle.io/DSpace/dspace-angular Contributing
  • 31. DSpace 7 (new) REST API Andrea Bollini
  • 32. Outcome from the prototype challenge Why do we need a new REST API? ● Only a limited subset of DSpace functionality is currently exposed ● Handcrafted implementation, no standard or convention adopted ● Different technology than the other DSpace code (Jersey)
  • 33. What are the goals? ● Support the Angular UI development ● Fully documented, tested and stable REST API ● Modernize the code base, adopting best practices ● Rely on frameworks widely used in and outside DSpace (Spring)
  • 35. How? Standards! ★ HATEOAS - Hypertext As The Engine Of Application State ★ The HAL format ★ Define a REST contract ★ ALPS - Application-Level profile semantics ★ JSON-Schema
  • 37. Example: embedded Bitstream → BitstreamFormat "name": "license.txt", "type": "bitstream", "sizeBytes": 1748, "_links": { "format": { "href": "http://my.dspace.url/api/core/bitstreams/bd30fbfc-.../format" }, "self": { "href":"http://my.dspace.url/api/core/bitstreams/bd30fbfc-..." } }, "_embedded": { "format": { "shortDescription": "License", "description": "Item-specific license agreed upon to submission", "mimetype": "text/plain; charset=utf-8", … "_links": { "self": {"href":"http://my.dspace.url/api/core/bitstreamformats/2"} } Resource attributes Links Embedded resource
  • 38. Example: pagination "_links": { "first": { "href": “http://my.dspace.url/api/core/bitstreams?page=0&size=5" }, "self": { "href": "http://my.dspace.url/api/core/bitstreams" }, "next": { "href": "http://my.dspace.url/api/core/bitstreams?page=1&size=5" }, "last": { "href": "http://my.dspace.url/api/core/bitstreams?page=2&size=5" } }, "page": { "size": 5, "totalElements": 14, "totalPages": 3, "number": 0 }
  • 39. ALPS At the root of the API is a profile document, with a list of all the available endpoints { "_links" : { "profile" : { "href" : "http://my.dspace.url/api/profile" }, "items" : { "href" : "http://my.dspace.url/api/core/items" }, "bitstreams" : { "href" : "http://my.dspace.url/api/core/bitstreams" }, … } } http://docs.spring.io/spring-data/rest/docs/current/reference/html/#metadata.alps
  • 40. ALPS The /api/profile endpoint, as defined in RFC 6906, gives access to detailed information about each application resource { "_links" : { "self" : { "href" : "http://my.dspace.url/api/profile" }, "items" : { "href" : "http://my.dspace.url/api/profile/items" }, "bitstreams" : { "href" : "http://my.dspace.url/api/profile/bitstreams" }, … } } Points to a json-schema representation of the resource structure, including allowed methods and returns
  • 41. The HAL Browser ★ Application agnostic JS UI ★ Available as web-jar from the Spring Data REST project ★ It allows easy exploration and self-documentation of the REST API http://docs.spring.io/spring-data/rest/docs/current/reference/html/#_the_hal_browser
  • 43. Best practices and convention ★ Spring Data REST project ○ projection ○ pagination defaults ○ ETAGs ○ Architecture ★ Look to JSON-API Format for unresolved issues
  • 44. Technologies ★ JAVA 8, Servlet 3.1 ★ Spring Boot ★ Spring MVC + Spring HATEOAS ★ Spring REST Documentation* ★ Spring Security* * to be confirmed
  • 45. Architecture ★ REST Data model ★ A single controller for all the REST resources ★ Repository Design Pattern ★ Converter to translate REST model classes to persistence and vice versa
  • 46. Learning more • HATEOAS http://restcookbook.com/Basics/hateoas/ • HAL Specification http://stateless.co/hal_specification.html • ALPS https://tools.ietf.org/html/draft-amundsen-richardson-foster-alps-01 • JSON-Schema http://json-schema.org/
  • 47. Learning more • Spring REST & Spring HATEOAS https://spring.io/guides/gs/rest-hateoas/ • Take inspiration from Spring DATA Rest http://projects.spring.io/spring-data-rest/ • Questions? ask on Slack #rest-api on dspace-org.slack.com
  • 48. Contributing ★ Rest Contract definition & discussion https://github.com/DSpace-Labs/Rest7Contract https://github.com/DSpace-Labs/Rest7Contract/issues ★ Claim a task! “new-REST” component https://jira.duraspace.org/issues/?filter=13920 ★ Source code: https://github.com/DSpace/DSpace/tree/rest7
  • 49. Next Steps & Contributing Tim Donohue
  • 50. Next Steps / Timeline OR2017 in Brisbane ★ Angular UI dev workshop ★ DSpace 7 update talk ★ Alpha demo (search/browse?) 7.0 Final Release - est 2018?
  • 51. Collaboration / Updates • Meetings: Every Thursday (16:00 UTC) alternating between text meetings in Slack, and Google Hangouts. • Soon: monthly video updates (to lists)
  • 52. How to contribute Claim a ticket and/or join a meeting https://wiki.duraspace.org/display/DSPACE/DSpace +7+UI+Working+Group Join us on Slack / ask questions https://goo.gl/forms/s70dh26zY2cSqn2K3 DSpace 7 Outreach Group https://wiki.duraspace.org/display/DSPACE/DSpace +7+UI+Outreach+Group
  • 53. Hot Topics: DuraSpace Community Webinar Series Hot Topics: The DuraSpace Community Webinar Series Join us for our 2nd webinar: DSpace for Data: issues, solutions and challenges March 7, 2017 at 11:00a.m. ET