From 7d683b82d1dda41ee15c4d9e45169965954b7e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 1 Aug 2019 17:21:50 +0300 Subject: [PATCH] Added books component --- .../angular/package.json | 1 + .../angular/src/app/app-routing.module.ts | 6 +++++ .../angular/src/app/app.module.ts | 5 +++- .../src/app/books/books-routing.module.ts | 19 +++++++++++++ .../src/app/books/books.component.html | 1 + .../src/app/books/books.component.scss | 0 .../src/app/books/books.component.spec.ts | 25 +++++++++++++++++ .../angular/src/app/books/books.component.ts | 13 +++++++++ .../angular/src/app/books/books.module.ts | 17 ++++++++++++ .../app/shared/services/books.service.spec.ts | 12 +++++++++ .../src/app/shared/services/books.service.ts | 15 +++++++++++ .../src/app/store/actions/books.actions.ts | 4 +++ .../angular/src/app/store/actions/index.ts | 1 + .../angular/src/app/store/models/books.ts | 5 ++++ .../angular/src/app/store/models/index.ts | 1 + .../src/app/store/states/books.state.ts | 27 +++++++++++++++++++ .../angular/src/app/store/states/index.ts | 1 + 17 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.scss create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.spec.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.spec.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/index.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/store/models/index.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts create mode 100644 samples/BookStore-Angular-MongoDb/angular/src/app/store/states/index.ts diff --git a/samples/BookStore-Angular-MongoDb/angular/package.json b/samples/BookStore-Angular-MongoDb/angular/package.json index e2575ac04b..6ca4f5328d 100644 --- a/samples/BookStore-Angular-MongoDb/angular/package.json +++ b/samples/BookStore-Angular-MongoDb/angular/package.json @@ -48,6 +48,7 @@ "karma-coverage-istanbul-reporter": "~2.0.1", "karma-jasmine": "~2.0.1", "karma-jasmine-html-reporter": "^1.4.0", + "ngxs-schematic": "^1.1.5", "protractor": "~5.4.0", "ts-node": "~7.0.0", "tslint": "~5.15.0", diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts index a495abb761..ac367f979f 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts @@ -16,6 +16,11 @@ const routes: Routes = [ } as ABP.Route, }, }, + { path: 'books', loadChildren: () => import('./books/books.module').then(m => m.BooksModule), data: { + routes: { + name: 'Books', + } as ABP.Route, + }, }, { path: 'account', loadChildren: () => import('./lazy-libs/account-wrapper.module').then(m => m.AccountWrapperModule), @@ -33,6 +38,7 @@ const routes: Routes = [ data: { routes: TENANT_MANAGEMENT_ROUTES }, }, { path: '**', redirectTo: '/' }, + ]; @NgModule({ diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts index a0dcd98c76..fe0603df3c 100644 --- a/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts @@ -11,12 +11,15 @@ import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { SharedModule } from './shared/shared.module'; import { ThemeSharedModule } from '@abp/ng.theme.shared'; +import { BooksState } from './store/states/books.state'; +import { HttpClientModule } from '@angular/common/http'; @NgModule({ declarations: [AppComponent], imports: [ BrowserModule, BrowserAnimationsModule, + HttpClientModule, AppRoutingModule, SharedModule, ThemeSharedModule.forRoot(), @@ -27,7 +30,7 @@ import { ThemeSharedModule } from '@abp/ng.theme.shared'; }, }), OAuthModule.forRoot(), - NgxsModule.forRoot([]), + NgxsModule.forRoot([BooksState, ]), NgxsReduxDevtoolsPluginModule.forRoot({ disabled: environment.production }), ], providers: [], diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts new file mode 100644 index 0000000000..429ac255aa --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { BooksComponent } from './books.component'; +import { LayoutApplicationComponent } from '@abp/ng.theme.basic'; + +const routes: Routes = [ + { + path: '', + component: LayoutApplicationComponent, + children: [{ path: '', component: BooksComponent }], + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class BooksRoutingModule { } diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html new file mode 100644 index 0000000000..c83bc50050 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html @@ -0,0 +1 @@ +

books works!

diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.scss b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.spec.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.spec.ts new file mode 100644 index 0000000000..13067baba9 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BooksComponent } from './books.component'; + +describe('BooksComponent', () => { + let component: BooksComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BooksComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BooksComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts new file mode 100644 index 0000000000..5514fc6ad6 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts @@ -0,0 +1,13 @@ +import { Component, OnInit } from "@angular/core"; +import { Store } from "@ngxs/store"; + +@Component({ + selector: "app-books", + templateUrl: "./books.component.html", + styleUrls: ["./books.component.scss"] +}) +export class BooksComponent implements OnInit { + constructor(private store: Store) {} + + ngOnInit() {} +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts new file mode 100644 index 0000000000..07fd3b1b5c --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { BooksRoutingModule } from './books-routing.module'; +import { BooksComponent } from './books.component'; +import { SharedModule } from '../shared/shared.module'; + + +@NgModule({ + declarations: [BooksComponent], + imports: [ + CommonModule, + BooksRoutingModule, + SharedModule + ] +}) +export class BooksModule { } diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.spec.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.spec.ts new file mode 100644 index 0000000000..40950f51ae --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { BooksService } from './books.service'; + +describe('BooksService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: BooksService = TestBed.get(BooksService); + expect(service).toBeTruthy(); + }); +}); diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.ts new file mode 100644 index 0000000000..7a893888c1 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { environment } from 'src/environments/environment'; + +@Injectable({ + providedIn: 'root' +}) +export class BooksService { + + constructor(private http: HttpClient) { } + + get() { + return this.http.get(`${environment.apis.default.url}/app/book`) + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts new file mode 100644 index 0000000000..91aec20790 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts @@ -0,0 +1,4 @@ +export class BooksGet { + static readonly type = '[Books] Get'; + constructor(public readonly payload?: any) { } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/index.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/index.ts new file mode 100644 index 0000000000..7cb6b259a1 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/index.ts @@ -0,0 +1 @@ +export * from './books.actions'; diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts new file mode 100644 index 0000000000..b694d6ccbc --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts @@ -0,0 +1,5 @@ +export namespace Books { + export interface State { + data: any; + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/index.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/index.ts new file mode 100644 index 0000000000..dfe4aa9053 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/models/index.ts @@ -0,0 +1 @@ +export * from './books'; diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts new file mode 100644 index 0000000000..066bfa2faf --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts @@ -0,0 +1,27 @@ +import { State, Action, StateContext } from "@ngxs/store"; +import { BooksGet } from "../actions/books.actions"; +import { Books } from "../models/books"; +import { BooksService } from "src/app/shared/services/books.service"; +import { tap } from "rxjs/operators"; + +@State({ + name: "BooksState", + defaults: {} as Books.State +}) +export class BooksState { + constructor(private booksService: BooksService) {} + + @Action(BooksGet) + booksAction( + { getState, patchState }: StateContext, + { payload }: BooksGet + ) { + return this.booksService.get().pipe( + tap(data => { + patchState({ + data + }); + }) + ); + } +} diff --git a/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/index.ts b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/index.ts new file mode 100644 index 0000000000..8aca5a90f7 --- /dev/null +++ b/samples/BookStore-Angular-MongoDb/angular/src/app/store/states/index.ts @@ -0,0 +1 @@ +export * from "./books.state";