Merge branch 'hal-serializer' into rest-services

This commit is contained in:
Art Lowel
2017-02-16 14:43:12 +01:00
10 changed files with 159 additions and 17 deletions

View File

@@ -28,6 +28,10 @@ npm start
```
Then go to [http://localhost:3000](http://localhost:3000) in your browser
NOTE: currently there's not much to see at that URL. We really do need your help. If you're interested in jumping in, and you've made it this far, please look at the [the project board (waffle.io)](https://waffle.io/DSpace/dspace-angular), grab a card, and get to work. Thanks!
Not sure where to start? watch the training videos linked in the [Introduction to the technology](#introduction-to-the-technology) section below.
## Table of Contents
* [Introduction to the technology](#introduction-to-the-technology)
* [Requirements](#requirements)

View File

@@ -1,14 +1,22 @@
{
"title": "DSpace",
"nav": {
"home": "Home"
},
"example": {
"with": {
"data": "{{greeting}}, {{recipient}}!"
}
},
"footer": {
"copyright": "copyright © 2002-{{ year }}",
"link.dspace": "DSpace software",
"link.duraspace": "DuraSpace"
},
"nav": {
"home": "Home"
},
"title": "DSpace",
"404": {
"help": "We can't find the page you're looking for. The page may have been moved or deleted. You can use the button below to get back to the home page. ",
"page-not-found": "page not found",

View File

@@ -1,11 +1,17 @@
<ds-header></ds-header>
<div class="outer-wrapper">
<div class="inner-wrapper">
<ds-header></ds-header>
<div class="container-fluid">
<main>
<main class="main-content">
<div class="container-fluid">
<p>{{ 'example.with.data' | translate:data }}</p>
<p>{{ example }}</p>
<h2 *ngIf="!env" style="color:green">development</h2>
<h2 *ngIf="env" style="color:red">production</h2>
<router-outlet></router-outlet>
</div>
</main>
<ds-footer></ds-footer>
</div>
</div>

View File

@@ -1 +1,18 @@
// Sticky Footer
.outer-wrapper {
display: flex;
margin: 0;
}
.inner-wrapper {
flex: 1 1 auto;
flex-flow: column nowrap;
display: flex;
min-height: 100vh;
flex-direction: column;
}
.main-content {
flex: 1 0 auto;
}

View File

@@ -1,6 +1,7 @@
import { NgModule } from '@angular/core';
import { HomeModule } from './home/home.module';
import { CoreModule } from './core/core.module';
import { HomeModule } from './home/home.module';
import { SharedModule } from './shared/shared.module';
@@ -15,7 +16,6 @@ import { StoreDevtoolsModule } from "@ngrx/store-devtools";
import { rootReducer } from './app.reducers';
import { effects } from './app.effects';
import { CoreModule } from "./core/core.module";
@NgModule({
declarations: [

View File

@@ -2,6 +2,7 @@ import { NgModule, Optional, SkipSelf, ModuleWithProviders } from '@angular/core
import { CommonModule } from '@angular/common';
import { SharedModule } from "../shared/shared.module";
import { isNotEmpty } from "../shared/empty.util";
import { FooterComponent } from "./footer/footer.component";
import { DSpaceRESTv2Service } from "./dspace-rest-v2/dspace-rest-v2.service";
import { CollectionDataService } from "./data-services/collection/collection-data.service";
import { CacheService } from "./data-services/cache/cache.service";
@@ -9,13 +10,15 @@ import { ItemDataService } from "./data-services/item/item-data.service";
const IMPORTS = [
CommonModule,
SharedModule
];
const DECLARATIONS = [
FooterComponent
];
const EXPORTS = [
FooterComponent
];
const PROVIDERS = [
@@ -41,7 +44,7 @@ export class CoreModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
ngModule: CoreModule,
providers: [
...PROVIDERS
]

View File

@@ -0,0 +1,9 @@
<footer class="footer">
<div class="container-fluid content-container-fluid">
<p>
<a href="http://www.dspace.org/">{{ 'footer.link.dspace' | translate}}</a>
{{ 'footer.copyright' | translate:{year : dateObj | date:'y'} }}
<a href="http://www.duraspace.org/">{{ 'footer.link.duraspace' | translate}}</a>
</p>
</div>
</footer>

View File

@@ -0,0 +1,17 @@
@import '../../../styles/variables.scss';
@import '../../../../node_modules/bootstrap/scss/_variables.scss';
$footer-bg: $gray-lighter;
$footer-border: 1px solid darken($footer-bg, 10%);
$footer-padding: $spacer * 1.5;
.footer {
background-color: $footer-bg;
border-top: $footer-border;
text-align:center;
padding: $footer-padding;
p {
margin: 0;
}
}

View File

@@ -0,0 +1,60 @@
// ... test imports
import {
async,
ComponentFixture,
inject,
TestBed
} from '@angular/core/testing';
import {
CUSTOM_ELEMENTS_SCHEMA,
DebugElement
} from "@angular/core";
import { By } from '@angular/platform-browser';
import { TranslateModule, TranslateLoader } from "ng2-translate";
import { Store, StoreModule } from "@ngrx/store";
// Load the implementations that should be tested
import { FooterComponent } from './footer.component';
import { CommonModule } from '@angular/common';
import { MockTranslateLoader } from "../../shared/testing/mock-translate-loader";
let comp: FooterComponent;
let fixture: ComponentFixture<FooterComponent>;
let de: DebugElement;
let el: HTMLElement;
describe('Footer component', () => {
// async beforeEach
beforeEach(async(() => {
return TestBed.configureTestingModule({
imports: [CommonModule, StoreModule.provideStore({}), TranslateModule.forRoot({
provide: TranslateLoader,
useClass: MockTranslateLoader
})],
declarations: [FooterComponent], // declare the test component
providers: [
FooterComponent
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
}));
// synchronous beforeEach
beforeEach(() => {
fixture = TestBed.createComponent(FooterComponent);
comp = fixture.componentInstance; // component test instance
// query for the title <p> by CSS element selector
de = fixture.debugElement.query(By.css('p'));
el = de.nativeElement;
});
it('should create footer', inject([FooterComponent], (app: FooterComponent) => {
// Perform test using fixture and service
expect(app).toBeTruthy();
}));
});

View File

@@ -0,0 +1,18 @@
import { Component, OnInit } from "@angular/core";
@Component({
selector: 'ds-footer',
styleUrls: ['footer.component.css'],
templateUrl: 'footer.component.html'
})
export class FooterComponent implements OnInit {
dateObj: number = Date.now();
constructor() {
}
ngOnInit(): void {
}
}