Added loading bar
Fixed product, account and employee details for add new.
This commit is contained in:
@ -1,8 +1,8 @@
|
|||||||
from decimal import Decimal
|
|
||||||
from datetime import date, datetime, timedelta, time
|
|
||||||
from io import BytesIO
|
|
||||||
import uuid
|
|
||||||
import re
|
import re
|
||||||
|
import uuid
|
||||||
|
from datetime import date, datetime, timedelta, time
|
||||||
|
from decimal import Decimal
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
from pyramid.httpexceptions import HTTPForbidden, HTTPFound
|
from pyramid.httpexceptions import HTTPForbidden, HTTPFound
|
||||||
@ -20,14 +20,16 @@ def home(request):
|
|||||||
file = pkg_resources.resource_filename(package, resource)
|
file = pkg_resources.resource_filename(package, resource)
|
||||||
return FileResponse(file, request=request)
|
return FileResponse(file, request=request)
|
||||||
|
|
||||||
|
|
||||||
@view_config(context=HTTPForbidden)
|
@view_config(context=HTTPForbidden)
|
||||||
def forbidden(request):
|
def forbidden_json(request):
|
||||||
if 'X-Requested-With' in request.headers and request.headers['X-Requested-With'] == 'XMLHttpRequest':
|
if request.accept.quality('application/json') == 1:
|
||||||
response = Response("Forbidden")
|
response = Response("Forbidden")
|
||||||
response.status_int = 401
|
response.status_int = 401
|
||||||
return response
|
return response
|
||||||
else:
|
else:
|
||||||
return HTTPFound(location=request.route_url('login', _query={'returnUrl': request.path_qs}))
|
ret = HTTPFound(location=request.route_url('login', _query={'returnUrl': request.path_qs}))
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='db_image')
|
@view_config(route_name='db_image')
|
||||||
|
|||||||
@ -204,7 +204,7 @@ def show_term(request):
|
|||||||
|
|
||||||
def product_info(id, dbsession):
|
def product_info(id, dbsession):
|
||||||
if id is None:
|
if id is None:
|
||||||
product = {'code': '(Auto)', 'isActive': True, 'isPurchased': True, 'isSold': False}
|
product = {'code': '(Auto)', 'productGroup': {}, 'isActive': True, 'isPurchased': True, 'isSold': False}
|
||||||
else:
|
else:
|
||||||
product = dbsession.query(Product).filter(Product.id == id).first()
|
product = dbsession.query(Product).filter(Product.id == id).first()
|
||||||
product = {'id': product.id, 'code': product.code, 'name': product.name, 'units': product.units,
|
product = {'id': product.id, 'code': product.code, 'name': product.name, 'units': product.units,
|
||||||
|
|||||||
@ -24,6 +24,8 @@
|
|||||||
"@angular/platform-browser": "^6.0.3",
|
"@angular/platform-browser": "^6.0.3",
|
||||||
"@angular/platform-browser-dynamic": "^6.0.3",
|
"@angular/platform-browser-dynamic": "^6.0.3",
|
||||||
"@angular/router": "^6.0.3",
|
"@angular/router": "^6.0.3",
|
||||||
|
"@ngx-loading-bar/http-client": "^2.1.0",
|
||||||
|
"@ngx-loading-bar/router": "^2.1.0",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
"moment": "^2.22.1",
|
"moment": "^2.22.1",
|
||||||
"rxjs": "^6.2.0",
|
"rxjs": "^6.2.0",
|
||||||
|
|||||||
@ -56,7 +56,7 @@ export class AccountDetailComponent implements OnInit, AfterViewInit {
|
|||||||
this.item = item;
|
this.item = item;
|
||||||
this.form.setValue({
|
this.form.setValue({
|
||||||
code: this.item.code || '(Auto)',
|
code: this.item.code || '(Auto)',
|
||||||
name: this.item.name,
|
name: this.item.name || '',
|
||||||
type: this.item.type,
|
type: this.item.type,
|
||||||
isActive: this.item.isActive,
|
isActive: this.item.isActive,
|
||||||
isReconcilable: this.item.isReconcilable,
|
isReconcilable: this.item.isReconcilable,
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
<ngx-loading-bar></ngx-loading-bar>
|
||||||
<app-nav-bar></app-nav-bar>
|
<app-nav-bar></app-nav-bar>
|
||||||
<div fxLayout="row" fxLayoutAlign="center none" class="mat-app-background basic-container">
|
<div fxLayout="row" fxLayoutAlign="center none" class="mat-app-background basic-container">
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
|
|||||||
@ -3,10 +3,16 @@ import {CommonModule} from '@angular/common';
|
|||||||
import {NavBarComponent} from './nav-bar/nav-bar.component';
|
import {NavBarComponent} from './nav-bar/nav-bar.component';
|
||||||
import {MatButtonModule, MatIconModule, MatMenuModule, MatToolbarModule} from '@angular/material';
|
import {MatButtonModule, MatIconModule, MatMenuModule, MatToolbarModule} from '@angular/material';
|
||||||
import {RouterModule} from '@angular/router';
|
import {RouterModule} from '@angular/router';
|
||||||
|
import {HTTP_INTERCEPTORS} from '@angular/common/http';
|
||||||
|
import {HttpAuthInterceptor} from './http-auth-interceptor';
|
||||||
|
import {LoadingBarHttpClientModule} from '@ngx-loading-bar/http-client';
|
||||||
|
import {LoadingBarRouterModule} from '@ngx-loading-bar/router';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
|
LoadingBarHttpClientModule,
|
||||||
|
LoadingBarRouterModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatIconModule,
|
MatIconModule,
|
||||||
MatMenuModule,
|
MatMenuModule,
|
||||||
@ -14,11 +20,18 @@ import {RouterModule} from '@angular/router';
|
|||||||
RouterModule
|
RouterModule
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
NavBarComponent
|
NavBarComponent,
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
NavBarComponent
|
NavBarComponent,
|
||||||
]
|
LoadingBarHttpClientModule,
|
||||||
|
LoadingBarRouterModule
|
||||||
|
],
|
||||||
|
providers: [[{
|
||||||
|
provide: HTTP_INTERCEPTORS,
|
||||||
|
useClass: HttpAuthInterceptor,
|
||||||
|
multi: true
|
||||||
|
}]]
|
||||||
})
|
})
|
||||||
export class CoreModule {
|
export class CoreModule {
|
||||||
}
|
}
|
||||||
|
|||||||
31
overlord/src/app/core/http-auth-interceptor.ts
Normal file
31
overlord/src/app/core/http-auth-interceptor.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import {Injectable} from '@angular/core';
|
||||||
|
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';
|
||||||
|
|
||||||
|
import {Observable, ObservableInput, of as observableOf} from 'rxjs';
|
||||||
|
import {catchError} from 'rxjs/operators';
|
||||||
|
import {ToasterService} from './toaster.service';
|
||||||
|
import {Router} from '@angular/router';
|
||||||
|
import {ConfirmDialogComponent} from '../shared/confirm-dialog/confirm-dialog.component';
|
||||||
|
import {MatDialog} from '@angular/material';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class HttpAuthInterceptor implements HttpInterceptor {
|
||||||
|
|
||||||
|
constructor(private router: Router, private dialog: MatDialog, private toaster: ToasterService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
intercept(req: HttpRequest<any>, next: HttpHandler):
|
||||||
|
Observable<HttpEvent<any>> {
|
||||||
|
return next.handle(req)
|
||||||
|
.pipe(
|
||||||
|
catchError((err: any, caught: Observable<any>): ObservableInput<{}> => {
|
||||||
|
if (err.status === 401) {
|
||||||
|
this.router.navigate(['login']);
|
||||||
|
this.toaster.show('Danger', 'User has been logged out');
|
||||||
|
}
|
||||||
|
return observableOf(caught);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -64,9 +64,9 @@ export class EmployeeDetailComponent implements OnInit, AfterViewInit {
|
|||||||
designation: this.item.designation || '',
|
designation: this.item.designation || '',
|
||||||
salary: this.item.salary || '',
|
salary: this.item.salary || '',
|
||||||
points: this.item.points || '',
|
points: this.item.points || '',
|
||||||
isActive: this.item.isActive || true,
|
isActive: this.item.isActive,
|
||||||
costCentre: this.item.costCentre.id,
|
costCentre: this.item.costCentre.id,
|
||||||
joiningDate: moment(this.item.joiningDate, 'DD-MMM-YYYY').toDate(),
|
joiningDate: this.item.joiningDate ? moment(this.item.joiningDate, 'DD-MMM-YYYY').toDate() : '',
|
||||||
leavingDate: this.item.isActive ? null : moment(this.item.leavingDate, 'DD-MMM-YYYY').toDate()
|
leavingDate: this.item.isActive ? null : moment(this.item.leavingDate, 'DD-MMM-YYYY').toDate()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -57,19 +57,20 @@ export class ProductDetailComponent implements OnInit, AfterViewInit {
|
|||||||
|
|
||||||
showItem(item: Product) {
|
showItem(item: Product) {
|
||||||
this.item = item;
|
this.item = item;
|
||||||
|
console.log(item);
|
||||||
this.form.setValue({
|
this.form.setValue({
|
||||||
code: this.item.code || '(Auto)',
|
code: this.item.code || '(Auto)',
|
||||||
name: this.item.name,
|
name: this.item.name || '',
|
||||||
units: this.item.units,
|
units: this.item.units || '',
|
||||||
fraction: this.item.fraction,
|
fraction: this.item.fraction || '',
|
||||||
fractionUnits: this.item.fractionUnits,
|
fractionUnits: this.item.fractionUnits || '',
|
||||||
productYield: this.item.productYield,
|
productYield: this.item.productYield || '',
|
||||||
price: this.item.price,
|
price: this.item.price || '',
|
||||||
salePrice: this.item.salePrice,
|
salePrice: this.item.salePrice || '',
|
||||||
isPurchased: this.item.isPurchased,
|
isPurchased: this.item.isPurchased,
|
||||||
isSold: this.item.isSold,
|
isSold: this.item.isSold,
|
||||||
isActive: this.item.isActive,
|
isActive: this.item.isActive,
|
||||||
productGroup: this.item.productGroup.id
|
productGroup: this.item.productGroup.id ? this.item.productGroup.id : ''
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,7 +44,7 @@ export class TokenizerService {
|
|||||||
const isSort = (key === '' && value.length > 1 && '+-'.indexOf(value.charAt(0)) !== -1);
|
const isSort = (key === '' && value.length > 1 && '+-'.indexOf(value.charAt(0)) !== -1);
|
||||||
return sorter !== null ? (isSort && value.substr(1) in sorter) : isSort;
|
return sorter !== null ? (isSort && value.substr(1) in sorter) : isSort;
|
||||||
}
|
}
|
||||||
// getFilters(input: string[]) {
|
getFilters(input: string[]) {
|
||||||
// input.
|
// input.
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user