resolved conflict issues with master branch

master
umasoodch 6 years ago
commit 96971a6b68

@ -9556,6 +9556,14 @@
"tslib": "^1.9.0"
}
},
"ngx-gauge": {
"version": "1.0.0-beta.10",
"resolved": "https://registry.npmjs.org/ngx-gauge/-/ngx-gauge-1.0.0-beta.10.tgz",
"integrity": "sha512-j/YOntC31Pe24Et0wooi1YOmkA11Xw5YzsdBUIvYtvikvO6jwQ5tKwHimP981QAWW3S6/FQ9y94Fd/auJfyGkw==",
"requires": {
"tslib": "^1.9.0"
}
},
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",

@ -105,6 +105,7 @@
"ng-circle-progress": "^1.5.1",
"ng2-file-upload": "^1.3.0",
"ng2-pdf-viewer": "^5.3.2",
"ngx-gauge": "^1.0.0-beta.10",
"npm": "^6.13.1",
"phonegap-plugin-barcodescanner": "^8.1.0",
"phonegap-plugin-multidex": "^1.0.0",

@ -37,10 +37,10 @@
<div class="changeImgBtn">
<!-- <div class="changeImgBtn">
<button ion-button icon-only menuToggle class="menubutton" (click)="changeImage()">
<ion-icon (click)="changeImage();" class="changeIcon" name="md-create"></ion-icon></button>
</div>
</div> -->
@ -98,7 +98,8 @@
</ion-label>
</ion-item>
<ion-item (click)="openChangePassword()">
<!-- <ion-item (click)="openChangePassword()"> -->
<ion-item (click)="openChangePassword()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 25px !important;" src="../assets/imgs/lock_icon.png" item-left>
</ion-thumbnail>

