Fairoj : sales PD Issue fixes

This commit is contained in:
venbatechnologies@gmail.com 2019-12-05 18:34:44 +05:30
parent fc260d1f1b
commit 149282fc36
43 changed files with 240475 additions and 35 deletions

15
package-lock.json generated
View File

@ -601,6 +601,21 @@
"localforage-cordovasqlitedriver": "~1.5.0"
}
},
"@netbasal/content-loader": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@netbasal/content-loader/-/content-loader-1.1.0.tgz",
"integrity": "sha512-xzDuM4DWNu+xaTu8FiTUOoOAOHn/ryDyeagzW+3E1bG11pxmXqj9tjyWqx6SE9fH38J90RC5ozZF7LCf0fZDkQ==",
"requires": {
"tslib": "^1.9.0"
},
"dependencies": {
"tslib": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
"integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
}
}
},
"@types/chart.js": {
"version": "2.7.40",
"resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.40.tgz",

View File

@ -33,6 +33,7 @@
"@ionic-native/splash-screen": "4.4.0",
"@ionic-native/status-bar": "^4.16.0",
"@ionic/storage": "^2.1.3",
"@netbasal/content-loader": "^1.1.0",
"@types/chart.js": "^2.7.40",
"amazon-cognito-identity-js": "^3.0.3",
"chart.js": "^2.7.3",
@ -98,4 +99,4 @@
"android"
]
}
}
}

View File

@ -13,7 +13,7 @@ import {AppVersion} from '@ionic-native/app-version'
import { SalesPDlistPage } from '../pages/sales_pd/pages/sales-p-dlist/sales-p-dlist';
import { HomePage, Section3, Section1, Section2, Section9 } from '../pages/sales_pd/pages/home/home';
import { HomePage, Section3, Section1, Section2, Section9, Section8 } from '../pages/sales_pd/pages/home/home';
import { ConstantsProvider } from '../providers/constants/constants';
import { SalesPdProvider } from '../pages/sales_pd/providers/sales-pd/sales-pd';

View File

