Browse Source

Merge branch 'dev' of https://github.com/abpframework/abp into dev

pull/1600/head
Halil İbrahim Kalkan 7 years ago
parent
commit
7a3fc1b18c
  1. 28
      samples/BookStore-Angular-MongoDb/angular/package.json
  2. 21
      samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts
  3. 4
      samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts
  4. 2
      samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts
  5. 13
      samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts
  6. 32
      samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html
  7. 26
      samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts
  8. 9
      samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts
  9. 0
      samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.spec.ts
  10. 20
      samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.ts
  11. 5
      samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html
  12. 15
      samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.ts
  13. 10
      samples/BookStore-Angular-MongoDb/angular/src/app/shared/shared.module.ts
  14. 1
      samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts
  15. 30
      samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts
  16. 28
      samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts
  17. 4
      templates/app/angular/package.json
  18. 1
      templates/app/angular/src/app/app-routing.module.ts
  19. 10
      templates/app/angular/src/app/shared/shared.module.ts

28
samples/BookStore-Angular-MongoDb/angular/package.json

@ -1,5 +1,5 @@
{
"name": "my-project-name",
"name": "BookStore",
"version": "0.0.0",
"scripts": {
"ng": "ng",
@ -17,14 +17,14 @@
"@abp/ng.identity": "^0.8.0",
"@abp/ng.tenant-management": "^0.8.0",
"@abp/ng.theme.basic": "^0.8.0",
"@angular/animations": "~8.1.2",
"@angular/common": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/core": "~8.1.2",
"@angular/forms": "~8.1.2",
"@angular/platform-browser": "~8.1.2",
"@angular/platform-browser-dynamic": "~8.1.2",
"@angular/router": "~8.1.2",
"@angular/animations": "~8.2.0",
"@angular/common": "~8.2.0",
"@angular/compiler": "~8.2.0",
"@angular/core": "~8.2.0",
"@angular/forms": "~8.2.0",
"@angular/platform-browser": "~8.2.0",
"@angular/platform-browser-dynamic": "~8.2.0",
"@angular/router": "~8.2.0",
"@angularclass/hmr": "^2.1.3",
"@ngxs/devtools-plugin": "^3.5.0",
"@ngxs/hmr-plugin": "^3.5.0",
@ -33,10 +33,10 @@
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.801.2",
"@angular/cli": "~8.1.2",
"@angular/compiler-cli": "~8.1.2",
"@angular/language-service": "~8.1.2",
"@angular-devkit/build-angular": "~0.802.0",
"@angular/cli": "~8.2.0",
"@angular/compiler-cli": "~8.2.0",
"@angular/language-service": "~8.2.0",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
@ -48,7 +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",
"ngxs-schematic": "^1.1.6",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",

21
samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts

@ -6,21 +6,15 @@ import { ABP } from '@abp/ng.core';
import { TENANT_MANAGEMENT_ROUTES } from '@abp/ng.tenant-management';
const routes: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full' },
{
path: 'home',
path: '',
loadChildren: () => import('./home/home.module').then(m => m.HomeModule),
data: {
routes: {
name: 'Home',
name: '::Menu:Home',
} 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),
@ -37,8 +31,15 @@ const routes: Routes = [
import('./lazy-libs/tenant-management-wrapper.module').then(m => m.TenantManagementWrapperModule),
data: { routes: TENANT_MANAGEMENT_ROUTES },
},
{ path: '**', redirectTo: '/' },
{
path: 'books',
loadChildren: () => import('./books/books.module').then(m => m.BooksModule),
data: {
routes: {
name: 'Books',
} as ABP.Route,
},
},
];
@NgModule({

4
samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts

@ -7,6 +7,4 @@ import { Component } from '@angular/core';
<router-outlet></router-outlet>
`,
})
export class AppComponent {
title = 'myProjectName';
}
export class AppComponent {}

2
samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts

@ -12,14 +12,12 @@ 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(),

13
samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts

@ -1,19 +1,14 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { BooksComponent } from './books.component';
import { LayoutApplicationComponent } from '@abp/ng.theme.basic';
import { BooksComponent } from './books.component';
const routes: Routes = [
{
path: '',
component: LayoutApplicationComponent,
children: [{ path: '', component: BooksComponent }],
},
{ path: '', component: LayoutApplicationComponent, children: [{ path: '', component: BooksComponent }] },
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
exports: [RouterModule],
})
export class BooksRoutingModule { }
export class BooksRoutingModule {}

32
samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html

@ -1 +1,31 @@
<p>books works!</p>
<div id="wrapper" class="card">
<div class="card-header">
<div class="row">
<div class="col col-md-6">
<h5 class="card-title">
Books
</h5>
</div>
</div>
</div>
<div class="card-body">
<p-table [value]="books$ | async" [loading]="loading" [paginator]="true" [rows]="10">
<ng-template pTemplate="header">
<tr>
<th>Book name</th>
<th>Book type</th>
<th>Publish date</th>
<th>Price</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-data>
<tr>
<td>{{ data.name }}</td>
<td>{{ bookType[data.type] }}</td>
<td>{{ data.publishDate | date }}</td>
<td>{{ data.price }}</td>
</tr>
</ng-template>
</p-table>
</div>
</div>

26
samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts

@ -1,13 +1,27 @@
import { Component, OnInit } from "@angular/core";
import { Store } from "@ngxs/store";
import { Component, OnInit } from '@angular/core';
import { Store, Select } from '@ngxs/store';
import { BooksState } from '../store/states';
import { Observable } from 'rxjs';
import { Books } from '../store/models';
import { BooksGet } from '../store/actions';
@Component({
selector: "app-books",
templateUrl: "./books.component.html",
styleUrls: ["./books.component.scss"]
selector: 'app-books',
templateUrl: './books.component.html',
styleUrls: ['./books.component.scss'],
})
export class BooksComponent implements OnInit {
@Select(BooksState.getBooks)
books$: Observable<Books.Item[]>;
bookType = Books.Type;
loading = false;
constructor(private store: Store) {}
ngOnInit() {}
ngOnInit() {
this.loading = true;
this.store.dispatch(new BooksGet()).subscribe(() => (this.loading = false));
}
}

9
samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts

@ -5,13 +5,8 @@ import { BooksRoutingModule } from './books-routing.module';
import { BooksComponent } from './books.component';
import { SharedModule } from '../shared/shared.module';
@NgModule({
declarations: [BooksComponent],
imports: [
CommonModule,
BooksRoutingModule,
SharedModule
]
imports: [CommonModule, BooksRoutingModule, SharedModule],
})
export class BooksModule { }
export class BooksModule {}

0
samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.spec.ts → samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.spec.ts

20
samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.ts

@ -0,0 +1,20 @@
import { Injectable } from '@angular/core';
import { RestService, Rest } from '@abp/ng.core';
import { Books } from '../../store/models';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class BooksService {
constructor(private rest: RestService) {}
get(): Observable<Books.Response> {
const request: Rest.Request<null> = {
method: 'GET',
url: '/api/app/book',
};
return this.rest.request<null, Books.Response>(request);
}
}

5
samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html

@ -1,9 +1,8 @@
<div class="card">
<div class="card-header">Welcome</div>
<div class="card-header">{{ '::Welcome' | abpLocalization }}</div>
<div class="card-body">
<p>
Welcome to the application. This is a startup project based on the ABP framework. For more information, visit
abp.io.
{{ '::LongWelcomeMessage' | abpLocalization }}
</p>
<p *ngIf="!hasLoggedIn">
<a routerLink="/account/login" [state]="{ redirectUrl: '/home' }" class="btn btn-primary" role="button"

15
samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.ts

@ -1,15 +0,0 @@
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`)
}
}

10
samples/BookStore-Angular-MongoDb/angular/src/app/shared/shared.module.ts

@ -1,12 +1,14 @@
import { NgModule } from '@angular/core';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { CoreModule } from '@abp/ng.core';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { NgModule } from '@angular/core';
import { ThemeBasicModule } from '@abp/ng.theme.basic';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { TableModule } from 'primeng/table';
@NgModule({
declarations: [],
imports: [CoreModule, ThemeSharedModule, ThemeBasicModule],
exports: [CoreModule, ThemeSharedModule, ThemeBasicModule],
imports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule],
exports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule],
providers: [],
})
export class SharedModule {}