@ -26,19 +26,7 @@ header
--background: white !important;
}
// .editIcon{
// margin-left: 174px !important;
// margin-bottom: -104px !important;
// padding: 6px -3px !important;
// // margin-top: 50px !important;
// background: transparent;
// --background: rgb(235, 232, 232) !important;
// --border-radius: 80% !important;
// // border-color: rgb(211, 208, 208) !important;
// --box-shadow: 3px 0 rgb(194, 191, 191) !important;
// z-index: 3 !important;
// }
.menubutton{
white-space: normal;
@ -53,15 +41,7 @@ header
box-shadow: 3px 0px 7px 0px #c5c2c2;
border-radius: 50%;
// box-shadow: 0px 2px 7px 0px #dfe1e3 #7f8c8d;
// white-space: normal;
// color: var(--light);
// text-transform: capitalize;
// min-height: 47px;
// background: transparent;
// font-size: 2rem;
// position: absolute;
// top: 40px;
}
.changeIcon{
@ -72,13 +52,7 @@ header
position: relative;
color: #7f8c8d;
// background: #c1c1c1;
// width: 40px;
// height: 39px;
// border-radius: 50% !important;
// position: relative;
// left: 51px;
// top:16px;
}
.changeImgBtn{
@ -228,11 +202,7 @@ padding: 6px 24px;
.sidebar-menu .header-div {
// background: var(--primary);
// background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%, var(--secondary) 59%, var(--customnavy) 100%);
// background: -webkit-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%, var(--secondary) 59%, var(--customnavy) 100%);
// background: linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%, var(--secondary) 59%, var(--customnavy) 100%);
// color: var(--light);
text-transform: capitalize;
height: 100px;
position: relative;
@ -319,4 +289,17 @@ font-weight: bolder !important;
color: black !important;
font-weight: bolder !important;
}
.profileImg{
width: 160px;
height: 160px;
display: -webkit-inline-box;
display: inline-flex;
overflow: hidden;
background: transparent;
border-radius: 70% !important;
position: relative;
top: 7px;
}

@ -126,8 +126,13 @@ export class AppComponent implements OnInit, AfterViewInit {
this.cs.openLogin();
}
// profile() {
// this.cs.openProfile();
// this.menu.toggle();
// }
profile() {
this.cs.openProfile();
this.cs.openEditProfile();
this.menu.toggle();
}
openNotification(){
@ -140,6 +145,11 @@ export class AppComponent implements OnInit, AfterViewInit {
this.cs.openChangePassword();
this.menu.toggle();
}
// openPayslipPage(){
// this.cs.openPayslipPage();
// this.menu.toggle();
// }
private changeImage() {
this.cs.openChangeImagePage();
@ -150,4 +160,5 @@ export class AppComponent implements OnInit, AfterViewInit {
this.menu.toggle();
}
}

@ -33,6 +33,7 @@ import { KeysPipe } from './pipes/keys/keys.pipe';
import { SegmentContentComponent } from './ui/segment-content/segment-content.component';
import { GraphComponent } from './ui/graph/graph.component';
import { NgxChartsModule } from '@swimlane/ngx-charts';
import { ExpandableComponent } from './ui/expandable/expandable.component';
import { ProjectsService } from './services/projects/projects.service';
import { NationalityService } from './services/nationality/nationality.service';
@ -99,11 +100,12 @@ import {FileUploderProfileComponent} from './ui/file-uploder-profile/file-uplode
import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx';
import { AccordinCustomComponent } from './ui/accordin-custom/accordin-custom.component';
import { AccordinTabCustomComponent} from './ui/accordin-custom/accordin-tab-custom/accordin-tab-custom.component'
import {DashboredService} from './services/dashbored/dashbored.service';
import {NgxGaugeModule} from 'ngx-gauge';
import { StatsButtonComponent } from './ui/stats-button/stats-button.component';
import { ServicesButtonComponent } from './ui/services-button/services-button.component';
import {ConfirmLoginComponent} from '../authentication/confirm-login/confirm-login.component'
import {WelcomeComponent} from './ui/welcome-login/welcome.component'
import {DashboredService} from './services/dashbored/dashbored.service'
import {FabButtonComponent} from './ui/fab-button/fab-button.component'
import { AttendScanService } from './services/attend-services/attend-scan.service';
import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
@ -121,8 +123,9 @@ import { CardFilterComponent} from './ui/card-filter/card-filter.component';
NgxChartsModule,
ListboxModule,
PdfViewerModule,
NgCircleProgressModule.forRoot(),
ChartModule,
NgCircleProgressModule.forRoot()
NgxGaugeModule
],
declarations: [
FabButtonComponent,
@ -238,6 +241,7 @@ import { CardFilterComponent} from './ui/card-filter/card-filter.component';
FileUploderProfileComponent,
AccordinTabCustomComponent,
AccordinCustomComponent,
NgxGaugeModule,
StatsButtonComponent,
ServicesButtonComponent,
ConfirmLoginComponent,

@ -78,5 +78,8 @@ MobileNumber:string;
LogInTokenID:string;
CompanyImageDescription: string;
CompanyImageURL: string;
SERVICE_DAYS:Number;
SERVICE_MONTHS:Number;
SERVICE_YEARS:Number;
}

@ -1097,6 +1097,9 @@ public getMonthNameAr(value: number): string {
public openProfile() {
this.nav.navigateForward(['/profile/home']);
}
public openEditProfile() {
this.nav.navigateForward(["/profile/editprofile"]);
}
public openAccuralPage() {
this.nav.navigateForward(['/accrual-balances/home']);
}
@ -1191,6 +1194,13 @@ public getMonthNameAr(value: number): string {
public openConfirmLoginPage() {
this.nav.navigateForward(['/authentication/confirmLogin']);
}
public openEditprofile() {
this.nav.navigateForward(["/profile/editProfile"]);
}
public openPerformanceevaluation() {
this.nav.navigateForward(["/profile/performanceevaluation"]);
}
public reload(url: string, from: string) {
console.log('force reload called from:' + from);

@ -5,5 +5,7 @@ import { Response } from "src/app/hmg-common/services/models/response";
import { PerformanceAppraisalList } from './PerformanceAppraisalList';
export class PerformanceAppraisalResponse extends Response{
public GetGetPerformanceAppraisalList :PerformanceAppraisalList[];
public GetPerformanceAppraisalList :PerformanceAppraisalList[];
public static PERFORMANCE_DATA = "PERFORMANCE_DATA"
}

@ -604,7 +604,7 @@ export class HomePage implements OnInit {
}
openProfilePage() {
this.common.openProfile();
this.common.openEditProfile();
}
openStatsButton(link: string) {

@ -1,3 +1,6 @@
<!--
<ion-header>
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
@ -5,388 +8,301 @@
</ion-buttons>
<ion-title color="light" >{{ts.trPK('payslip','title')}}</ion-title>
</ion-toolbar>
</ion-header>
</ion-header> -->
<ion-content class="colorBG">
<ion-item style="margin: 10px;border-radius: 5px;">
<ion-label>choose payslip</ion-label>
<ion-select (ionChange)="showInfo($event)" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="choosePayslip">
<ion-select-option value="{{i}}" selected="{{(i==0).toString()}}" *ngFor="let options of GetPayslipList; let i=index">{{options.PAYSLIP_CHOICE}} </ion-select-option>
</ion-select>
</ion-item>
<div class="header-div">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<p class="Title">{{ts.trPK('payslip','monthly-payslip')}}</p>
<div class="Imgdiv">
<img class="Imgsrc">
</div>
</div>
<!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> -->
<!-- <ion-list *ngIf="showPaySlip !=''" >
<ion-item>
<ion-row><ion-label>PERIOD NAME</ion-label><ion-label>{{showPaySlip.PERIOD_NAME}}</ion-label></ion-row>
<ion-row><ion-label>PERIOD START DATE</ion-label><ion-label>{{showPaySlip.PERIOD_START_DATE}}</ion-label> </ion-row>
<ion-row> <ion-label>PERIOD END DATE</ion-label><ion-label>{{showPaySlip.PERIOD_END_DATE}}</ion-label> </ion-row>
</ion-item>
</ion-list> -->
<div *ngIf="showPaySlip !=''">
<accordin-custom >
<accordin-tab-custom [header]="'payslip,payroll-info' | translate " >
<!-- special results -->
<!-- <ion-card >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','payroll-info')}} </div>
</ion-card-header>
<ion-card-content> -->
<div *ngIf="showPaySlip !=''">
<ion-grid class="">
<ion-row class="">
<ion-col class="">
<label for=""> {{ts.trPK('payslip','peroid-name')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{showPaySlip.PERIOD_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','start-date')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{showPaySlip.PERIOD_START_DATE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','end-date')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{showPaySlip.PERIOD_END_DATE}}</label>
</ion-col>
</ion-row>
</ion-grid>
</div>
<empty-data *ngIf="showPaySlip.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</accordin-tab-custom>
</accordin-custom>
<!-- <ion-card *ngIf="showPaySlip !=''">
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','payroll-info')}} </div>
</ion-card-header>
<ion-card-content>
<div>
<ion-grid>
<ion-row>
<ion-col class="colBold">
<label for=""> {{ts.trPK('payslip','peroid-name')}}
</label>
</ion-col>
<ion-col>
<label for="">{{showPaySlip.PERIOD_NAME}}</label>
</ion-col>
</ion-row>
<div class="">
<div class="header">
<!-- <p style="position: absolute; left: 40%; bottom: 65%;">{{currentMonth}}</p> -->
<ion-row>
<ion-col class="colBold">
<label for="">{{ts.trPK('payslip','start-date')}}
</label>
</ion-col>
<ion-col>
<label for="">{{showPaySlip.PERIOD_START_DATE}}</label>
</ion-col>
</ion-row>
<div>
<ion-row>
<ion-col>
<button ion-button icon-start class="slidBtn" (click)="slidePrev(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === GetPayslipList.length-1 ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon>
</button>
</ion-col>
<ion-col>
<p class="label"><b style="font-family: WorkSans-Bold;">{{ (showPaySlip.PAYSLIP_CHOICE)?.substring(15,23) }}</b></p>
<!-- <label class="label" for="">{{showPaySlip.PAYSLIP_CHOICE}}</label> -->
<ion-row>
<ion-col class="colBold">
<label for="">{{ts.trPK('payslip','end-date')}}
</label>
</ion-col>
<ion-col>
<label for="">{{showPaySlip.PERIOD_END_DATE}}</label>
</ion-col>
</ion-row>
</ion-grid>
<!-- <label class="p" for="">{{showPaySlip.PERIOD_NAME}}</label> -->
<!-- <p style="position: absolute; left: 40%; bottom: 65%;">{{currentMonth}}</p> -->
</ion-col>
<ion-col>
<button ion-button icon-end class="slidbtn" (click)="slideNext(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === 0 ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon>
</button>
</ion-col>
</ion-row>
</div>
</div>
</ion-card-content>
</ion-card> -->
<accordin-custom >
<accordin-tab-custom [header]="'payslip,summary-payment' | translate" >
<!-- <ion-card *ngIf="GetSummaryOfPaymentList !='' " >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','summary-payment')}} </div>
</ion-card-header>
<ion-card-content> -->
<div *ngIf="GetSummaryOfPaymentList !=''">
<ion-grid>
<ion-slides [options]="slideOptsOne" #slideWithNav (ionSlideDidChange)="SlideDidChange(sliderOne,slideWithNav)">
<ion-slide >
<ion-grid class="headerGrid">
<ion-row >
<ion-col class="">
<label for=""> {{ts.trPK('payslip','deductions-Amount')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','deductions-percentage')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_PERCENTAGE}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','earings-Amount')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_EARNINGS_AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','earings-percentage')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_EARNINGS_PERCENTAGE}}</label>
</ion-col>
<label class="date" for="">{{showPaySlip.PERIOD_START_DATE}}</label>
<label class="label" for="">{{showPaySlip.PERIOD_END_DATE}}</label>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','pay-Amount')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_PAY_AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','pay-percentage')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetSummaryOfPaymentList.TOTAL_PAY_PERCENTAGE}}</label>
</ion-col>
</ion-row>
</ion-grid>
<div style="color: black;">
<!-- <ngx-gauge
*ngFor="let s of showPaySlip"
[type]="gaugeType"
[value]="gaugeValue"
[label]="gaugeLabel">
</ngx-gauge> -->
<div class="result-graph">
<!-- <div class="request-heading">
<span>Open Request Analysis</span>
</div> -->
<div class="result-text-container">
<h2>{{GetSummaryOfPaymentList.TOTAL_PAY_AMOUNT}}</h2>
<!-- <span>TOTAL <br> OPEN REQUEST</span> -->
<span>{{ts.trPK('payslip','total')}} <br> {{ts.trPK('payslip','salary')}}</span>
</div>
<empty-data *ngIf="GetSummaryOfPaymentList.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</accordin-tab-custom>
</accordin-custom >
<accordin-custom >
<accordin-tab-custom [header]="'payslip,earnings' | translate" [subHeadergreen]=true [subHeader]="earingTotal" >
<!-- <ion-card *ngIf="GetEarningsList !='' " >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','total')}} </div>
</ion-card-header>
<ion-card-content> -->
<div *ngIf="GetEarningsList !=''">
<ion-grid>
<ion-row *ngFor="let list of GetEarningsList" >
<ion-col class="">
<label for="">{{list.ELEMENT_NAME}}</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{list.AMOUNT}}</label>
</ion-col>
<p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
</div>
<div style="position: relative;
left: 77%;
bottom: 117px;
color: black;
background-color: #22c6b3;
width: 20%; height: 6px;">
<ion-col>
<ion-row>
<label class="green-label">{{ts.trPK('payslip','earnings-key')}}</label>
</ion-row>
<ion-row>
<label class="green-amount">{{GetSummaryOfPaymentList.TOTAL_EARNINGS_AMOUNT}}</label>
</ion-row>
</ion-col>
</div>
<div style="position: relative;
left: 77%;
bottom: 67px;
color: black;
background-color: #094875;
width: 20%; height: 6px;">
<ion-col>
<ion-row>
<label class="blue-label">{{ts.trPK('payslip','deductions-key')}}</label>
</ion-row>
<ion-row>
<ion-col col-6 class="earingTotH">
<label style="font-size: 20px !important" for="">{{ts.trPK('payslip','total')}}</label>
</ion-col>
<ion-col col-6 class="earingTotG">
<label style="font-size: 20px !important" for="">{{earingTotal}}</label>
</ion-col>
</ion-row>
</ion-grid>
<label class="blue-amount" for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT}}</label>
</ion-row>
</ion-col>
</div>
</div>
<empty-data *ngIf="GetEarningsList.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</ion-grid>
</ion-slide>
</ion-slides>
</div>
</div>
<!-- <p>Summary of Payment</p> -->
<div class="hrTitle"> {{ts.trPK('payslip','summary-payment')}} </div>
<div *ngIf="GetSummaryOfPaymentList !=''">
<ion-grid class="grids">
<ion-row class="bgcolor">
<ion-col class="colPayslip">
<label class="label" for="">{{ts.trPK('payslip','particular')}} </label>
</ion-col>
<ion-col class="colPayslip">
<label class="label">%</label>
</ion-col>
<ion-col class="colPayslips">
<label class="label" for="">{{ts.trPK('payslip','amount')}}
</label>
</ion-col>
</ion-row>
<ion-row class="rowtable" >
<ion-col class="colPayslip">
<label class="label" for=""> {{ts.trPK('payslip','deductions')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label class="label" for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_PERCENTAGE}}</label>
</ion-col>
<ion-col class="colPayslips">
<label class="label" for="">{{GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT}}</label>
</ion-col>
<!-- <ion-infinite-scroll (ionInfinite)="doInfiniteEarning($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll> -->
</accordin-tab-custom>
</accordin-custom >
<!-- <accordin-custom *ngIf="GetDeductionsList !=''"> -->
<accordin-custom >
<accordin-tab-custom [header]="'payslip,deductions' | translate" [subHeadergreen]=false [subHeader]="deductionTotal" >
<!-- <ion-card *ngIf="GetDeductionsList !='' " >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','deductions')}} </div>
</ion-card-header>
<ion-card-content>
colBold -->
<div *ngIf="GetDeductionsList !=''">
<ion-grid>
<ion-row *ngFor="let list of GetDeductionsList" >
<ion-col class="">
<label for="">{{list.ELEMENT_NAME}}</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{list.AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col col-6 class="earingTotH">
<label style="font-size: 20px !important" for="">{{ts.trPK('payslip','total')}}</label>
</ion-col>
<ion-col col-6 class="earingTotR">
<label style="font-size: 20px !important" for="">{{deductionTotal}}</label>
</ion-col >
</ion-row>
</ion-grid>
</div>
<empty-data *ngIf="GetDeductionsList.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
<!-- <ion-infinite-scroll (ionInfinite)="doInfiniteDeduction($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll> -->
</accordin-tab-custom>
</accordin-custom >
<accordin-custom >
<accordin-tab-custom [header]="'payslip,payment-information' | translate" >
<!-- <ion-card *ngIf="GetPaymentInformationList !='' " >
<ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('payslip','payment-information')}} </div>
</ion-card-header>
<ion-card-content> -->
<div *ngIf="GetPaymentInformationList !=''">
<ion-grid>
<ion-row >
<ion-col class="">
<label for=""> {{ts.trPK('payslip','payment-method')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.PAYMENT_METHOD_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','bank-name')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.BANK_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','branch-name')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.BRANCH_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','account-no')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.ACCOUNT_NUMBER}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="">
<label for="">{{ts.trPK('payslip','amount')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label for="">{{GetPaymentInformationList.AMOUNT}}</label>
</ion-col>
</ion-row>
</ion-grid>
</div>
<empty-data *ngIf="GetPaymentInformationList.length <= 0 "></empty-data>
<!-- </ion-card-content>
</ion-card> -->
</accordin-tab-custom>
</accordin-custom >
</ion-row>
<ion-row class="rowtable">
<ion-col class="colPayslip">
<label class="label" for="">{{ts.trPK('payslip','earnings')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label class="label" for="">{{GetSummaryOfPaymentList.TOTAL_EARNINGS_PERCENTAGE}}</label>
</ion-col>
<ion-col class="colPayslips" >
<label class="label" for="">{{GetSummaryOfPaymentList.TOTAL_EARNINGS_AMOUNT}}</label>
</ion-col>
</ion-row>
<ion-row class="rowtable">
<ion-col class="colPayslip">
<label class="label-bold" for="">{{ts.trPK('payslip','pay-Amount')}}
</label>
</ion-col>
<ion-col class="colPayslip">
<label class="label-bold" for="">{{GetSummaryOfPaymentList.TOTAL_PAY_PERCENTAGE}}</label>
</ion-col>
<ion-col class="colPayslips">
<label class="label-bold" for="">{{GetSummaryOfPaymentList.TOTAL_PAY_AMOUNT}}</label>
</ion-col>
</ion-row>
</ion-grid>
</div>
<!-- <ion-row *ngIf="showPaySlip !=''" style="text-align: center;">
<ion-col class="greenTxt" col-6>
<button ion-button block class="notColBtn" (click)="openEarings()">
<p>{{ts.trPK('payslip','earnings')}}</p>
<ion-img class="serviceItemImg" src="../assets/imgs/details.png"></ion-img>
</button>
</ion-col>
<ion-col class="greenTxt" col-6>
<button ion-button block class="notColBtn" (click)="openDeductions()">
<p>{{ts.trPK('payslip','deductions')}}</p>
<ion-img class="serviceItemImg" src="../assets/imgs/details.png"></ion-img>
</button>
</ion-col>
</ion-row> -->
<div class="hrTitle"> {{ts.trPK('payslip','earnings')}} </div>
<div *ngIf="GetEarningsList !=''">
<ion-grid class="grids">
<ion-row class="bgcolor">
<ion-col class="colPayslip">
<label class="label" for="">{{ts.trPK('payslip','particular')}} </label>
</ion-col>
<ion-col class="colPayslips">
<label class="label" for="">{{ts.trPK('payslip','amount')}}
</label>
</ion-col>
</ion-row>
<ion-row class="rowtable" *ngFor="let list of GetEarningsList" >
<ion-col class="colPayslip">
<label class="label" for="">{{list.ELEMENT_NAME}}</label>
</ion-col>
<ion-col class="colPayslips">
<label class="label" for="">{{list.AMOUNT}}</label>
</ion-col>
</ion-row>
</ion-grid>
</div>
<div class="hrTitle"> {{ts.trPK('payslip','deductions')}} </div>
<div *ngIf="GetDeductionsList !=''">
<ion-grid class="grids">
<ion-row class="bgcolor">
<ion-col class="colPayslip">
<label class="label" for="">{{ts.trPK('payslip','particular')}} </label>
</ion-col>
<ion-col class="colPayslips">
<label class="label" for="">{{ts.trPK('payslip','amount')}}
</label>
</ion-col>
</ion-row>
<ion-row class="rowtable" *ngFor="let list of GetDeductionsList" >
<ion-col class="colPayslip">
<label class="label" for="">{{list.ELEMENT_NAME}}</label>
</ion-col>
<ion-col class="colPayslips">
<label class="label" for="">{{list.AMOUNT}}</label>
</ion-col>
</ion-row>
</ion-grid>
</div>
<!-- ///////////////////////////////////// -->
<!-- <ion-item style="margin: 10px;border-radius: 5px;">
<ion-label>choose payslip</ion-label>
<ion-select (ionChange)="showInfo($event)" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="choosePayslip">
<ion-select-option value="{{i}}" selected="{{(i==0).toString()}}" *ngFor="let options of GetPayslipList; let i=index">{{options.PAYSLIP_CHOICE}} </ion-select-option>
</ion-select>
</ion-item> -->
<div class="hrTitle"> {{ts.trPK('payslip','payment-information')}} </div>
<div *ngIf="GetPaymentInformationList !=''">
<ion-grid class="grids" >
<ion-row class="rowtables">
<ion-col class="colPayslips">
<ion-row class="col">
<label class="label" for=""> {{ts.trPK('payslip','payment-method')}} </label>
</ion-row>
<ion-row>
<label class="label" for="">{{GetPaymentInformationList.PAYMENT_METHOD_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row class="rowtable">
<ion-col class="colPayslip">
<ion-row class="col">
<label class="label" for="">{{ts.trPK('payslip','bank-name')}} </label>
</ion-row>
<ion-row >
<label class="label" for="">{{GetPaymentInformationList.BANK_NAME}}</label>
</ion-row>
</ion-col>
<ion-col class="colPayslips">
<ion-row class="col">
<label class="label" for="">{{ts.trPK('payslip','branch-name')}}
</label>
</ion-row>
<ion-row >
<label class="label" for="">{{GetPaymentInformationList.BRANCH_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row class="rowtable">
<ion-col class="colPayslip">
<ion-row class="col">
<label class="label" for="">{{ts.trPK('payslip','account-no')}}
</label>
</ion-row>
<ion-row >
<label class="label" for="">{{GetPaymentInformationList.ACCOUNT_NUMBER}}</label>
</ion-row>
</ion-col>
<ion-col class="colPayslips">
<ion-row class="col">
<label class="label" for="">{{ts.trPK('payslip','amount')}}
</label>
</ion-row>
<ion-row >
<label class="label" for="">{{GetPaymentInformationList.AMOUNT}}</label>
</ion-row>
</ion-col>
</ion-row>
</ion-grid>
</div>
</ion-content>

@ -1,9 +1,6 @@
.rowAccordin{
border: none;
}
}
.gridAccordin{
margin: 10px;
background: #ffffff;
@ -11,9 +8,31 @@
}
.colPayslip{
text-align: center;
color: var(--labelColor);
border-right: 1px solid #cac8c8;
border-bottom-left-radius: -10px !important;
padding-top: 8px;
padding-bottom: 8px;
margin-left: 18px;
font-size: 12px !important;
}
.colPayslips{
border-bottom-left-radius: -10px !important;
padding-top: 8px;
padding-bottom: 8px;
margin-left: 18px;
font-size: 12px !important;
}
.label{
font-size: 15px !important;
text-align: center;
margin-bottom: 1px;
}
.label-bold{
font-size: 13px !important;
// font-weight: bold !important;
font-family: WorkSans-Bold;
}
.earingTotH{
text-align: right;
@ -39,3 +58,212 @@
color: var(--red);
}
.colorBG{
--background: #f0efef;
}
.header-div {
background-color: #22C6B3;
text-transform: capitalize;
height: 180px;
position: relative;
display: block;
margin-bottom: -28px;
}
.Title{
text-align: center;
color: white;
margin-top: -33px;
font-size: 17px;
}
.Imgdiv{
padding-top: -38px;
margin-top: -32px;
}
.Imgsrc{
width: 23px;
height: 24px;
/* display: -webkit-inline-box; */
/* display: inline-flex; */
overflow: hidden;
background: transparent;
border-radius: 70% !important;
/* position: relative; */
top: 7px;
margin-left: 344px !important;
margin-top: -46px;
}
.p{
font-weight: bold;
margin-top: -7px;
font-size: 14px;
}
.slidBtn{
margin-top: 8px;
margin-left: 10px;
background: transparent;
}
.activeArrow{
height: 26px;
width: 26px;
color: white;
background: transparent !important;
--background: transparent !important;
}
.slidbtn{
background: transparent;
margin-bottom: -59px;
margin-top: 8px;
margin-left: 65px;
}
.disabledArrow{
height: 26px;
width: 26px;
color: #908d8d;
background: transparent !important;
--background: transparent !important;
}
.result-graph{
font-size: 14px;
margin-left: -48px;
margin-right: 3px;
}
.headerGrid{
background-color: white !important;
border: 1px solid #cac8c8 !important;
border-radius: 20px !important;
padding-top: 13px;
padding-bottom: 14px;
margin-left: 30px;
margin-right: 32px;
margin-top: -2px;
margin-bottom: 10px;
padding-right: 21px;
}
.result-text-container {
padding: 0;
margin: 0;
position: absolute;
left: 42%;
top: 50%;
display: block;
text-align: center;
transform: translate(-50%, -50%);
h2 {
font-size: 25px;
font-family: WorkSans-Bold;
margin: 0 auto;
line-height: 36px;
}
span {
width: 125px;
display: block;
margin: 0 auto;
font-size: 15px;
font-family: workSans-Regular;
}
}
.green-label{
font-size: 12px;
margin-top: -13px;
}
.green-amount{
font-size: 17px;
font-family: WorkSans-Bold;
margin-top: -3px;
}
.blue-label{
font-size: 12px;
margin-top: -13px;
}
.blue-amount{
font-size: 17px;
font-family: WorkSans-Bold;
margin-top: -4px;
}
.grids{
border-radius: 20px !important;
background: white;
padding-left: 1px;
padding-right: 1px;
margin: 13px;
padding-top: 0px;
padding-bottom: 3px;
padding-left: 13px;
padding-right: 13px;
border: 1px solid #cac8c8;
}
.header{
margin-top: -126px;
}
.bgcolor {
color: white;
border-top-right-radius: 19px;
border-top-left-radius: 15px;
padding-top: 1;
padding-bottom: 0;
margin-top: 0;
margin-bottom: 0;
/* border-radius: 12px !important; */
background: #094875;
border-bottom: 1px solid #a7a4a4;
border-top: 1px solid #cac8c8;
margin-left: -13px;
margin-right: -13px;
}
.rowtable{
padding-top: 0;
padding-bottom: 0;
margin-top: 0;
margin-bottom: 0;
border-top: 1px solid #cac8c8;
margin-left: -13px;
margin-right: -13px;
}
.rowtables{
padding-top: 0;
padding-bottom: 0;
margin-top: 0;
margin-bottom: 0;
margin-left: -13px;
margin-right: -13px;
}
.col{
font-size: 15px;
font-family: WorkSans-Bold;
}
.hrTitle{
margin-left: 11px !important;
font-size: 15px !important;
}
.date{
font-size: 15px !important;
margin-left: 58px;
margin-bottom: 12px;
padding-right: 5px;
}

@ -1,11 +1,14 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { Component, OnInit, ViewChild, SimpleChanges } from '@angular/core';
import {PayslipService} from '../service/payslip.service'
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
import { DeductionRequest } from '../model/deductionReq';
import { IonInfiniteScroll } from '@ionic/angular';
import { IonInfiniteScroll,IonSlides} from '@ionic/angular';
import { AuthenticationService } from "src/app/hmg-common/services/authentication/authentication.service";
import { AuthenticatedUser } from "src/app/hmg-common/services/authentication/models/authenticated-user";
import { UIChart } from 'primeng/components/chart/chart';
@Component({
selector: 'app-home',
@ -32,16 +35,44 @@ export class HomeComponent implements OnInit {
private deductionReq: DeductionRequest;
doinfiniteDedReq:any;
doinfinitEarReq:any;
personalInfo: any;
setImage:any;
imageSrc: any = "../assets/imgs/profile.png";
slideView: any;
sliderOne: any;
payslipIndex :any;
data:any;
@ViewChild('slides') slides: IonSlides;
@ViewChild('slideWithNav') slideWithNav: IonSlides;
@ViewChild('chart') chart: UIChart;
slideOptsOne = {
initialSlide: 0,
slidesPerView: 1,
autoplay:true
};
@ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll;
public options = {
cutoutPercentage: 80,
tooltips: { enabled: false },
legend: { display: false }};
gaugeType = "full";
// gaugeValue = 11.200;
// gaugeLabel = "";
constructor(
public payslipService:PayslipService,
public ts: TranslatorService,
public common: CommonService,
public sharedData: SharedDataService
public sharedData: SharedDataService,
public authService: AuthenticationService,
public cs: CommonService,
) {}
ngOnInit() {
// this.selEmp = this.common.sharedService.getSharedData(
// MenuResponse.SHARED_SEL_EMP,
@ -75,7 +106,63 @@ export class HomeComponent implements OnInit {
this.getPayslip();
// this.getProfile();
}
ngOnChanges(changes: SimpleChanges): void {
if (changes.inputData.currentValue) {
// update this.data here
// then chart is getting updated
setTimeout(() => {
this.chart.reinit();
}, 100);
}
}
slideNext(object, slideView) {
if(this.payslipIndex!=0){
this.payslipIndex=this.payslipIndex-1;
this.showInfo();
}
}
slidePrev(object, slideView) {
if(this.payslipIndex<this.GetPayslipList.length-1){
// console.log(this.payslipIndex);
this.payslipIndex=this.payslipIndex+1;
this.showInfo();
}
}
// getProfile() {
// this.authService
// .loadAuthenticatedUser()
// .subscribe((user: AuthenticatedUser) => {
// if (user) {
// this.personalInfo = user;
// if(this.cs.getUpdateImage().status){
// // this.imageSrc = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+this.cs.getUpdateImage().img);
// this.imageSrc = "data:image/png;base64,"+this.cs.getUpdateImage().img;
// // alert("this.imageSrc"+ this.imageSrc);
// }else{
// this.imageSrc = user.EMPLOYEE_IMAGE
// ? "data:image/png;base64," + user.EMPLOYEE_IMAGE
// : this.imageSrc;
// console.log("2-"+user);
// }
// }
// else {
// console.log("3-"+user);
// }
// });
// }
getPayslip(){
// this.selEmp ="13777";
@ -103,15 +190,16 @@ export class HomeComponent implements OnInit {
this.defultSelected=this.firstPayslip.PAYSLIP_CHOICE
}
this.showPaySlip = this.GetPayslipList[0];
this.payslipIndex=0;
this.getAllPayslipData(this.GetPayslipList[0].ACTION_CONTEXT_ID);
}
// showPaymentInfo
showInfo(event){
console.log(event.detail.value);
const index = parseInt(event.detail.value);
this.showPaySlip =this.GetPayslipList[index];
this.ActionContextID=this.GetPayslipList[index].ACTION_CONTEXT_ID;
showInfo(){
//console.log(event.detail.value);
//const index = parseInt(event.detail.value);
this.showPaySlip =this.GetPayslipList[this.payslipIndex];
this.ActionContextID=this.GetPayslipList[this.payslipIndex].ACTION_CONTEXT_ID;
this.getAllPayslipData(this.ActionContextID);
}
@ -140,8 +228,18 @@ export class HomeComponent implements OnInit {
this.GetSummaryOfPaymentList = result.GetSummaryOfPaymentList[0];
this.earingTotal = this.GetSummaryOfPaymentList.TOTAL_EARNINGS_AMOUNT;
this.deductionTotal = this.GetSummaryOfPaymentList.TOTAL_DEDUCTIONS_AMOUNT;
}
this.data = {
labels: ['earingTotal', 'deductionTotal'],
datasets: [
{ data: [this.earingTotal,this.deductionTotal],
backgroundColor: [
'#22c6b3',
'#094875', ],
borderWidth: 2
}
]
}; }
}
@ -286,8 +384,6 @@ getDeduction(ActionContextID){
} else {
if (this.infiniteScroll) this.infiniteScroll.complete();
}
} //end infiniteScroll
}
}

@ -6,6 +6,7 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./payslip.page.scss'],
})
export class PayslipPage implements OnInit {
constructor() { }

@ -0,0 +1,77 @@
<ion-content class="colorBG">
<div class="header-div">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<p class="proTitles">{{ts.trPK('userProfile','title')}}</p>
<div>
<div class="centerDiv homeBox" (click)="openPersonalInfo()">
<!-- <div class="profileDiv"> -->
<img class="profileImg" [src]="user_image">
</div>
<!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> -->
<div *ngIf="personalInfo">
<p class="empName">{{User_name_Emp}}</p>
<p class="empJob"> {{User_Job_name}}</p>
</div>
</div>
</div>
<ion-grid *ngIf="personalInfo">
<div class="gridService">
<ion-row>
<ion-col class="columns">
<label class="service">{{personalInfo.SERVICE_YEARS}}</label>
<br> <label class="services">YEARS</label>
</ion-col>
<ion-col class="columns">
<label class="service">{{personalInfo.SERVICE_MONTHS}}</label>
<br> <label class="services">MONTHS</label>
</ion-col>
<ion-col class="columns">
<label class="service">{{personalInfo.SERVICE_DAYS}}</label>
<br> <label class="services">DAYS</label>
</ion-col>
</ion-row>
</div>
</ion-grid>
<div class="list">
<ion-list class="list-ios">
<div class="p">
<p>Years of Services</p>
</div>
<ion-item class="itemline" (click)="openEditprofile()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 22px !important;" src="../assets/imgs/profile_icon.png" item-left>
</ion-thumbnail>
<ion-label class="profile">
{{ts.trPK('userProfile','edit-profile')}}
</ion-label>
<ion-icon style= "width: 20px; height: 22px !important;" name="arrow-forward" item-right></ion-icon>
</ion-item>
<ion-item class="itemlins" (click)="openPerormance()">
<ion-thumbnail slot="start" class="menu-thumb">
<ion-icon style= "width: 23px; height: 24px !important;" name="speedometer" item-left></ion-icon>
</ion-thumbnail>
<ion-label class="profile">
{{ts.trPK('userProfile','performance-evaluation')}}
</ion-label>
<ion-icon style= "width: 20px; height: 22px !important;" name="arrow-forward" item-right></ion-icon>
</ion-item>
</ion-list>
</div>
</ion-content>

@ -0,0 +1,153 @@
.list-ios {
margin-left: 0;
margin-right: 0;
margin-top: 32px;
margin-bottom: 32px;
background: var(--ion-item-background,var(--ion-background-color,#fff));
}
.colorBG{
--background: #f0efef;
}
.header-div{
text-transform: capitalize;
background: #22C6B3;
display: block;
position: relative;
height: 160px;
margin-bottom: 60px;
}
.profileImg{
width: 160px;
height: 160px;
display: -webkit-inline-box;
display: inline-flex;
overflow: hidden;
/* background: transparent; */
border-radius: 78% !important;
position: relative;
top: 34px;
// background: white;
background: transparent;
margin-left: -3px;
}
.proTitles {
margin: 0;
padding: 0;
font-size: 16px;
text-align: center;
font-weight: bolder;
color: white;
margin-top: -33px;
}
.Text {
margin: 0;
padding: 0;
text-align: center;
font-weight: bolder;
color: black;
font-size: 16px;
margin-top: 34px;
margin-bottom: 10px;
text-align: center;
}
ion-thumbnail.menu-thumb{
width:20px;
height:20px;
// margin-top: 5px !important;
}
.profile{
color: black !important;
// font-weight: bolder !important;
}
.gridService{
// background-color: #094875;
margin-top: 87px;
border-radius: 10px;
margin-bottom: -49px;
margin-left: 14px;
margin-right: 14px;
}
.columns{
margin: 10px;
background: #094875;
border-radius: 27px;
padding-left: 30px;
padding-right: 6px;
padding-top: 19px;
padding-bottom: 26px;
}
.service{
font-size: 28px;
// font-weight: bolder;
color: white;
letter-spacing: 1px;
font-weight: bold;
}
.services{
font-size: 12px;
color: white;
}
.list{
margin-left: 14px;
margin-right: 14px;
border-radius: 10px;
background: white;
border: solid #bebbbb !important;
padding: 2px;
}
.p{
color: black !important;
font-size: medium;
text-align: center;
border-bottom: rgb(190, 187, 187) solid 1px;
}
.itemline{
border-bottom: rgb(190, 187, 187) solid 1px;
}
.itemlins{
border-bottom: rgb(190, 187, 187) solid 1px;
margin-bottom: 209px;
}
.empName {
margin: 0;
padding: 0;
text-align: center;
font-weight: bolder;
color: black;
font-size: 16px;
margin-top: 38px;
}
.empJob{
margin: 0;
padding: 0;
text-align: center;
color: black;
font-size: 16px;
margin-top: 4px;
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { EditProfileComponent } from './edit-profile.component';
describe('EditProfileComponent', () => {
let component: EditProfileComponent;
let fixture: ComponentFixture<EditProfileComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ EditProfileComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(EditProfileComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,112 @@
import { Component, OnInit } from '@angular/core';
import { Platform, Events, MenuController } from "@ionic/angular";
import { CommonService } from "src/app/hmg-common/services/common/common.service";
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
import { AuthenticationService } from "src/app/hmg-common/services/authentication/authentication.service";
import { AuthenticatedUser } from "src/app/hmg-common/services/authentication/models/authenticated-user";
import { PerformanceAppraisalResponse } from 'src/app/hmg-common/services/dashbored/performance-appraisal.response';
import { DashboredService } from 'src/app/hmg-common/services/dashbored/dashbored.service';
import { SharedDataService } from 'src/app/hmg-common/services/shared-data-service/shared-data.service';
// import { DomSanitizer } from '@angular/platform-browser';
@Component({
selector: 'app-edit-profile',
templateUrl: './edit-profile.component.html',
styleUrls: ['./edit-profile.component.scss'],
})
export class EditProfileComponent implements OnInit {
User_name_Emp: string = "";
User_Job_name: string;
private menu: MenuController;
setImage:any;
// imageSrc: any = "../assets/imgs/profile.png";
user_image: any = "../assets/imgs/profile.png";
personalInfo: any;
appraisalArr :any =[];
public performanceData: any=[];
public static PERFORMANCE_DATA = 'perAppData';
constructor(
public ts: TranslatorService,
public cs: CommonService,
public authService: AuthenticationService,
public DS :DashboredService,
public sharedData: SharedDataService
// private events: Events,
// private sanitizer: DomSanitizer,
)
{
// this.events.subscribe("img-change", displayImg => {
// console.log("app compont: "+displayImg);
// this.user_image = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+displayImg);
// });
}
ngOnInit() {
this.getProfile();
}
getProfile() {
console.log("getProfile");
this.authService
.loadAuthenticatedUser()
.subscribe((user: AuthenticatedUser) => {
if (user) {
this.personalInfo = user;
this.User_name_Emp=this.personalInfo.EMPLOYEE_NAME;
this.User_Job_name=this.personalInfo.JOB_NAME;
this.user_image = user.EMPLOYEE_IMAGE
? "data:image/png;base64," + user.EMPLOYEE_IMAGE
: "../assets/imgs/profile.png";
console.log("name: "+ this.personalInfo.EMPLOYEE_NAME);
console.log("user name: "+ user.EMPLOYEE_NAME);
console.log("name: "+ this.personalInfo.JOB_NAME);
console.log("job name: "+ user.JOB_NAME);
}});
}
openEditprofile(){
this.cs.openProfile();
}
openPerormance(){
this.showPerformanceAppraisal();
}
showPerformanceAppraisal(){
this.DS.getPerformanceAppraisal(()=>{
this.showPerformanceAppraisal();
}).subscribe((result: PerformanceAppraisalResponse) => {
this.handlePerformanceAppraisalResult(result);
});
}
private handlePerformanceAppraisalResult(result){
if (this.cs.validResponse(result)) {
if (this.cs.hasData(result.GetPerformanceAppraisalList)) {
this.appraisalArr =result.GetPerformanceAppraisalList;
this.performanceData=[];
for(let i=0;i<this.appraisalArr.length;i++){
this.performanceData.push({name:this.appraisalArr[i].APPRAISAL_YEAR,value :this.appraisalArr[i].APPRAISAL_SCORE});
}
console.log("PerformanceAppraisalResponse");
this.sharedData.setSharedData(this.performanceData, PerformanceAppraisalResponse.PERFORMANCE_DATA);
//localStorage.setItem("performanceData", this.performanceData)
this.cs.openPerformanceevaluation();
}
}
}
}

@ -1,111 +1,168 @@
<ion-header>
<!-- <ion-header>
<div class="profileHead">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" > {{ts.trPK('userProfile','title')}}</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-card *ngIf="personalInfo">
<ion-card-header class="boxHdr">
<div class="hrTitle">{{personalInfo.EMPLOYEE_NAME}}</div>
</ion-card-header>
<ion-card-content>
<div>
<div class="centerDiv profileDiv">
<!-- <p class="TxtPlace boldTxt">{{User_name_Emp}}</p> -->
<ion-img class="profileImg" [src]="imageSrc"></ion-img>
</div>
<ion-grid class="profile-grid">
<div>
<ion-row>
<ion-col class="colBold" size="5">
<label> {{ts.trPK('userProfile','empNo')}}</label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.EMPLOYEE_NUMBER}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','busG')}}</label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.BUSINESS_GROUP_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','job')}}</label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.JOB_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','locName')}}</label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.LOCATION_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','payrol')}}</label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.PAYROLL_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','orgEmail')}}</label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.EMPLOYEE_EMAIL_ADDRESS}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','orgName')}} </label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.ORGANIZATION_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','position')}}</label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.POSITION_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','grade')}} </label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.GRADE_NAME}}</label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colBold" size="5">
<label>{{ts.trPK('userProfile','category')}}</label>
</ion-col>
<ion-col size="7">
<label>{{personalInfo.EMPLOYMENT_CATEGORY_MEANING}}</label>
</ion-col>
</ion-row>
</div>
</ion-grid>
</div>
</ion-card-content>
</ion-card>
</ion-content>
</div>
</ion-header> -->
<ion-content class="colorBG">
<div class="header-div">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<p class="proTitles">{{ts.trPK('userProfile','title')}}</p>
<!-- <div class="centerDiv profileDiv"> -->
<div class="centerDiv homeBox">
<div class="centerDiv homeBox" (click)="openPersonalInfo()">
<!-- <div class="profileDiv"> -->
<img class="profileImg" [src]="imageSrc">
</div>
<!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> -->
<!-- <div class="Text">{{personalInfo.EMPLOYEE_NAME}}</div> -->
<div *ngIf="personalInfo">
<p class="Text">{{personalInfo.EMPLOYEE_NAME}}</p>
</div>
</div>
<div class="changeImgBtn">
<button ion-button icon-only menuToggle class="menubutton" (click)="ChangeImage()">
<ion-icon (click)="ChangeImage();" class="changeIcon" name="md-create"></ion-icon>
</button>
</div>
</div> <!-- end header-div -->
<div>
<!-- <ion-card *ngIf="personalInfo"> -->
<!-- <ion-card-header class="boxHdr">
<div class="hrTitle">{{personalInfo.EMPLOYEE_NAME}}</div>
</ion-card-header> -->
<!-- <ion-card-content> -->
<div *ngIf="personalInfo">
<ion-grid>
<div class="profileGrid">
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col class="line">
<ion-row>
<label class="lebl">
{{ts.trPK('userProfile','empNo')}}</label></ion-row>
<ion-row > <label
class="rowBolds">{{personalInfo.EMPLOYEE_NUMBER}}</label> </ion-row>
</ion-col>
<ion-col>
<ion-row> <label class="lebl">{{ts.trPK('userProfile','category')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYMENT_CATEGORY_MEANING}}</label> </ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','address')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds"></label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('general','mobile')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYEE_MOBILE_NUMBER}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','busG')}}</label>
</ion-row>
<ion-row> <label class="rowBolds">{{personalInfo.BUSINESS_GROUP_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','job')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.JOB_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','payrol')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.PAYROLL_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','orgEmail')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.EMPLOYEE_EMAIL_ADDRESS}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row style="border-bottom: rgb(190, 187, 187) solid 1px;">
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','position')}}</label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.POSITION_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<ion-row>
<label class="lebl">{{ts.trPK('userProfile','grade')}} </label>
</ion-row>
<ion-row>
<label class="rowBolds">{{personalInfo.GRADE_NAME}}</label>
</ion-row>
</ion-col>
</ion-row>
</div>
</ion-grid>
</div>
<!-- </ion-card-content> -->
<!-- </ion-card> -->
</div>
</ion-content>

@ -1,3 +1,132 @@
ion-col.colBold, ion-col.colBold > label{
font-weight:bold;
}
}
.colorBG{
--background: #f0efef;
}
.header-div{
text-transform: capitalize;
background: #22C6B3;
display: block;
position: relative;
height: 160px;
margin-bottom: 60px;
}
// .profileCont{
// background-color: #d9d7d7 !important;
.menubutton{
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 39px;
background: #f0ecec;
font-size: 2rem;
position: absolute;
width: 35px !important;
height: 19px;
box-shadow: 3px 0px 7px 0px #c5c2c2;
border-radius: 50%;
}
.changeIcon{
/* background: #c1c1c1; */
width: 21px;
/* height: 26px; */
border-radius: 50% !important;
position: relative;
color: #7f8c8d;
}
.changeImgBtn{
position: absolute;
top: 80%;
left: 65%;
}
.profileImg{
width: 160px;
height: 160px;
display: -webkit-inline-box;
display: inline-flex;
overflow: hidden;
// background: transparent;
border-radius: 69% !important;
position: relative;
top: 34px;
// background: white;
background: transparent;
}
.Text {
margin: 0;
padding: 0;
text-align: center;
font-weight: bolder;
color: black;
font-size: 16px;
margin-top: 34px;
text-align: center;
}
.line{
padding-top: 0px !important;
/* margin-bottom: 0px; */
/* margin: 0px; */
border-right: 1px #c5c2c2 solid !important;
line-height: 10px !important;
}
.proTitles {
margin: 0;
padding: 0;
font-size: 16px;
text-align: center;
font-weight: bolder;
color: white;
margin-top: -33px;
}
.profileGrid{
border: #bebbbb solid 1px;
border-radius: 9px;
padding: 0px;
margin-top: 54px;
margin-left: 10px;
margin-right: 10px;
margin-bottom: 10px;
color: black;
// font-weight: bold;
background: white;
}
.lebl{
color: black;
font-size: 14px !important;
font-weight: bold !important;
padding-top: 9px;
padding-left: 5px;
}
.rowBolds{
color: black !important;
font-size: 14px !important;
/* padding: 6px !important; */
padding-bottom: 9px;
padding-left: 5px;
padding-top: 4px;
}