@ -80,7 +80,8 @@ import { CameraProvider } from '../pages/sales_pd/providers/camera/camera';
import { SalesPDlistPage } from '../pages/sales_pd/pages/sales-p-dlist/sales-p-dlist';
import { LocationAccuracy } from '@ionic-native/location-accuracy';
import { ReqTokenInterceptor } from '../providers/_guard/req-token.interceptor';
import {ContentLoaderModule} from '@netbasal/content-loader'
import { ScrollHideDirective } from '../directives/scroll-hide/scroll-hide';
@NgModule({
@ -93,7 +94,8 @@ import { ReqTokenInterceptor } from '../providers/_guard/req-token.interceptor';
PasswordPage,
PdAllocationPage,
InputPage,
SalesPDlistPage
SalesPDlistPage,
ScrollHideDirective
],
imports: [
@ -133,7 +135,8 @@ import { ReqTokenInterceptor } from '../providers/_guard/req-token.interceptor';
MatStepperModule,HttpClientModule,IonicImageViewerModule,
MatFormFieldModule,
NgxMatSelectSearchModule,
HomePageModule
HomePageModule,
ContentLoaderModule
],
bootstrap: [IonicApp],
entryComponents: [

View File

@ -0,0 +1,8 @@
import { NgModule } from '@angular/core';
import { ScrollHideDirective } from './scroll-hide/scroll-hide';
@NgModule({
declarations: [ScrollHideDirective],
imports: [],
exports: [ScrollHideDirective]
})
export class DirectivesModule {}

View File

@ -0,0 +1,57 @@
import { Directive, Input, ElementRef, Renderer2, SimpleChanges } from '@angular/core';
import { Content } from 'ionic-angular';
/**
* Generated class for the ScrollHideDirective directive.
*
* See https://angular.io/api/core/Directive for more info on Angular
* Directives.
*/
@Directive({
selector: '[scrollHide]' // Attribute selector
})
export class ScrollHideDirective {
@Input('scrollHide') config: ScrollHideConfig;
@Input('scrollContent') scrollContent: Content;
contentHeight: number;
scrollHeight: number;
lastScrollPosition: number;
lastValue: number = 0;
constructor(private element: ElementRef, private renderer: Renderer2) {
console.log('Hello ScrollHideDirective Directive');
}
ngOnChanges(changes: SimpleChanges) {
if (this.scrollContent && this.config) {
this.scrollContent.ionScrollStart.subscribe((ev) => {
this.contentHeight = this.scrollContent.getScrollElement().offsetHeight;
this.scrollHeight = this.scrollContent.getScrollElement().scrollHeight;
if (this.config.maxValue === undefined) {
this.config.maxValue = this.element.nativeElement.offsetHeight;
}
this.lastScrollPosition = ev.scrollTop;
});
this.scrollContent.ionScroll.subscribe((ev) => this.adjustElementOnScroll(ev));
this.scrollContent.ionScrollEnd.subscribe((ev) => this.adjustElementOnScroll(ev));
}
}
private adjustElementOnScroll(ev) {
if (ev) {
ev.domWrite(() => {
let scrollTop: number = ev.scrollTop > 0 ? ev.scrollTop : 0;
let scrolldiff: number = scrollTop - this.lastScrollPosition;
this.lastScrollPosition = scrollTop;
let newValue = this.lastValue + scrolldiff;
newValue = Math.max(0, Math.min(newValue, this.config.maxValue));
this.renderer.setStyle(this.element.nativeElement, this.config.cssProperty, `-${newValue}px`);
this.lastValue = newValue;
});
}
}
}
export interface ScrollHideConfig {
cssProperty: string;
maxValue: number;
}

View File

@ -49,9 +49,18 @@
<button ion-fab (click)="newpage()" color="optblue"><ion-icon name="add"></ion-icon></button>
</ion-fab>
<div *ngIf="loader_access">
<div *ngFor="let i of [1,2,3,4,5]">
<content-loader>
<svg:rect x="80" y="40" rx="5" ry="5" width="300" height="70" />
<svg:circle cx="40" cy="70" r="30" stroke="3" stroke-width="3" fill="red" />
</content-loader>
</div>
</div>
<div *ngIf="pdlistaccess" >
<div *ngIf="pdlistaccess && !loader_access" >
<mat-card>
@ -173,7 +182,7 @@
</div>
</div>
</div>
<div *ngIf="!pdlistaccess" text-center>
<div *ngIf="!pdlistaccess && !loader_access" text-center>
<h2>{{pdlistdetails}}</h2>
</div>

View File

@ -6,6 +6,7 @@ import { PdtriggerProvider } from '../../providers/pdtrigger/pdtrigger';
import { CognitoServiceProvider } from '../../providers/aws-service/cognito.service';
import { parseDate } from 'ionic-angular/util/datetime-util';
import { PdAllocationPage } from '../pd-allocation/pd-allocation';
import { ScrollHideConfig } from '../../directives/scroll-hide/scroll-hide';
/**
* Generated class for the PdListPage page.
@ -20,7 +21,10 @@ import { PdAllocationPage } from '../pd-allocation/pd-allocation';
templateUrl: 'pd-list.html',
})
export class PdListPage {
// footerScrollConfig: ScrollHideConfig = { cssProperty: 'margin-bottom', maxValue: undefined };
// headerScrollConfig: ScrollHideConfig = { cssProperty: 'margin-top', maxValue: 55 };
searchpast: any;
searchinprogress: any;
bgColorPast: any = [];
@ -33,6 +37,7 @@ export class PdListPage {
userDetails:any;
status:any;
searchitem:any;
loader_access:boolean=true
// public category:string="inpro"
// public categories:Array<string>=['inpro','past']
@ -62,6 +67,7 @@ export class PdListPage {
// }
getlenderpddetails()
{
this.loader_access=true
let userid = this.aws.getlocale();
this.aws.getuserprofile(userid).subscribe(res=>
{
@ -77,6 +83,7 @@ export class PdListPage {
this.pdlistdetails = res;
if(this.pdlistdetails.dataStatus == true)
{
this.loader_access=false
this.pdlistaccess = true;
this.pdinprogress = this.pdlistdetails.records.filter(past=>past.pd_status !="QC_COMPLETED");
this.searchinprogress = this.pdinprogress;
@ -111,11 +118,19 @@ export class PdListPage {
this.random_ng_past();
}else
{
this.loader_access=false
this.pdlistaccess = false;
this.pdlistdetails = "No Records Found";
}
},err=>{
this.loader_access=false
console.log("error",err);
})
};
},err=>{
this.loader_access=false
console.log("error",err)
});
}

View File

@ -12,9 +12,10 @@
<mat-label>{{parent_ques.get('question').value}}</mat-label>
<input matInput [type]="parent_ques.get('field_type').value == 'num' || parent_ques.get('field_type').value == 'numtoword' ? 'number' : parent_ques.get('field_type').value == 'string' ? 'text' : parent_ques.get('field_type').value" formControlName="answer_value"
[placeholder]="parent_ques.get('field_type').value == 'num' || parent_ques.get('field_type').value == 'numtoword' ? 'Entert the Number' : 'Enter the Text'"
[placeholder]="parent_ques.get('place_holder').value"
autocomplete="off" (change)="onChangeProperty($event,parent_ques,'','',p_i)"
>
<!-- [placeholder]="parent_ques.get('field_type').value == 'num' || parent_ques.get('field_type').value == 'numtoword' ? 'Entert the Number' : 'Enter the Text'" -->
<mat-hint *ngIf="parent_ques.get('answer_value').value != '' && parent_ques.get('field_type').value == 'numtoword'" align="end" style="font-size: 12px;">{{"&#8377;"}}{{parent_ques.get('answer_value').value | numToWords}}</mat-hint>
<!-- <mat-hint align="end" style="font-size: 11.5px;color: gray;" *ngIf="parent_ques.get('is_amt_in_words').value == true">One Lack</mat-hint> -->
<ng-container *ngFor="let validation of parent_ques.get('validations').value;" ngProjectAs="mat-error">
@ -149,7 +150,7 @@
<mat-form-field style="width: 100%" *ngIf="single_ques.get('type').value == '1'" [ngStyle]="{'margin-bottom':single_ques.get('field_type').value == 'numtoword' ? '5%' : '0' }">
<mat-label>{{single_ques.get('question').value}}</mat-label>
<input matInput [type]="single_ques.get('field_type').value == 'num' || single_ques.get('field_type').value == 'numtoword' ? 'number' : single_ques.get('field_type').value == 'string' ? 'text' : single_ques.get('field_type').value" formControlName="answer_value"
[placeholder]="single_ques.get('field_type').value == 'num' || single_ques.get('field_type').value == 'numtoword' ? 'Enter the Number' : 'Enter the Text'"
[placeholder]="single_ques.get('place_holder').value"
autocomplete="off" (change)="onChangeProperty($event,single_ques,group_ques,2,s_i)">
<mat-hint *ngIf="single_ques.get('answer_value').value != '' && single_ques.get('field_type').value == 'numtoword'" align="end" style="font-size: 10px;">{{"&#8377;"}}{{single_ques.get('answer_value').value | numToWords}}</mat-hint>
<!-- <mat-error align="end" style="font-style: italic;margin-right: 5px;">Field is Required</mat-error> -->

File diff suppressed because one or more lines are too long

View File

@ -20,7 +20,17 @@
<ion-list >
<ion-grid class="fadeIn">
<mat-card class="md-box" reorder="true">
<ion-list style="margin-top: 5px;">
<div *ngIf="loader_access">
<div *ngFor="let i of [1,2,3,4,5]">
<content-loader>
<svg:rect x="80" y="40" rx="5" ry="5" width="300" height="70" />
<svg:circle cx="40" cy="70" r="30" stroke="3" stroke-width="3" fill="red" />
</content-loader>
</div>
</div>
<ion-list style="margin-top: 5px;" *ngIf="!loader_access">
<ion-item *ngFor="let val of sales_displayValue" (click)="presentActionSheet(val.sales_pd_id)">
<!-- <p item-start class="lettericon">{{val.abbr}}</p> -->
<!-- <ion-icon style="font-size:90%" item-start="" class="lettericon" [style.background]="bgColor[i]" *ngIf="progess.applicat_details ===undefined || progess.applicat_details[0].applicant_name ==null">{{progess.pd_id}}</ion-icon> -->

View File

@ -18,6 +18,7 @@ import { ToastProvider } from '../../../../providers/common-provider/toast';
})
export class SalesPDlistPage {
sales_displayValue: any=[];
loader_access:any=true
constructor(public actionSheetCtrl: ActionSheetController,public navCtrl: NavController, public navParams: NavParams,private salesPDService:SalesPdProvider,private toastProvider:ToastProvider) {
}
@ -31,8 +32,15 @@ export class SalesPDlistPage {
this.salesPDService.getSalesPDList().subscribe(res=>{
if(res['dataStatus']){
this.sales_displayValue=res['records']
this.loader_access=false
}
else{
this.loader_access=false
}
},err=>{
console.log("Error",err)
this.loader_access=false
})
}
newForm(){

View File

@ -244,6 +244,7 @@ export class QuesServiceProvider {
//FOR numeric of string field
if(data.type == '1'){
curr_control.controls[curr_index].addControl('field_type',new FormControl(data.field_type))
curr_control.controls[curr_index].addControl('place_holder',new FormControl(data.place_holder))
}
//FOR SEARCHABLE FIELD VALUE KEY ()

View File

@ -10,7 +10,7 @@ import {
HttpUserEvent
} from '@angular/common/http';
// import { AuthGuard } from './auth.guard';
import { Observable, of, BehaviorSubject} from 'rxjs';
import { Observable, of, BehaviorSubject, throwError} from 'rxjs';
// import { Router } from '@angular/router';
@ -23,6 +23,9 @@ import { ConstantsProvider } from '../constants/constants';
// import { catchError } from 'rxjs/operators';
import 'rxjs/add/operator/catch';
import { AwsServiceProvider } from '../aws-service/aws-service';
import { NavController } from 'ionic-angular';
import { LoginPage } from '../../pages/login/login';
import { ToastProvider } from '../common-provider/toast';
// const cognitoService=this.injector.get(CognitoServiceProvider)
// const constantProvider=this.injector.get(ConstantsProvider)
@ -70,6 +73,9 @@ intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent |
if((<HttpErrorResponse>error).status) {
return this.handle401Error(req,next,error)
}
else{
return this.handle401Error(req,next,error)
}
} else {
console.log("observable error")
return Observable.throw(error);
@ -136,7 +142,7 @@ intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent |
}
}
else{
this.handleError('Error From Token Interceptor',err);
return this.handleError('',err)
}
}
else{
@ -145,16 +151,25 @@ intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent |
}
private handleError<T> (operation = 'operation', result?: T) {
return (error: any): Observable<T> => {
if(error instanceof HttpErrorResponse){
console.error("Error: " + error.status);
if(error.status == 401){
localStorage.clear();
// this.router.navigate(['/authentication/login']);
}
return of(result as T);
private handleError<T> (operation = 'operation', error?: HttpErrorResponse) {
// return (error: any): Observable<T> => {
// if(error instanceof HttpErrorResponse){
console.log("Error: " ,error);
if(error.status == 401){
localStorage.clear();
const NavCtrl=this.injector.get(NavController)
NavCtrl.setRoot(LoginPage);
}
};
}
else
// if(error.status == 0)
{
const toastProvider=this.injector.get(ToastProvider)
toastProvider.lenderappmessage("Network Error")
}
return throwError(error)
// return of(result as T);
}
// };
// }
}

Binary file not shown.

View File

@ -0,0 +1,50 @@
// Ionicons Icon Font CSS
// --------------------------
// Ionicons CSS for Ionic's <ion-icon> element
// ionicons-icons.scss has the icons and their unicode characters
$ionicons-font-path: $font-path !default;
@import "ionicons-icons";
@import "ionicons-variables";
@font-face {
font-family: "Ionicons";
src: url("#{$ionicons-font-path}/ionicons.woff2?v=#{$ionicons-version}") format("woff2"),
url("#{$ionicons-font-path}/ionicons.woff?v=#{$ionicons-version}") format("woff"),
url("#{$ionicons-font-path}/ionicons.ttf?v=#{$ionicons-version}") format("truetype");
font-weight: normal;
font-style: normal;
}
ion-icon {
display: inline-block;
font-family: "Ionicons";
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
font-style: normal;
font-variant: normal;
font-weight: normal;
line-height: 1;
text-rendering: auto;
text-transform: none;
speak: none;
@include rtl() {
&[aria-label^="arrow"]::before,
&[flip-rtl]::before {
transform: scaleX(-1);
}
&[unflip-rtl]::before {
transform: scaleX(1);
}
}
&::before {
display: inline-block;
}
}

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,34 @@
// Noto Sans Font
// Google
// Apache License, version 2.0
// http://www.apache.org/licenses/LICENSE-2.0.html
$noto-sans-font-path: $font-path !default;
@font-face {
font-family: "Noto Sans";
font-style: normal;
font-weight: 300;
src: local("Noto Sans"), local("Noto-Sans-Regular"), url("#{$noto-sans-font-path}/noto-sans-regular.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-regular.ttf") format("truetype");
}
@font-face {
font-family: "Noto Sans";
font-style: normal;
font-weight: 400;
src: local("Noto Sans"), local("Noto-Sans-Regular"), url("#{$noto-sans-font-path}/noto-sans-regular.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-regular.ttf") format("truetype");
}
@font-face {
font-family: "Noto Sans";
font-style: normal;
font-weight: 500;
src: local("Noto Sans Bold"), local("Noto-Sans-Bold"), url("#{$noto-sans-font-path}/noto-sans-bold.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-bold.ttf") format("truetype");
}
@font-face {
font-family: "Noto Sans";
font-style: normal;
font-weight: 700;
src: local("Noto Sans Bold"), local("Noto-Sans-Bold"), url("#{$noto-sans-font-path}/noto-sans-bold.woff") format("woff"), url("#{$noto-sans-font-path}/noto-sans-bold.ttf") format("truetype");
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,34 @@
// Roboto Font
// Google
// Apache License, version 2.0
// http://www.apache.org/licenses/LICENSE-2.0.html
$roboto-font-path: $font-path !default;
@font-face {
font-family: "Roboto";
font-style: normal;
font-weight: 300;
src: local("Roboto Light"), local("Roboto-Light"), url("#{$roboto-font-path}/roboto-light.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-light.woff") format("woff"), url("#{$roboto-font-path}/roboto-light.ttf") format("truetype");
}
@font-face {
font-family: "Roboto";
font-style: normal;
font-weight: 400;
src: local("Roboto"), local("Roboto-Regular"), url("#{$roboto-font-path}/roboto-regular.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-regular.woff") format("woff"), url("#{$roboto-font-path}/roboto-regular.ttf") format("truetype");
}
@font-face {
font-family: "Roboto";
font-style: normal;
font-weight: 500;
src: local("Roboto Medium"), local("Roboto-Medium"), url("#{$roboto-font-path}/roboto-medium.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-medium.woff") format("woff"), url("#{$roboto-font-path}/roboto-medium.ttf") format("truetype");
}
@font-face {
font-family: "Roboto";
font-style: normal;
font-weight: 700;
src: local("Roboto Bold"), local("Roboto-Bold"), url("#{$roboto-font-path}/roboto-bold.woff2") format("woff2"), url("#{$roboto-font-path}/roboto-bold.woff") format("woff"), url("#{$roboto-font-path}/roboto-bold.ttf") format("truetype");
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
www/build/main.css.map Normal file
View File

@ -0,0 +1 @@
null

File diff suppressed because one or more lines are too long

1
www/build/main.js.map Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
www/build/vendor.js.map Normal file

File diff suppressed because one or more lines are too long