merge master-newdesign

MOE_DEV_NEW_TEMPORARY_DESIGN
Mohamed Mekawy 6 years ago
commit 5ffde37c48

@ -109,7 +109,7 @@
<ion-item style="padding-left: 4%;" *ngFor="let employee of approversList"> <ion-item style="padding-left: 4%;" *ngFor="let employee of approversList">
<div class="timeline-item" slot="start"> <div class="timeline-item" slot="start">
<div class="timeline-thumb timeline-icon"> <div [class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
<img *ngIf="employee.EMPLOYEE_IMAGE" class="empImge" <img *ngIf="employee.EMPLOYEE_IMAGE" class="empImge"
[src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE"> [src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE">
<img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImge" <img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImge"

@ -21,6 +21,7 @@ import { SubmitAbsenceModalComponent } from '../submit-absence-modal/submit-abse
styleUrls: ["./absence-confirm.component.scss"] styleUrls: ["./absence-confirm.component.scss"]
}) })
export class AbsenceConfirmComponent implements OnInit { export class AbsenceConfirmComponent implements OnInit {
direction:string;
P_TransactionID: number; P_TransactionID: number;
approversList: ApproversList; approversList: ApproversList;
selEmp: string = ""; selEmp: string = "";
@ -51,7 +52,7 @@ export class AbsenceConfirmComponent implements OnInit {
public WorklistAttachService: WorklistAttachService public WorklistAttachService: WorklistAttachService
) { ) {
this.isSubmitBtnClicked = false; this.isSubmitBtnClicked = false;
this.direction = TranslatorService.getCurrentLanguageName()
// this.isResubmitAbs = this.navParams.get("isResubmit"); // this.isResubmitAbs = this.navParams.get("isResubmit");
if (this.isResubmitAbs) { if (this.isResubmitAbs) {
this.P_TransactionID = this.common.sharedService.getSharedData( this.P_TransactionID = this.common.sharedService.getSharedData(

@ -1,6 +1,6 @@
<ion-header > <ion-header >
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light">{{ts.trPK('absenceList','absenceList')}}</ion-title> <ion-title color="light">{{ts.trPK('home','leave-balance')}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons></nav-buttons> <nav-buttons></nav-buttons>
</ion-buttons> </ion-buttons>
@ -55,26 +55,20 @@
<div class="result-text-container"> <div class="result-text-container">
<h2>{{totalnumber}}</h2> <!-- <h2>{{totalnumber}}</h2> -->
<!-- <h2>{{accrualNet + accrualUsed + accrualYearly}}</h2> --> <!-- <h2>{{accrualNet + accrualUsed + accrualYearly}}</h2> -->
<span>{{ts.trPK('absenceList','totalNumber')}}</span> <!-- <span>{{ts.trPK('absenceList','totalNumber')}}</span> -->
</div> </div>
<p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart> <p-chart #chart [ngClass]=" direction == 'ltr' ? 'today-graph' : 'today-graph-ar'" type="doughnut" [data]="data" [options]="options"></p-chart>
</div> </div>
<div style="position: relative; <div [ngClass]=" direction == 'ltr' ? 'div-green' : 'div-green-ar'">
left: 82%;
bottom: 128px;
color: black;
background-color: #DDB017;
width: 13%;
height: 6px;">
<ion-col> <ion-col>
<ion-row> <ion-row>
<label class="green-label">{{ts.trPK('absenceList','accrualNet')}}</label> <label class="green-label">{{ts.trPK('absenceList','accrualNet')}}</label>
@ -84,13 +78,7 @@
</ion-row> </ion-row>
</ion-col> </ion-col>
</div> </div>
<div style="position: relative; <div [ngClass]=" direction == 'ltr' ? 'div-red' : 'div-red-ar'">
left: 59%;
bottom: 131px;
color: black;
background-color: #094875;
width: 13%;
height: 6px;">
<ion-col> <ion-col>
<ion-row> <ion-row>
<label class="blue-label">{{ts.trPK('absenceList','accrualUsed')}}</label> <label class="blue-label">{{ts.trPK('absenceList','accrualUsed')}}</label>
@ -101,13 +89,7 @@
</ion-row> </ion-row>
</ion-col> </ion-col>
</div> </div>
<div style="position: relative; <div [ngClass]=" direction == 'ltr' ? 'div-orng' : 'div-orng-ar'">
left: 82%;
bottom: 80px;
color: black;
background-color: #CB3232;
width: 13%;
height: 6px;">
<ion-col> <ion-col>
<ion-row> <ion-row>
<label class="blue-label">{{ts.trPK('absenceList','accrualYearly')}}</label> <label class="blue-label">{{ts.trPK('absenceList','accrualYearly')}}</label>

@ -15,7 +15,7 @@
right: 8%; right: 8%;
position: fixed; position: fixed;
color: white; color: white;
bottom: 20%; bottom: 5%;
border-radius: 50%; border-radius: 50%;
z-index: 999; z-index: 999;
-webkit-box-shadow: 2px -1px 13px 0px rgba(0,0,0,0.59); -webkit-box-shadow: 2px -1px 13px 0px rgba(0,0,0,0.59);
@ -137,6 +137,17 @@
// padding-top: 29px; // padding-top: 29px;
margin-left: -70px !important; margin-left: -70px !important;
} }
.today-graph-ar{
display: block !important;
height: 196px;
width: 385px;
padding-left: 51px;
/* margin-left: -70px !important; */
font-size: 14px;
margin-left: -48px;
margin-right: 63px;
margin-bottom: -30px;
}
.headerGrid{ .headerGrid{
background-color: white !important; background-color: white !important;
@ -215,4 +226,65 @@ margin-top: -13px;
left: 0; left: 0;
top: 0px; top: 0px;
z-index: 1; z-index: 1;
} }
.div-green{
position: relative;
left: 82%;
bottom: 128px;
color: black;
background-color: #1FA269;
width: 13%;
height: 6px;
}
.div-green-ar{
position: relative;
bottom: 59px;
color: black;
background-color: #1FA269;
width: 13%;
height: 6px;
right: 9px;
}
.div-red-ar{
position: relative;
bottom: 131px;
color: black;
background-color: #CB3232;
// background-color: #094875;
// background-color: #DDB017;
width: 13%;
height: 6px;
right: 78px;
}
.div-red{
position: relative;
left: 59%;
bottom: 131px;
color: black;
background-color: #CB3232;
// background-color: #094875;
width: 13%;
height: 6px;
}
.div-orng{
position: relative;
left: 82%;
bottom: 80px;
color: black;
// background-color: #CB3232;
background-color: #DDB017;
width: 13%;
height: 6px;
}
.div-orng-ar{
position: relative;
bottom: 139px;
color: black;
// background-color: #CB3232;
background-color: #DDB017;
width: 13%;
height: 6px;
right: 10px;
}

@ -39,6 +39,7 @@ export class HomeComponent implements OnInit {
ACCRUAL_USED_ENTITLEMENT: any; ACCRUAL_USED_ENTITLEMENT: any;
ACCRUAL_YEARLY_ENTITLEMENT: any; ACCRUAL_YEARLY_ENTITLEMENT: any;
totalnumber: any; totalnumber: any;
public direction: string;
public options = { public options = {
cutoutPercentage: 80, cutoutPercentage: 80,
@ -56,6 +57,7 @@ export class HomeComponent implements OnInit {
public accrualService: AccrualService, public accrualService: AccrualService,
public authService: AuthenticationService public authService: AuthenticationService
) { ) {
this.direction = TranslatorService.getCurrentDirection();
// this.userData =this.common.sharedService.getSharedData(AuthenticatedUser.SHARED_DATA,false); // this.userData =this.common.sharedService.getSharedData(AuthenticatedUser.SHARED_DATA,false);
} }
@ -107,10 +109,10 @@ export class HomeComponent implements OnInit {
this.data = { this.data = {
// labels: ['earingTotal', 'deductionTotal'], // labels: ['earingTotal', 'deductionTotal'],
datasets: [ datasets: [
{ data: [this.accrualNet,this.accrualUsed,this.accrualYearly], { data: [this.accrualNet,this.accrualYearly,this.accrualUsed],
backgroundColor: [ backgroundColor: [
'#DDB017', '#1FA269',
'#094875', '#DDB017',
'#CB3232',], '#CB3232',],
borderWidth: 2 borderWidth: 2
} }
@ -262,11 +264,11 @@ createAbsence() {
this.data = { this.data = {
// labels: ['earingTotal', 'deductionTotal'], // labels: ['earingTotal', 'deductionTotal'],
datasets: [ datasets: [
{ data: [this.accrualNet,this.accrualUsed,this.accrualYearly], { data: [this.accrualNet,this.accrualYearly,this.accrualUsed],
backgroundColor: [ backgroundColor: [
'#DDB017', '#1FA269',
'#094875', '#DDB017',
'#CB3232',], '#CB3232',],
borderWidth: 2 borderWidth: 2
} }
] ]

@ -10,21 +10,21 @@
</ion-col> --> </ion-col> -->
<h2><div class="Header">Confirmation</div></h2> <h2><div class="Header">{{'eit,confirmation' | translate}}</div></h2>
<div> <div>
<div *ngIf="submitAbsAttachmentList.length==0" class="labelcheck" lines="none" style="text-align: center;"> <div *ngIf="submitAbsAttachmentList.length==0" class="labelcheck" lines="none" style="text-align: center;">
No Attachment {{'eit,no-attachment' | translate}}
</div> </div>
<div *ngIf="absComments==''" class="labelcheck" style="text-align: center;margin-bottom: 5px;padding-bottom: 16px;"> <div *ngIf="absComments==''" class="labelcheck" style="text-align: center;margin-bottom: 5px;padding-bottom: 16px;">
No Note {{'eit,no-note' | translate}}
</div> </div>
</div> </div>
<ion-footer style="border-top: 2px solid grey !important;"> <ion-footer style="border-top: 2px solid grey !important;">
<ion-row class="rowBtn"> <ion-row class="rowBtn">
<ion-label class="labelRadio">Are you sure you want to submit</ion-label> <ion-label class="labelRadio">{{'eit,submit' | translate}}</ion-label>
<ion-button class="submitOkButton" (click)="OkBtnModal()"> {{ts.trPK('general','ok')}} <ion-button class="submitOkButton" (click)="OkBtnModal()"> {{ts.trPK('general','ok')}}
</ion-button> </ion-button>
</ion-row> </ion-row>

@ -12,14 +12,23 @@ export class AccrualService {
public con: ConnectorService, public con: ConnectorService,
public authService: AuthenticationService public authService: AuthenticationService
) {} ) {}
public getAccrualBalances(balance: any, onError?: any, errorLabel?: string) { public getAccrualBalances(balance: any, onError?: any, errorLabel?: string, isPostNoLoad = false) {
const request = balance; const request = balance;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post( if (isPostNoLoad) {
AccrualService.GET_ACCRUAL_BALANCE, return this.con.postNoLoad(
request, AccrualService.GET_ACCRUAL_BALANCE,
onError, request,
errorLabel onError,
); errorLabel
);
} else {
return this.con.post(
AccrualService.GET_ACCRUAL_BALANCE,
request,
onError,
errorLabel
);
}
} }
} }

@ -12,15 +12,19 @@
</div> </div>
<div style="border-bottom: rgb(190, 186, 186) solid 1px;" > <div *ngIf='direction==="ltr"' style="border-bottom: rgb(190, 186, 186) solid 1px;" >
<img class="mohemmLogo" src="../assets/imgs/menu_mohemm_logo.png" ></div> <img class="mohemmLogo" src="../assets/imgs/menu_mohemm_logo.png" ></div>
<hr> <hr>
<div *ngIf='direction ==="rtl"' style="border-bottom: rgb(190, 186, 186) solid 1px;" >
<img class="mohemmLogo-ar" src="../assets/imgs/menu_mohemm_logo.png" ></div>
<hr>
</div> </div>
<div class="centerDiv homeBox" (click)="openPersonalInfo()"> <div class="centerDiv homeBox" (click)="openPersonalInfo()">
<div class="profileDiv"> <div [ngClass]="direction==='ltr'? 'profileDiv':'profileDiv-ar'">
<!-- <ion-img class="profileImg" src="{{user_image}}"></ion-img> --> <!-- <ion-img class="profileImg" src="{{user_image}}"></ion-img> -->
<img class="profileImg" [src]="user_image"> <img class="profileImg" [src]="user_image">
<p class="TxtPlace">{{User_name_Emp}}</p> <p class="TxtPlace">{{User_name_Emp}}</p>
@ -62,7 +66,7 @@
</div> --> </div> -->
<div style="border-bottom: rgb(190, 187, 187) solid 1px;" > <div style="border-bottom: rgb(190, 187, 187) solid 1px;" >
<button class="logout" ion-button (click)="logout();" > {{ts.trPK('home','logout')}}</button> <button [ngClass]="direction ==='ltr'? 'logout':'logout-ar'" ion-button (click)="logout();" > {{ts.trPK('home','logout')}}</button>
</div> </div>

@ -17,6 +17,16 @@ header
margin-top: -24px !important; margin-top: -24px !important;
margin-bottom: 11px; margin-bottom: 11px;
} }
.mohemmLogo-ar{
max-width: 46% !important;
border: 0 !important;
margin-right: 70px !important;
margin-top: -24px !important;
margin-bottom: 11px;
}
.closeIcon{ .closeIcon{
height: 10px !important; height: 10px !important;
@ -84,6 +94,22 @@ padding: 6px 24px;
} }
.logout-ar{
background-color: #22C6B3;
border: none;
color: white;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 12px;
margin-right: 95px !important;
margin-top: 15px !important;
margin-bottom: 20px !important;
border-radius: 30px;
height: 26px;
padding: 6px 24px;
}
.menuImg{ .menuImg{
width: 105px !important; width: 105px !important;
height: 105px !important; height: 105px !important;

@ -0,0 +1,25 @@
import { Request } from 'src/app/hmg-common/services/models/request';
export class attendanceSwipeScannerRequest extends Request{
public static SHARED_DATA = 'attendanceSwipeScanner-request';
public P_USER_NAME:string;
public P_PASSWORD: string;
public UserName: string;
public CompanyID:number;
public BranchID: number;
public UID:string;
public Latitude:number;
public Longitude:number;
public QRValue: string;
public MemberID:number;
public EmployeeID: number;
public IPAdress: string;
public UserID: string;
}

@ -0,0 +1,20 @@
import { Injectable } from "@angular/core";
import { Observable } from "rxjs";
import { ConnectorService } from "src/app/hmg-common/services/connector/connector.service";
import { AuthenticationService } from "src/app/hmg-common/services/authentication/authentication.service";
import { attendanceSwipeScannerRequest } from '../models/attendanceSwipe.Request';
@Injectable({
providedIn: "root"
})
export class AttendanceService {
public AttendanceSwipeURL : string ='Services/SWP.svc/REST/AuthenticateAndSwipeUser';
constructor(
public con: ConnectorService,
public authService: AuthenticationService
) {}
public attendanceSwipeScanner(attendanceSwipeScanner: attendanceSwipeScannerRequest, onError?: any, errorLabel?: string): Observable<any> {
const request = attendanceSwipeScanner;
this.authService.authenticateRequest(request);
return this.con.post(this.AttendanceSwipeURL,request,onError,errorLabel);
}
}

@ -1,7 +1,7 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button> <nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title color="light" > {{'changePassword,changePassword' | translate}}</ion-title> <ion-title color="light" > {{'changePassword,changePassword' | translate}}</ion-title>
</ion-toolbar> </ion-toolbar>

@ -1,7 +1,7 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" ></ion-back-button> <nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title color="light" > {{'login,forgot-password' | translate}}</ion-title> <ion-title color="light" > {{'login,forgot-password' | translate}}</ion-title>
</ion-toolbar> </ion-toolbar>

@ -1,7 +1,7 @@
<ion-header *ngIf="!accessFromOutSide"> <ion-header *ngIf="!accessFromOutSide">
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" ></ion-back-button> <nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title color="light" > {{'login,verify-login' | translate}}</ion-title> <ion-title color="light" > {{'login,verify-login' | translate}}</ion-title>
</ion-toolbar> </ion-toolbar>

@ -1,7 +1,7 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" ></ion-back-button> <nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title color="light" > {{'login,forgot-password' | translate}}</ion-title> <ion-title color="light" > {{'login,forgot-password' | translate}}</ion-title>
</ion-toolbar> </ion-toolbar>

@ -62,10 +62,10 @@
<a (click)="signUp()">{{ts.trPK('login','signup')}}</a> <a (click)="signUp()">{{ts.trPK('login','signup')}}</a>
</div> </div>
<div class="gridDiv" aria-disabled="true"> <div class="gridDiv" aria-disabled="true">
<!-- <button disabled class="gridBtn" ion-button (click)="changeLanguage()" [ngClass]="{'active':this.currentLang ==1}">English</button> <button class="gridBtn" ion-button (click)="changeLanguage()" [ngClass]="{'active':this.currentLang ==1}">English</button>
<button disabled class="gridBtn arTxt" ion-button (click)="changeLanguage()" [ngClass]="{'active':this.currentLang ==2}">عربي</button> --> <button class="gridBtn arTxt" ion-button (click)="changeLanguage()" [ngClass]="{'active':this.currentLang ==2}">عربي</button>
<button disabled class="gridBtn" ion-button (click)="changeLanguage()" style="background: #dcdcdc !important;color: #ccc6c6 !important;margin: 1px;width: 49%">English</button> <!-- <button class="gridBtn" ion-button (click)="changeLanguage()" style="background: #dcdcdc !important;color: #ccc6c6 !important;margin: 1px;width: 49%">English</button>
<button disabled class="gridBtn arTxt" ion-button (click)="changeLanguage()" style="background: #dcdcdc !important;color: #ccc6c6 !important;margin: 1px;width: 49%">عربي</button> <button class="gridBtn arTxt" ion-button (click)="changeLanguage()" style="background: #dcdcdc !important;color: #ccc6c6 !important;margin: 1px;width: 49%">عربي</button> -->
</div> </div>

@ -1,7 +1,7 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" ></ion-back-button> <nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title color="light" > {{'verificationcode,verificationcode' | translate}}</ion-title> <ion-title color="light" > {{'verificationcode,verificationcode' | translate}}</ion-title>
</ion-toolbar> </ion-toolbar>

@ -23,6 +23,7 @@ ion-label {
padding-left: 10px; padding-left: 10px;
} }
.header-toolbar-new{ .header-toolbar-new{
--background: #22c6b3; --background: #22c6b3;
} }

@ -104,7 +104,7 @@
<ion-item style="padding-left: 4%;" *ngFor="let employee of approversList"> <ion-item style="padding-left: 4%;" *ngFor="let employee of approversList">
<div class="timeline-item" slot="start"> <div class="timeline-item" slot="start">
<div class="timeline-thumb timeline-icon"> <div [class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
<img *ngIf="employee.EMPLOYEE_IMAGE" class="empImge" <img *ngIf="employee.EMPLOYEE_IMAGE" class="empImge"
[src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE"> [src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE">
<img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImge" <img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImge"

@ -60,9 +60,11 @@ export class ConfirmAddEitComponent implements OnInit {
TransactionID: any; TransactionID: any;
indexLastObj: any = 0; indexLastObj: any = 0;
filterAllowedType: any = ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']; filterAllowedType: any = ['application/pdf', 'image/jpeg', 'image/png', 'text/plain', 'image/jpg', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
direction: string;
constructor(public modalController: ModalController, public cs: CommonService, private ts: TranslatorService, private eitService: EitService) { constructor(public modalController: ModalController, public cs: CommonService, private ts: TranslatorService, private eitService: EitService) {
this.direction = TranslatorService.getCurrentLanguageName()
this.isSubmitBtnClicked = false; this.isSubmitBtnClicked = false;
this.eitRequest = new EitRequest(); this.eitRequest = new EitRequest();
} }

@ -1,12 +1,13 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light">{{headerTitle}}</ion-title>
<nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons> <nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons>
<ion-title style="color: white;">{{headerTitle}}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content class="colorBG"> <ion-content class="colorBG">
<div class=""> <div class="contentEit">
<!-- class="colorBG" --> <!-- class="colorBG" -->
<div class="content" [hidden]="functionName!='HMG_TKT_NEW_EIT_SS'"> <div class="content" [hidden]="functionName!='HMG_TKT_NEW_EIT_SS'">
@ -26,7 +27,7 @@
<div class="light-dote"></div> <div class="light-dote"></div>
<!-- </ion-col> <!-- </ion-col>
<ion-col> --> <ion-col> -->
<label class="light-label">{{ts.trPK('absenceList','adult')}}</label> <label [ngClass]="direction == 'en' ? 'light-label':'light-label-ar' ">{{ts.trPK('absenceList','adult')}}</label>
</ion-col> </ion-col>
<ion-col class="col" size="4"> <ion-col class="col" size="4">
<div class="blue-dote"></div> <div class="blue-dote"></div>
@ -38,7 +39,7 @@
<div class="green-dote"></div> <div class="green-dote"></div>
<!-- </ion-col> <!-- </ion-col>
<ion-col> --> <ion-col> -->
<label class="green-label">{{ts.trPK('absenceList','infants')}} </label> <label [ngClass]="direction == 'en'? 'green-label':'green-label-ar'">{{ts.trPK('absenceList','infants')}} </label>
</ion-col> </ion-col>
</ion-row> </ion-row>
@ -54,7 +55,7 @@
<div class="gridService"> <div class="gridService">
<ion-row> <ion-row>
<ion-col class="columns"> <ion-col class="columns">
<div class="adult-dote"></div> <div [class]="direction =='en'? 'adult-dote':'adult-dote-ar'"></div>
<label>{{ts.trPK('absenceList','adult')}}</label> <label>{{ts.trPK('absenceList','adult')}}</label>
<br> <br>
<br> <br>
@ -62,7 +63,7 @@
<br> <label class="services">{{ts.trPK('absenceList','tickets')}}</label> <br> <label class="services">{{ts.trPK('absenceList','tickets')}}</label>
</ion-col> </ion-col>
<ion-col class="columns"> <ion-col class="columns">
<div class="child-dote"></div> <div [ngClass]="direction == 'en'? 'child-dote' :'child-dote-ar'"></div>
<label>{{ts.trPK('absenceList','child')}} </label> <label>{{ts.trPK('absenceList','child')}} </label>
<br> <br>
<br> <br>
@ -71,7 +72,7 @@
<br> <label class="services">{{ts.trPK('absenceList','tickets')}}</label> <br> <label class="services">{{ts.trPK('absenceList','tickets')}}</label>
</ion-col> </ion-col>
<ion-col class="columns"> <ion-col class="columns">
<div class="infants-dote"></div> <div [ngClass]="direction == 'en'? 'infants-dote': 'infants-dote-ar'"></div>
<label>{{ts.trPK('absenceList','infants')}} </label> <label>{{ts.trPK('absenceList','infants')}} </label>
<br> <br>
<br> <br>
@ -131,7 +132,7 @@
<div> <div>
<ion-row> <ion-row>
<ion-col class="colBold"> <ion-col class="colBold">
<label for="">{{"confirmAddEit.status" | translate}}</label> <label for="">{{'confirmAddEit , status' | translate}}</label>
</ion-col> </ion-col>
<ion-col> <ion-col>
<label for="">{{eitAddedObj.status}}</label> <label for="">{{eitAddedObj.status}}</label>
@ -220,11 +221,11 @@
</div> </div>
</div> </div>
<ion-icon class="addClass" name="add" (click)="addEITRrq()"></ion-icon>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)"> <ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content> <ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll> </ion-infinite-scroll>
<ion-icon class="addClass" name="add" (click)="addEITRrq()"></ion-icon>
</div> </div>
</ion-content> </ion-content>

@ -63,17 +63,28 @@ h4 {
.addClass{ .addClass{
background-color: #094875; background-color: #094875;
width: 80px; width: 80px;
height: 80px; height: 80px;
right: 8%; right: 8%;
position: fixed; position: fixed;
color: white; color: white;
bottom: 20%; bottom: 5%;
border-radius: 50%; border-radius: 50%;
z-index: 999; z-index: 999;
-webkit-box-shadow: 2px -1px 13px 0px rgba(0,0,0,0.59); -webkit-box-shadow: 2px -1px 13px 0px rgba(0,0,0,0.59);
-moz-box-shadow: 2px -1px 13px 0px rgba(0,0,0,0.59); -moz-box-shadow: 2px -1px 13px 0px rgba(0,0,0,0.59);
box-shadow: 2px -1px 13px 0px rgba(0,0,0,0.59); box-shadow: 2px -1px 13px 0px rgba(0,0,0,0.59);
}
.contentEit:before {
position: absolute;
content: "";
// background: #22c6b3;
height: 140px;
width: 100%;
left: 0;
top: 0px;
z-index: 1;
} }
.hrClass{ .hrClass{
@ -160,6 +171,11 @@ z-index: 1;
margin-left: 7px !important; margin-left: 7px !important;
margin-right: 42px; margin-right: 42px;
} }
.green-label-ar{
font-size: 15px !important;
margin-left: 7px !important;
margin-right: 15px;
}
.blue-label{ .blue-label{
font-size: 15px !important; font-size: 15px !important;
margin-left: 7px !important; margin-left: 7px !important;
@ -170,6 +186,11 @@ z-index: 1;
margin-left: 7px !important; margin-left: 7px !important;
margin-right: -26px; margin-right: -26px;
} }
.light-label-ar{
font-size: 15px !important;
margin-right: 7px !important;
margin-left: -26px;
}
.light-dote{ .light-dote{
background-color: #3CB9D5; background-color: #3CB9D5;
@ -241,6 +262,16 @@ z-index: 1;
margin-left: -17px; margin-left: -17px;
margin-right: 5px; margin-right: 5px;
} }
.adult-dote-ar{
background-color: #3CB9D5;
width: 15px;
height: 15px;
border-radius: 50% !important;
display: inline-block;
margin-right: 0px;
margin-left: 5px;
}
.child-dote{ .child-dote{
background-color: #22C6B3; background-color: #22C6B3;
@ -251,6 +282,15 @@ z-index: 1;
margin-left: -17px; margin-left: -17px;
margin-right: 5px; margin-right: 5px;
} }
.child-dote-ar{
background-color: #22C6B3;
width: 15px;
height: 15px;
border-radius: 50% !important;
display: inline-block;
margin-right: 1px;
margin-left: 5px;
}
.infants-dote{ .infants-dote{
background-color: #1FA269; background-color: #1FA269;
width: 15px; width: 15px;
@ -261,4 +301,14 @@ z-index: 1;
margin-right: 5px; margin-right: 5px;
// margin-bottom: 6px; // margin-bottom: 6px;
} }
.infants-dote-ar{
background-color: #1FA269;
width: 15px;
height: 15px;
border-radius: 50% !important;
display: inline-block;
margin-right: 1px;
margin-left: 5px;
}

@ -52,10 +52,12 @@ export class EitListComponent implements OnInit {
gaugeType = "full"; gaugeType = "full";
accrualBalancesList: any; accrualBalancesList: any;
common: any; common: any;
direction: string;
// gaugeValue = 11.200; // gaugeValue = 11.200;
// gaugeLabel = ""; // gaugeLabel = "";
constructor(private cs: CommonService, private EITService: EitService, private ts: TranslatorService, private modalCtrl: ModalController) { constructor(private cs: CommonService, private EITService: EitService, private ts: TranslatorService, private modalCtrl: ModalController) {
this.direction = TranslatorService.getCurrentLanguageName()
this.selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false); this.selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false);
this.selEmp = this.cs.sharedService.getSharedData(MenuResponse.SHARED_SEL_EMP, false); this.selEmp = this.cs.sharedService.getSharedData(MenuResponse.SHARED_SEL_EMP, false);
this.respID = this.cs.sharedService.getSharedData(MenuResponse.SHARED_SEL_RESP_ID, false); this.respID = this.cs.sharedService.getSharedData(MenuResponse.SHARED_SEL_RESP_ID, false);

@ -2,6 +2,7 @@
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light">{{headerTitle}}</ion-title> <ion-title color="light">{{headerTitle}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<!-- <ion-buttons [ngClass]="direction == 'rtl'? 'icon-right' : 'icon-left' "> -->
<nav-buttons backLink=""></nav-buttons> <nav-buttons backLink=""></nav-buttons>
</ion-buttons> </ion-buttons>
</ion-toolbar> </ion-toolbar>
@ -24,7 +25,7 @@
<ion-label> <ion-label>
<b text-wrap>{{menuItem.PROMPT}}</b> <b text-wrap>{{menuItem.PROMPT}}</b>
<ion-icon style="float: right;font-size: 25px;color: grey;" name="arrow-forward"></ion-icon> <ion-icon [ngClass]='direction == "en"? "span-arrow-en":"span-arrow-ar"' name="arrow-forward"></ion-icon>
</ion-label> </ion-label>
@ -36,7 +37,7 @@
<!-- <ion-row> <!-- <ion-row>
<ion-col size="10" class="menu-name"><span ion-text color="color2">&nbsp;{{subPage.PROMPT}} </span> --> <ion-col size="10" class="menu-name"><span ion-text color="color2">&nbsp;{{subPage.PROMPT}} </span> -->
<ion-label><span ion-text color="color2">&nbsp;{{subPage.PROMPT}} </span> <ion-label><span ion-text color="color2">&nbsp;{{subPage.PROMPT}} </span>
<ion-icon style="float: right;font-size: 25px;color: grey;" name="arrow-forward"></ion-icon> <ion-icon [ngClass]='direction == "en"? "span-arrow-en":"span-arrow-ar"' name="arrow-forward"></ion-icon>
</ion-label> </ion-label>
<!-- </ion-col> <!-- </ion-col>
</ion-row> --> </ion-row> -->

@ -66,3 +66,17 @@ ion-icon::before {
// border-bottom: 1px solid #dedede; // border-bottom: 1px solid #dedede;
// } // }
.span-arrow-en{
float: right;
font-size: 25px;
color: grey;
transform: rotate(0deg);
}
.span-arrow-ar{
float: left;
font-size: 25px;
color: grey;
transform: rotate(180deg);
}

@ -16,9 +16,11 @@ export class HomeComponent implements OnInit {
selMenu: MenuResponse = new MenuResponse(); selMenu: MenuResponse = new MenuResponse();
// Selected Side Menu // Selected Side Menu
selectedMenu: any; selectedMenu: any;
direction: string;
pageType :string; pageType :string;
constructor(private cs: CommonService, private ts: TranslatorService) { constructor(private cs: CommonService, private ts: TranslatorService) {
this.direction = TranslatorService.getCurrentLanguageName()
this.menu = this.cs.sharedService.getSharedData('menuEntries', false); this.menu = this.cs.sharedService.getSharedData('menuEntries', false);
this.pageType = this.cs.sharedService.getSharedData('homemenuentries', false); this.pageType = this.cs.sharedService.getSharedData('homemenuentries', false);
this.selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false); this.selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false);

@ -27,18 +27,22 @@ export class EitService {
public static deleteAttach = 'Services/ERP.svc/REST/DELETE_ATTACHMENT'; public static deleteAttach = 'Services/ERP.svc/REST/DELETE_ATTACHMENT';
public static getApproversList = 'Services/ERP.svc/REST/GET_APPROVERS_LIST'; public static getApproversList = 'Services/ERP.svc/REST/GET_APPROVERS_LIST';
public static addAttachment = 'Services/ERP.svc/REST/ADD_ATTACHMENT'; public static addAttachment = 'Services/ERP.svc/REST/ADD_ATTACHMENT';
public static cancelHRTransaction = 'Services/ERP.svc/REST/CANCEL_HR_TRANSACTION' public static cancelHRTransaction = 'Services/ERP.svc/REST/CANCEL_HR_TRANSACTION';
public static getAttach = 'Services/ERP.svc/REST/GET_ATTACHMENTS'; public static getAttach = 'Services/ERP.svc/REST/GET_ATTACHMENTS';
constructor(public authService: AuthenticationService, public con: ConnectorService) { } constructor(public authService: AuthenticationService, public con: ConnectorService) { }
public getMenuEntries(menuEntries: any, onError?: any, errorLabel?: string): Observable<any> { public getMenuEntries(menuEntries: any, onError?: any, errorLabel?: string, isPostNoLoad = false): Observable<any> {
const request = menuEntries; const request = menuEntries;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
console.log(request); if (isPostNoLoad) {
return this.con.post(EitService.getMenuEntries, request, onError, errorLabel); return this.con.postNoLoad(EitService.getMenuEntries, request, onError, errorLabel);
} else {
return this.con.post(EitService.getMenuEntries, request, onError, errorLabel);
}
} }
// tslint:disable-next-line: no-shadowed-variable
public getEITTransactionsList(EITTransactionsRequest: EITTransactionsRequest, onError?: any, errorLabel?: string): Observable<any> { public getEITTransactionsList(EITTransactionsRequest: EITTransactionsRequest, onError?: any, errorLabel?: string): Observable<any> {
const request = EITTransactionsRequest; const request = EITTransactionsRequest;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
@ -78,9 +82,9 @@ export class EitService {
public getApproversList(abProcess: any, onError?: any, errorLabel?: string): Observable<ApproversList> { public getApproversList(abProcess: any, onError?: any, errorLabel?: string): Observable<ApproversList> {
const request = abProcess; const request = abProcess;
request.P_AME_TRANSACTION_TYPE = "SSHRMS"; request.P_AME_TRANSACTION_TYPE = 'SSHRMS';
request.P_PAGE_NUM = 1; request.P_PAGE_NUM = 1;
request.P_PAGE_LIMIT = 1000;//check later on request.P_PAGE_LIMIT = 1000; // check later on
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post(EitService.getApproversList, request, onError, errorLabel); return this.con.post(EitService.getApproversList, request, onError, errorLabel);
} }

@ -10,21 +10,21 @@
</ion-col> --> </ion-col> -->
<h2><div class="Header">Confirmation</div></h2> <h2><div class="Header">{{'eit,confirmation' | translate}}</div></h2>
<div> <div>
<div *ngIf="submitAttachmentList.length==0" class="labelcheck" lines="none" style="text-align: center;"> <div *ngIf="submitAttachmentList.length==0" class="labelcheck" lines="none" style="text-align: center;">
No Attachment {{'eit,no-attachment' | translate}}
</div> </div>
<div *ngIf="eitComments==''" class="labelcheck" style="text-align: center;margin-bottom: 5px;padding-bottom: 16px;"> <div *ngIf="eitComments==''" class="labelcheck" style="text-align: center;margin-bottom: 5px;padding-bottom: 16px;">
No Note {{'eit,no-note' | translate}}
</div> </div>
</div> </div>
<ion-footer style="border-top: 1px solid grey !important;"> <ion-footer style="border-top: 1px solid grey !important;">
<ion-row class="rowBtn"> <ion-row class="rowBtn">
<ion-label class="labelRadio">Are you sure you want to submit</ion-label> <ion-label class="labelRadio">{{'eit,submit' | translate}}</ion-label>
<ion-button class="submitOkButton" (click)="OkBtnModal()"> {{ts.trPK('general','ok')}} <ion-button class="submitOkButton" (click)="OkBtnModal()"> {{ts.trPK('general','ok')}}
</ion-button> </ion-button>
</ion-row> </ion-row>

@ -1,31 +1,31 @@
import { Injectable } from "@angular/core"; import { Injectable } from '@angular/core';
import { import {
HttpClient, HttpClient,
HttpHeaders, HttpHeaders,
HttpErrorResponse HttpErrorResponse
} from "@angular/common/http"; } from '@angular/common/http';
import { Observable, throwError, TimeoutError } from "rxjs"; import { Observable, throwError, TimeoutError } from 'rxjs';
import { catchError, retry, tap, timeout } from "rxjs/operators"; import { catchError, retry, tap, timeout } from 'rxjs/operators';
import { CommonService } from "../common/common.service"; import { CommonService } from '../common/common.service';
//import { Response } from "../models/response"; // import { Response } from "../models/response";
import { Response } from 'src/app/hmg-common/services/models/response'; import { Response } from 'src/app/hmg-common/services/models/response';
@Injectable({ @Injectable({
providedIn: "root" providedIn: 'root'
}) })
export class ConnectorService { export class ConnectorService {
/* /*
connection configuration settings connection configuration settings
*/ */
static httpOptions = { static httpOptions = {
headers: new HttpHeaders({ "Content-Type": "application/json" }) headers: new HttpHeaders({ 'Content-Type': 'application/json' })
}; };
public static retryTimes = 0; public static retryTimes = 0;
public static timeOut = 30 * 1000; public static timeOut = 30 * 1000;
// public static host = 'http://10.50.100.113:6060/'; // development service // public static host = 'http://10.50.100.113:6060/'; // development service
public static host = "https://uat.hmgwebservices.com/"; public static host = 'https://uat.hmgwebservices.com/';
//public static host = 'https://hmgwebservices.com/'; // public static host = 'https://hmgwebservices.com/';
// public static host = 'http://10.50.100.198:6060/'; // public static host = 'http://10.50.100.198:6060/';
// public static host = 'http://10.50.100.113:6060/'; // development service // public static host = 'http://10.50.100.113:6060/'; // development service
/* public static host = 'http://10.50.100.198:6060/'; /* public static host = 'http://10.50.100.198:6060/';
@ -64,17 +64,33 @@ public static host = "https://uat.hmgwebservices.com/";
); );
} }
public postNoLoad(service: string, data: any, onError: any): Observable<any> { // public postNoLoad(service: string, data: any, onError: any): Observable<any> {
// return this.httpClient
// .post<any>(
// ConnectorService.host + service,
// data,
// ConnectorService.httpOptions
// )
// .pipe(
// retry(ConnectorService.retryTimes),
// tap(() => {}, () => {})
// );
// }
public postNoLoad(service: string, data: any, onError: any, errorLabel?: string): Observable<any> {
return this.httpClient return this.httpClient
.post<any>( .post<any>(
ConnectorService.host + service, ConnectorService.host + service,
data, data,
ConnectorService.httpOptions ConnectorService.httpOptions)
) .pipe(
.pipe( timeout(ConnectorService.timeOut),
retry(ConnectorService.retryTimes), retry(ConnectorService.retryTimes),
tap(() => {}, () => {}) tap((res) => {
); this.handleResponse(res, onError, errorLabel, true);
}, (error) => {
this.handleError(error, onError, errorLabel, true);
}));
} }
// absolute url connection // absolute url connection
@ -133,7 +149,10 @@ public static host = "https://uat.hmgwebservices.com/";
} }
*/ */
public handleError(error: any, onError: any, errorLabel: string) { public handleError(error: any, onError: any, errorLabel: string, isPostNoLoad = false) {
// if (!isPostNoLoad) {
// this.cs.stopLoading();
// }
this.cs.stopLoading(); this.cs.stopLoading();
if (error instanceof TimeoutError) { if (error instanceof TimeoutError) {
this.cs.showConnectionTimeout(onError, errorLabel); this.cs.showConnectionTimeout(onError, errorLabel);
@ -142,20 +161,19 @@ public static host = "https://uat.hmgwebservices.com/";
} }
} }
public handleResponse(result: Response, onError: any, errorLabel: string) { public handleResponse(result: Response, onError: any, errorLabel: string, isPostNoLoad = false) {
this.cs.stopLoading(); if (!isPostNoLoad) {
this.cs.stopLoading();
}
if (!this.cs.validResponse(result)) { if (!this.cs.validResponse(result)) {
// not authorized if (result.IsAuthenticated === false) {
console.log(result.MessageStatus);
console.log("erroe");
if (result.IsAuthenticated == false) {
this.cs.presentAcceptDialog(result.ErrorEndUserMessage, () => { this.cs.presentAcceptDialog(result.ErrorEndUserMessage, () => {
this.cs.sharedService.clearAll(); this.cs.sharedService.clearAll();
this.cs.openLogin(); this.cs.openLogin();
}); });
return false; return false;
} else if (result.ErrorType === 2 || result.ErrorType === 4) { } else if (result.ErrorType === 2 || result.ErrorType === 4) {
//console.log("error expired"); // console.log("error expired");
} else { } else {
this.cs.showErrorMessageDialog( this.cs.showErrorMessageDialog(
onError, onError,

@ -34,7 +34,7 @@ export class DashboredService {
public authService: AuthenticationService, public authService: AuthenticationService,
) { } ) { }
public getOrganizationSalaries(onError ?: any ,oerrorLable ?: any): Observable<OrganizationSalariesResponse>{ public getOrganizationSalaries(onError ?: any , oerrorLable ?: any): Observable<OrganizationSalariesResponse>{
const request = new Request(); const request = new Request();
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post( return this.con.post(
@ -42,21 +42,20 @@ export class DashboredService {
request, request,
onError, onError,
oerrorLable oerrorLable
);} );
}
public getOpenMissingSwipes(onError ?: any, oerrorLable ?: any): Observable<OpenMissingSwipesResponse> { public getOpenMissingSwipes(onError ?: any, oerrorLable ?: any, isPostNoLoad = false): Observable<OpenMissingSwipesResponse> {
const request = new Request(); const request = new Request();
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post( if (isPostNoLoad) {
DashboredService.openMissingSwipesUrl, return this.con.postNoLoad(DashboredService.openMissingSwipesUrl, request, onError, oerrorLable);
request, } else {
onError, return this.con.post( DashboredService.openMissingSwipesUrl, request, onError, oerrorLable);
oerrorLable }
);
} }
public getPerformanceAppraisal(onError ?: any , oerrorLable ?: any): Observable<PerformanceAppraisalResponse>{
public getPerformanceAppraisal(onError ?: any ,oerrorLable ?: any): Observable<PerformanceAppraisalResponse>{
const request = new Request(); const request = new Request();
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post( return this.con.post(
@ -66,30 +65,47 @@ export class DashboredService {
oerrorLable oerrorLable
); );
} }
public getAttendanceTracking(selectedEmployee: any, onError ?: any , oerrorLable ?: any): Observable<AttendanceTrackingResponse>{ // tslint:disable-next-line: max-line-length
public getAttendanceTracking(selectedEmployee: any, onError ?: any , oerrorLable ?: any, isPostNoLoad = false): Observable<AttendanceTrackingResponse>{
const request = selectedEmployee; const request = selectedEmployee;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post( if (isPostNoLoad) {
DashboredService.attendancetrackingUrl, return this.con.postNoLoad(
request, DashboredService.attendancetrackingUrl,
onError, request,
oerrorLable onError,
); oerrorLable
);
} else {
return this.con.post(
DashboredService.attendancetrackingUrl,
request,
onError,
oerrorLable
);
}
} }
public getOpenPeriodDates( onError?: any, errorLabel?: string): Observable<OpenPeriodDatesResponse> { public getOpenPeriodDates( onError?: any, errorLabel?: string): Observable<OpenPeriodDatesResponse> {
const request = new Request(); const request = new Request();
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post(DashboredService.getOpenPeriodDates, request, onError, errorLabel); return this.con.post(DashboredService.getOpenPeriodDates, request, onError, errorLabel);
} }
public getOpenNotifications( onError?: any, errorLabel?: string): Observable<GetOpenNotificationsResponse> { public getOpenNotifications( onError?: any, errorLabel?: string, isPostNoLoad = false): Observable<GetOpenNotificationsResponse> {
console.log(isPostNoLoad);
const request = new Request(); const request = new Request();
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post(DashboredService.getOpenNotifications, request, onError, errorLabel); if (isPostNoLoad) {
return this.con.postNoLoad(DashboredService.getOpenNotifications, request, onError, errorLabel);
} else {
return this.con.post(DashboredService.getOpenNotifications, request, onError, errorLabel);
}
} }
public getSubordinatesLeaves( req: GetSubordinatesLeavesRequest,onError?: any, errorLabel?: string): Observable<GetSubordinatesLeavesResponse> { // tslint:disable-next-line: max-line-length
public getSubordinatesLeaves( req: GetSubordinatesLeavesRequest, onError?: any, errorLabel?: string): Observable<GetSubordinatesLeavesResponse> {
this.authService.authenticateRequest(req); this.authService.authenticateRequest(req);
return this.con.post(DashboredService.getSubordinatesLeaves, req, onError, errorLabel); return this.con.post(DashboredService.getSubordinatesLeaves, req, onError, errorLabel);
} }
// tslint:disable-next-line: max-line-length
public getSubordinatesAttStatus( req: GetSubordinatesAttdStatusRequest, onError?: any, errorLabel?: string): Observable<GetSubordinatesAttdStatusResponse> { public getSubordinatesAttStatus( req: GetSubordinatesAttdStatusRequest, onError?: any, errorLabel?: string): Observable<GetSubordinatesAttdStatusResponse> {
this.authService.authenticateRequest(req); this.authService.authenticateRequest(req);
return this.con.post(DashboredService.getSubordinatesAttStatus, req, onError, errorLabel); return this.con.post(DashboredService.getSubordinatesAttStatus, req, onError, errorLabel);

@ -1,51 +1,55 @@
import {Injectable} from '@angular/core'; import {Injectable} from '@angular/core';
import {Http, Response, Headers, } from "@angular/http"; import {Http, Response, Headers, } from '@angular/http';
import {AuthenticationService} from "../authentication/authentication.service"; import {AuthenticationService} from '../authentication/authentication.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import {MenuEntries} from './models/menu-entries.request'; import {MenuEntries} from './models/menu-entries.request';
import { Request } from 'src/app/hmg-common/services/models/request'; import { Request } from 'src/app/hmg-common/services/models/request';
//import {Request} from '../models/request'; // import {Request} from '../models/request';
import {MenuResponse} from './models/menu-response' import {MenuResponse} from './models/menu-response';
import { ConnectorService } from '../connector/connector.service'; import { ConnectorService } from '../connector/connector.service';
@Injectable() @Injectable()
export class MenuService { export class MenuService {
public static getMenu ='Services/ERP.svc/REST/GET_MENU'; public static getMenu = 'Services/ERP.svc/REST/GET_MENU';
public static getMenuEntries = 'Services/ERP.svc/REST/GET_MENU_ENTRIES'; public static getMenuEntries = 'Services/ERP.svc/REST/GET_MENU_ENTRIES';
public static getMyTeam = 'Services/ERP.svc/REST/GET_EMPLOYEE_SUBORDINATES'; public static getMyTeam = 'Services/ERP.svc/REST/GET_EMPLOYEE_SUBORDINATES';
public static getNotCount='Services/ERP.svc/REST/GET_OPEN_NOTIFICATIONS_NUM'; public static getNotCount = 'Services/ERP.svc/REST/GET_OPEN_NOTIFICATIONS_NUM';
public static disableSession="Services/ERP.svc/REST/DisableSession"; public static disableSession = 'Services/ERP.svc/REST/DisableSession';
public static detectLanguage='Services/ERP.svc/REST/Get_LanguageAvailable'; public static detectLanguage = 'Services/ERP.svc/REST/Get_LanguageAvailable';
constructor( constructor(
public authService: AuthenticationService, public authService: AuthenticationService,
public con:ConnectorService public con: ConnectorService
) { } ) { }
public getMenu(onError?: any, errorLabel?: string): Observable<MenuResponse> { public getMenu(onError?: any, errorLabel?: string, isPostNoLoad = false): Observable<MenuResponse> {
const request = new Request(); const request = new Request();
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post(MenuService.getMenu, request, onError, errorLabel); if (isPostNoLoad) {
return this.con.postNoLoad(MenuService.getMenu, request, onError, errorLabel);
} else {
return this.con.post(MenuService.getMenu, request, onError, errorLabel);
}
} }
public getMenuEntires(menuEntries:any, onError?: any, errorLabel?: string): Observable<MenuResponse> { public getMenuEntires(menuEntries: any, onError?: any, errorLabel?: string): Observable<MenuResponse> {
const request = menuEntries; const request = menuEntries;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post(MenuService.getMenuEntries, request, onError, errorLabel); return this.con.post(MenuService.getMenuEntries, request, onError, errorLabel);
} }
public getNotificationCount(req:any, onError?: any, errorLabel?: string): Observable<any> { public getNotificationCount(req: any, onError?: any, errorLabel?: string): Observable<any> {
const request = req; const request = req;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post(MenuService.getNotCount, request, onError, errorLabel); return this.con.post(MenuService.getNotCount, request, onError, errorLabel);
} }
public disableSession(req:any, onError?: any, errorLabel?: string): Observable<any> { public disableSession(req: any, onError?: any, errorLabel?: string): Observable<any> {
const request = req; const request = req;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post(MenuService.disableSession, request, onError, errorLabel); return this.con.post(MenuService.disableSession, request, onError, errorLabel);
} }
public getAppLanguages(req:any, onError?: any, errorLabel?: string): Observable<any> { public getAppLanguages(req: any, onError?: any, errorLabel?: string): Observable<any> {
const request = req; const request = req;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.con.post(MenuService.detectLanguage, request, onError, errorLabel); return this.con.post(MenuService.detectLanguage, request, onError, errorLabel);
} }
} }

@ -183,11 +183,11 @@ export class PushService {
request.DeviceType = this.getDeviceType(); request.DeviceType = this.getDeviceType();
const user = this.authService.getAuthenticatedUser(); const user = this.authService.getAuthenticatedUser();
// request.PatientMobileNumber = user.MobileNo; // request.PatientMobileNumber = user.MobileNo;
//request.NationalID = user.IdentificationNo; // request.NationalID = user.IdentificationNo;
request.Gender = user.Gender; request.Gender = user.Gender;
request.PatientID = user.PatientID; request.PatientID = user.PatientID;
// request.PatientOutSA = user.PatientOutSA ? 1 : 0; // request.PatientOutSA = user.PatientOutSA ? 1 : 0;
//request.LoginType = user.biometricEnabled ? 2 : 1; // 1 sms , 2 touch id // request.LoginType = user.biometricEnabled ? 2 : 1; // 1 sms , 2 touch id
request.MACAddress = '00:00:00:00:00:00'; request.MACAddress = '00:00:00:00:00:00';
return this.con.postNoLoad(PushService.loggedInUserURL, request return this.con.postNoLoad(PushService.loggedInUserURL, request
, () => { }).subscribe((result: Response) => { , () => { }).subscribe((result: Response) => {

@ -3,3 +3,5 @@
<span *ngIf="text != 'All'" class="number-span" [ngStyle]="active === true ? {'color': '#ffffff'} : {}">{{value}}</span> <span *ngIf="text != 'All'" class="number-span" [ngStyle]="active === true ? {'color': '#ffffff'} : {}">{{value}}</span>
<span class="text-span" [ngStyle]="active === true ? {'color': '#ffffff'} : {}">{{text}}</span> <span class="text-span" [ngStyle]="active === true ? {'color': '#ffffff'} : {}">{{text}}</span>
</div> </div>

@ -8,9 +8,9 @@
<div class="result-graph"> <div class="result-graph">
<div class="result-text-container"> <div class="result-text-container">
<h2 class="percentage">{{percentage}}</h2> <h2 class="percentage">{{percentage}}</h2>
<span>Completed <br><br><br><br></span> <span>{{ts.trPK('attendance','completed')}}<br><br><br><br></span>
</div> </div>
<p-chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart> <p-chart [ngClass]="direction == 'ltr'? 'today-graph':'today-graph-ar'" type="doughnut" [data]="data" [options]="options"></p-chart>
</div> </div>
</div> </div>
</ion-col> </ion-col>
@ -35,7 +35,9 @@
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row class="gridrow"> <ion-row class="gridrow">
<ion-col [size]="6" style="border-bottom: 1px solid #ccc; border-right: 1px solid #ccc;">
<ion-col [size]="6" [ngClass]="direction == 'ltr'? 'col':'col-ar'">
<ion-row class="amountlabel"> <p>{{shiftTime}}</p> </ion-row> <ion-row class="amountlabel"> <p>{{shiftTime}}</p> </ion-row>
<ion-row class="rowlabel"> <ion-row class="rowlabel">
<p >{{ts.trPK('attendance-tracking','shift-time')}}</p> <p >{{ts.trPK('attendance-tracking','shift-time')}}</p>
@ -50,7 +52,7 @@
</ion-col> </ion-col>
<ion-col [size]="6" style="border-bottom: 1px solid #ccc; border-right: 1px solid #ccc;"> <ion-col [size]="6" [ngClass]="direction == 'ltr'? 'col':'col-ar'">
<ion-row class="amountlabel"><p >{{startDate}}</p> </ion-row> <ion-row class="amountlabel"><p >{{startDate}}</p> </ion-row>
<ion-row class="rowlabel"> <ion-row class="rowlabel">
<p >{{ts.trPK('attendance-tracking','check-in')}}</p> <p >{{ts.trPK('attendance-tracking','check-in')}}</p>
@ -65,13 +67,12 @@
</ion-row> </ion-row>
</ion-col> </ion-col>
<ion-col [size]="6" style="border-bottom: 1px solid #ccc; border-right: 1px solid #ccc;"> <ion-col [size]="6" [ngClass]="direction == 'ltr'? 'col':'col-ar'">
<ion-row class="amountlabel"> <p >{{lateIn}}</p> </ion-row> <ion-row class="amountlabel"> <p >{{lateIn}}</p> </ion-row>
<ion-row class="rowlabel"> <ion-row class="rowlabel">
<p >{{ts.trPK('attendance-tracking','late-in')}}</p> <p >{{ts.trPK('attendance-tracking','late-in')}}</p>
</ion-row> </ion-row>
</ion-col> </ion-col>
<ion-col [size]="6" style="border-bottom: 1px solid #ccc;"> <ion-col [size]="6" style="border-bottom: 1px solid #ccc;">
<ion-row class="amountlabel"> <p >{{excess}}</p> </ion-row> <ion-row class="amountlabel"> <p >{{excess}}</p> </ion-row>
<ion-row class="rowlabel"> <ion-row class="rowlabel">
@ -79,7 +80,7 @@
</ion-row> </ion-row>
</ion-col> </ion-col>
<ion-col [size]="6" style="border-right: 1px solid #ccc;"> <ion-col [size]="6" [ngClass]="direction == 'ltr'? 'col':'col-ar'">
<ion-row class="amountlabel"> <p >{{shortage}}</p> </ion-row> <ion-row class="amountlabel"> <p >{{shortage}}</p> </ion-row>
<ion-row class="rowlabel"> <ion-row class="rowlabel">
<p>{{ts.trPK('attendance-tracking','shortage')}}</p> <p>{{ts.trPK('attendance-tracking','shortage')}}</p>

@ -23,12 +23,57 @@
} }
} }
.result-text-container-ar {
padding: 0;
margin: 0;
position: absolute;
left: 38%;
top: 67%;
display: block;
text-align: center;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
h2 {
font-size: 25px;
// font-family: WorkSans-Bold;
font-weight: bold;
margin: 0 auto;
line-height: 36px;
}
span {
width: 125px;
display: block;
margin: 0 auto;
font-size: 12px;
font-family: workSans-Regular;
color: rgb(163, 163, 163) !important;
}
}
.today-graph{ .today-graph{
display: block; display: block;
height: 127px; height: 127px;
width: 270px; width: 270px;
margin-left: -60px; margin-left: -60px;
} }
.today-graph-ar{
display: block;
height: 127px;
width: 270px;
/* margin-left: -61px; */
margin-right: -18px;
}
.amountlabel{ .amountlabel{
color: black !important; color: black !important;
font-weight: bold !important; font-weight: bold !important;
@ -54,10 +99,13 @@ height: 360px !important;
} }
.liftcol{ .liftcol{
// padding-top: 1px !important;
// padding-bottom: 1px !important;
border-right: 1px solid rgb(163, 163, 163) !important; border-right: 1px solid rgb(163, 163, 163) !important;
} }
.liftcol-ar{
border-left: 1px solid rgb(163, 163, 163) !important;
}
.rightcol{ .rightcol{
@ -74,6 +122,12 @@ height: 360px !important;
border-radius: 10px; border-radius: 10px;
margin-bottom:10px; margin-bottom:10px;
} }
.div-ar{
border: 1px solid #a3a3a3 !important;
border-radius: 9px;
width: 264%;
margin-right: -302px;
}
.p0{ .p0{
margin-bottom: -13px !important; margin-bottom: -13px !important;
color: black !important; color: black !important;
@ -114,8 +168,23 @@ height: 360px !important;
display: block; display: block;
width: 100%; width: 100%;
} }
.p4{
margin-bottom: 56px !important; .p2-ar{ font-weight: bold !important;
font-size: 17px !important;
margin-bottom: 43px !important;
margin-top: 0px !important;
color: black !important;
font-weight: bold !important;
margin-right: 33px;
}
.p3-ar{ /* margin-bottom: -72px !important; */
color: black !important;
font-weight: bold !important;
font-size: 19px;
margin-top: -43px;
margin-right: 27px;
}
.p4{ margin-bottom: 56px !important;
margin-top: -26px !important; margin-top: -26px !important;
color: black !important; color: black !important;
} }
@ -133,4 +202,19 @@ height: 360px !important;
padding-bottom: 21px; padding-bottom: 21px;
border-bottom-left-radius: 5px; border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px; border-bottom-right-radius: 5px;
} }
.col{
border-bottom: 1px solid rgb(204, 204, 204);
border-right: 1px solid rgb(204, 204, 204);
flex: 0 0 calc(calc(6 / var(--ion-grid-columns, 12)) * 100%);
width: calc(calc(6 / var(--ion-grid-columns, 12)) * 100%);
max-width: calc(calc(6 / var(--ion-grid-columns, 12)) * 100%);
}
.col-ar{
border-bottom: 1px solid rgb(204, 204, 204);
border-left: 1px solid rgb(204, 204, 204);
flex: 0 0 calc(calc(6 / var(--ion-grid-columns, 12)) * 100%);
width: calc(calc(6 / var(--ion-grid-columns, 12)) * 100%);
max-width: calc(calc(6 / var(--ion-grid-columns, 12)) * 100%);
}

@ -36,7 +36,7 @@ export class DateInfoModalComponent implements OnInit {
nameMonth: any; nameMonth: any;
nameDay: any; nameDay: any;
public weekDaysEn = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; public weekDaysEn = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
public direction: string;
public options = { public options = {
cutoutPercentage: 85, cutoutPercentage: 85,
tooltips: { enabled: false }, tooltips: { enabled: false },
@ -52,7 +52,9 @@ export class DateInfoModalComponent implements OnInit {
public modalController: ModalController, public modalController: ModalController,
public navParams: NavParams, public navParams: NavParams,
public ts: TranslatorService public ts: TranslatorService
) { } ) {
this.direction = TranslatorService.getCurrentDirection();
}
ngOnInit() { ngOnInit() {
console.log(this.TODAYDATE); console.log(this.TODAYDATE);

@ -1,7 +1,11 @@
<div feedback class="custom-button"> <div feedback class="custom-button">
<div class="iconBox"> <div class="iconBox">
<img *ngIf="title != 'My Team' && title != 'Vacation Rule'" [src]="'data:image/png;base64,'+icon" class="icon"> <img *ngIf="title != 'My Team' && title != 'Vacation Rule' && title != 'فريقي' && title != 'قواعد الإجازات' " [src]="'data:image/png;base64,'+icon" class="icon">
<img *ngIf="title == 'My Team' || title == 'Vacation Rule'" [src]="icon" class="icon"> <!-- <img *ngIf="title == 'My Team' || title == 'Vacation Rule'" [src]="icon" class="icon"> -->
<img *ngIf="title == 'My Team' || title == 'فريقي' " [src]="myTeamIcon" class="icon">
<img *ngIf="title == 'Vacation Rule' || title == 'قواعد الإجازات'" [src]="vacationRuleIcon" class="icon">
</div> </div>
<div class="titleBox"> <div class="titleBox">
<p class="pClass">{{title}}</p> <p class="pClass">{{title}}</p>

@ -17,6 +17,9 @@ export class ServicesButtonComponent implements OnInit {
@Input() disabled = false; @Input() disabled = false;
public direction: string; public direction: string;
public style: any; public style: any;
public myTeamIcon="assets/icon/new-design/leave_balance.png";
public vacationRuleIcon="assets/icon/new-design/vacation_rules_icon.png"
constructor( constructor(
public ts: TranslatorService public ts: TranslatorService
) {} ) {}

@ -1,9 +1,11 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<nav-buttons [enableMenu]="true" [enableBack]="false" [navigate]="false"></nav-buttons> <nav-buttons [enableMenu]="true" [enableBack]="false" [navigate]="false"></nav-buttons>
<ion-title>DASHBOARD</ion-title> <ion-title>{{'home,dashboard' | translate}}</ion-title>
<div class="profile-image-container" (click)="openProfilePage()"> <div slot = "start" class="profile-image-container" (click)="openProfilePage()">
<img [src]="userImage"/> </div>
<div slot="end">
<img class="profile-image" [src]="userImage"/>
</div> </div>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
@ -40,10 +42,10 @@
<ion-row class="attendance-module" *ngIf="i == 1"> <ion-row class="attendance-module" *ngIf="i == 1">
<ion-col [size]="8"> <ion-col [size]="8">
<h3>Monthly Attendance</h3> <h3>{{'home,monthly-attendance' | translate}}</h3>
<span>View your Monthly Time Sheet</span> <span>{{'home,monthly-time-sheet-view' | translate}}</span>
<ion-button (click)="openTimeCard()"> <ion-button (click)="openTimeCard()">
View Detail {{'home,view-detail' | translate}}
</ion-button> </ion-button>
</ion-col> </ion-col>
<ion-col [size]="4"> <ion-col [size]="4">
@ -65,18 +67,19 @@
<ion-slide *ngIf="i == 2"> <ion-slide *ngIf="i == 2">
<app-services-button <app-services-button
(click)="Vacation_Rule()" (click)="Vacation_Rule()"
title="Vacation Rule" [title]="vacationRuleTitle"
icon="assets/icon/new-design/vacation_rules_icon.png"> >
</app-services-button> </app-services-button>
</ion-slide> </ion-slide>
<!-- icon="vacationRuleIcon"
icon="myTeamIcon" -->
</ion-slides> </ion-slides>
</ion-row> </ion-row>
</ion-grid> </ion-grid>
<div class="fixed-shift-timer" *ngIf="isCheckedIn" (click)="openattentracking()"> <div class="fixed-shift-timer" *ngIf="isCheckedIn" (click)="openattentracking()">
<span class="subTitle">Time Left Today</span> <span class="subTitle"> {{'home,time-left' | translate}} </span>
<circle-progress <circle-progress
[backgroundColor]= "'#094875'" [backgroundColor]= "'#094875'"
[percent]="percent" [percent]="percent"

@ -9,22 +9,30 @@ ion-row {
.profile-image-container{ .profile-image-container{
position: relative; position: relative;
z-index: 999; z-index: 999;
img { // img {
width: 32px; // width: 32px;
float: right; // float: right;
margin-top: -42px; // // margin-top: -42px;
border-radius: 20px; // border-radius: 20px;
height: 32px; // height: 32px;
margin-right: 4px; // // margin-right: 4px;
} // }
}
.profile-image{
width: 32px;
float: right;
// margin-top: -42px;
border-radius: 20px;
height: 32px;
// margin-right: 4px;
} }
ion-title{ ion-title{
color: white; color: white;
position: absolute; position: absolute;
top: 0; top: 0;
text-align: center; text-align: center;
left: 15%; left: 4%;
right: 15%; right: 4%;
font-size: 0.42cm; font-size: 0.42cm;
font-weight: bold; font-weight: bold;
height: 100%; height: 100%;

@ -8,7 +8,6 @@ import { MenuService } from 'src/app/hmg-common/services/menu/menuservice.servic
import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response'; import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response';
import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { Geolocation } from '@ionic-native/geolocation/ngx'; import { Geolocation } from '@ionic-native/geolocation/ngx';
import { ZBar, ZBarOptions } from '@ionic-native/zbar/ngx';
import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx'; import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
import { Device } from '@ionic-native/device/ngx'; import { Device } from '@ionic-native/device/ngx';
import { attendanceSwipeScannerRequest } from './models/attendanceSwipe.Request'; import { attendanceSwipeScannerRequest } from './models/attendanceSwipe.Request';
@ -33,8 +32,6 @@ import { GetOpenNotificationsResponse } from '../hmg-common/services/dashbored/m
import { GetSubordinatesAttdStatusResponse } from '../hmg-common/services/dashbored/models/GetSubordinatesAttdStatusResponse'; import { GetSubordinatesAttdStatusResponse } from '../hmg-common/services/dashbored/models/GetSubordinatesAttdStatusResponse';
import { GetSubordinatesLeavesResponse } from '../hmg-common/services/dashbored/models/GetSubordinatesLeavesResponse'; import { GetSubordinatesLeavesResponse } from '../hmg-common/services/dashbored/models/GetSubordinatesLeavesResponse';
import { AccrualService } from '../accrual-balances/services/accrual.service'; import { AccrualService } from '../accrual-balances/services/accrual.service';
import { GetDayAndHoursDetailsRequest } from '../time-card/service/models/get-day-hours-type-details.request';
import * as moment from 'moment';
import { TimeCardService } from '../time-card/service/time-card.service'; import { TimeCardService } from '../time-card/service/time-card.service';
import { WorklistMainService } from '../notification/service/work-list.main.service'; import { WorklistMainService } from '../notification/service/work-list.main.service';
@ -57,12 +54,12 @@ export class HomePage implements OnInit {
public fileUploder: FileUploaderComponent; public fileUploder: FileUploaderComponent;
location: boolean; location: boolean;
camera: boolean; camera: boolean;
ticketRequestObject : any; ticketRequestObject: any;
leaveRequestObject : any; leaveRequestObject: any;
missingSwipeRequestObject : any; missingSwipeRequestObject: any;
public statsButtons = [ public statsButtons = [
{ {
title: 'Work List', title: this.ts.trPK('home','worklist'),
statsValue: 0, statsValue: 0,
icon: 'assets/icon/new-design/work_list.png', icon: 'assets/icon/new-design/work_list.png',
link: '1' link: '1'
@ -74,44 +71,25 @@ export class HomePage implements OnInit {
// link: '' // link: ''
// }, // },
{ {
title: 'Missing Swipes', title: this.ts.trPK('home','missing-swipes'),
statsValue: 0, statsValue: 0,
icon: 'assets/icon/new-design/missing_swipe.png', icon: 'assets/icon/new-design/missing_swipe.png',
link: '2' link: '2'
}, },
{ {
title: 'Leave Balance', title: this.ts.trPK('home','leave-balance'),
statsValue: 0, statsValue: 0,
icon: 'assets/icon/new-design/leave_balance.png', icon: 'assets/icon/new-design/leave_balance.png',
link: '3' link: '3'
}, },
{ {
title: 'Ticket Balance', title: this.ts.trPK('absenceList','tickets-balance'),
statsValue: 0, statsValue: 0,
icon: 'assets/icon/new-design/ticket_balance.png', icon: 'assets/icon/new-design/ticket_balance.png',
link: '4' link: '4'
} }
]; ];
// public employeeServicesButtons = [
// {
// title: 'Leave Management',
// icon: 'assets/icon/new-design/leave_management.png'
// },
// {
// title: 'Advance Payments',
// icon: 'assets/icon/new-design/advance_payments.png'
// },
// {
// title: 'Medical Insurance',
// icon: 'assets/icon/new-design/medical_insurance.png'
// },
// {
// title: 'Pay Slip',
// icon: 'assets/icon/new-design/pay_slip.png'
// }
// ];
public slideOptsOne = { public slideOptsOne = {
slidesPerView: 3.5, slidesPerView: 3.5,
spaceBetween: 10 spaceBetween: 10
@ -136,6 +114,12 @@ export class HomePage implements OnInit {
public menuType: any; public menuType: any;
accrualBalancesList: any; accrualBalancesList: any;
public countAllNotification = 0; public countAllNotification = 0;
myTeamTitle: string;
vacationRuleTitle: string;
public myTeamIcon: string;
public vacationRuleIcon: string;
direction: string;
public isPostNoLoad = true;
constructor( constructor(
public ts: TranslatorService, public ts: TranslatorService,
@ -145,35 +129,40 @@ export class HomePage implements OnInit {
public common: CommonService, public common: CommonService,
public events: Events, public events: Events,
private device: Device, private device: Device,
private zbar: ZBar,
private geolocation: Geolocation, private geolocation: Geolocation,
private attendanceService: AttendanceService, private attendanceService: AttendanceService,
private eitService: EitService, private eitService: EitService,
private barcodeScanner: BarcodeScanner, private barcodeScanner: BarcodeScanner,
public actionSheetCtrl: ActionSheetController, public actionSheetCtrl: ActionSheetController,
private cameraController: Camera,
public sharedData: SharedDataService, public sharedData: SharedDataService,
private sanitizer: DomSanitizer, private sanitizer: DomSanitizer,
private file: File, private file: File,
private permissions: DevicePermissionsService, private permissions: DevicePermissionsService,
public DS: DashboredService, public DS: DashboredService,
public accrualService: AccrualService, public accrualService: AccrualService,
//////////////////////////////////////// TIME AND DATE////////////////////////////
public timeCardService: TimeCardService, public timeCardService: TimeCardService,
///////////////////// END/////////////////////////////////////////////////////////
public workListService: WorklistMainService public workListService: WorklistMainService
) { ) {
this.events.subscribe('img-change', displayImg => { this.events.subscribe('img-change', displayImg => {
this.userImage = this.sanitizer.bypassSecurityTrustUrl( this.userImage = this.sanitizer.bypassSecurityTrustUrl(
'data:Image/*;base64,' + displayImg 'data:Image/*;base64,' + displayImg
); );
console.log('html saved img: ' + this.userImage);
}); });
} }
ngOnInit() { ngOnInit() {
this.menu.enable(true) this.direction = TranslatorService.getCurrentLanguageName();
// this.getUserDetails();
// this.getCount();
// this.events.subscribe('getNotCount', badge => {
// this.notBadge = badge;
// });
this.myTeamTitle= this.ts.trPK('myTeam','myTeam-header');
this.vacationRuleTitle = this.ts.trPK('vacation-rule','vacationRule');
// this.myTeamIcon="assets/icon/new-design/leave_balance.png";
// this.vacationRuleIcon="assets/icon/new-design/vacation_rules_icon.png"
this.common.startLoading();
this.menu.enable(true);
// this.getUserDetails(); // this.getUserDetails();
// this.getCount(); // this.getCount();
this.events.subscribe('getNotCount', badge => { this.events.subscribe('getNotCount', badge => {
@ -182,6 +171,7 @@ export class HomePage implements OnInit {
} }
ionViewWillEnter() { ionViewWillEnter() {
this.common.startLoading();
this.remainingTime = 0; this.remainingTime = 0;
this.displayTime = '00:00:00'; this.displayTime = '00:00:00';
this.runTimer = false; this.runTimer = false;
@ -320,9 +310,9 @@ export class HomePage implements OnInit {
this.userData, this.userData,
AuthenticatedUser.SHARED_DATA AuthenticatedUser.SHARED_DATA
); );
if(this.common.getUpdateImage().status){ if (this.common.getUpdateImage().status) {
this.userImage =this.sanitizer.bypassSecurityTrustUrl("data:image/png;base64,"+this.common.getUpdateImage().img); this.userImage = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + this.common.getUpdateImage().img);
}else{ } else {
this.userImage = user.EMPLOYEE_IMAGE this.userImage = user.EMPLOYEE_IMAGE
? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE
: this.userImage; : this.userImage;
@ -341,6 +331,7 @@ export class HomePage implements OnInit {
this.showOpenMissingSwipes(); this.showOpenMissingSwipes();
this.showAttendanceTracking(); this.showAttendanceTracking();
this.getAccrualBalance(); this.getAccrualBalance();
// this.common.stopLoading();
} }
public Vacation_Rule() { public Vacation_Rule() {
@ -348,7 +339,7 @@ export class HomePage implements OnInit {
} }
private getMenu() { private getMenu() {
this.menuService.getMenu().subscribe((result: MenuResponse) => { this.menuService.getMenu('', '', this.isPostNoLoad).subscribe((result: MenuResponse) => {
this.handleMenuResult(result); this.handleMenuResult(result);
}); });
} }
@ -356,7 +347,6 @@ export class HomePage implements OnInit {
private handleMenuResult(result) { private handleMenuResult(result) {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
if (this.common.hasData(result.List_Menu)) { if (this.common.hasData(result.List_Menu)) {
console.log('list menu');
this.menuList = result.List_Menu; this.menuList = result.List_Menu;
this.getMenuDetails(); this.getMenuDetails();
} }
@ -376,15 +366,15 @@ export class HomePage implements OnInit {
const selMenu: MenuResponse = new MenuResponse(); const selMenu: MenuResponse = new MenuResponse();
selMenu.List_Menu = item; selMenu.List_Menu = item;
selMenu.userid = this.userData.EMPLOYEE_NUMBER; selMenu.userid = this.userData.EMPLOYEE_NUMBER;
console.log("menu: " + selMenu.List_Menu);
this.common.sharedService.setSharedData(selMenu, MenuResponse.SHARED_DATA); this.common.sharedService.setSharedData(selMenu, MenuResponse.SHARED_DATA);
this.getMenuEntries(item); this.getMenuEntries(item);
for(let i=0;i<this.menuList.length;i++){ // tslint:disable-next-line: prefer-for-of
if(this.menuList[i].MENU_TYPE=="M"){ for (let i = 0; i < this.menuList.length; i++) {
this.events.publish("myTeamFlag","true"); if (this.menuList[i].MENU_TYPE === 'M') {
this.events.publish('myTeamFlag', 'true');
} }
} }
// if (item.MENU_TYPE === 'M') { // if (item.MENU_TYPE === 'M') {
// this.common.openMyTeamPage(); // this.common.openMyTeamPage();
// // this.navCtrl.push("MySubordinatePage"); // // this.navCtrl.push("MySubordinatePage");
@ -426,7 +416,6 @@ export class HomePage implements OnInit {
request.P_MENU_TYPE = item.MENU_TYPE; request.P_MENU_TYPE = item.MENU_TYPE;
request.NationalityCode = nationality; request.NationalityCode = nationality;
// set emp and resp id // set emp and resp id
console.log("set data");
this.common.sharedService.setSharedData( this.common.sharedService.setSharedData(
selEmpNo, selEmpNo,
MenuResponse.SHARED_SEL_EMP MenuResponse.SHARED_SEL_EMP
@ -437,7 +426,7 @@ export class HomePage implements OnInit {
); );
this.eitService this.eitService
.getMenuEntries(request) .getMenuEntries(request, '', '', this.isPostNoLoad)
.subscribe((result: MenuResponse) => { .subscribe((result: MenuResponse) => {
this.handleMenuEntiresResult(result); this.handleMenuEntiresResult(result);
}); });
@ -446,9 +435,8 @@ export class HomePage implements OnInit {
sortMenuEntires(list) { sortMenuEntires(list) {
const tree = this.common.list_to_tree(list); const tree = this.common.list_to_tree(list);
this.menuEntries = tree; this.menuEntries = tree;
console.log(this.menuEntries); this.common.sharedService.setSharedData(tree, 'menuEntries');
this.common.sharedService.setSharedData(tree, "menuEntries"); this.common.sharedService.setSharedData('home', 'homemenuentries');
this.common.sharedService.setSharedData("home", "homemenuentries");
// this.common.navigateForward("/eit/homepage"); // this.common.navigateForward("/eit/homepage");
// this.common.openEITPage(); // this.common.openEITPage();
} }
@ -456,24 +444,26 @@ export class HomePage implements OnInit {
private handleMenuEntiresResult(result) { private handleMenuEntiresResult(result) {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
if (this.common.hasData(result.GetMenuEntriesList)) { if (this.common.hasData(result.GetMenuEntriesList)) {
for(let i=0;i<result.GetMenuEntriesList.length;i++){ // tslint:disable-next-line: prefer-for-of
if(result.GetMenuEntriesList[i].FUNCTION_NAME=="HMG_TKT_NEW_EIT_SS"){ for (let i = 0; i < result.GetMenuEntriesList.length; i++) {
this.ticketRequestObject=result.GetMenuEntriesList[i]; // tslint:disable-next-line: triple-equals
}else if(result.GetMenuEntriesList[i].FUNCTION_NAME=="HR_LOA_SS"){ if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HMG_TKT_NEW_EIT_SS') {
this.leaveRequestObject=result.GetMenuEntriesList[i]; this.ticketRequestObject = result.GetMenuEntriesList[i];
} else if(result.GetMenuEntriesList[i].FUNCTION_NAME=="HMG_OTL_MISSING_SWIPE_EIT_SS"){ // tslint:disable-next-line: triple-equals
this.missingSwipeRequestObject=result.GetMenuEntriesList[i]; } else if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HR_LOA_SS') {
this.leaveRequestObject = result.GetMenuEntriesList[i];
// tslint:disable-next-line: triple-equals
} else if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HMG_OTL_MISSING_SWIPE_EIT_SS') {
this.missingSwipeRequestObject = result.GetMenuEntriesList[i];
}
} }
}
this.sortMenuEntires(result.GetMenuEntriesList); this.sortMenuEntires(result.GetMenuEntriesList);
} }
} }
} }
parentFn($event: string) { parentFn($event: string) {
console.log($event); // this will output 'hello from child' console.log($event);
} }
private Change_password() { private Change_password() {
@ -502,7 +492,7 @@ export class HomePage implements OnInit {
this.swipeAttendance(); this.swipeAttendance();
}) })
.catch(err => { .catch(err => {
console.log("Error", err); console.log('Error', err);
}); });
} }
@ -513,14 +503,13 @@ export class HomePage implements OnInit {
request.QRValue = this.scannedResult.text; request.QRValue = this.scannedResult.text;
request.UID = this.deviceID; request.UID = this.deviceID;
request.UserName = this.userData.EMPLOYEE_NUMBER; request.UserName = this.userData.EMPLOYEE_NUMBER;
console.log(JSON.stringify(request));
this.attendanceService this.attendanceService
.attendanceSwipeScanner(request, () => { .attendanceSwipeScanner(request, () => {
console.log("Error inside in swipe attendance"); console.log('Error inside in swipe attendance');
}) })
.subscribe((result: Response) => { .subscribe((result: Response) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
this.common.presentAlert(this.ts.trPK("home", "swipeAlertSuccess")); this.common.presentAlert(this.ts.trPK('home', 'swipeAlertSuccess'));
this.showAttendanceTracking(); this.showAttendanceTracking();
} }
// else { // else {
@ -533,8 +522,7 @@ export class HomePage implements OnInit {
this.common.openProfile(); this.common.openProfile();
} }
/*************************************Dashboards Services**********************************************************8 */ // Dashboard Services
showOrganizationSalaries() { showOrganizationSalaries() {
this.DS.getOrganizationSalaries().subscribe( this.DS.getOrganizationSalaries().subscribe(
(result: OrganizationSalariesResponse) => {} (result: OrganizationSalariesResponse) => {}
@ -542,10 +530,10 @@ export class HomePage implements OnInit {
} }
showOpenMissingSwipes() { showOpenMissingSwipes() {
this.DS.getOpenMissingSwipes().subscribe( this.DS.getOpenMissingSwipes('', '', this.isPostNoLoad).subscribe(
(result: OpenMissingSwipesResponse) => { (result: OpenMissingSwipesResponse) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
const key = "GetOpenMissingSwipesList"; const key = 'GetOpenMissingSwipesList';
this.statsButtons[1].statsValue = Math.floor(result[key].P_OPEN_MISSING_SWIPES); this.statsButtons[1].statsValue = Math.floor(result[key].P_OPEN_MISSING_SWIPES);
} }
} }
@ -567,7 +555,6 @@ export class HomePage implements OnInit {
} }
convertAndAssignTime(data) { convertAndAssignTime(data) {
console.log(data);
this.remainingTime = this.convertInSeconds(data.P_REMAINING_HOURS.split(':')); this.remainingTime = this.convertInSeconds(data.P_REMAINING_HOURS.split(':'));
this.scheduledTime = this.convertInSeconds(data.P_SCHEDULED_HOURS.split(':')); this.scheduledTime = this.convertInSeconds(data.P_SCHEDULED_HOURS.split(':'));
this.spentHours = this.convertInSeconds(data.P_SPENT_HOURS.split(':')); this.spentHours = this.convertInSeconds(data.P_SPENT_HOURS.split(':'));
@ -581,7 +568,7 @@ showAttendanceTracking() {
const request = { const request = {
P_SELECTED_EMPLOYEE_NUMBER: this.userData.EMPLOYEE_NUMBER P_SELECTED_EMPLOYEE_NUMBER: this.userData.EMPLOYEE_NUMBER
}; };
this.DS.getAttendanceTracking(request).subscribe((result: AttendanceTrackingResponse) => { this.DS.getAttendanceTracking(request, '', '', this.isPostNoLoad).subscribe((result: AttendanceTrackingResponse) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
const key = 'GetAttendanceTrackingList'; const key = 'GetAttendanceTrackingList';
this.convertAndAssignTime(result[key]); this.convertAndAssignTime(result[key]);
@ -598,10 +585,7 @@ openPeriodDateDashbored() {
} }
openNotificationsDashbored() { openNotificationsDashbored() {
// work list this.DS.getOpenNotifications('', '', this.isPostNoLoad).subscribe((result: GetOpenNotificationsResponse) => {
this.DS.getOpenNotifications(() => {
console.log("Error ");
}).subscribe((result: GetOpenNotificationsResponse) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
const key = 'P_OPEN_NTF_NUMBER'; const key = 'P_OPEN_NTF_NUMBER';
this.countAllNotification = result[key]; this.countAllNotification = result[key];
@ -615,18 +599,19 @@ openPeriodDateDashbored() {
} }
ITGCountAllNotification() { ITGCountAllNotification() {
this.workListService.getITGDetails().subscribe((result: any) => { this.workListService.getITGDetails('', '', this.isPostNoLoad).subscribe((result: any) => {
this.statsButtons[0].statsValue = this.statsButtons[0].statsValue =
Math.floor(this.countAllNotification + result.TotalCount); Math.floor(this.countAllNotification + result.TotalCount);
this.common.stopLoading();
}); });
} }
getSubordinatesLeaves() { getSubordinatesLeaves() {
const request: GetSubordinatesLeavesRequest = new GetSubordinatesLeavesRequest(); const request: GetSubordinatesLeavesRequest = new GetSubordinatesLeavesRequest();
request.P_DATE_FROM = "/Date(1578603600000+0300)/"; // test request.P_DATE_FROM = '/Date(1578603600000+0300)/'; // test
request.P_DATE_TO = "/Date(1576011600000+0300)/"; // test request.P_DATE_TO = '/Date(1576011600000+0300)/'; // test
this.DS.getSubordinatesLeaves(request, () => { this.DS.getSubordinatesLeaves(request, () => {
console.log("Error "); console.log('Error ');
}).subscribe((result: GetSubordinatesLeavesResponse) => { }).subscribe((result: GetSubordinatesLeavesResponse) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
console.log('response'); console.log('response');
@ -637,10 +622,10 @@ openPeriodDateDashbored() {
getSubordinatesAttStatus() { getSubordinatesAttStatus() {
const request: GetSubordinatesAttdStatusRequest = new GetSubordinatesAttdStatusRequest(); const request: GetSubordinatesAttdStatusRequest = new GetSubordinatesAttdStatusRequest();
request.P_SCHEDULE_DATE_FROM = "/Date(1578603600000+0300)/"; // test request.P_SCHEDULE_DATE_FROM = '/Date(1578603600000+0300)/'; // test
request.P_SCHEDULE_DATE_TO = "/Date(1576011600000+0300)/"; // test request.P_SCHEDULE_DATE_TO = '/Date(1576011600000+0300)/'; // test
this.DS.getSubordinatesAttStatus(request, () => { this.DS.getSubordinatesAttStatus(request, () => {
console.log("Error "); console.log('Error ');
}).subscribe((result: GetSubordinatesAttdStatusResponse) => { }).subscribe((result: GetSubordinatesAttdStatusResponse) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
console.log('response'); console.log('response');
@ -650,7 +635,7 @@ getSubordinatesAttStatus() {
} }
openPage(subMenu) { openPage(subMenu) {
console.log("openPage"); console.log(subMenu);
let selMenu: MenuResponse = new MenuResponse(); let selMenu: MenuResponse = new MenuResponse();
selMenu = this.common.sharedService.getSharedData( selMenu = this.common.sharedService.getSharedData(
MenuResponse.SHARED_DATA, MenuResponse.SHARED_DATA,
@ -681,41 +666,28 @@ getSubordinatesAttStatus() {
const day = today.getDate(); const day = today.getDate();
const month = today.getMonth() + 1; const month = today.getMonth() + 1;
const year = today.getFullYear(); const year = today.getFullYear();
const todayDate = month + "/" + day + "/" + year; const todayDate = month + '/' + day + '/' + year;
const effectiveDate = todayDate; const effectiveDate = todayDate;
const request = { const request = {
P_SELECTED_EMPLOYEE_NUMBER: this.userData.EMPLOYEE_NUMBER, P_SELECTED_EMPLOYEE_NUMBER: this.userData.EMPLOYEE_NUMBER,
P_EFFECTIVE_DATE: effectiveDate P_EFFECTIVE_DATE: effectiveDate
}; };
this.accrualService.getAccrualBalances(request).subscribe((result: any) => { this.accrualService.getAccrualBalances(request, '', '', this.isPostNoLoad).subscribe((result: any) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
let totalTicketsLeft = 0; let totalTicketsLeft = 0;
this.accrualBalancesList = result.GetAccrualBalancesList; this.accrualBalancesList = result.GetAccrualBalancesList;
for (const accrualBalance of result.GetAccrualBalancesList) { for (const accrualBalance of result.GetAccrualBalancesList) {
if ( if (accrualBalance.ACCURAL_PLAN_NAME === 'HMG Annual Vacation Accrual Plan') {
accrualBalance.ACCURAL_PLAN_NAME ===
"HMG Annual Vacation Accrual Plan"
) {
this.statsButtons[2].statsValue = this.statsButtons[2].statsValue =
Math.floor(accrualBalance.ACCRUAL_NET_ENTITLEMENT); Math.floor(accrualBalance.ACCRUAL_NET_ENTITLEMENT);
this.common.sharedService.setSharedData( this.common.sharedService.setSharedData(accrualBalance, 'leaveAccrualBalance');
accrualBalance, this.common.sharedService.setSharedData(request, 'leaveAccrualBalanceDate');
"leaveAccrualBalance" this.common.sharedService.setSharedData(this.accrualBalancesList, 'tickitsbalance');
);
this.common.sharedService.setSharedData(
request,
"leaveAccrualBalanceDate"
);
this.common.sharedService.setSharedData(
this.accrualBalancesList,
"tickitsbalance"
);
} else { } else {
totalTicketsLeft = totalTicketsLeft = totalTicketsLeft + accrualBalance.ACCRUAL_NET_ENTITLEMENT;
totalTicketsLeft + accrualBalance.ACCRUAL_NET_ENTITLEMENT;
} }
} }
this.statsButtons[3].statsValue = Math.floor(totalTicketsLeft); this.statsButtons[3].statsValue = Math.floor(totalTicketsLeft);
} }
}); });
} }
@ -730,14 +702,18 @@ openProfilePage() {
openStatsButton(link: any) { openStatsButton(link: any) {
// console.log(link); // tslint:disable-next-line: triple-equals
if (link == "1") { if (link == '1') {
this.common.startLoading();
this.common.openNotificationPage(); this.common.openNotificationPage();
} else if (link == "2") { // tslint:disable-next-line: triple-equals
} else if (link == '2') {
this.openPage(this.missingSwipeRequestObject); this.openPage(this.missingSwipeRequestObject);
} else if (link == "3") { // tslint:disable-next-line: triple-equals
} else if (link == '3') {
this.openPage(this.leaveRequestObject); this.openPage(this.leaveRequestObject);
} else if (link =="4") { // tslint:disable-next-line: triple-equals
} else if (link == '4') {
this.openPage(this.ticketRequestObject); this.openPage(this.ticketRequestObject);
} }
} }

@ -1,9 +1,10 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light">{{ts.trPK('myTeam','myTeam-header')}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons backLink="/home"></nav-buttons> <!-- <nav-buttons backLink="/home"></nav-buttons> -->
<nav-buttons></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title>{{ts.trPK('myTeam','myTeam-header')}}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
@ -57,7 +58,7 @@
<div *ngIf="isSearch"> <div *ngIf="isSearch">
<ion-row class="search-container"> <ion-row class="search-container">
<ion-col style="float: left;" size=[6] (click)="clearSearch()"> <ion-col style="float: left;" size=[6] (click)="clearSearch()">
<span style="margin-left: 5px;">Clear Search</span> <span style="margin-left: 5px;">{{ts.trPK('work-list','clear-search')}}</span>
<ion-icon name="close" ></ion-icon> <ion-icon name="close" ></ion-icon>
</ion-col> </ion-col>
</ion-row> </ion-row>

@ -3,13 +3,14 @@ ion-title{
position: absolute; position: absolute;
top: 0; top: 0;
text-align: center; text-align: center;
left: 15%; left: 4%;
right: 15%; right: 4%;
font-size: 0.42cm; font-size: 0.42cm;
font-weight: bold; font-weight: bold;
height: 100%; height: 100%;
} }
.contentBg{ .contentBg{
padding: 0px 20px; padding: 0px 20px;
} }

@ -3,24 +3,23 @@
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons backLink="/home"></nav-buttons> <nav-buttons backLink="/home"></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title>WORK LIST</ion-title> <ion-title>{{ts.trPK('home','worklist')}}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content> <ion-content>
<div class="contentBg"> <div class="contentBg">
<div class="result-graph"> <div class="result-graph">
<div class="request-heading"> <div class="request-heading">
<span>Open Request Analysis</span> <span>{{ts.trPK('work-list','open-analysis')}}</span>
</div> </div>
<div class="result-text-container" [ngStyle]="showChart === false ? {'visibility': 'hidden'} : {}"> <div class="result-text-container" [ngStyle]="showChart === false ? {'visibility': 'hidden'} : {}">
<span *ngIf="selectedFilter === 'ALL'">{{newWorkListResponse.length + ITGCount}} of </span> <span *ngIf="selectedFilter === 'ALL'">{{newWorkListResponse.length + ITGCount}} {{ts.trPK('work-list','of')}} </span>
<span *ngIf="showSearchButton && newWorkListResponse.length > 0 && selectedFilter !== 'ALL' && itemType !== ''">{{newWorkListResponse.length}} of </span> <span *ngIf="showSearchButton && newWorkListResponse.length > 0 && selectedFilter !== 'ALL' && itemType !== ''">{{newWorkListResponse.length}} of </span>
<h2 *ngIf="!showSearchButton">{{totalRequestCount}}</h2> <h2 *ngIf="!showSearchButton">{{totalRequestCount}}</h2>
<h2 *ngIf="showSearchButton && newWorkListResponse.length > 0 && itemType === ''">{{newWorkListResponse[0].NO_OF_ROWS + ITGCount}}</h2> <h2 *ngIf="showSearchButton && newWorkListResponse.length > 0 && itemType === ''">{{newWorkListResponse[0].NO_OF_ROWS + ITGCount}}</h2>
<h2 *ngIf="showSearchButton && newWorkListResponse.length > 0 && selectedFilter !== 'ALL' && itemType !== ''">{{newWorkListResponse[0].NO_OF_ROWS}}</h2> <h2 *ngIf="showSearchButton && newWorkListResponse.length > 0 && selectedFilter !== 'ALL' && itemType !== ''">{{newWorkListResponse[0].NO_OF_ROWS}}</h2>
<span>TOTAL <br> OPEN REQUEST</span> <span>{{ts.trPK('work-list','total')}} <br> {{ts.trPK('work-list','open-reqest')}}</span>
</div> </div>
<p-chart *ngIf="!showChart" class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart> <p-chart *ngIf="!showChart" class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
<p-chart *ngIf="showChart" class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart> <p-chart *ngIf="showChart" class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
@ -42,17 +41,14 @@
<ion-row class="search-container"> <ion-row class="search-container">
<ion-col style="float: left;" size=[6] *ngIf="showSearchButton" (click)="clearSearch()"> <ion-col style="float: left;" size=[6] *ngIf="showSearchButton" (click)="clearSearch()">
<span style="margin-left: 5px;">Clear Search</span> <span style="margin-left: 5px;">{{ts.trPK('work-list','clear-search')}}</span>
<ion-icon name="close" ></ion-icon> <ion-icon name="close" ></ion-icon>
</ion-col> </ion-col>
<ion-col style="float: right;" size=[6] (click)="openSearchModal()" *ngIf="selectedFilter === 'ALL'"> <ion-col style="float: right;" size=[6] (click)="openSearchModal()" *ngIf="selectedFilter === 'ALL'">
<ion-icon name="search" ></ion-icon> <ion-icon name="search" ></ion-icon>
<span>Advanced Search</span> <span>{{ts.trPK('work-list','advanced-search')}}</span>
</ion-col> </ion-col>
</ion-row> </ion-row>
<!-- <div class="total-result" *ngIf="isEmptyObject() && selectedFilter === 'ALL' && showSearchButton === false">
<span>showing {{newWorkListResponse.length}} of {{filters[0].value}}</span>
</div> -->
<ion-row *ngIf='selectedFilter === "ITG"' class="filters-row"> <ion-row *ngIf='selectedFilter === "ITG"' class="filters-row">
<ion-col> <ion-col>
@ -67,16 +63,15 @@
</ion-row> </ion-row>
<div style="position: relative;"> <div style="position: relative;">
<div [ngClass]="showFormattedData.length > 0 ? 'work-list-container' : ''" *ngIf='selectedFilter != "ITG"'> <div [ngClass]="showFormattedData.length > 0 && direction == 'en'? 'work-list-container' : 'work-list-container-ar'" *ngIf='selectedFilter != "ITG"'>
<div *ngFor="let formattedData of showFormattedData; let i = index"> <div *ngFor="let formattedData of showFormattedData; let i = index">
<span class="date-span">{{formattedData.date}}</span> <span [ngClass]="direction == 'en'? 'date-span':'date-span-ar'">{{formattedData.date}}</span>
<div class="date-data" *ngFor="let workList of formattedData.data; let j = index"> <div class="date-data" *ngFor="let workList of formattedData.data; let j = index">
<p (click)="openNotificationDetail(workList)">{{workList.SUBJECT}}</p> <p (click)="openNotificationDetail(workList)">{{workList.SUBJECT}}</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div [ngClass]="showFormattedData.length > 0 ? 'work-list-container' : ''" *ngIf="selectedFilter == 'ITG'" > <div [ngClass]="showFormattedData.length > 0 ? 'work-list-container' : ''" *ngIf="selectedFilter == 'ITG'" >
<!-- <div *ngFor='let segmentInfo of ITGItem[0]; let i= index' (click)='openITG(segmentInfo)'> --> <!-- <div *ngFor='let segmentInfo of ITGItem[0]; let i= index' (click)='openITG(segmentInfo)'> -->
<div *ngFor='let segmentInfo of ITGItem[0]; let i= index' > <div *ngFor='let segmentInfo of ITGItem[0]; let i= index' >
@ -98,9 +93,8 @@
</div> </div>
</div> </div>
</div> </div>
<div class="no-data-available" *ngIf="showFormattedData.length === 0"> <div class="no-data-available" *ngIf="showFormattedData.length === 0">
<span>No Data Available</span> <span>{{ts.trPK('work-list','No-data-available')}}</span>
</div> </div>
</div> </div>
<!-- </div> --> <!-- </div> -->
@ -108,6 +102,4 @@
<ion-infinite-scroll (ionInfinite)="doInfinite($event)" *ngIf="selectedFilter === 'ALL' || itemType !== ''"> <ion-infinite-scroll (ionInfinite)="doInfinite($event)" *ngIf="selectedFilter === 'ALL' || itemType !== ''">
<ion-infinite-scroll-content></ion-infinite-scroll-content> <ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll> </ion-infinite-scroll>
</ion-content> </ion-content>

@ -1,421 +1,459 @@
.bar-stable {
background-color: var(--cusgray) !important;
}
.tabs{
background-color: var(--cusgray) !important;
}
.icon-size-lg {
font-size: 40px;
}
/*Timeline*/
.pos-absolute-right {
position: absolute;
right: 8px;
}
.timelineMain {
position: relative;
margin: 15px 0 0 0;
}
.timelineMain:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
width: 1.5%;
height: 99%;
background: #e4e4e4;
z-index: 1;
/* margin-left: -10px; */
/* z-index: 1; */
}
.timelineMain .timelineMain-thumb {
border-radius: 500px;
width: 50px;
z-index: 2;
position: absolute;
// :root[dir="ltr"]{
// left: 37px;
// }
// :root[dir="rtl"]{
// right: 37px;
// }
width: 50px;
float: right;
top: 0px;
}
.timelineMain .timelineMain-thumb.timelineMain-icon {
height: 50px;
// text-align: center;
// color: white;
// border: 5px solid #CBD0D3;
transform: scale(0.3);
}
.bar-stable {
background-color: var(--cusgray) !important; .timelineMain .timelineMain-item {
} width: 50px;
.tabs{
background-color: var(--cusgray) !important; }
}
.icon-size-lg { .timelineMain .timelineMain-stats {
font-size: 40px; position: relative;
} font-size: 12px;
color: var(--darkgray);
/*Timeline*/
}
.pos-absolute-right {
position: absolute;
right: 8px; .divider-title {
} background: #e4e4e4;
padding: 5px 15px;
.timelineMain { }
position: relative;
margin: 15px 0 0 0;
} .color-red {
color: var(--danger) !important;
.timelineMain:before { }
content: ''; .bg-color-dot {
position: absolute; // background-color: #ff3b30 !important;
top: 0; background: var(--primary);
bottom: 0; background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
width: 1.5%; background: -webkit-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
height: 99%; background: linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
background: #e4e4e4;
z-index: 1;
/* margin-left: -10px; */ }
/* z-index: 1; */
} .notification-list{
background: none;
.timelineMain .timelineMain-thumb { ion-item{
// margin-top: 5px;
border-radius: 500px; // margin-bottom: 5px;
width: 50px;
z-index: 2; background-color: transparent;
.item-date{
width: 100%;
font-size: 16px;
font-weight: bold;
text-align: start;
padding: 0;
margin: 0;
position: absolute; position: absolute;
left: 0;
top: 12%;
}
ion-label , [item-end]{
white-space: normal;
font-size: 14px;
padding-top: 15%;
// :root[dir="ltr"]{ // :root[dir="ltr"]{
// left: 37px; // margin-left: 10px;
// } // }
// :root[dir="rtl"]{ // :root[dir="rtl"]{
// right: 37px; // margin-right: 10px;
// } // }
width: 50px;
float: right;
top: 0px;
}
.timelineMain .timelineMain-thumb.timelineMain-icon {
height: 50px;
// text-align: center;
// color: white;
// border: 5px solid #CBD0D3;
transform: scale(0.3);
}
.timelineMain .timelineMain-item {
width: 50px;
}
.timelineMain .timelineMain-stats {
position: relative;
font-size: 12px;
color: var(--darkgray);
}
.divider-title {
background: #e4e4e4;
padding: 5px 15px;
}
.color-red {
color: var(--danger) !important;
}
.bg-color-dot {
// background-color: #ff3b30 !important;
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%);
}
.notification-list{
background: none;
ion-item{
// margin-top: 5px;
// margin-bottom: 5px;
background-color: transparent;
.item-date{
width: 100%;
font-size: 16px;
font-weight: bold;
text-align: start;
padding: 0;
margin: 0;
position: absolute;
left: 0;
top: 12%;
}
ion-label , [item-end]{
white-space: normal;
font-size: 14px;
padding-top: 15%;
// :root[dir="ltr"]{
// margin-left: 10px;
// }
// :root[dir="rtl"]{
// margin-right: 10px;
// }
}
} }
}
} }
.input-wrapper { .input-wrapper {
--flex:none; --flex:none;
} }
ion-input ,ion-datetime{ ion-input ,ion-datetime{
border-bottom: #dedede 1px solid; border-bottom: #dedede 1px solid;
} }
.left { .left {
--background: #f0efef; --background: #f0efef;
.timelineMain:before{ .timelineMain:before{
left: 21px; left: 21px;
}
.notification-list ion-item{
padding-left: 3px;
margin-left: -12%;
}
.timelineMain-thumb{
left: 9%;
top: 30%;
}
}
.right {
--background: #f0efef;
.timelineMain:before{
right: 62px;
} }
.notification-list ion-item{ .notification-list ion-item{
padding-left: 3px; padding-right: 3px;
margin-left: -12%;
} }
.timelineMain-thumb{ .timelineMain-thumb{
left: 9%; right: 37px;
top: 30%;
} }
}
.right {
--background: #f0efef;
.timelineMain:before{
right: 62px;
}
.notification-list ion-item{
padding-right: 3px;
}
.timelineMain-thumb{
right: 37px;
}
} }
.menuList{ .menuList{
margin-left: -40px; margin-left: -40px;
height: 160%; height: 160%;
padding-top: 370%; padding-top: 370%;
} }
.colorBG{ .colorBG{
--background: #f0efef; --background: #f0efef;
} }
.menuListCol{ .menuListCol{
padding-left: 50px; padding-left: 50px;
margin-left: -33px; margin-left: -33px;
} }
.menuListItem{ .menuListItem{
padding-top: 9%; padding-top: 9%;
margin: -20%; margin: -20%;
padding-left: 13%; padding-left: 13%;
} }
.menuListBtn{ .menuListBtn{
width: 100%; width: 100%;
background: white; background: white;
--background: white; --background: white;
} }
.activeTabMenu{ .activeTabMenu{
--background: #ff726f; --background: #ff726f;
} }
.notifincationList{ .notifincationList{
margin-left: 5%; margin-left: 5%;
margin-top: 6%; margin-top: 6%;
} }
.itemListNotification{ .itemListNotification{
padding-bottom: 18px; padding-bottom: 18px;
} }
.footerSearchBtn{ .footerSearchBtn{
padding: 0px !important; padding: 0px !important;
background: #f0efef !important; background: #f0efef !important;
} }
.viewAndSearch{ .viewAndSearch{
margin-bottom: 13px; margin-bottom: 13px;
} }
.toSearchBtn{ .toSearchBtn{
margin-top: 4%; margin-top: 4%;
} }
.emptyItem{ .emptyItem{
white-space: normal; white-space: normal;
padding-left: 10%; padding-left: 10%;
} }
///////////////////////////////////////////NEW DESIGN///////////////////////////////////// ///////////////////////////////////////////NEW DESIGN/////////////////////////////////////
.profile-image-container{ .profile-image-container{
position: relative; position: relative;
z-index: 999; z-index: 999;
img { img {
width: 32px; width: 32px;
float: right; float: right;
border-radius: 20px; border-radius: 20px;
height: 32px; height: 32px;
margin-right: 10px; margin-right: 10px;
} }
} }
ion-title{ ion-title{
color: white; color: white;
position: absolute; position: absolute;
top: 0; top: 0;
text-align: center; text-align: center;
left: 15%; left: 15%;
right: 15%; right: 15%;
font-size: 0.42cm; font-size: 0.42cm;
font-weight: bold; font-weight: bold;
height: 100%; height: 100%;
} }
.contentBg:before { .contentBg:before {
position: absolute; position: absolute;
content: ""; content: "";
background: #22c6b3; background: #22c6b3;
height: 140px; height: 140px;
width: 100%; width: 100%;
left: 0; left: 0;
top: 0px; top: 0px;
z-index: 1; z-index: 1;
} }
ion-content { ion-content {
--ion-background-color: whitesmoke; --ion-background-color: whitesmoke;
} }
.request-heading { .request-heading {
span { span {
text-align: center; text-align: center;
display: block; display: block;
padding-top: 8px; padding-top: 8px;
font-family: workSans-Regular; font-family: workSans-Regular;
} }
} }
.result-graph { .result-graph {
position: relative; position: relative;
background: white; background: white;
margin-right: 20px; margin-right: 20px;
margin-left: 20px; margin-left: 20px;
margin-top: 20px; margin-top: 20px;
padding-bottom: 20px; padding-bottom: 20px;
border-radius: 20px; border-radius: 20px;
z-index: 1; z-index: 1;
} }
.result-text-container { .result-text-container {
padding: 0; padding: 0;
margin: 0; margin: 0;
position: absolute; position: absolute;
left: 50%; left: 50%;
top: 50%; top: 50%;
display: block;
text-align: center;
transform: translate(-50%, -50%);
h2 {
font-size: 38px;
font-family: WorkSans-Bold;
margin: 0 auto;
line-height: 36px;
}
span {
width: 125px;
display: block; display: block;
text-align: center; margin: 0 auto;
transform: translate(-50%, -50%); font-size: 12px;
h2 { font-family: workSans-Regular;
font-size: 38px; }
font-family: WorkSans-Bold; }
margin: 0 auto; .today-graph {
line-height: 36px; width: 100%;
} max-height: 4cm;
span { }
width: 125px;
display: block;
margin: 0 auto;
font-size: 12px;
font-family: workSans-Regular;
}
}
.today-graph {
width: 100%;
max-height: 4cm;
}
.swiper-container { .swiper-container {
margin: 0 !important; margin: 0 !important;
width: 100% !important; width: 100% !important;
} }
.filters-row { .filters-row {
margin-top: 10px; margin-top: 10px;
margin-left: 20px; margin-left: 20px;
} }
.work-list-container { .work-list-container {
position: relative;
padding-left: 60px;
clear: both;
min-height: 200px;
margin-bottom: 80px;
padding-top: 15px;
}
.work-list-container:before{
content: "";
position: absolute;
height: 100%;
width: 4px;
left: 30px;
top: 15px;
background-color: #dddddd;
}
.work-list-container-ar {
position: relative; position: relative;
padding-left: 60px; padding-left: 60px;
clear: both; clear: both;
min-height: 200px; min-height: 200px;
margin-bottom: 80px; margin-bottom: 80px;
padding-top: 15px; padding-top: 15px;
} }
.work-list-container:before{ .work-list-container-ar:before{
content: ""; content: "";
position: absolute; position: absolute;
height: 100%; height: 100%;
width: 4px; width: 4px;
left: 30px; left: 30px;
top: 15px; top: 15px;
right: 6px;
background-color: #dddddd; background-color: #dddddd;
} }
.search-container{ .search-container{
margin-top: 15px; margin-top: 15px;
display: block; display: block;
padding: 0 20px; padding: 0 20px;
position: relative; position: relative;
z-index: 99; z-index: 99;
ion-col{ ion-col{
background: white; background: white;
border-radius: 12px; border-radius: 12px;
padding-right: 10px; padding-right: 10px;
flex: none; flex: none;
ion-icon{ ion-icon{
margin-right: 3px; margin-right: 3px;
font-size: 14px; font-size: 14px;
margin-left: 3px; margin-left: 3px;
vertical-align: middle; vertical-align: middle;
} }
span{ span{
font-size: 12px; font-size: 12px;
vertical-align: middle; vertical-align: middle;
}
} }
} }
}
.date-span { .date-span {
position: relative; position: relative;
display: block; display: block;
margin-bottom: 10px; margin-bottom: 10px;
} }
.date-span:before{ .date-span:before{
content: ""; content: "";
position: absolute; position: absolute;
left: -35px; left: -35px;
border-radius: 50%; border-radius: 50%;
width: 15px; width: 15px;
height: 15px; height: 15px;
background-color: #38c9b3; background-color: #38c9b3;
top: 1px; top: 1px;
} }
.date-data{
background-color: white; .date-span-ar{
padding: 1px; position: relative;
border-radius: 20px; display: block;
font-family: WorkSans-Regular; margin-bottom: 10px;
padding-left: 15px; /* margin-top: 10px; */
margin-right: 20px; margin-right: 30px;
margin-bottom: 15px; }
p{ .date-span-ar:before{
font-size: 14px; content: "";
position: absolute;
right: -29px;
border-radius: 50%;
width: 15px;
height: 15px;
background-color: #38c9b3;
top: 1px;
} }
.date-data{
background-color: white;
padding: 1px;
border-radius: 20px;
font-family: WorkSans-Regular;
padding-left: 15px;
margin-right: 20px;
margin-bottom: 15px;
p{
font-size: 14px;
}
} }
.no-data-available { .no-data-available {
background: white; background: white;
font-family: WorkSans-Regular; font-family: WorkSans-Regular;
padding: 30px; padding: 30px;
position: absolute; position: absolute;
left: 85px; left: 85px;
top: 50px; top: 50px;
} }
.disable-filter { .disable-filter {
pointer-events: none; pointer-events: none;
opacity: .3; opacity: .3;
} }
.total-result { .total-result {
margin-top: 55px; margin-top: 55px;
padding-left: 20px; padding-left: 20px;
color: #888; color: #888;
font-size: 15px; font-size: 15px;
} }
.text-span{ .text-span{
font-size: 14px; font-size: 14px;
color: #888; color: #888;
background-color: white; background-color: white;
width: 93%; width: 93%;
height: 30px; height: 30px;
border: 1px solid; border: 1px solid;
border-radius: 15px; border-radius: 15px;
} }
.text-span-active{ .text-span-active{
font-size: 14px; font-size: 14px;
color: #888; color: #888;
background-color:#22c6b3; background-color:#22c6b3;
width: 93%; width: 93%;
height: 30px; height: 30px;
border: 1px solid; border: 1px solid;
border-radius: 15px; border-radius: 15px;
} }
.slideCss{ .slideCss{
width: 200px !important; width: 200px !important;
} }

@ -49,7 +49,8 @@ export class HomeComponent implements OnInit {
public noData = false; public noData = false;
public isITG = false; public isITG = false;
public isSearch = false; public isSearch = false;
public direction = 'ltr'; // public direction = 'ltr';
public direction: string;
public ITGCount = 0; public ITGCount = 0;
public ITGSegment: { name: string, code: any, data: any, style: boolean, names?: any }[] = []; public ITGSegment: { name: string, code: any, data: any, style: boolean, names?: any }[] = [];
public ITGAllItem: any = []; public ITGAllItem: any = [];
@ -75,6 +76,7 @@ export class HomeComponent implements OnInit {
public totalMR = 0; public totalMR = 0;
public showChart = false; public showChart = false;
public isPostNoLoad = true;
public options = { public options = {
cutoutPercentage: 80, cutoutPercentage: 80,
tooltips: { enabled: false }, tooltips: { enabled: false },
@ -173,6 +175,9 @@ export class HomeComponent implements OnInit {
this.worklistNotifications = this.common.sharedService.getSharedData('worklistNotifications', false); this.worklistNotifications = this.common.sharedService.getSharedData('worklistNotifications', false);
} }
ngOnInit() { ngOnInit() {
this.direction = TranslatorService.getCurrentLanguageName();
this.worklistNotifications = this.common.sharedService.getSharedData('worklistNotifications', false);
this.common.startLoading();
this.openNotificationsDashboard(); this.openNotificationsDashboard();
} }
@ -184,7 +189,7 @@ export class HomeComponent implements OnInit {
} }
openNotificationsDashboard() { openNotificationsDashboard() {
this.DS.getOpenNotifications().subscribe((result: GetOpenNotificationsResponse) => { this.DS.getOpenNotifications('', '', this.isPostNoLoad).subscribe((result: GetOpenNotificationsResponse) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
this.worklistNotifications = result; this.worklistNotifications = result;
this.totalRequestCount = this.worklistNotifications.P_OPEN_NTF_NUMBER; this.totalRequestCount = this.worklistNotifications.P_OPEN_NTF_NUMBER;
@ -265,6 +270,7 @@ export class HomeComponent implements OnInit {
modal.onDidDismiss().then(result => { modal.onDidDismiss().then(result => {
if (result.data) { if (result.data) {
if (result.data.notificationType !== '' || result.data.selectedValue !== '' || result.data.itemType !== '') { if (result.data.notificationType !== '' || result.data.selectedValue !== '' || result.data.itemType !== '') {
this.common.startLoading();
this.showSearchButton = true; this.showSearchButton = true;
this.itemType = result.data.itemType; this.itemType = result.data.itemType;
this.notificationType = result.data.notificationType; this.notificationType = result.data.notificationType;
@ -282,6 +288,7 @@ export class HomeComponent implements OnInit {
if (this.itemType !== '') { if (this.itemType !== '') {
this.disableFilters(); this.disableFilters();
} }
this.isPostNoLoad = false;
this.getAllPushNotificationFun(); this.getAllPushNotificationFun();
} }
} }
@ -305,7 +312,7 @@ export class HomeComponent implements OnInit {
this.WorkListObj.P_SEARCH_SENT_DATE = ''; this.WorkListObj.P_SEARCH_SENT_DATE = '';
this.WorkListObj.P_SEARCH_SUBJECT = ''; this.WorkListObj.P_SEARCH_SUBJECT = '';
} }
this.WorklistService.getWorkList(this.WorkListObj).subscribe((result) => { this.WorklistService.getWorkList(this.WorkListObj, '', '', this.isPostNoLoad).subscribe((result) => {
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
this.handleWorkListResult(result.GetWorkList); this.handleWorkListResult(result.GetWorkList);
} }
@ -421,6 +428,7 @@ export class HomeComponent implements OnInit {
this.showFormattedData = this.sortArray(categorizedWorkListResponse); this.showFormattedData = this.sortArray(categorizedWorkListResponse);
this.allFormattedData = this.showFormattedData; this.allFormattedData = this.showFormattedData;
this.common.sharedService.setSharedData(this.newWorkListResponse, HomeComponent.NOTIFICATION_ARR); this.common.sharedService.setSharedData(this.newWorkListResponse, HomeComponent.NOTIFICATION_ARR);
this.common.stopLoading();
} else { } else {
this.newWorkListResponse = []; this.newWorkListResponse = [];
} }
@ -458,8 +466,10 @@ export class HomeComponent implements OnInit {
} }
clearSearch() { clearSearch() {
this.common.startLoading();
this.itemType = ''; this.itemType = '';
this.selectedFilter = 'ALL'; this.selectedFilter = 'ALL';
this.isPostNoLoad = true;
this.disableFilters(); this.disableFilters();
this.resetData(); this.resetData();
this.getAllPushNotificationFun(); this.getAllPushNotificationFun();

@ -240,19 +240,27 @@ export class WorklistMainService {
); );
} }
public getITGCount( onError?: any, errorLabel?: string): Observable<any> { public getITGCount( onError?: any, errorLabel?: string, isPostNoLoad = false): Observable<any> {
const request = new Request; const request = new Request();
console.log(request)
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.api.post( if (isPostNoLoad) {
WorklistMainService.getITGFormTaskCount, return this.api.postNoLoad(
request, WorklistMainService.getITGFormTaskCount,
onError, request,
errorLabel onError,
); errorLabel
);
} else {
return this.api.post(
WorklistMainService.getITGFormTaskCount,
request,
onError,
errorLabel
);
}
} }
public getITGFormDetails(request:itgRequest, onError?: any, errorLabel?: string): Observable<any> { public getITGFormDetails(request: itgRequest, onError?: any, errorLabel?: string): Observable<any> {
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
request.EmployeeNumber = request.P_USER_NAME; request.EmployeeNumber = request.P_USER_NAME;
console.log(request); console.log(request);
@ -266,16 +274,25 @@ export class WorklistMainService {
public getITGDetails( onError?: any, errorLabel?: string): Observable<any> { public getITGDetails( onError?: any, errorLabel?: string, isPostNoLoad = false): Observable<any> {
const request = new Request; const request = new Request();
console.log(request) console.log(request);
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.api.post( if (isPostNoLoad) {
WorklistMainService.getITGFormTaskDetails, return this.api.postNoLoad(
request, WorklistMainService.getITGFormTaskDetails,
onError, request,
errorLabel onError,
); errorLabel
);
} else {
return this.api.post(
WorklistMainService.getITGFormTaskDetails,
request,
onError,
errorLabel
);
}
} }

@ -22,10 +22,14 @@ export class WorklistService {
) { } ) { }
public getWorkList(WorkListReq: any, onError?: any, errorLabel?: string): Observable<any> { public getWorkList(WorkListReq: any, onError?: any, errorLabel?: string, isPostNoLoad = false): Observable<any> {
const request = WorkListReq; const request = WorkListReq;
this.authService.authenticateRequest(request); this.authService.authenticateRequest(request);
return this.api.post(WorklistService.getWorkList, request, onError, errorLabel); if (isPostNoLoad) {
return this.api.postNoLoad(WorklistService.getWorkList, request, onError, errorLabel);
} else {
return this.api.post(WorklistService.getWorkList, request, onError, errorLabel);
}
} }
public getReplacmentEmployeeList(ReplacmentEmployeeRequest: any, onError?: any, errorLabel?: string): Observable<any> { public getReplacmentEmployeeList(ReplacmentEmployeeRequest: any, onError?: any, errorLabel?: string): Observable<any> {

@ -75,7 +75,7 @@
</button> </button>
<div <div
[ngClass]="{'bg-blue-dot' : approvalInfo.Action === 'Submit', 'bg-green-dot':approvalInfo.Action === 'Approved', 'bg-red-dot':approvalInfo.Action === 'Rejected', 'bg-gray-dot':approvalInfo.Action === 'Pending', 'bg-gray-dot':approvalInfo.Action === ''}" [ngClass]="{'bg-blue-dot' : approvalInfo.Action === 'Submit', 'bg-green-dot':approvalInfo.Action === 'Approved', 'bg-red-dot':approvalInfo.Action === 'Rejected', 'bg-gray-dot':approvalInfo.Action === 'Pending', 'bg-gray-dot':approvalInfo.Action === ''}"
class="timeline-thumb timeline-icon"> [class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
</div> </div>
<p style="margin-left: -20%; font-size: 12px !important;">{{approvalInfo.Action}}</p> <p style="margin-left: -20%; font-size: 12px !important;">{{approvalInfo.Action}}</p>
</div> </div>

@ -52,6 +52,7 @@ export class WorkListMainItgComponent implements OnInit {
public ExchangeServerDBSelected: any; public ExchangeServerDBSelected: any;
public actionBTN: { name: string, image: string, isAvailable: boolean }[] = []; public actionBTN: { name: string, image: string, isAvailable: boolean }[] = [];
index2: number; index2: number;
direction: string;
constructor( constructor(
public common: CommonService, public common: CommonService,
public ts: TranslatorService, public ts: TranslatorService,
@ -59,6 +60,7 @@ export class WorkListMainItgComponent implements OnInit {
public modalCtrl: ModalController) { } public modalCtrl: ModalController) { }
ngOnInit() { ngOnInit() {
this.direction = TranslatorService.getCurrentLanguageName()
this.request_info = this.common.sharedService.getSharedData(HomeComponent.REQUSET_INFO); this.request_info = this.common.sharedService.getSharedData(HomeComponent.REQUSET_INFO);
this.request_name = this.common.sharedService.getSharedData(HomeComponent.REQUSET_NAME); this.request_name = this.common.sharedService.getSharedData(HomeComponent.REQUSET_NAME);
this.all_request = this.common.sharedService.getSharedData(HomeComponent.ALL_REQUEST); this.all_request = this.common.sharedService.getSharedData(HomeComponent.ALL_REQUEST);

@ -1,14 +1,14 @@
<ion-content> <ion-content>
<div class="search-header" (click)="dismissModal()"> <div class="search-header" (click)="dismissModal()">
<h2>Advanced Search</h2> <h2>{{ts.trPK('general','sadvanced-search')}}</h2>
<ion-icon slot="icon-only" name="md-close"></ion-icon> <ion-icon slot="icon-only" name="md-close"></ion-icon>
</div> </div>
<div class="search-container"> <div class="search-container">
<ion-item lines="none"> <ion-item lines="none">
<ion-label>{{ts.trPK('worklist','view')}}</ion-label> <ion-label class="enable-overflow">{{ts.trPK('worklist','view')}}</ion-label>
<ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" <ion-select class="custom-width" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
(ionChange)=onChangeView($event)> (ionChange)=onChangeView($event)>
<ion-select-option value="1">{{ts.trPK('worklist','openNot')}}</ion-select-option> <ion-select-option value="1">{{ts.trPK('worklist','openNot')}}</ion-select-option>
<ion-select-option value="2">{{ts.trPK('worklist','fyi')}}</ion-select-option> <ion-select-option value="2">{{ts.trPK('worklist','fyi')}}</ion-select-option>
@ -19,8 +19,8 @@
</ion-item> </ion-item>
<ion-item lines="none" [ngStyle]="(hideDateInput === true || hideTextInput === true) ? {'margin-bottom': '0px'} : {}"> <ion-item lines="none" [ngStyle]="(hideDateInput === true || hideTextInput === true) ? {'margin-bottom': '0px'} : {}">
<ion-label>{{ts.trPK('worklist','searchby')}}</ion-label> <ion-label class="enable-overflow">{{ts.trPK('worklist','searchby')}}</ion-label>
<ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" <ion-select class="custom-width" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
(ionChange)="getValueSelected($event)"> (ionChange)="getValueSelected($event)">
<ion-select-option value="1">{{ts.trPK('worklist','from')}}</ion-select-option> <ion-select-option value="1">{{ts.trPK('worklist','from')}}</ion-select-option>
<ion-select-option value="2">{{ts.trPK('worklist','subject')}}</ion-select-option> <ion-select-option value="2">{{ts.trPK('worklist','subject')}}</ion-select-option>
@ -32,7 +32,7 @@
<div> <div>
<div *ngIf="hideDateInput"> <div *ngIf="hideDateInput">
<ion-item lines='none' style="border-radius: 10px;margin-right: 10px;margin-left: 10px;margin-top: 5px;"> <ion-item lines='none' style="border-radius: 10px;margin-right: 10px;margin-left: 10px;margin-top: 5px;">
<ion-label>{{ts.trPK('worklist','sent')}} </ion-label> <ion-label class="enable-overflow">{{ts.trPK('worklist','sent')}} </ion-label>
<ion-datetime placeholder="{{ts.trPK('worklist','enter')}}" displayFormat="DD-MMM-YYYY" <ion-datetime placeholder="{{ts.trPK('worklist','enter')}}" displayFormat="DD-MMM-YYYY"
pickerFormat="DD-MMM-YYYY" [(ngModel)]="inputDate"></ion-datetime> pickerFormat="DD-MMM-YYYY" [(ngModel)]="inputDate"></ion-datetime>
</ion-item> </ion-item>
@ -46,7 +46,7 @@
</div> </div>
<ion-item lines="none"> <ion-item lines="none">
<ion-label>Item Type</ion-label> <ion-label>{{ts.trPK('vacation-rule','itemType')}}</ion-label>
<ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" <ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
[(ngModel)]="itemType"> [(ngModel)]="itemType">
<ion-select-option value="HRSSA">HR</ion-select-option> <ion-select-option value="HRSSA">HR</ion-select-option>
@ -57,7 +57,7 @@
</ion-item> </ion-item>
<div class="search-button" (click)="search()"> <div class="search-button" (click)="search()">
<span>SEARCH</span> <span>{{ts.trPK('searchForReplacment','search')}}</span>
</div> </div>
</div> </div>
</ion-content> </ion-content>

@ -18,7 +18,7 @@
.search-container { .search-container {
margin-right: 15px; margin-right: 15px;
margin-left: 15px; margin-left: 15px;
padding-bottom: 100px; // padding-bottom: 100px;
margin-top: 5px; margin-top: 5px;
ion-item{ ion-item{
border: 2px solid #eaeaea; border: 2px solid #eaeaea;
@ -37,4 +37,10 @@
span{ span{
color: white; color: white;
} }
}
.custom-width{
max-width: 100% !important;
}
.enable-overflow{
overflow: visible !important;
} }

@ -456,7 +456,7 @@
</button> </button>
</div> --> </div> -->
<div class="timeline-thumb timeline-icon"> <div [class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge" <img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge"
[src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE"> [src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge" src="../assets/imgs/profile.png"> <img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge" src="../assets/imgs/profile.png">

@ -99,6 +99,7 @@ export class WorklistMainMRComponent implements OnInit {
approveDis: boolean = false; approveDis: boolean = false;
rejectDis: boolean = false; rejectDis: boolean = false;
requestDis: boolean = false; requestDis: boolean = false;
direction: string;
@ -113,7 +114,7 @@ export class WorklistMainMRComponent implements OnInit {
private modalCtrl: ModalController, private modalCtrl: ModalController,
public worklistService: WorklistService public worklistService: WorklistService
) { ) {
this.direction = TranslatorService.getCurrentLanguageName()
//this.getPassNotificationDetails = this.common.sharedService.getSharedData('passNotificationInfo'); //this.getPassNotificationDetails = this.common.sharedService.getSharedData('passNotificationInfo');
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest(); this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM; this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;

@ -594,7 +594,7 @@
</button> </button>
</div> --> </div> -->
<div class="timeline-thumb timeline-icon"> <div [class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge" [src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE"> <img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge" [src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge" src="../assets/imgs/profile.png"> </div> <img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge" src="../assets/imgs/profile.png"> </div>
</div> </div>

@ -115,6 +115,7 @@ export class WorklistMainPoComponent implements OnInit {
approveDis: boolean = false; approveDis: boolean = false;
rejectDis: boolean = false; rejectDis: boolean = false;
requestDis: boolean = false; requestDis: boolean = false;
direction: string;
constructor( constructor(
@ -128,6 +129,7 @@ export class WorklistMainPoComponent implements OnInit {
private modalCtrl: ModalController, private modalCtrl: ModalController,
public worklistService: WorklistService, public worklistService: WorklistService,
) { ) {
this.direction = TranslatorService.getCurrentLanguageName()
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest(); this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM; this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT; this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;

@ -307,7 +307,7 @@
</button> </button>
</div> --> </div> -->
<div class="timeline-thumb timeline-icon"> <div [class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge" <img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge"
[src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE"> [src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge" <img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge"

@ -100,6 +100,7 @@ export class WorklistMainPRComponent implements OnInit {
approveDis: boolean; approveDis: boolean;
rejectDis: boolean; rejectDis: boolean;
requestDis: boolean; requestDis: boolean;
direction: string;
constructor( constructor(
@ -113,7 +114,7 @@ export class WorklistMainPRComponent implements OnInit {
private modalCtrl: ModalController, private modalCtrl: ModalController,
public worklistService: WorklistService public worklistService: WorklistService
) { ) {
this.direction = TranslatorService.getCurrentLanguageName()
//this.getPassNotificationDetails = this.common.sharedService.getSharedData('passNotificationInfo'); //this.getPassNotificationDetails = this.common.sharedService.getSharedData('passNotificationInfo');
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest(); this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM; this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;

@ -337,7 +337,7 @@
<ion-item *ngFor="let actionHistory of actionHistoryRes"> <ion-item *ngFor="let actionHistory of actionHistoryRes">
<div class="timeline-item" slot="start"> <div class="timeline-item" slot="start">
<div class="timeline-thumb timeline-icon"> <div [class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge" <img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge"
[src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE"> [src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge" <img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge"

@ -94,6 +94,7 @@ export class WorklistMainComponent implements OnInit {
rejectDis: boolean = false; rejectDis: boolean = false;
requestDis: boolean = false; requestDis: boolean = false;
moreDisabled: boolean = true; moreDisabled: boolean = true;
direction: string;
constructor( constructor(
public worklistService: WorklistService, public worklistService: WorklistService,
@ -110,6 +111,7 @@ export class WorklistMainComponent implements OnInit {
) { ) {
this.direction = TranslatorService.getCurrentLanguageName()
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest(); this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM; this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT; this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;

@ -38,7 +38,7 @@
<!-- <p style="position: absolute; left: 40%; bottom: 65%;">{{currentMonth}}</p> --> <!-- <p style="position: absolute; left: 40%; bottom: 65%;">{{currentMonth}}</p> -->
<div> <div>
<ion-row> <ion-row *ngIf="direction == 'ltr'">
<ion-col> <ion-col>
<button ion-button icon-start class="slidBtn" (click)="slidePrev(sliderOne,slideWithNav)"> <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 [ngClass]=" payslipIndex === GetPayslipList.length-1 ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
@ -47,19 +47,32 @@
</ion-col> </ion-col>
<ion-col> <ion-col>
<p class="label"><b style="font-family: WorkSans-Bold;">{{ (showPaySlip.PAYSLIP_CHOICE)?.substring(15,23) }}</b></p> <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> -->
<!-- <label class="p" for="">{{showPaySlip.PERIOD_NAME}}</label> -->
<!-- <p style="position: absolute; left: 40%; bottom: 65%;">{{currentMonth}}</p> -->
</ion-col> </ion-col>
<ion-col> <ion-col>
<button ion-button icon-end class="slidbtn" (click)="slideNext(sliderOne,slideWithNav)"> <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 [ngClass]=" payslipIndex === 0 ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon> </ion-icon>
</button> </button>
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row *ngIf="direction == 'rtl'">
<ion-col>
<button ion-button icon-start class="slidBtn" (click)="slidePrev(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === GetPayslipList.length-1 ? 'disabledArrow-ar' : 'activeArrow-ar'" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-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>
</ion-col>
<ion-col>
<button ion-button icon-end class="slidbtn" (click)="slideNext(sliderOne,slideWithNav)">
<ion-icon [ngClass]=" payslipIndex === 0 ? 'disabledArrow-ar' : 'activeArrow-ar'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle">
</ion-icon>
</button>
</ion-col>
</ion-row>
</div> </div>
@ -78,7 +91,7 @@
[value]="gaugeValue" [value]="gaugeValue"
[label]="gaugeLabel"> [label]="gaugeLabel">
</ngx-gauge> --> </ngx-gauge> -->
<div class="result-graph"> <div [ngClass]="direction == 'en'? 'result-graph':'result-graph-ar'">
<!-- <div class="request-heading"> <!-- <div class="request-heading">
@ -86,7 +99,7 @@
</div> --> </div> -->
<div class="result-text-container"> <div [ngClass]="direction == 'en'? 'result-text-container':'result-text-container-ar'">
<h2>{{GetSummaryOfPaymentList.TOTAL_PAY_AMOUNT}}</h2> <h2>{{GetSummaryOfPaymentList.TOTAL_PAY_AMOUNT}}</h2>
@ -98,12 +111,7 @@
<p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart> <p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
</div> </div>
<div style="position: relative; <div [ngClass]=" direction == 'ltr' ? 'div-green' : 'div-green-ar'">
left: 77%;
bottom: 117px;
color: black;
background-color: #22c6b3;
width: 20%; height: 6px;">
<ion-col> <ion-col>
<ion-row> <ion-row>
<label class="green-label">{{ts.trPK('payslip','earnings-key')}}</label> <label class="green-label">{{ts.trPK('payslip','earnings-key')}}</label>
@ -113,12 +121,7 @@
</ion-row> </ion-row>
</ion-col> </ion-col>
</div> </div>
<div style="position: relative; <div [ngClass]=" direction == 'ltr' ? 'div-blue' : 'div-blue-ar'">
left: 77%;
bottom: 67px;
color: black;
background-color: #094875;
width: 20%; height: 6px;">
<ion-col> <ion-col>
<ion-row> <ion-row>
<label class="blue-label">{{ts.trPK('payslip','deductions-key')}}</label> <label class="blue-label">{{ts.trPK('payslip','deductions-key')}}</label>
@ -138,9 +141,9 @@
<!-- <p>Summary of Payment</p> --> <!-- <p>Summary of Payment</p> -->
<div class="hrTitle"> {{ts.trPK('payslip','summary-payment')}} </div>
<div *ngIf="GetSummaryOfPaymentList !=''">
<div *ngIf="GetSummaryOfPaymentList !=''"> <div class="hrTitle"> {{ts.trPK('payslip','summary-payment')}} </div>
<ion-grid class="grids"> <ion-grid class="grids">
<ion-row class="bgcolor"> <ion-row class="bgcolor">
<ion-col class="colPayslip"> <ion-col class="colPayslip">
@ -201,8 +204,8 @@
</ion-grid> </ion-grid>
</div> </div>
<div class="hrTitle"> {{ts.trPK('payslip','earnings')}} </div>
<div *ngIf="GetEarningsList !=''"> <div *ngIf="GetEarningsList !=''">
<div class="hrTitle"> {{ts.trPK('payslip','earnings')}} </div>
<ion-grid class="grids"> <ion-grid class="grids">
<ion-row class="bgcolor"> <ion-row class="bgcolor">
<ion-col class="colPayslip"> <ion-col class="colPayslip">
@ -224,8 +227,8 @@
</ion-grid> </ion-grid>
</div> </div>
<div class="hrTitle"> {{ts.trPK('payslip','deductions')}} </div>
<div *ngIf="GetDeductionsList !=''"> <div *ngIf="GetDeductionsList !=''">
<div class="hrTitle"> {{ts.trPK('payslip','deductions')}} </div>
<ion-grid class="grids"> <ion-grid class="grids">
<ion-row class="bgcolor"> <ion-row class="bgcolor">
<ion-col class="colPayslip"> <ion-col class="colPayslip">
@ -247,14 +250,9 @@
</ion-grid> </ion-grid>
</div> </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 *ngIf="GetPaymentInformationList !=''">
<div class="hrTitle"> {{ts.trPK('payslip','payment-information')}} </div> <div class="hrTitle"> {{ts.trPK('payslip','payment-information')}} </div>
<div *ngIf="GetPaymentInformationList !=''"> <div *ngIf="GetPaymentInformationList !=''">
<div *ngFor="let paymentInfo of GetPaymentInformationList"> <div *ngFor="let paymentInfo of GetPaymentInformationList">
@ -314,4 +312,5 @@
</ion-grid> </ion-grid>
</div> </div>
</div> </div>
</div>
</ion-content> </ion-content>

@ -117,6 +117,15 @@
--background: transparent !important; --background: transparent !important;
}
.activeArrow-ar{
height: 26px;
width: 26px;
color: white;
background: transparent !important;
--background: transparent !important;
margin-right: 25px;
} }
.slidbtn{ .slidbtn{
background: transparent; background: transparent;
@ -131,12 +140,27 @@
background: transparent !important; background: transparent !important;
--background: transparent !important; --background: transparent !important;
} }
.disabledArrow-ar{
height: 26px;
width: 26px;
color: #908d8d;
background: transparent !important;
--background: transparent !important;
margin-right: 3px;
margin-left: -124px;
}
.result-graph{ .result-graph{
font-size: 14px; font-size: 14px;
margin-left: -48px; margin-left: -48px;
margin-right: 3px; margin-right: 3px;
} }
.result-graph-ar{
font-size: 14px;
margin-right: -48px;
margin-left: 3px;
}
.headerGrid{ .headerGrid{
background-color: white !important; background-color: white !important;
border: 1px solid #cac8c8 !important; border: 1px solid #cac8c8 !important;
@ -150,6 +174,37 @@
padding-right: 21px; padding-right: 21px;
} }
.result-text-container-ar {
padding: 0;
margin: 0;
position: absolute;
left: 54%;
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;
}
}
.result-text-container { .result-text-container {
padding: 0; padding: 0;
margin: 0; margin: 0;
@ -267,4 +322,36 @@ margin-top: -13px;
margin-left: 58px; margin-left: 58px;
margin-bottom: 12px; margin-bottom: 12px;
padding-right: 5px; padding-right: 5px;
}
.div-green{
position: relative;
left: 77%;
bottom: 117px;
color: black;
background-color: #22c6b3;
width: 20%; height: 6px;
}
.div-green-ar{
position: relative;
// left: 77%;
bottom: 117px;
color: black;
background-color: #22c6b3;
width: 20%; height: 6px;
}
.div-blue{
position: relative;
left: 77%;
bottom: 67px;
color: black;
background-color: #094875;
width: 20%; height: 6px;
}
.div-blue-ar{
position: relative;
// left: 77%;
bottom: 67px;
color: black;
background-color: #094875;
width: 20%; height: 6px;
} }

@ -42,6 +42,7 @@ export class HomeComponent implements OnInit {
sliderOne: any; sliderOne: any;
payslipIndex :any; payslipIndex :any;
data:any; data:any;
public direction: string;
@ViewChild('slides') slides: IonSlides; @ViewChild('slides') slides: IonSlides;
@ViewChild('slideWithNav') slideWithNav: IonSlides; @ViewChild('slideWithNav') slideWithNav: IonSlides;
@ViewChild('chart') chart: UIChart; @ViewChild('chart') chart: UIChart;
@ -57,6 +58,7 @@ export class HomeComponent implements OnInit {
tooltips: { enabled: false }, tooltips: { enabled: false },
legend: { display: false }}; legend: { display: false }};
gaugeType = "full"; gaugeType = "full";
// gaugeValue = 11.200; // gaugeValue = 11.200;
// gaugeLabel = ""; // gaugeLabel = "";
@ -70,10 +72,13 @@ export class HomeComponent implements OnInit {
public cs: CommonService, public cs: CommonService,
) {} ) {
this.direction = TranslatorService.getCurrentDirection();
}
ngOnInit() { ngOnInit() {
this.direction = TranslatorService.getCurrentLanguageName()
// this.selEmp = this.common.sharedService.getSharedData( // this.selEmp = this.common.sharedService.getSharedData(
// MenuResponse.SHARED_SEL_EMP, // MenuResponse.SHARED_SEL_EMP,
// false // false

@ -1,7 +1,7 @@
<ion-content class="colorBG"> <ion-content class="colorBG">
<div class="header-div"> <div class="header-div">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button> <nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons>
</ion-buttons> </ion-buttons>
<p class="proTitles">{{ts.trPK('userProfile','title')}}</p> <p class="proTitles">{{ts.trPK('userProfile','title')}}</p>
@ -26,16 +26,16 @@
<div class="gridService"> <div class="gridService">
<ion-row> <ion-row>
<ion-col class="columns"> <ion-col class="columns">
<label class="service">{{personalInfo.SERVICE_YEARS}}</label> <label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_YEARS}}</label>
<br> <label class="services">YEARS</label> <br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','years')}}</label>
</ion-col> </ion-col>
<ion-col class="columns"> <ion-col class="columns">
<label class="service">{{personalInfo.SERVICE_MONTHS}}</label> <label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_MONTHS}}</label>
<br> <label class="services">MONTHS</label> <br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('userProfile','months')}}</label>
</ion-col> </ion-col>
<ion-col class="columns"> <ion-col class="columns">
<label class="service">{{personalInfo.SERVICE_DAYS}}</label> <label [ngClass]=" direction == 'ltr' ? 'service' : 'service-ar'">{{personalInfo.SERVICE_DAYS}}</label>
<br> <label class="services">DAYS</label> <br> <label [ngClass]=" direction == 'ltr' ? 'services' : 'services-ar'">{{ts.trPK('absenceList','days')}}</label>
</ion-col> </ion-col>
</ion-row> </ion-row>
@ -47,7 +47,7 @@
<div class="list"> <div class="list">
<ion-list class="list-ios"> <ion-list class="list-ios">
<div class="p"> <div class="p">
<p>Years of Services</p> <p>{{ts.trPK('userProfile','Years of Services')}}</p>
</div> </div>
<ion-item class="itemline" (click)="openEditprofile()"> <ion-item class="itemline" (click)="openEditprofile()">
@ -58,7 +58,7 @@
<ion-label class="profile"> <ion-label class="profile">
{{ts.trPK('userProfile','edit-profile')}} {{ts.trPK('userProfile','edit-profile')}}
</ion-label> </ion-label>
<ion-icon style= "width: 20px; height: 22px !important;" name="arrow-forward" item-right></ion-icon> <ion-icon [ngClass]=" direction == 'ltr' ? 'arrow' : 'arrow-ar'" name="arrow-forward" item-right></ion-icon>
</ion-item> </ion-item>
<ion-item class="itemlins" (click)="openPerormance()"> <ion-item class="itemlins" (click)="openPerormance()">
@ -69,7 +69,7 @@
<ion-label class="profile"> <ion-label class="profile">
{{ts.trPK('userProfile','performance-evaluation')}} {{ts.trPK('userProfile','performance-evaluation')}}
</ion-label> </ion-label>
<ion-icon style= "width: 20px; height: 22px !important;" name="arrow-forward" item-right></ion-icon> <ion-icon [ngClass]=" direction == 'ltr' ? 'arrow' : 'arrow-ar'" name="arrow-forward" item-right></ion-icon>
</ion-item> </ion-item>
</ion-list> </ion-list>

@ -106,6 +106,18 @@
font-size: 12px; font-size: 12px;
color: white; color: white;
} }
.service-ar{
font-size: 28px;
color: white;
letter-spacing: 1px;
font-weight: bold;
margin-right: 26px;
}
.services-ar{
font-size: 14px;
color: white;
margin-right: 25px;
}
.list{ .list{
margin-left: 14px; margin-left: 14px;
@ -150,4 +162,14 @@
margin-top: 4px; margin-top: 4px;
} }
.arrow{
width: 20px;
height: 22px !important;
}
.arrow-ar{
float: left;
font-size: 25px;
color: grey;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
}

@ -21,7 +21,7 @@ export class EditProfileComponent implements OnInit {
User_name_Emp: string = ""; User_name_Emp: string = "";
User_Job_name: string; User_Job_name: string;
public direction: string;
private menu: MenuController; private menu: MenuController;
setImage:any; setImage:any;
// imageSrc: any = "../assets/imgs/profile.png"; // imageSrc: any = "../assets/imgs/profile.png";
@ -44,6 +44,7 @@ export class EditProfileComponent implements OnInit {
) )
{ {
this.direction = TranslatorService.getCurrentDirection();
this.events.subscribe("img-change", displayImg => { this.events.subscribe("img-change", displayImg => {
console.log("app compont: "+displayImg); console.log("app compont: "+displayImg);
this.user_image = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+displayImg); this.user_image = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+displayImg);
@ -107,7 +108,7 @@ private handlePerformanceAppraisalResult(result){
this.performanceData=[]; this.performanceData=[];
for(let i=0;i<this.appraisalArr.length;i++){ for(let i=0;i<this.appraisalArr.length;i++){
this.performanceData.push({name:this.appraisalArr[i].APPRAISAL_YEAR,value :this.appraisalArr[i].APPRAISAL_SCORE}); this.performanceData.push({name:this.appraisalArr[i].APPRAISAL_YEAR,value :parseInt(this.appraisalArr[i].APPRAISAL_SCORE).toFixed()});
} }
console.log("PerformanceAppraisalResponse"); console.log("PerformanceAppraisalResponse");
this.sharedData.setSharedData(this.performanceData, PerformanceAppraisalResponse.PERFORMANCE_DATA); this.sharedData.setSharedData(this.performanceData, PerformanceAppraisalResponse.PERFORMANCE_DATA);

@ -10,13 +10,21 @@
</div> </div>
</ion-header> --> </ion-header> -->
<ion-header >
<ion-toolbar class="header-toolbar-new">
<ion-title color="light">{{ts.trPK('userProfile','title')}}</ion-title>
<ion-buttons slot="start">
<nav-buttons></nav-buttons>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="colorBG"> <ion-content class="colorBG">
<div class="header-div"> <div class="header-div">
<ion-buttons slot="start"> <!-- <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button> <ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons> </ion-buttons>
<p class="proTitles">{{ts.trPK('userProfile','title')}}</p> <p class="proTitles">{{ts.trPK('userProfile','title')}}</p> -->
<!-- <div class="centerDiv profileDiv"> --> <!-- <div class="centerDiv profileDiv"> -->
<div class="centerDiv homeBox"> <div class="centerDiv homeBox">
@ -32,7 +40,7 @@
</div> </div>
<div class="changeImgBtn"> <div [ngClass]=" direction == 'ltr' ? 'changeImgBtn' : 'changeImgBtn-ar'">
<button ion-button icon-only menuToggle class="menubutton" (click)="ChangeImage()"> <button ion-button icon-only menuToggle class="menubutton" (click)="ChangeImage()">
<ion-icon (click)="ChangeImage();" class="changeIcon" name="md-create"></ion-icon> <ion-icon (click)="ChangeImage();" class="changeIcon" name="md-create"></ion-icon>
</button> </button>

@ -50,6 +50,11 @@ ion-col.colBold, ion-col.colBold > label{
top: 80%; top: 80%;
left: 65%; left: 65%;
} }
.changeImgBtn-ar{
position: absolute;
top: 80%;
left: 74%;
}
.profileImg{ .profileImg{
width: 160px; width: 160px;
height: 160px; height: 160px;

@ -14,6 +14,7 @@ export class HomeComponent implements OnInit {
personalInfo: any; personalInfo: any;
setImage:any; setImage:any;
imageSrc: any = "../assets/imgs/profile.png"; imageSrc: any = "../assets/imgs/profile.png";
public direction: string;
// user_image: any = "../assets/imgs/profile.png"; // user_image: any = "../assets/imgs/profile.png";
constructor( constructor(
public ts: TranslatorService, public ts: TranslatorService,
@ -24,7 +25,7 @@ export class HomeComponent implements OnInit {
) { ) {
this.direction = TranslatorService.getCurrentDirection();
this.events.subscribe("img-change", displayImg => { this.events.subscribe("img-change", displayImg => {
// alert("1 - profile home : "+displayImg); // alert("1 - profile home : "+displayImg);
//this.user_image = "data:image/png;base64"+displayImg; //this.user_image = "data:image/png;base64"+displayImg;

@ -1,12 +1,22 @@
<ion-header >
<ion-toolbar class="header-toolbar-new">
<ion-title color="light">{{ts.trPK('userProfile','performance')}}</ion-title>
<ion-buttons slot="start">
<nav-buttons></nav-buttons>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content class="colorBG"> <ion-content class="colorBG">
<div class="header-div"> <div class="header-div">
<ion-buttons slot="start"> <!-- <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button> <ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons> </ion-buttons>
<p class="proTitles">{{ts.trPK('userProfile','performance')}}</p> <p class="proTitles">{{ts.trPK('userProfile','performance')}}</p> -->
<div class="profilediv"> <div class="profilediv">
<img class="profileImg" [src]="user_image"> <!-- <img class="profileImg" [src]="user_image"> -->
</div> </div>
<!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> --> <!-- <ion-img class="profileImg" [src]="imageSrc"></ion-img> -->
@ -15,12 +25,12 @@
<ion-grid> <ion-grid>
<div class="grid"> <div class="grid">
<ion-row> <ion-row>
<p class="Text">Performance Evaluation</p> <p [ngClass]=" direction == 'ltr' ? 'Text' : 'Text-ar'">{{ts.trPK('userProfile','performance-evaluation')}}</p>
<div class="gauge">
<div [ngClass]=" direction == 'ltr' ? 'gauge' : 'gauge-ar'" >
<ngx-charts-gauge [view]="view" [scheme]="colorScheme" [results]="performanceData" [min]="0" [max]="100" <!-- [showText]="showText" -->
<ngx-charts-gauge [view]="view" [scheme]="colorScheme" [results]="performanceData" [min]="0" [max]="100"
[angleSpan]="240" [startAngle]="-120" [bigSegments]="5" [angleSpan]="240" [startAngle]="-120" [bigSegments]="5"
[smallSegments]="10" (select)="onSelect($event)"> [smallSegments]="10" (select)="onSelect($event)">
</ngx-charts-gauge> </ngx-charts-gauge>
@ -55,11 +65,11 @@
<ion-col *ngFor="let data of performanceData ;let i = index" [ngClass]="length % 2 != 0 && i == length - 1 ? 'rightgrid' : 'leftgrid'" > <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> <div class="performancecolor" [style.background]="data.color"></div>
<br> <br>
<label class="label"> Your Performance In </label> <label [ngClass]=" direction == 'ltr' ? 'label' : 'label-ar'"> {{ts.trPK('userProfile','your-performance')}} </label>
<label class="label"> {{data.name}} </label> <label [ngClass]=" direction == 'ltr' ? 'label' : 'label-ar'"> {{data.name}} </label>
<br> <br>
<label class="labelvalue"> {{data.value}} </label> <label [ngClass]=" direction == 'ltr' ? 'labelvalue' : 'labelvalue-ar'"> {{data.value}} </label>
<label class="percentage"> %</label> <label [ngClass]=" direction == 'ltr' ? 'percentage' : 'percentage-ar'"> %</label>
</ion-col> </ion-col>
</ion-row> </ion-row>
</div> </div>

@ -76,6 +76,19 @@
text-align: center; text-align: center;
margin-left: 74px; margin-left: 74px;
} }
.Text-ar{
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-right: 131px;
}
.leftgrid{ .leftgrid{
margin-left: 10px; margin-left: 10px;
@ -120,19 +133,37 @@
margin-top: -7px !important; margin-top: -7px !important;
font-weight: bold !important; font-weight: bold !important;
} }
.label-ar{
font-size: 15px !important;
margin-top: -7px !important;
font-weight: bold !important;
}
.labelvalue{ .labelvalue{
font-size: 28px !important; font-size: 25px !important;
font-weight: bold !important; font-weight: bold !important;
margin-top: 7px !important; margin-top: 7px !important;
margin-left: 72px !important; margin-left: 90px !important;
}
.labelvalue-ar{
font-size: 24px !important;
font-weight: bold !important;
/* margin-top: 7px !important; */
margin-right: 19px !important;
} }
.percentage{ .percentage{
font-size: 15px !important; font-size: 19px !important;
margin-top: 15px !important; margin-top: 15px !important;
} }
.percentage-ar{
font-size: 19px !important;
margin-right: -54px;
}
.gauge{ .gauge{
transform: translate(-24px, -65px); transform: translate(-24px, -65px);
@ -140,5 +171,11 @@
margin-top: -20px; margin-top: -20px;
} }
.gauge-ar{
transform: translate(-24px, -65px);
margin-bottom: -187px;
margin-top: -20px;
margin-right: -56px;
}

@ -19,56 +19,61 @@ import { AuthenticatedUser } from "src/app/hmg-common/services/authentication/mo
export class PerformanceEvaluationComponent implements OnInit { export class PerformanceEvaluationComponent implements OnInit {
personalInfo: any; personalInfo: any;
user_image: any = "../assets/imgs/profile.png"; user_image: any = "../assets/imgs/profile.png";
setImage:any; setImage: any;
view: any = [380, 450]; view: any = [380, 450];
public performanceData: any=[]; public performanceData: any = [];
public length; public length;
public direction: string;
// public showText:boolean =false;
constructor(public ts: TranslatorService,
constructor( public ts: TranslatorService,
public cs: CommonService, public cs: CommonService,
public DS :DashboredService, public DS: DashboredService,
public authService: AuthenticationService, public authService: AuthenticationService,
// private events: Events, // private events: Events,
// private sanitizer: DomSanitizer, // private sanitizer: DomSanitizer,
) { ) {
this.direction = TranslatorService.getCurrentDirection();
// this.events.subscribe("img-change", displayImg => { // this.events.subscribe("img-change", displayImg => {
// console.log("app compont: "+displayImg); // console.log("app compont: "+displayImg);
// this.user_image = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+displayImg); // this.user_image = this.sanitizer.bypassSecurityTrustUrl("data:Image/*;base64,"+displayImg);
// });
}
// });
}
colorScheme = {
domain: ['#22C6B3', '#094875', '#3CB9D5', '#1FA269', '#0D155E']
};
colorScheme = {
domain: ['#22C6B3', '#094875','#3CB9D5','#1FA269','#0D155E']
};
ngOnInit() { ngOnInit() {
this.getProfile(); this.getProfile();
this.performanceData = this.cs.sharedService.getSharedData( this.performanceData = this.cs.sharedService.getSharedData(
PerformanceAppraisalResponse.PERFORMANCE_DATA, PerformanceAppraisalResponse.PERFORMANCE_DATA,
true true
); );
console.log(this.performanceData.length); console.log(this.performanceData.length);
//i % 2 == 0 //i % 2 == 0
this.length=this.performanceData.length; this.length = this.performanceData.length;
for(let i=0;i<this.performanceData.length;i++){ for (let i = 0; i < this.performanceData.length; i++) {
this.performanceData[i].color =this.colorScheme.domain[i]; this.performanceData[i].color = this.colorScheme.domain[i];
console.log( i+" : "+this.performanceData[i].name) console.log(i + " : " + this.performanceData[i].name)
} }
console.log( this.performanceData[0].color) console.log(this.performanceData[0].color)
}
}
ngAfterViewInit() {
document.querySelector("svg .gauge.chart > text").remove();
}
getProfile() { getProfile() {
console.log("getProfile"); console.log("getProfile");
@ -78,11 +83,12 @@ export class PerformanceEvaluationComponent implements OnInit {
if (user) { if (user) {
this.personalInfo = user; this.personalInfo = user;
this.user_image = user.EMPLOYEE_IMAGE this.user_image = user.EMPLOYEE_IMAGE
? "data:image/png;base64," + user.EMPLOYEE_IMAGE ? "data:image/png;base64," + user.EMPLOYEE_IMAGE
: "../assets/imgs/profile.png"; : "../assets/imgs/profile.png";
}
});
}
}});
}
} }

@ -1,9 +1,11 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light" > {{ts.trPK('userProfile','changepicture')}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button> <nav-buttons></nav-buttons>
<!-- <ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button> -->
</ion-buttons> </ion-buttons>
<ion-title color="light" > {{ts.trPK('userProfile','changepicture')}}</ion-title>
<ion-buttons slot="end"> <ion-buttons slot="end">
<button style="color: white !important;" class="headerBtn" *ngIf="saveChange != ''" (click)="updateImageProfile();" > <button style="color: white !important;" class="headerBtn" *ngIf="saveChange != ''" (click)="updateImageProfile();" >
{{ts.trPK('general','save')}} {{ts.trPK('general','save')}}

@ -8,7 +8,9 @@
// background: transparent; // background: transparent;
// border-radius: 50% !important; // border-radius: 50% !important;
// } // }
.header-toolbar-new{
--background: #22c6b3;
}
.imgCircle{ .imgCircle{
// width: 90px; // width: 90px;

@ -1,9 +1,11 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-title>{{ts.trPK('home','monthly-attendance')}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons backLink="/home"></nav-buttons> <!-- <nav-buttons backLink="/home"></nav-buttons> -->
<nav-buttons></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title>MONTHLY ATTENDANCE</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
@ -12,7 +14,7 @@
<div> <div>
<div class="header"> <div class="header">
<div> <div>
<ion-row> <ion-row *ngIf="direction == 'ltr'">
<ion-col [size]="2" style="text-align: left;"> <ion-col [size]="2" style="text-align: left;">
<ion-icon class="activeArrow" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle" (click)="previousSlide()"></ion-icon> <ion-icon class="activeArrow" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle" (click)="previousSlide()"></ion-icon>
</ion-col> </ion-col>
@ -23,12 +25,24 @@
<ion-icon [ngClass]=" currentMonthName === month ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle" (click)="nextSlide()"></ion-icon> <ion-icon [ngClass]=" currentMonthName === month ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle" (click)="nextSlide()"></ion-icon>
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row *ngIf="direction == 'rtl'">
<ion-col [size]="2" style="text-align: left;">
<ion-icon class="activeArrow" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle" (click)="previousSlide()"></ion-icon>
</ion-col>
<ion-col [size]="8" style="text-align: center;">
<span class="month-year-span">{{month}} {{year}}</span>
</ion-col>
<ion-col [size]="2" style="text-align: right;">
<ion-icon [ngClass]=" currentMonthName === month ? 'disabledArrow' : 'activeArrow'" ios="ios-arrow-dropleft-circle" md="md-arrow-dropleft-circle" (click)="nextSlide()"></ion-icon>
</ion-col>
</ion-row>
</div> </div>
</div> </div>
<div class="result-graph"> <div class="result-graph">
<div class="request-heading"> <div >
<span>{{ts.trPK('myTeam','attendance-statistics')}}</span> <span [ngClass]="direction == 'ltr' ? 'request-heading':'request-heading-ar' ">{{ts.trPK('myTeam','attendance-statistics')}}</span>
</div> </div>
<div style="position: relative;"> <div style="position: relative;">
<div class="label-container"> <div class="label-container">
@ -81,7 +95,7 @@
</ion-col> </ion-col>
</ion-row> </ion-row>
<div *ngIf="showData" class="calendar-container"> <div *ngIf="showData" [ngClass]="direction == 'ltr' ? 'calendar-container':'calendar-container-ar' ">
<span> {{ts.trPK('attendance','monthly-attendance-calendar')}}</span> <span> {{ts.trPK('attendance','monthly-attendance-calendar')}}</span>
<app-circle-calendar <app-circle-calendar
[currentDateParent]="currentDate" [currentDateParent]="currentDate"

@ -495,8 +495,8 @@ ion-title{
position: absolute; position: absolute;
top: 0; top: 0;
text-align: center; text-align: center;
left: 15%; // left: 15%;
right: 15%; // right: 15%;
font-size: 0.42cm; font-size: 0.42cm;
font-weight: bold; font-weight: bold;
height: 100%; height: 100%;
@ -719,6 +719,7 @@ $actionBtnSize : 36px;
color: gray; color: gray;
} }
.result-graph { .result-graph {
position: relative; position: relative;
background: white; background: white;
@ -729,14 +730,22 @@ $actionBtnSize : 36px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.request-heading { .request-heading {
span { // span {
text-align: left; text-align: left;
display: block; display: block;
padding-top: 8px; padding-top: 8px;
margin-bottom: 10px; margin-bottom: 10px;
margin-left: 10px; margin-left: 10px;
} // }
} }
.request-heading-ar{
text-align: left;
display: block;
padding-top: 8px;
margin-bottom: 10px;
margin-left: 215px;
}
.result-text-container { .result-text-container {
padding: 0; padding: 0;
margin: 0; margin: 0;
@ -901,6 +910,19 @@ $actionBtnSize : 36px;
margin-left: 10px; margin-left: 10px;
} }
} }
.calendar-container-ar{
background: white;
margin-bottom: 100px;
margin-top: 20px;
border-radius: 20px;
span{
text-align: left;
display: block;
padding-top: 8px;
margin-bottom: 10px;
margin-left: 196px;
}
}

@ -22,13 +22,17 @@ export class TimeCardDetailsComponent implements OnInit {
year: any; year: any;
preMonth: number; preMonth: number;
nextMonth: any; nextMonth: any;
public direction: string;
constructor( constructor(
public timeCardService: TimeCardService, public timeCardService: TimeCardService,
public common: CommonService, public common: CommonService,
public modalController: ModalController, public modalController: ModalController,
public sharedData: SharedDataService, public sharedData: SharedDataService,
public ts: TranslatorService public ts: TranslatorService
) { } ) {
this.direction = TranslatorService.getCurrentDirection();
console.log(this.direction);
}
public showMore: any = true; public showMore: any = true;
public menuType: any; public menuType: any;
@ -62,6 +66,7 @@ export class TimeCardDetailsComponent implements OnInit {
public currentYear = new Date().getFullYear(); public currentYear = new Date().getFullYear();
public dayHoursTypeDetailsList = []; public dayHoursTypeDetailsList = [];
public currentDate = new Date(); public currentDate = new Date();
public options = { public options = {
cutoutPercentage: 80, cutoutPercentage: 80,
tooltips: { enabled: false }, tooltips: { enabled: false },

@ -1,7 +1,9 @@
import { UiElement } from "./ui-element"; import { UiElement } from "./ui-element";
import { TranslatorService } from '../hmg-common/services/translator/translator.service';
export class SelectInput extends UiElement { export class SelectInput extends UiElement {
public direction: string;
constructor( constructor(
private label: string, private label: string,
private elementId: string, private elementId: string,
@ -11,25 +13,49 @@ export class SelectInput extends UiElement {
private hidden: string, private hidden: string,
private required: string) { private required: string) {
super(elementId, containerId, ''); super(elementId, containerId, '');
this.direction = TranslatorService.getCurrentLanguageName();
this.createElement(this.getTemplate()); this.createElement(this.getTemplate());
} }
public getTemplate() { public getTemplate() {
let template :string = "";
let requiredClass: string = ""; let requiredClass: string = "";
if (this.required == 'Y') if (this.required == 'Y')
requiredClass = "requiredClass" requiredClass = "requiredClass"
if (this.disabled == "N") { this.disabled = "disabled" } else { this.disabled = "" } if (this.disabled == "N") { this.disabled = "disabled" } else { this.disabled = "" }
if (this.hidden == "N") { this.hidden = "display:none;" } else { this.hidden = "" } if (this.hidden == "N") { this.hidden = "display:none;" } else { this.hidden = "" }
const template = // const template =
"<div class='custom-text-area-element dynamicField' style='"+this.hidden+"'>" + // "<div class='custom-text-area-element dynamicField' style='"+this.hidden+"'>" +
" <label class='daynamicForm-Label "+requiredClass+"' id='title' >" + this.label + "</label>" + // " <label class='daynamicForm-Label "+requiredClass+"' id='title' >" + this.label + "</label>" +
" <select class='daynamicForm-Select' id='" + this.elementId + "' "+this.disabled+">"+ // " <select [ngClass]= direction == 'en'? 'daynamicForm-Select' : 'ardaynamicForm-Select' id='" + this.elementId + "' "+this.disabled+">"+
"<option value='"+this.value+"' >"+this.value+"</option>"+ // "<option value='"+this.value+"' >"+this.value+"</option>"+
"</select>"+ // "</select>"+
"</div> "; // "</div> ";
if(this.direction == 'en'){
template =
"<div class='custom-text-area-element dynamicField' style='"+this.hidden+"'>" +
" <label class='daynamicForm-Label "+requiredClass+"' id='title' >" + this.label + "</label>" +
" <select class='daynamicForm-Select' id='" + this.elementId + "' "+this.disabled+">"+
"<option value='"+this.value+"' >"+this.value+"</option>"+
"</select>"+
"</div> ";
}
else{
template =
"<div class='custom-text-area-element dynamicField' style='"+this.hidden+"'>" +
" <label class='ardaynamicForm-Label "+requiredClass+"' id='title' >" + this.label + "</label>" +
" <select class='ardaynamicForm-Select' id='" + this.elementId + "' "+this.disabled+">"+
"<option value='"+this.value+"' >"+this.value+"</option>"+
"</select>"+
"</div> ";
}
//[ngClass]=\"{\'daynamicForm-Select\': !ar,\'daynamicForm-Selects\':ar}\
// [ngClass]= direction == 'en'? 'daynamicForm-Select' : 'daynamicForm-Selects'
// [ngClass]=" direction === 'rtl' ? 'daynamicForm-Selects' : 'daynamicForm-Select'"
// class='daynamicForm-Select' id='" + this.elementId + "'
// "<ion-item style='" + this.hidden + "'>" + // "<ion-item style='" + this.hidden + "'>" +

@ -1,6 +1,8 @@
import { UiElement } from "./ui-element"; import { UiElement } from "./ui-element";
// import { TranslatorService } from '../hmg-common/services/translator/translator.service';
export class TimeInput extends UiElement { export class TimeInput extends UiElement {
// public direction: string;
constructor( constructor(
private label: string, private label: string,
private elementId: string, private elementId: string,
@ -10,6 +12,7 @@ export class TimeInput extends UiElement {
private hidden: string, private hidden: string,
private required: string) { private required: string) {
super(elementId, containerId, ''); super(elementId, containerId, '');
// this.direction = TranslatorService.getCurrentLanguageName();
this.createElement(this.getTemplate()); this.createElement(this.getTemplate());
} }
@ -21,6 +24,7 @@ export class TimeInput extends UiElement {
public getTemplate() { public getTemplate() {
let requiredClass: string = ""; let requiredClass: string = "";
let disaledClass = ""; let disaledClass = "";
if (this.required == 'Y') if (this.required == 'Y')
@ -31,11 +35,12 @@ export class TimeInput extends UiElement {
this.formatDate(); this.formatDate();
} }
const template = const template =
"<div class='custom-text-area-element dynamicField' style='"+this.hidden+"'>" + "<div class='custom-text-area-element' style='"+this.hidden+"'>" +
" <label class='daynamicForm-Label "+requiredClass+"' id='title' >" + this.label + "</label>" + " <label class='daynamicForm-Label "+requiredClass+"' id='title' >" + this.label + "</label>" +
// " <input class='daynamicForm-DateTime' type='time' id='" + this.elementId + "' value='" + this.value + "' "+this.disabled+" />"+ // " <input class='daynamicForm-DateTime' type='time' id='" + this.elementId + "' value='" + this.value + "' "+this.disabled+" />"+
" <div class='daynamicForm-DateTime "+disaledClass+"' id='" + this.elementId + "' data-dtvalue='" + this.value + "' "+this.disabled+">"+this.value+"</div>"+ " <div class='daynamicForm-DateTime "+disaledClass+"' id='" + this.elementId + "' data-dtvalue='" + this.value + "' "+this.disabled+">"+this.value+"</div>"+
"</div> "; "</div> ";
// "<ion-item>" + // "<ion-item>" +
// " <ion-label style='font-size: medium !important;' id='title' >" + this.label + "</ion-label>" + // " <ion-label style='font-size: medium !important;' id='title' >" + this.label + "</ion-label>" +

@ -1,11 +1,11 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<!-- <nav-buttons></nav-buttons> --> <!-- <nav-buttons></nav-buttons> -->
<ion-title color="light">{{ 'vacation-rule, vacationRule' | translate}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button> <!-- <ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button> -->
<nav-buttons></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title color="light">{{ 'vacation-rule, vacationRule' | translate}}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>

@ -1,9 +1,11 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar-new"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light">{{ 'vacation-rule, vacation-type' | translate}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/vacation-rule/home" ></ion-back-button> <!-- <ion-back-button color="light" class="btnBack" defaultHref="/vacation-rule/home" ></ion-back-button> -->
<nav-buttons></nav-buttons>
</ion-buttons> </ion-buttons>
<ion-title color="light">{{ 'vacation-rule, vacation-type' | translate}}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>

@ -884,6 +884,23 @@
"en": "Work List", "en": "Work List",
"ar": "قائمة العمل" "ar": "قائمة العمل"
}, },
"pending-request":{
"en":"Penading Request",
"ar":"طلبات قيد الانتظار"
},
"missing-swipes":{
"en":"Missing Swipes",
"ar":"البصمات المفقوده"
},
"leave-balance":{
"en":"Leave Balance",
"ar":"رصيد الاجزات"
},
"":{
"en":"",
"ar":""
},
"possitionAlert": { "possitionAlert": {
"en": "The app could not access your location. Make sure that the location service is enabled from your device settings", "en": "The app could not access your location. Make sure that the location service is enabled from your device settings",
"ar": "تعذر على التطبيق الوصول إلى موقعك. تأكد من تفعيل خدمة الموقع من إعدادات جهازك" "ar": "تعذر على التطبيق الوصول إلى موقعك. تأكد من تفعيل خدمة الموقع من إعدادات جهازك"
@ -919,6 +936,52 @@
"account-info": { "account-info": {
"en": "Would you like to login with current username?", "en": "Would you like to login with current username?",
"ar": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟" "ar": "هل ترغب في تسجيل الدخول باسم المستخدم الحالي؟"
},
"monthly-attendance":{
"en":"Monthly Attendance",
"ar":"الحضور الشهري"
},
"monthly-time-sheet-view":{
"en":"View your Monthly Time Sheet",
"ar":"عرض حضورك الشهري لساعات العمل"
},
"view-detail":{
"en":"View Detail",
"ar":"عرض التفاصيل"
},
"time-left":{
"en":"Time Left Today",
"ar":"باقي الوقت لليوم"
}
},
"work-list":{
"open-analysis":{
"en":"Open Request Analysis",
"ar":"فتح تحليل الطلب"
},
"total":{
"en":"Total",
"ar":"المجموع"
},
"open-reqest":{
"en":"OPEN REQUEST",
"ar":"الطلبات المفتوحه"
},
"clear-search":{
"en":"Clear Search",
"ar":"مسح البحث"
},
"of":{
"en":"of",
"ar":"من"
},
"advanced-search":{
"en":"Advanced Search",
"ar":"بحث متقدم"
},
"No-data-available":{
"en":"No Data Available",
"ar":"لا يوجد بيانات"
} }
}, },
"userProfile": { "userProfile": {
@ -938,6 +1001,10 @@
"en": "Performance", "en": "Performance",
"ar": "الاداء" "ar": "الاداء"
}, },
"your-performance": {
"en": "Your Performance In",
"ar": "ادائك في"
},
"changepicture":{ "changepicture":{
"en":"Change Picture", "en":"Change Picture",
"ar":"تغيير الصوره" "ar":"تغيير الصوره"
@ -974,6 +1041,18 @@
"en": "Employee Name", "en": "Employee Name",
"ar": "اسم الموظف " "ar": "اسم الموظف "
}, },
"years": {
"en": "Years",
"ar": "سنوات "
},
"years-of-services": {
"en": " Years of Services",
"ar": "سنوات الخبره"
},
"months": {
"en": "Months",
"ar": "اشهر "
},
"orgName": { "orgName": {
"en": "Organization Name", "en": "Organization Name",
"ar": "اسم المنشأة" "ar": "اسم المنشأة"
@ -1050,6 +1129,10 @@
"ar": "تقويم الحضور الشهري", "ar": "تقويم الحضور الشهري",
"en": "Monthly Attendance Calendar" "en": "Monthly Attendance Calendar"
}, },
"completed": {
"ar": "منجز",
"en": "Completed"
},
"present": { "present": {
"ar": "حضور", "ar": "حضور",
"en": "Present" "en": "Present"
@ -1222,12 +1305,12 @@
}, },
"confirm-msg-success": { "confirm-msg-success": {
"en" :"Are you sure, you want to Apply for Vacation Rule?", "en" :"Are you sure, you want to Apply for Vacation Rule?",
"ar" :"Are you sure, you want to Apply for Vacation Rule?" "ar" :" تريد التقديم على قواعد الاجازات ؟, هل انت متأكد"
}, },
"update-msg-success": { "update-msg-success": {
"en" :"Are you sure, you want to Update this Vacation Rule?", "en" :"Are you sure, you want to Update this Vacation Rule?",
"ar" :"Are you sure, you want to Update this Vacation Rule?" "ar" :"تريد تحديث قواعد الاجازات ؟, هل انت متأكد"
} }
}, },
@ -1350,7 +1433,7 @@
}, },
"todayAttendance": { "todayAttendance": {
"en": "Today's Attendance", "en": "Today's Attendance",
"ar": "Today's Attendance" "ar": "حضور اليوم"
}, },
"checkIn": { "checkIn": {
"en": "Check-In", "en": "Check-In",
@ -1366,7 +1449,7 @@
}, },
"attendance-statistics": { "attendance-statistics": {
"en": "Attendance Statistics", "en": "Attendance Statistics",
"ar": "Attendance Statistics" "ar": "احصائيات الحضور"
}, },
"myTeam-header": { "myTeam-header": {
"en": "My Team", "en": "My Team",
@ -1374,11 +1457,11 @@
}, },
"total": { "total": {
"en": "TOTAL", "en": "TOTAL",
"ar": "TOTAL" "ar": "المجموع"
}, },
"team-members": { "team-members": {
"en": "TEAM MEMBERS", "en": "TEAM MEMBERS",
"ar": "TEAM MEMBERS" "ar": "اعضاء الفريق"
} }
}, },
"searchForReplacment": { "searchForReplacment": {
@ -1459,6 +1542,22 @@
"deleteAttach": { "deleteAttach": {
"en": "Attachment deleted successfully", "en": "Attachment deleted successfully",
"ar": "تحديث" "ar": "تحديث"
},
"confirmation":{
"en":"Confirmation",
"ar":"تاكيد"
},
"no-attachment":{
"en":"No Attachment",
"ar":"لا يوجد مرفقات"
},
"no-note":{
"en":"No Note",
"ar":"لا يوجد ملاحظات"
},
"submit":{
"en":"Are you sure you want to submit?",
"ar":"هل انت متاكد من ارسال الطلب؟"
} }
}, },
"submitAbsence": { "submitAbsence": {
@ -2266,11 +2365,11 @@
}, },
"deductions-key":{ "deductions-key":{
"en": "DED", "en": "DED",
"ar":" " "ar":" المستقطع"
}, },
"earnings-key":{ "earnings-key":{
"en": "NET", "en": "NET",
"ar":" " "ar":"المكتسب "
}, },
"particular":{ "particular":{
"en": "Particular", "en": "Particular",
@ -2297,7 +2396,7 @@
"attendance-tracking": { "attendance-tracking": {
"title":{ "title":{
"en": "Mark Attendance", "en": "Mark Attendance",
"ar":"Mark Attendance " "ar":"علامة الحضور "
}, },
"check-in":{ "check-in":{
"en": "Check In", "en": "Check In",

@ -42,6 +42,9 @@ ion-label{
.profileDiv{ .profileDiv{
margin: 5px auto !important; margin: 5px auto !important;
} }
.profileDiv-ar{
margin: 16px auto !important;
}
.full-modal{ .full-modal{
--height:100%; --height:100%;
--width:100%; --width:100%;
@ -576,6 +579,37 @@ ion-col.colBold,ion-col.colBold>label{
} }
} }
.ardaynamicForm-Label{
font-size: 16px;
// margin-left: 15px;
color: #a2a5a6 !important;
display: block;
overflow: hidden;
-webkit-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
/* font-size: inherit; */
// text-overflow: ellipsis;
// white-space: nowrap;
white-space: normal;
// padding-top: 10px;
padding: 5px 0px;
padding-left: 10px !important;
margin: 10px auto;
margin-right: 12px !important;
:root[dir="ltr"]{
font-family: var(--fontFamilySemiBoldEN) !important;
}
:root[dir="rtl"]{
font-family: var(--fontFamilyIOSAR) !important;
font-weight: bold;
}
}
img.flipImg{ img.flipImg{
:root[dir="rtl"]{ :root[dir="rtl"]{
-webkit-transform: scaleX(-1); -webkit-transform: scaleX(-1);
@ -646,6 +680,7 @@ img.flipImg{
box-shadow: none; box-shadow: none;
-webkit-box-shadow:none; -webkit-box-shadow:none;
-moz-box-shadow: none; -moz-box-shadow: none;
margin-bottom: 8px;
} }
.daynamicForm-DateTime:after{ .daynamicForm-DateTime:after{
width: 0; width: 0;
@ -683,7 +718,55 @@ img.flipImg{
background-color: var(--light); background-color: var(--light);
border-bottom: var(--cusgray) solid 1px; border-bottom: var(--cusgray) solid 1px;
border-radius: 0px; border-radius: 0px;
margin-left: 20px; // margin-left: 20px;
margin-left: 34px;
margin-top: -10px;
// -webkit-appearance: none;
// -moz-appearance: none;
text-indent: 1px;
// text-overflow: '';
box-shadow: none;
-webkit-box-shadow:none;
-moz-box-shadow: none;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
:root[dir="ltr"]{
background-image: linear-gradient(45deg, transparent 50%, #999 50%), linear-gradient(135deg, #999 50%, transparent 50%), linear-gradient(to right, #ffffff, #ffffff);
background-position: calc(100% - 14px) calc(1em + 2px), calc(100% - 8px) calc(1em + 2px), 100% 0;
background-size: 6px 6px, 6px 6px, 2.9em 2.9em;
background-repeat: no-repeat;
padding-right: 20px;
}
:root[dir="rtl"]{
background-image: linear-gradient(-135deg, #999 50%, transparent 50%),linear-gradient(-45deg, transparent 50%, #999 50%), linear-gradient(to right, #ffffff, #ffffff);
background-position: calc(1em - 10px) calc(100% - 8px), calc(1em - 4px) calc(100% - 8px), 0 100%;
background-size: 6px 6px, 6px 6px, 2.9em 2.9em;
background-repeat: no-repeat;
padding-left: 20px;
}
}
.ardaynamicForm-Select{
color: var(--dark);
font-size: 15px;
// background: url(http://i62.tinypic.com/15xvbd5.png) no-repeat 96% 0;
// background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=), -webkit-gradient(linear, left bottom, left top, color-stop(50%, rgba(0, 0, 0, 0.12)), color-stop(50%, rgba(0, 0, 0, 0.12)));
// background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=), linear-gradient(to top, rgba(0, 0, 0, 0.12) 50%, rgba(0, 0, 0, 0.12) 50%);
// background-size: 96% 0;
// background-repeat: no-repeat;
border: none;
font-weight: 400;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
width: 80%;
padding: 6px 0px;
background-color: var(--light);
border-bottom: var(--cusgray) solid 1px;
border-radius: 0px;
margin-right: 34px;
margin-top: -10px; margin-top: -10px;
// -webkit-appearance: none; // -webkit-appearance: none;
// -moz-appearance: none; // -moz-appearance: none;
@ -712,6 +795,7 @@ img.flipImg{
} }
} }
.daynamicForm-Select:after{ .daynamicForm-Select:after{
width: 0; width: 0;
height: 0; height: 0;

@ -186,7 +186,24 @@ ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
/* z-index: 1; */ /* z-index: 1; */
} }
.timeline .timeline-thumb { .timeline-en .timeline-thumb {
border-radius: 500px;
width: 70px !important;
z-index: 2;
position: absolute;
left: 0px;
// :root[dir="ltr"]{
// left: 37px;
// }
// :root[dir="rtl"]{
// right: 37px;
// }
float: right;
top: 9px;
}
.timeline-ar .timeline-thumb {
border-radius: 500px; border-radius: 500px;
width: 70px !important; width: 70px !important;

Loading…
Cancel
Save