@ -14,6 +14,7 @@ export class HomeComponent implements OnInit {
personalInfo: any;
setImage:any;
imageSrc: any = "../assets/imgs/profile.png";
// user_image: any = "../assets/imgs/profile.png";
constructor(
public ts: TranslatorService,
public cs: CommonService,
@ -39,11 +40,15 @@ export class HomeComponent implements OnInit {
this.getProfile();
}
getProfile() {
console.log("getProfile");
this.authService
.loadAuthenticatedUser()
.subscribe((user: AuthenticatedUser) => {
if (user) {
this.personalInfo = user;
console.log("name: "+ this.personalInfo.EMPLOYEE_NAME);
console.log("user name: "+ user.EMPLOYEE_NAME);
if(this.cs.getUpdateImage().status){
// this.imageSrc = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+this.cs.getUpdateImage().img);
this.imageSrc = "data:image/png;base64,"+this.cs.getUpdateImage().img;
@ -60,4 +65,10 @@ export class HomeComponent implements OnInit {
}
});
}
private ChangeImage() {
this.cs.openChangeImagePage();
}
}

@ -0,0 +1,77 @@
<ion-content class="colorBG">
<div class="header-div">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<p class="proTitles">{{ts.trPK('userProfile','performance')}}</p>
<div class="profilediv" (click)="openPersonalInfo()">
<img class="profileImg" [src]="user_image">
</div>
<!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> -->
<ion-grid>
<div class="grid">
<ion-row>
<p class="Text">Performance Evaluation</p>
<div class="gauge">
<ngx-charts-gauge [view]="view" [scheme]="colorScheme" [results]="performanceData" [min]="0" [max]="100"
[angleSpan]="240" [startAngle]="-120" [bigSegments]="5"
[smallSegments]="10" (select)="onSelect($event)">
</ngx-charts-gauge>
</div>
</ion-row>
</div>
<!-- <div>
<div *ngFor="let data of performanceData">
<ion-row class="gridvalue">
<ion-col >
<div class="performancecolor" [style.background]="data.color"></div>
<br>
<label class="label"> Your Performance In </label>
<label class="labelvalue"> {{data.value}} </label>
<label class="label"> {{data.name}} </label>
</ion-col>
</ion-row>
</div>
</div> -->
<!-- class="gridvalue" -->
<!-- ///// -->
<div>
<div *ngIf="performanceData">
<div >
<ion-row >
<ion-col *ngFor="let data of performanceData ;let i = index" [ngClass]="length % 2 != 0 && i == length - 1 ? 'rightgrid' : 'leftgrid'" >
<div class="performancecolor" [style.background]="data.color"></div>
<br>
<label class="label"> Your Performance In </label>
<label class="label"> {{data.name}} </label>
<br>
<label class="labelvalue"> {{data.value}} </label>
<label class="percentage"> %</label>
</ion-col>
</ion-row>
</div>
</div>
</div>
</ion-grid>
</div>
</ion-content>

@ -0,0 +1,144 @@
.colorBG{
--background: #f0efef;
}
.header-div{
text-transform: capitalize;
background: #22C6B3;
display: block;
position: relative;
height: 160px;
margin-bottom: 60px;
padding-top: 10px;
}
.btnBack{
background: var(--customnavy);
white-space: normal;
color: var(--light);
text-transform: capitalize;
min-height: 45px;
margin-top: -8px !important;
}
.profilediv{
margin-left: 337px;
}
.profileImg{
width: 25px;
height: 24px;
/* display: -webkit-inline-box; */
/* display: inline-flex; */
overflow: hidden;
background: transparent;
border-radius: 90% !important;
position: relative;
top: -22px;
// margin-left: 337px;
}
.proTitles {
margin: 0;
padding: 0;
font-size: 16px;
text-align: center;
font-weight: bolder;
color: white;
margin-top: -33px;
}
.grid{
background-color: #f9f9f9;
margin-top: 9px;
margin-bottom: 7px !important;
border-radius: 21px;
margin-bottom: 26px;
margin-left: 14px;
margin-right: 14px;
padding-bottom: 1px;
border: solid #d7d4d4 !important;
}
.Text {
margin: 0;
padding: 0;
text-align: center;
font-weight: bolder;
color: black;
font-size: 16px;
margin-top: 5px;
margin-bottom: 10px;
text-align: center;
margin-left: 74px;
}
.leftgrid{
margin-left: 10px;
background: white;
border: solid #d7d4d4;
margin: 7px;
border-radius: 24px;
width: 30% !important;
padding-bottom: 9px;
padding-top: 11px;
padding-left: 10px;
}
.rightgrid{
margin-left: 10px;
background: white;
border: solid #d7d4d4;
// margin: 7px;
border-radius: 24px;
width: 30% !important;
padding-bottom: 9px;
padding-top: 11px;
padding-left: 10px;
margin-right: 189px;
}
.performancecolor{
border: solid #bebbbb 1px !important;
border-radius: 13px;
margin-top: 0px !important;
height: 10px;
padding-right: 8px !important;
width: 65px;
margin-bottom: -10px;
}
.label{
font-size: 13px !important;
margin-top: -7px !important;
font-weight: bold !important;
}
.labelvalue{
font-size: 28px !important;
font-weight: bold !important;
margin-top: 7px !important;
margin-left: 72px !important;
}
.percentage{
font-size: 15px !important;
margin-top: 15px !important;
}
.gauge{
transform: translate(-24px, -65px);
margin-bottom: -187px;
margin-top: -20px;
}

@ -0,0 +1,27 @@
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { PerformanceEvaluationComponent } from './performance-evaluation.component';
describe('PerformanceEvaluationComponent', () => {
let component: PerformanceEvaluationComponent;
let fixture: ComponentFixture<PerformanceEvaluationComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ PerformanceEvaluationComponent ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(PerformanceEvaluationComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

@ -0,0 +1,88 @@
import { Component, OnInit, NgModule } from '@angular/core';
import { Platform, Events, MenuController } from "@ionic/angular";
import { CommonService } from "src/app/hmg-common/services/common/common.service";
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
import { AuthenticationService } from "src/app/hmg-common/services/authentication/authentication.service";
import { DashboredService } from 'src/app/hmg-common/services/dashbored/dashbored.service';
import { PerformanceAppraisalResponse } from 'src/app/hmg-common/services/dashbored/performance-appraisal.response';
// import { DomSanitizer } from '@angular/platform-browser';
// import {NgxGaugeModule} from 'ngx-gauge';
import { AuthenticatedUser } from "src/app/hmg-common/services/authentication/models/authenticated-user";
@Component({
selector: 'app-performance-evaluation',
templateUrl: './performance-evaluation.component.html',
styleUrls: ['./performance-evaluation.component.scss'],
})
export class PerformanceEvaluationComponent implements OnInit {
personalInfo: any;
user_image: any = "../assets/imgs/profile.png";
setImage:any;
view: any = [380, 450];
public performanceData: any=[];
public length;
constructor( public ts: TranslatorService,
public cs: CommonService,
public DS :DashboredService,
public authService: AuthenticationService,
// private events: Events,
// private sanitizer: DomSanitizer,
) {
// this.events.subscribe("img-change", displayImg => {
// console.log("app compont: "+displayImg);
// this.user_image = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+displayImg);
// });
}
colorScheme = {
domain: ['#22C6B3', '#094875','#3CB9D5','#1FA269','#0D155E']
};
ngOnInit() {
this.getProfile();
this.performanceData = this.cs.sharedService.getSharedData(
PerformanceAppraisalResponse.PERFORMANCE_DATA,
true
);
console.log(this.performanceData.length);
//i % 2 == 0
this.length=this.performanceData.length;
for(let i=0;i<this.performanceData.length;i++){
this.performanceData[i].color =this.colorScheme.domain[i];
console.log( i+" : "+this.performanceData[i].name)
}
console.log( this.performanceData[0].color)
}
getProfile() {
console.log("getProfile");
this.authService
.loadAuthenticatedUser()
.subscribe((user: AuthenticatedUser) => {
if (user) {
this.personalInfo = user;
this.user_image = user.EMPLOYEE_IMAGE
? "data:image/png;base64," + user.EMPLOYEE_IMAGE
: "../assets/imgs/profile.png";
}});
}
}

@ -32,7 +32,7 @@ width: 234px;
background: transparent;
border-radius: 50% !important;
color:#fff;
background-color: rgba(0,0,0,0.1);
// background-color: rgba(0,0,0,0.1);
// box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
img{

@ -5,10 +5,17 @@ import { Routes, RouterModule } from '@angular/router';
import { HmgCommonModule } from '../hmg-common/hmg-common.module';
import { IonicModule } from '@ionic/angular';
import { NgxChartsModule } from '@swimlane/ngx-charts';
import { ProfilePage } from './profile.page';
import { HomeComponent } from './home/home.component';
import {EditProfileComponent} from './edit-profile/edit-profile.component';
import {ProfileImageComponent} from './profile-image/profile-image.component'
import {PerformanceEvaluationComponent} from './performance-evaluation/performance-evaluation.component'
import { from } from 'rxjs';
const routes: Routes = [
{
path: '',
@ -29,7 +36,31 @@ const routes: Routes = [
component: ProfileImageComponent
}
],
}
},
{
path: '',
component: ProfilePage,
children: [
{
path: 'editprofile',
component: EditProfileComponent
}
],
},
{
path: '',
component: ProfilePage,
children: [
{
path: 'performanceevaluation',
component: PerformanceEvaluationComponent
}
],
},
];
@NgModule({
@ -38,8 +69,10 @@ const routes: Routes = [
FormsModule,
IonicModule,
HmgCommonModule,
NgxChartsModule,
RouterModule.forChild(routes)
],
declarations: [ProfilePage , HomeComponent,ProfileImageComponent]
declarations: [ProfilePage , HomeComponent,ProfileImageComponent,EditProfileComponent,PerformanceEvaluationComponent]
})
export class ProfilePageModule {}

@ -33,6 +33,7 @@
"en": "Register",
"ar": "التسجيل"
},
"sign-out": {
"en": "Are you sure you want to Sign Out",
"ar": "هل أنت متأكد من إغلاق الحساب"
@ -921,6 +922,18 @@
"en": "My Profile",
"ar": "معلوماتي"
},
"edit-profile": {
"en": "Edit Profile",
"ar": "تعديل المعلومات"
},
"performance-evaluation": {
"en": "Performance Evaluation",
"ar": "تقييم الاداء"
},
"performance": {
"en": "Performance",
"ar": "الاداء"
},
"changepicture":{
"en":"Change Picture",
"ar":"تغيير الصوره"
@ -941,6 +954,10 @@
"en": "Location Name",
"ar": "اسم الموقع"
},
"address": {
"en": "Address",
"ar": "العنوان"
},
"payrol": {
"en": "Payroll",
"ar": "كشف الرواتب"
@ -2049,6 +2066,10 @@
"en": "payslip",
"ar":"كشف الراتب"
},
"monthly-payslip": {
"en": "Monthly Pay Slip",
"ar": "كشف الراتب الشهري"
},
"end-date":{
"en": "Peroid End Date",
"ar":" تاريخ بداية الفترة"
@ -2061,6 +2082,10 @@
"en": "Peroid Name",
"ar":"اسم الفترة "
},
"salary":{
"en": "Salary",
"ar":"الراتب"
},
"deductions-Amount":{
"en": "Total Deductions Amount",
"ar":"قيمة الخصومات "
@ -2113,6 +2138,18 @@
"en": "Deductions",
"ar":"الخصومات "
},
"deductions-key":{
"en": "DED",
"ar":" "
},
"earnings-key":{
"en": "NET",
"ar":" "
},
"particular":{
"en": "Particular",
"ar":"الخصائص"
},
"payment-information":{
"en": "Payment Information",
"ar":"معلةمات الدفع "

@ -9,8 +9,11 @@
@import '~@ionic/angular/css/text-alignment.css';
@import '~@ionic/angular/css/text-transformation.css';
@import '~@ionic/angular/css/flex-utils.css';
@import "../node_modules/primeng/resources/themes/nova-light/theme.css";
@import '../node_modules/primeng/resources/themes/nova-light/theme.css';
@import "../node_modules/primeng/resources/primeng.min.css";
@import "../node_modules/primeicons/primeicons.css";
@import "theme/styles.scss";
@import "theme/worklist.scss";

Loading…
Cancel
Save