1
samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts

@ -1,4 +1,3 @@
export class BooksGet {
static readonly type = '[Books] Get';
constructor(public readonly payload?: any) { }
}

30
samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts

@ -1,5 +1,33 @@
import { ABP } from '@abp/ng.core';
export namespace Books {
export interface State {
data: any;
data: Response;
}
export type Response = ABP.PagedResponse<Item>;
export interface Item {
name: string;
type: Type;
publishDate: string;
price: number;
lastModificationTime: string;
lastModifierId: string;
creationTime: string;
creatorId: string;
id: string;
}
export enum Type {
Undefined,
Adventure,
Biography,
Dystopia,
Fantastic,
Horror,
Science,
ScienceFiction,
Poetry,
}
}

28
samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts

@ -1,27 +1,29 @@
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";
import { State, Action, StateContext, Selector } from '@ngxs/store';
import { BooksGet } from '../actions/books.actions';
import { Books } from '../models/books';
import { BooksService } from '../../books/services/books.service';
import { tap } from 'rxjs/operators';
@State<Books.State>({
name: "BooksState",
defaults: {} as Books.State
name: 'BooksState',
defaults: { data: {} } as Books.State,
})
export class BooksState {
@Selector()
static getBooks({ data }: Books.State) {
return data.items || [];
}
constructor(private booksService: BooksService) {}
@Action(BooksGet)
booksAction(
{ getState, patchState }: StateContext<Books.State>,
{ payload }: BooksGet
) {
getBooks({ patchState }: StateContext<Books.State>) {
return this.booksService.get().pipe(
tap(data => {
patchState({
data
data,
});
})
}),
);
}
}

4
templates/app/angular/package.json

@ -1,5 +1,5 @@
{
"name": "my-project-name",
"name": "MyProjectName",
"version": "0.0.0",
"scripts": {
"ng": "ng",
@ -48,7 +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",
"ngxs-schematic": "^1.1.6",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",

1
templates/app/angular/src/app/app-routing.module.ts

@ -31,7 +31,6 @@ const routes: Routes = [
import('./lazy-libs/tenant-management-wrapper.module').then(m => m.TenantManagementWrapperModule),
data: { routes: TENANT_MANAGEMENT_ROUTES },
},
{ path: '**', redirectTo: '/' },
];
@NgModule({

10
templates/app/angular/src/app/shared/shared.module.ts

@ -1,12 +1,14 @@
import { NgModule } from '@angular/core';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { CoreModule } from '@abp/ng.core';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { NgModule } from '@angular/core';
import { ThemeBasicModule } from '@abp/ng.theme.basic';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { TableModule } from 'primeng/table';
@NgModule({
declarations: [],
imports: [CoreModule, ThemeSharedModule, ThemeBasicModule],
exports: [CoreModule, ThemeSharedModule, ThemeBasicModule],
imports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule],
exports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule],
providers: [],
})
export class SharedModule {}

Loading…
Cancel
Save