fixed conflicts

MOE_DEV_NEW_TEMPORARY_DESIGN
umasoodch 6 years ago
commit df9a283100

@ -186,7 +186,7 @@ ion-card-content.confirm-details{
.timeline .timeline-item {
width: 40px;
// width: 40px;
}
@ -199,8 +199,8 @@ ion-card-content.confirm-details{
.empImge{
border-radius: 50%;
width:100%;
height: 100%;
width:60px;
height: 60px;
border: #dedede solid 1px;
}

@ -19,11 +19,11 @@
</ion-item>
<ion-item lines="none">
<ion-button class="filterBtn" button-type="clear" (click)="getreplacmentemployee()" item-end>
<ion-button [ngClass]="direction == 'en'? 'filterBtn':'filterBtn-ar'" button-type="clear" (click)="getreplacmentemployee()" item-end>
<ion-icon slot="icon-only" color="white" name="search"></ion-icon>
</ion-button>
<ion-input class="filterInput" [(ngModel)]="inputSearch" placeholder='{{"general, search" | translate}}'></ion-input>
<ion-input [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="inputSearch" placeholder='{{"general, search" | translate}}'></ion-input>
<!-- <button ion-button icon-only (click)="getreplacmentemployee()" clear type="button" item-end>
<ion-icon name="search"></ion-icon>

@ -80,13 +80,50 @@ button.item-button.button.button-md.button-clear.button-clear-md {
border: solid var(--gray) 1px;
border-radius: 21px;
padding-left: 10px !important;
}
}
.filterInput-ar{
// border: solid var(--gray) 1px;
// border-radius: 21px;
// padding-left: 10px !important;
border: solid var(--gray) 1px;
border-radius: 21px;
padding-left: 145px !important;
margin-left: 86px;
padding-right: 129px;
margin-right: -143px;
}
// {padding-left: unset;
// padding-right: unset;
// -webkit-padding-start: var(--padding-start);
// padding-inline-start: var(--padding-start);
// -webkit-padding-end: var(--padding-end);
// padding-inline-end: var(--padding-end);
// margin-left: -53x;
// margin-right: 37px;}
.filterBtn{
background: var(--newgreen);
--background: var (--newgreen);
border-radius: 50%;
height: 60px;
width: 60px;
}
.filterBtn-ar{
// background: var(--newgreen);
// --background: var (--newgreen);
// border-radius: 50%;
// height: 60px;
// width: 60px;
background: var(--newgreen);
--background: var (--newgreen);
border-radius: 50%;
height: 60px;
width: 60px;
margin-left: -181px;
margin-right: 269px;
}

@ -39,7 +39,7 @@ export class AbsenceReplacementListComponent implements OnInit {
getpassResAttr: any = [];
active: any;
demoeAttach:any=[];
public direction: string;
constructor(public worklistService: WorklistService, private cs: CommonService, private ts: TranslatorService, public workListMainService: WorklistMainService, public modalCtrl: ModalController) {
this.P_PAGE_NUM = 1;
this.P_PAGE_LIMIT = 50;
@ -52,7 +52,7 @@ export class AbsenceReplacementListComponent implements OnInit {
// }
this.WorkListReplacmentEmployeeObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.WorkListReplacmentEmployeeObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.direction = TranslatorService.getCurrentLanguageName();
// this.WorkListActionObj = new WorkListActionRequest();
// this.WorkListActionObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;//26919060;
// this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";

@ -86,22 +86,22 @@
<div [ngClass]=" direction == 'ltr' ? 'div-red' : 'div-red-ar'">
<ion-col>
<ion-row>
<label class="blue-label">{{ts.trPK('absenceList','accrualUsed')}}</label>
<label class="red-label">{{ts.trPK('absenceList','accrualUsed')}}</label>
</ion-row>
<ion-row>
<label class="blue-amount" for="">{{accrualUsed}}</label>
<label class="red-amount" for="">{{accrualUsed}}</label>
</ion-row>
</ion-col>
</div>
<div [ngClass]=" direction == 'ltr' ? 'div-orng' : 'div-orng-ar'">
<ion-col>
<ion-row>
<label class="blue-label">{{ts.trPK('absenceList','accrualYearly')}}</label>
<label class="orng-label">{{ts.trPK('absenceList','accrualYearly')}}</label>
</ion-row>
<ion-row>
<label class="blue-amount" for="">{{accrualYearly}}</label>
<label class="orng-amount" for="">{{accrualYearly}}</label>
</ion-row>
</ion-col>
</div>
@ -235,10 +235,10 @@
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
<ion-icon class="addClass" name="add" (click)="createAbsence()"></ion-icon>
</div>
</ion-content>
<ion-icon class="addClass" name="add" (click)="createAbsence()"></ion-icon>
<!-- <ion-footer>
<div class="centerDiv">
<ion-button color="customnavy" class="gridBtn" (click)="createAbsence()">{{ts.trPK('absenceList','createAbs')}}</ion-button>

@ -138,14 +138,21 @@
margin-left: -70px !important;
}
.today-graph-ar{
display: block !important;
height: 196px;
width: 385px;
padding-left: 51px;
// 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;
display: block !important;
height: 175px;
width: 320px;
padding-left: 51px;
font-size: 14px;
margin-left: -48px;
margin-right: 63px;
margin-right: 116px;
margin-bottom: -30px;
}
@ -201,22 +208,32 @@ margin-top: -13px;
}
.green-amount{
font-size: 17px;
font-size: 15px;
font-family: WorkSans-Bold;
margin-top: -3px;
margin-top: 0px;
}
.blue-label{
.red-label{
font-size: 12px;
margin-top: -13px;
}
.blue-amount{
font-size: 17px;
.red-amount{
font-size: 15px;
font-family: WorkSans-Bold;
margin-top: -4px;
margin-top: 0px;
}
.orng-label{
font-size: 12px;
margin-top: -13px;
}
.orng-amount{
font-size: 15px;
font-family: WorkSans-Bold;
margin-top: 0px;
}
.contentEit:before {
position: absolute;
content: "";
@ -233,7 +250,7 @@ margin-top: -13px;
bottom: 128px;
color: black;
background-color: #1FA269;
width: 13%;
width: 11%;
height: 6px;
}
.div-green-ar{
@ -241,7 +258,7 @@ margin-top: -13px;
bottom: 59px;
color: black;
background-color: #1FA269;
width: 13%;
width: 11%;
height: 6px;
right: 9px;
@ -251,11 +268,9 @@ margin-top: -13px;
bottom: 131px;
color: black;
background-color: #CB3232;
// background-color: #094875;
// background-color: #DDB017;
width: 13%;
width: 11%;
height: 6px;
right: 78px;
right: 102px;
}
.div-red{
position: relative;
@ -264,7 +279,7 @@ margin-top: -13px;
color: black;
background-color: #CB3232;
// background-color: #094875;
width: 13%;
width: 11%;
height: 6px;
}
@ -275,7 +290,7 @@ margin-top: -13px;
color: black;
// background-color: #CB3232;
background-color: #DDB017;
width: 13%;
width: 11%;
height: 6px;
}
.div-orng-ar{
@ -284,7 +299,7 @@ margin-top: -13px;
color: black;
// background-color: #CB3232;
background-color: #DDB017;
width: 13%;
width: 11%;
height: 6px;
right: 10px;
}
}

@ -1,4 +1,4 @@
import { Component, OnInit, ElementRef } from "@angular/core";
import { Component, OnInit, ElementRef, ChangeDetectorRef } from "@angular/core";
import { CommonService } from "src/app/hmg-common/services/common/common.service";
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
import { MenuService } from "src/app/hmg-common/services/menu/menuservice.service";
@ -27,6 +27,7 @@ import {ReplacementListComponent} from "../../vacation-rule/replacement-list/rep
import {ReplacmentResponse} from "../models/replacment-response";
import { AbsenceResponse } from '../models/absence.response';
import { AbsenceReplacementListComponent } from '../absence-replacement-list/absence-replacement-list.component';
import { AbsenceNotificatonBodyResponse } from 'src/app/notification/models/AbsenceNotificationBodyRes';
@Component({
selector: "app-submit-absence",
templateUrl: "./submit-absence.component.html",
@ -84,10 +85,13 @@ export class SubmitAbsenceComponent implements OnInit {
public datePicker: DatePicker,
public ts: TranslatorService,
private elementRef: ElementRef,
private changeDetectorRef: ChangeDetectorRef
) {
////*new add*/////
/**********resubmit************ */
this.getPassNotificationDetails = this.common.sharedService.getSharedData(AbsenceNotificatonBodyResponse.NOT_WORKLIST, true);
this.getPassdirfromNotifiPage = this.common.sharedService.getSharedData('dirfromNotificationPage');
//this.getPassNotificationDetails = this.common.sharedService.getSharedData(AbsenceNotificatonBodyResponse.NOT_WORKLIST, true);
// this.getPassdirfromNotifiPage = this.navParams.get('dirfromNotificationPage');
if (this.getPassdirfromNotifiPage) {
@ -97,7 +101,8 @@ export class SubmitAbsenceComponent implements OnInit {
this.notificationId = this.getPassNotificationDetails.NOTIFICATION_ID;
this.selEmp = this.getPassNotificationDetails.SELECTED_EMPLOYEE_NUMBER;
this.respID = -999;
//this.submitAbsObjList = this.navParams.get('submitAbsObjList');
this.submitAbsObjList = this.common.sharedService.getSharedData('submitAbsObjList');
console.log()
} else {
this.action = "CREATE";
this.selEmp = this.common.sharedService.getSharedData(
@ -169,6 +174,7 @@ export class SubmitAbsenceComponent implements OnInit {
}
}
calcDay() {
console.log("calcDay" );
let msg: string = "";
if (
this.startDate == undefined ||
@ -260,10 +266,13 @@ export class SubmitAbsenceComponent implements OnInit {
}
public onTypeAbsenceChange() {
console.log("this.absenceType: "+ this.absenceType);
if (this.absenceType) {
let obj: any = this.absenceTypeList.find(
s => s.ABSENCE_ATTENDANCE_TYPE_ID == this.absenceType
);
console.log("obj : "+ obj);
if (obj) this.absenceTypeName = obj.DESC_FLEX_CONTEXT_CODE;
else this.absenceTypeName = null;
this.getAbsenceDffStructure();
@ -1138,6 +1147,8 @@ export class SubmitAbsenceComponent implements OnInit {
this.action = this.submitAbsObjList[i].ACTION;
if (this.submitAbsObjList[i].SEGMENT_NAME == "ABSENCE_TYPE") {
this.absenceType = val;
this.changeDetectorRef.detectChanges();
}
if (this.submitAbsObjList[i].SEGMENT_NAME == "DESC_FLEX_CONTEXT_CODE") {
this.absenceTypeName = val;

@ -3,7 +3,163 @@
<ion-app [dir]="direction">
<ion-split-pane>
<ion-menu [side]=" direction === 'rtl' ? 'end' : 'start'" [swipeGesture]="false">
<!-- <ion-menu [side]=" direction === 'rtl' ? 'end' : 'start'" [swipeGesture]="false"> -->
<ion-menu side='start' *ngIf="direction ==='ltr'">
<ion-content class="sidebar-menu">
<div class="header-div">
<div>
<ion-button class="closeIcon" (click)="closeMenu()">
<img style= "height: 18px !important;" src="../assets/imgs/close_menu_icon.png "></ion-button>
</div>
<div *ngIf='direction==="ltr"' style="border-bottom: rgb(190, 186, 186) solid 1px;" >
<img class="mohemmLogo" src="../assets/imgs/menu_mohemm_logo.png" ></div>
<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 class="centerDiv homeBox" (click)="openPersonalInfo()">
<div [ngClass]="direction==='ltr'? 'profileDiv':'profileDiv-ar'">
<!-- <ion-img class="profileImg" src="{{user_image}}"></ion-img> -->
<img class="profileImg" [src]="user_image">
<p class="TxtPlace">{{User_name_Emp}}</p>
<p class="TxtPlaces"> {{User_Job_name}}</p>
</div>
</div>
<!-- <div class="changeImgBtn">
<button ion-button icon-only menuToggle class="menubutton" (click)="changeImage()">
<ion-icon (click)="changeImage();" class="changeIcon" name="md-create"></ion-icon></button>
</div> -->
<!-- <div class="changeImgBtn">
<ion-button class="editIcon" (click)="changeImage()">
<img style= "height: 13px !important;" src="../assets/imgs/edit_icon.png ">
</ion-button>
<img class="menuImg" [src]="user_image"></div> -->
<!-- <div class="centerDiv">
<p class="TxtPlace">{{ts.trPK('home')}}, {{User_name_Emp}}</p>
//<div> <img src="{{user_image}}" class="profileImg"></div>
//<div><img class="menuImg" [src]="user_image"></div>
<p class="TxtPlaces">{{ts.trPK('home')}}, {{User_Job_name}}</p>
</div> -->
<div style="border-bottom: rgb(190, 187, 187) solid 1px;" >
<button [ngClass]="direction ==='ltr'? 'logout':'logout-ar'" ion-button (click)="logout();" > {{ts.trPK('home','logout')}}</button>
</div>
<!-- <div>
<ion-item (click)="logout();">
<ion-thumbnail slot="start" class="menu-thumb">
<img width="30" src="../assets/imgs/signout.png" item-left>
</ion-thumbnail>
<ion-label>
{{ts.trPK('home','logout')}}
</ion-label>
</ion-item>
</div> -->
<br>
<ion-list>
<ion-item (click)="profile()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 24px !important;" src="../assets/imgs/profile_icon.png" item-left>
</ion-thumbnail>
<ion-label class="profile">
{{ts.trPK('userProfile','title')}}
</ion-label>
</ion-item>
<!-- <ion-item (click)="openChangePassword()"> -->
<ion-item (click)="openChangePassword()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 25px !important;" src="../assets/imgs/lock_icon.png" item-left>
</ion-thumbnail>
<ion-label class="changepassword" >
{{ts.trPK('login','changepassword')}}
<ion-badge [ngClass]=" direction === 'rtl' ? 'end-badge' : 'start-badge'" slot="end" color="danger" class="main-badge">{{notBadge}}</ion-badge>
</ion-label>
<!-- <button class="menu-item" ion-item menuClose ion-item (click)="goToWorkListPage()" >
</button> -->
</ion-item>
<ion-item [hidden]="TeamFlag!='true'" (click)="openMyTeamPage()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 14px !important;" src="../assets/imgs/my_team_icon.png" item-left>
</ion-thumbnail>
<ion-label class="profile">
{{ts.trPK('myTeam','myTeam-header')}}
</ion-label>
</ion-item>
<!-- <ion-item (click)="profile()">
<ion-thumbnail slot="start" class="menu-thumb">
<img width="30" src="../assets/imgs/profile_icon.png" item-left>
</ion-thumbnail>
<ion-label>
{{ts.trPK('userProfile','title')}}
</ion-label>
</ion-item> -->
<!-- <ion-item (click)="logout();">
<ion-thumbnail slot="start" class="menu-thumb">
<img width="30" src="../assets/imgs/signout.png" item-left>
</ion-thumbnail>
<ion-label>
{{ts.trPK('home','logout')}}
</ion-label>
</ion-item> -->
</ion-list>
<div class="" style="text-align:center">
<img src="{{companyUrl}}" class="CompanyImg logoImg">
<p class="companyTxt">{{CompanyImageDescription}}</p>
</div>
<div class="menuFooter">
<!-- <div> <img src="../assets/imgs/CS.png" class="CompanyImg"></div> -->
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-content>
</ion-menu>
<ion-menu side='end' *ngIf="direction ==='rtl'">
<ion-content class="sidebar-menu">
<div class="header-div">
<div>
@ -102,6 +258,16 @@
</ion-label>
</ion-item>
<ion-item [hidden]="TeamFlag!='true'" (click)="openMyTeamPage()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 14px !important;" src="../assets/imgs/my_team_icon.png" item-left>
</ion-thumbnail>
<ion-label class="profile">
{{ts.trPK('myTeam','myTeam-header')}}
</ion-label>
</ion-item>
<!-- <ion-item (click)="openChangePassword()"> -->
<ion-item (click)="openChangePassword()">
<ion-thumbnail slot="start" class="menu-thumb">
@ -119,14 +285,7 @@
</button> -->
</ion-item>
<ion-item [hidden]="TeamFlag!='true'" (click)="openMyTeamPage()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 14px !important;" src="../assets/imgs/my_team_icon.png" item-left>
</ion-thumbnail>
<ion-label class="profile">
{{ts.trPK('myTeam','myTeam-header')}}
</ion-label>
</ion-item>
<!-- <ion-item (click)="profile()">
<ion-thumbnail slot="start" class="menu-thumb">
<img width="30" src="../assets/imgs/profile_icon.png" item-left>
@ -157,7 +316,6 @@
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-content>
</ion-menu>
<ion-router-outlet main></ion-router-outlet>

@ -129,7 +129,8 @@ export class AppComponent implements OnInit, AfterViewInit {
this.events.subscribe('myTeamFlag', myTeamFlag => {
this.TeamFlag = myTeamFlag;
});
console.log("this.TeamFlag>>>>>>>>>"+ this.TeamFlag);
// this.TeamFlag = this.cs.sharedService.getSharedData("myTeamFlag",false);
// console.log("this.TeamFlag>>>>>>>>>"+ this.TeamFlag);
}
private initializeDirection() {
this.direction = TranslatorService.getCurrentDirection();
@ -155,7 +156,8 @@ export class AppComponent implements OnInit, AfterViewInit {
this.menu.enable(false);
this.logoutFlage=true;
this.events.publish('logoutFlage', this.logoutFlage);
this.cs.setUpdateImage("",false);
this.TeamFlag ="false";
this.getLastLoginInfo();
// this.cs.openLogin();

@ -27,33 +27,42 @@
<img class="item-icon" src="assets/imgs/password.png" item-start />
<!-- <ion-label>{{'changePassword,currentPassword' | translate}}</ion-label> -->
<ion-input class="login-input" required type="password" placeholder="{{ts.trPK('changePassword','currentPassword')}}"[(ngModel)]="P_OLD_PASSWORD"></ion-input>
<ion-input class="login-input" required type="password"
placeholder="{{ts.trPK('changePassword','currentPassword')}}"
[(ngModel)]="P_OLD_PASSWORD"
minLength="8" min="8"
(ionChange)="onChangeOP()"
></ion-input>
</ion-item>
<p class="headerTxt" color="light" > {{'changePassword,newPassword' | translate}}</p>
<ion-item class="item-input-login" >
<img class="item-icon" src="assets/imgs/password.png" item-start />
<!-- <ion-label>{{'changePassword,newPassword' | translate}}</ion-label> -->
<ion-input class="login-input" required type="password" placeholder="{{ts.trPK('changePassword','newPassword')}}"
[(ngModel)]="P_NEW_PASSWORD">
<ion-input (ionChange)="onChangeNP()" class="login-input" required type="password" placeholder="{{ts.trPK('changePassword','newPassword')}}"
[(ngModel)]="P_NEW_PASSWORD" minLength="8" min="8" >
</ion-input>
</ion-item>
<ion-item class="item-input-login" >
<img class="item-icon" src="assets/imgs/password.png" item-start />
<!-- <ion-label>{{'changePassword,confirmPassword' | translate}}</ion-label> -->
<ion-input class="login-input" required type="password" placeholder="{{ts.trPK('changePassword','confirmPassword')}}"
[(ngModel)]="P_Confirm_NEW_PASSWORD">
<ion-input (ionChange)="onChangeCNP()" class="login-input" required type="password" placeholder="{{ts.trPK('changePassword','confirmPassword')}}"
[(ngModel)]="P_Confirm_NEW_PASSWORD" minLength="8" min="8">
</ion-input>
</ion-item>
</ion-grid>
<page-trailer [small]="true"></page-trailer>
<!-- [disabled]="NEW_PASSWORD && Confirm_NEW_PASSWORD" [disabled]="true"-->
</ion-content>
<ion-footer>
<div class="centerDiv">
<ion-button class="button-login" ion-button (click)="submit()">{{ts.trPK('login','changepassword')}}</ion-button>
<button [disabled]="!(NEW_PASSWORD && Confirm_NEW_PASSWORD && OLD_PASSWORD)" [ngClass]=" !(NEW_PASSWORD && Confirm_NEW_PASSWORD && OLD_PASSWORD) ? 'disabledButton' : '' " class="button-login" ion-button (click)="submit()">{{ts.trPK('login','changepassword')}}</button>
</div>
</ion-footer>

@ -29,3 +29,7 @@
width: 315px;
}
.disabledButton{
opacity:.5;
}

@ -12,6 +12,7 @@ import { SharedDataService } from 'src/app/hmg-common/services/shared-data-servi
import {LoginComponent} from "src/app/authentication/login/login.component";
import { Password } from '../models/password';
import { AuthenticatedUser } from "src/app/hmg-common/services/authentication/models/authenticated-user";
//import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-change-password',
@ -20,14 +21,19 @@ import { AuthenticatedUser } from "src/app/hmg-common/services/authentication/mo
})
export class ChangePasswordComponent implements OnInit {
private loginData = new LoginModel();
public P_NEW_PASSWORD: string;
public P_Confirm_NEW_PASSWORD : string;
public P_OLD_PASSWORD : string;
public P_NEW_PASSWORD: string = "";
public P_Confirm_NEW_PASSWORD : string = "";
public P_OLD_PASSWORD : string = "";
public P_USER_NAME : string;
public logo = "assets/icon/login/lock.png";
userData: any = {};
public isExpiredPwd: boolean = false;
public NEW_PASSWORD: boolean = false;
public Confirm_NEW_PASSWORD: boolean = false;
public OLD_PASSWORD: boolean = false;
//public profile_form: FormGroup;
constructor(
public cs: CommonService,
public authService: AuthenticationService,
@ -36,7 +42,9 @@ export class ChangePasswordComponent implements OnInit {
public ts: TranslatorService,
public smsService: SmsReaderService,
public changeDetector: ChangeDetectorRef,
public sharedData: SharedDataService) {
public sharedData: SharedDataService,
// public formBuilder: FormBuilder,
) {
console.log("change password constructor");
}
@ -48,6 +56,11 @@ export class ChangePasswordComponent implements OnInit {
this.P_USER_NAME =data.P_USER_NAME;
console.log(this.isExpiredPwd);
console.log(this.P_USER_NAME);
// this.profile_form = this.formBuilder.group({
// password: ['', Validators.compose([Validators.minLength(8)])]
// });
// this.authService
// .loadAuthenticatedUser()
// .subscribe((user: AuthenticatedUser) => {
@ -119,6 +132,43 @@ export class ChangePasswordComponent implements OnInit {
}
});
}
onChangeCNP(){
// in UAT Alow to the length of password less than 8
// so if we ready to go life change it to >= 8
if (this.P_Confirm_NEW_PASSWORD.length >= 3) {
this.Confirm_NEW_PASSWORD=true;
}else{
this.Confirm_NEW_PASSWORD=false;
}
}
onChangeNP(){
// in UAT Alow to the length of password less than 8
// so if we ready to go life change it to >= 8
if (this.P_NEW_PASSWORD.length >= 3) {
this.NEW_PASSWORD=true;
}else{
this.NEW_PASSWORD=false;
}
}
onChangeOP(){
// in UAT Alow to the length of password less than 8
// so if we ready to go life change it to >= 8
if (this.P_OLD_PASSWORD.length >= 3) {
this.OLD_PASSWORD=true;
}else{
this.OLD_PASSWORD=false;
}
}
}

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

@ -95,6 +95,14 @@ export class LoginComponent implements OnInit, OnDestroy {
private checkUserResult: CheckUserAuthenticationResponse;
ngOnInit() {
console.log("ENAD TEST!!!")
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) {
this.language = "US";
} else {
this.language = "AR";
}
this.ts.switchLanguage();
this.currentLang = TranslatorService.getCurrentLanguageCode();
// this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false);
// console.log("get deviceToken login"+ this.deviceToken)
@ -181,19 +189,24 @@ export class LoginComponent implements OnInit, OnDestroy {
ngOnDestroy(): void {
this.backClicked();
}
public changeLanguage() {
this.ts.switchLanguage();
// tslint:disable-next-line: triple-equals
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) {
this.language = 'US';
} else {
this.language = 'AR';
public changeLanguage(langNumber) {
if(this.currentLang == langNumber){
return;
}else{
this.ts.switchLanguage();
if (TranslatorService.CURRENT_LANGUAGE == TranslatorService.EN) {
this.language = "US";
} else {
this.language = "AR";
}
this.currentLang = TranslatorService.getCurrentLanguageCode();
}
this.currentLang = TranslatorService.getCurrentLanguageCode();
}
public forgetPasswordPage() {
this.cs.openUserForgot();
}
private hideSplashScreen(stopLoading = false) {
// this.splash.hide();
if (stopLoading) {

@ -21,6 +21,8 @@ import { DatePicker } from "@ionic-native/date-picker/ngx";
import { EIT_ACTION } from "../models/submit.eit.action";
import { AddEitResponse } from "../models/add.eit.response";
import { element } from '@angular/core/src/render3';
// import { EITNotificatonBodyResponse } from 'src/app/notification/models/EITNotificationBodyRes';
import { EITNotificatonBodyResponse } from "../models/EITNotificationBodyRes";
@Component({
selector: "app-add-eit",
@ -87,6 +89,8 @@ export class AddEitComponent implements OnInit {
false
);
this.addEITData = this.cs.sharedService.getSharedData("AddEITData", false);
console.log("addEITData: " + this.addEITData);
console.log("dirfromNotificationPage: " + this.addEITData.dirfromNotificationPage);
this.eitRequest = new EitRequest();
@ -94,7 +98,7 @@ export class AddEitComponent implements OnInit {
////*new add*/////
/**********resubmit************ */
// this.getPassNotificationDetails = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, true);
this.getPassNotificationDetails = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, false);//WARINING
this.getPassdirfromNotifiPage = this.addEITData.dirfromNotificationPage;
if (this.getPassdirfromNotifiPage) {
this.functionName = this.getPassNotificationDetails.FUNCTION_NAME; //;this.getPassNotificationDetails.NOTIFICATION_NAME;
@ -1176,7 +1180,7 @@ export class AddEitComponent implements OnInit {
let numbervalue: any = 0;
let dateValue: any = null;
let transNo: number = this.comtransNo;
let textValue = "";
let textValue : any;
// if(this.ExtraObj.transactionNo)
// transNo=this.ExtraObj.transactionNo;
for (let i = 0; i < this.eitResponse.length; i++) {
@ -1230,7 +1234,11 @@ export class AddEitComponent implements OnInit {
} else {
elem.classList.remove("requiredClassElm");
}
if (elemVal) varcharValue = elemVal;
if (elemVal != 'null'){
varcharValue = elemVal;
} else{
elemVal = null;
}
valuseArr.push({
TRANSACTION_NUMBER: transNo,
NAME: this.eitResponse[i].APPLICATION_COLUMN_NAME,
@ -1551,6 +1559,7 @@ export class AddEitComponent implements OnInit {
validateEITTransaction() {
// let EITTransactionValues:any= [];
this.arrValues = this.getElementsValues();
if (this.arrValues) {
this.eitRequest = {
@ -1582,7 +1591,8 @@ export class AddEitComponent implements OnInit {
data.eitRequest = this.eitRequest;
data.updated = this.updatedValues;
// this.viewCtrl.dismiss(data);
this.closemodal();
this.modalController.dismiss(data);
// this.closemodal();
} else {
this.submitEit();
// this.navCtrl.push("ConfirmAddEitPage");

@ -78,11 +78,12 @@ export class ConfirmAddEitComponent implements OnInit {
this.eitRequest = this.cs.sharedService.getSharedData(EitRequest.SHARED_DATA, false);
this.isResubmitEIT = this.cs.sharedService.getSharedData('confirmAddEITData', false).isResubmit;
if (this.isResubmitEIT) {
this.getPassNotificationDetails = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, true);
this.getPassNotificationDetails = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, false); //WARINING **
// console.log("this.getPassNotificationDetails: " + this.getPassNotificationDetails);
this.P_TransactionID = this.cs.sharedService.getSharedData("TransactionIDResubmit", true);
let notification = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, true);
this.itemKey = notification.ITEM_KEY;
// let notification = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, true);
this.itemKey = this.getPassNotificationDetails.ITEM_KEY;
this.pActionMode = "RESUBMIT";
this.menuType = "E";
this.respID = -999;

@ -3,8 +3,10 @@
[headerText]="headerTitle">
</app-generic-header>
<ion-content class="colorBG">
<div class="contentEit">
<ion-content>
<div class="">
<!-- class="colorBG" -->
<div class="content" [hidden]="functionName!='HMG_TKT_NEW_EIT_SS'">
@ -119,7 +121,7 @@
<ion-icon name="create"></ion-icon>
</button> -->
<button ion-button icon-only (click)="removeAddedItem(i)">
<ion-icon name="trash"></ion-icon>
<ion-icon class="imgSize" name="trash"></ion-icon>
</button>
</ion-card-header>
@ -199,7 +201,7 @@
</ion-col>
</ion-row> -->
<ion-row class="">
<ion-row *ngIf="item.DISPLAY_FLAG != 'N' " class="">
<ion-col class="" *ngIf="item.SEGMENT_PROMPT!=''">
<label style="color:#094875;font-weight: bold;" class="label" for="">{{item.SEGMENT_PROMPT}} </label>
<br>
@ -222,9 +224,9 @@
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
<ion-icon class="addClass" name="add" (click)="addEITRrq()"></ion-icon>
</div>
</div>
</ion-content>
<ion-icon class="addClass" name="add" (click)="addEITRrq()"></ion-icon>
<!-- <ion-footer>
<div class="centerDiv"> -->

@ -141,12 +141,15 @@ export class EitListComponent implements OnInit {
this.P_PAGE_NUM++;
this.EITTransactionsListObj.P_PAGE_NUM = this.P_PAGE_NUM;
result.GetEITTransactionList.forEach(vr => {
if (vr.Collection_Transaction[0].ROW_NUM == vr.Collection_Transaction[0].NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
console.log(vr.length);
if(vr.length && vr.length != 0){
if (vr.Collection_Transaction[0].ROW_NUM == vr.Collection_Transaction[0].NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.getResEITTransactionList.push(vr);
}
this.getResEITTransactionList.push(vr);
});
} else {
this.IsReachEnd = true;

@ -1,5 +1,5 @@
<ion-header>
<ion-toolbar class="header-toolbar">
<ion-toolbar class="header-toolbar-new">
<nav-buttons></nav-buttons>
<ion-title color="light">{{'eit, update-title' | translate}}</ion-title>
</ion-toolbar>
@ -11,34 +11,51 @@
<ion-card *ngFor="let item of notificationBodyRes; let i=index ">
<ion-card-header class="hrTitle">
<div class="hrTitle">{{'workListMain, notfDetails' | translate}} </div>
<div class="hrTitle">{{'worklistMain, notfDetails' | translate}} </div>
<!-- <button ion-button icon-only *ngIf="item.Collection_Notification[0].ACTION!='DELETE_ROW'" (click)="updateEitNot(i)">
<ion-icon name="create"></ion-icon>
</button> -->
<button ion-button *ngIf="item.Collection_Notification[0].ACTION!='DELETE_ROW'" (click)="updateEitNot(i)">
<div class="editIconDiv"><button ion-button *ngIf="item.Collection_Notification[0].ACTION!='DELETE_ROW'" (click)="updateEitNot(i)">
<img class="imgSize" src="../assets/imgs/edit.png"></button>
</div>
</ion-card-header>
<ion-card-content>
<div *ngFor="let notificationBody of item.Collection_Notification ">
<ion-grid class="grids">
<div *ngFor="let notificationBody of item.Collection_Notification ">
<ion-row *ngIf=" notificationBody.DISPLAY_FLAG != 'N' ">
<ion-col class="colBold">
<label for="">{{notificationBody.SEGMENT_PROMPT}}</label>
</ion-col>
<ion-col>
<label for="">{{notificationBody.SEGMENT_VALUE_DSP}}</label>
<label style="color:#094875;font-weight: bold;" class="label" for="">{{notificationBody.SEGMENT_PROMPT}}</label>
<!-- </ion-col>
<ion-col class="colBold"> -->
<br>
<label class="label" style="color:black;" for="">{{notificationBody.SEGMENT_VALUE_DSP}}</label>
<hr style="background-color: grey;height: 1px">
</ion-col>
</ion-row>
</div>
</ion-grid>
</ion-card-content>
</ion-card>
</div>
</ion-content>
<ion-footer>
<div class="centerDiv">
<ion-button class="footer-button" color="customnavy" ion-button (click)="resubmitEit()">
<ion-button class="addEitOkButton" color="customnavy" ion-button (click)="resubmitEit()">
{{ 'general, next' | translate }}</ion-button>
</div>
</ion-footer>

@ -0,0 +1,17 @@
.addEitOkButton{
white-space: normal !important;
text-transform: capitalize !important;
min-height: 45px !important;
min-width: 5px !important;
margin: 8px !important;
background-color: #22c6b3;
width: 80% !important;
color: white!important;
border-radius: 16px !important;
}
.editIconDiv{
right: 10px;
position: absolute;
top: 10px;
}

@ -25,8 +25,8 @@ export class EitUpdateListComponent implements OnInit {
private descFlex: string;
constructor(public cs: CommonService, public eitService: EitService, public modalController: ModalController) {
this.notificationBodyRes = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.SHARED_DATA, true);
let notification = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, true);
this.notificationBodyRes = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.SHARED_DATA, false);
let notification = this.cs.sharedService.getSharedData(EITNotificatonBodyResponse.NOT_WORKLIST, false);
this.itemKey = notification.ITEM_KEY;
this.notificationId = notification.NOTIFICATION_ID;
this.functionName = notification.FUNCTION_NAME;
@ -35,7 +35,7 @@ export class EitUpdateListComponent implements OnInit {
this.fillEitTransactionTable();
}
ngOnInit() { }
ngOnInit() { console.log("ngOnInit");}
async updateEitNot(index) {
let item = this.notificationBodyRes[index].Collection_Notification;
@ -46,10 +46,15 @@ export class EitUpdateListComponent implements OnInit {
modal.onDidDismiss()
.then((data: any) => {
console.log("data" + data);
console.log("data" + data.data.updated);
console.log("data" + data.data.eitRequest.EITTransactionTBL);
if (data) {
this.updatedData = this.updatedData ? this.updatedData.concat(data.updated) : data.updated;
this.notificationBodyRes[index].Collection_Notification = data.updated;
this.updateTransactionList(data.eitRequest.EITTransactionTBL);
this.updatedData = this.updatedData ? this.updatedData.concat(data.data.updated) : data.data.updated;
this.notificationBodyRes[index].Collection_Notification = data.data.updated;
this.updateTransactionList(data.data.eitRequest.EITTransactionTBL);
}
});

@ -57,7 +57,8 @@
<ion-label>
<b text-wrap>{{menuItem.PROMPT}}</b>
<ion-icon style="float: right;font-size: 25px;color: grey;" name="arrow-forward"></ion-icon>
<!-- <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>

@ -1171,6 +1171,11 @@ public getMonthNameAr(value: number): string {
public openItemHistoryPage() {
this.nav.navigateForward(['/notification/item-history-PO']);
}
public openMOItemHistoryPage(){
this.nav.navigateForward(["/notification/item-history-MO"]);
}
public openQutationAnalysisPage() {
this.nav.navigateForward(['/notification/qutation-analysis-PO']);
}
@ -1211,8 +1216,12 @@ public getMonthNameAr(value: number): string {
public openPerformanceevaluation() {
this.nav.navigateForward(["/profile/performanceevaluation"]);
}
public eitUpdate() {
this.nav.navigateForward(["/eit/eit-update-list"]);
}
public navigatePage(path) {
this.nav.navigateForward([path]);
}
@ -1399,10 +1408,10 @@ public getMonthNameAr(value: number): string {
return FormatedDate;
}
public setUpdateImage (image){
public setUpdateImage (image,status?){
console.log('setUpdateImage');
this.setUpdateImg=image;
this.updateImage=true;
this.updateImage=status;
}
public getUpdateImage(){
console.log('getUpdateImage');

@ -21,7 +21,7 @@ export class ConnectorService {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
public static retryTimes = 0;
public static timeOut = 30 * 1000;
public static timeOut = 120 * 1000;
// public static host = 'http://10.50.100.113:6060/'; // development service
public static host = 'https://uat.hmgwebservices.com/';

@ -14,10 +14,15 @@
width: 100%;
position: static;
img {
// display: block;
// max-width: 45%;
// padding-bottom: 5px;
// padding-top: 5px;
display: block;
max-width: 45%;
padding-bottom: 5px;
max-width: 67%;
padding-bottom: 9px;
padding-top: 5px;
height: 47px;
}
}

@ -355,6 +355,7 @@ export class HomePage implements OnInit {
for (let i = 0; i < this.menuList.length; i++) {
if (this.menuList[i].MENU_TYPE === 'M') {
this.events.publish('myTeamFlag', 'true');
// this.common.sharedService.setSharedData('true', "myTeamFlag");
}
}

@ -3,7 +3,7 @@
<ion-buttons slot="start">
<nav-buttons (backClick)="goback()" [navigate]="false"></nav-buttons>
</ion-buttons>
<ion-title>EMPLOYEE DETAIL</ion-title>
<ion-title>{{ts.trPK('userProfile','emp-detail')}}</ion-title>
</ion-toolbar>
</ion-header>
@ -26,7 +26,7 @@
<a [ngClass]="employee.EMPLOYEE_MOBILE_NUMBER == '' ? 'disable-phone action-button-icon' : 'action-button-icon'" href="tel:{{employee.EMPLOYEE_MOBILE_NUMBER}}">
<img src="../assets/imgs/call_icon.png">
</a>
<span>Call</span>
<span>{{ts.trPK('vacation-rule','call')}}</span>
</div>
</ion-col>
<ion-col [size]="4" (click)="getMenuEntries(employee)">
@ -34,7 +34,7 @@
<span class="action-button-icon">
<img src="../assets/imgs/create_request_icon.png">
</span>
<span>Create Request</span>
<span>{{ts.trPK('vacation-rule','create-request')}}</span>
</div>
</ion-col>
<ion-col [size]="4" style="opacity:0.3;">
@ -42,7 +42,7 @@
<span class="action-button-icon">
<img src="../assets/imgs/message_icon.png">
</span>
<span>Message</span>
<span>{{ts.trPK('vacation-rule','message-label')}}</span>
</div>
</ion-col>
</ion-row>
@ -56,17 +56,17 @@
<ion-segment-button
value="Attendance"
[ngClass]="activeSegment == 'Attendance' ? 'active-Segment' : 'normal-Segment'" >
<ion-label>Attendance</ion-label>
<ion-label>{{ts.trPK('attendance','attendance')}}</ion-label>
</ion-segment-button>
<ion-segment-button
value="Team Members"
[ngClass]="activeSegment == 'Team Members' ? 'active-Segment' : 'normal-Segment'">
<ion-label>Team Members</ion-label>
<ion-label>{{ts.trPK('myTeam','team-members')}}</ion-label>
</ion-segment-button>
<ion-segment-button
value="About"
[ngClass]="activeSegment == 'About' ? 'active-Segment' : 'normal-Segment'">
<ion-label>About</ion-label>
<ion-label> {{ts.trPK('general','about')}}</ion-label>
</ion-segment-button>
</ion-segment>
</div>
@ -207,7 +207,7 @@
<div *ngIf="isSearch">
<ion-row class="search-container">
<ion-col style="float: left;" size=[6] (click)="clearSearchTwo()">
<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-col>
</ion-row>
@ -231,43 +231,43 @@
<div class="employee-information-indetail" *ngIf="activeSegment === 'About'">
<ion-row>
<ion-col [size]="6" style="border-right: 1px solid #ccc;">
<h2>Employee ID</h2>
<h2>{{ts.trPK('userProfile','empNo')}}</h2>
<p>{{employee.EMPLOYEE_NUMBER}}</p>
</ion-col>
<ion-col [size]="6">
<h2>Category</h2>
<h2>{{ts.trPK('userProfile','category')}}</h2>
<p>{{employee.EMPLOYMENT_CATEGORY_MEANING}}</p>
</ion-col>
<ion-col [size]="12">
<h2>Address</h2>
<h2>{{ts.trPK('userProfile','Address')}}</h2>
<p>{{employee.LOCATION_NAME}}</p>
</ion-col>
<ion-col [size]="12">
<h2>Phone Number</h2>
<h2>{{ts.trPK('userProfile','phone-no')}}</h2>
<p>{{employee.EMPLOYEE_MOBILE_NUMBER}}</p>
</ion-col>
<ion-col [size]="12">
<h2>Business Group</h2>
<h2>{{ts.trPK('userProfile','busG')}}</h2>
<p>{{employee.ORGANIZATION_NAME}}</p>
</ion-col>
<ion-col [size]="12">
<h2>Job</h2>
<h2>{{ts.trPK('userProfile','job')}}</h2>
<p>{{employee.JOB_NAME}}</p>
</ion-col>
<ion-col [size]="12">
<h2>Payroll</h2>
<h2>{{ts.trPK('userProfile','payrol')}}</h2>
<p>{{employee.PAYROLL_NAME}}</p>
</ion-col>
<ion-col [size]="12">
<h2>Organization Email Address</h2>
<h2>{{ts.trPK('userProfile','orgEmail')}}</h2>
<p>{{employee.EMPLOYEE_EMAIL_ADDRESS}}</p>
</ion-col>
<ion-col [size]="12">
<h2>Position</h2>
<h2>{{ts.trPK('userProfile','position')}}</h2>
<p>{{employee.POSITION_NAME}}</p>
</ion-col>
<ion-col [size]="12" style="border-bottom: none;">
<h2>Grade</h2>
<h2>{{ts.trPK('userProfile','grade')}}</h2>
<p>{{employee.GRADE_NAME}}</p>
</ion-col>
</ion-row>

@ -229,6 +229,16 @@ ion-title{
color: gray;
}
.activeArrow-ar{
height: 20px;
width: 20px;
color: #22c6b3;
}
.disabledArrow-ar{
height: 20px;
width: 20px;
color: gray;
}
.result-graph {
position: relative;
background: white;

@ -1,3 +1,226 @@
<p>
mo-item-history works!
</p>
<ion-header>
<ion-toolbar class="header-toolbar-new">
<nav-buttons></nav-buttons>
<ion-title color="light">
{{ts.trPK('worklistMain','ITEM_HIS')}}
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="colorBG">
<!-- <ion-card>
<ion-card-header class="boxHdr">
<div class="hrTitle">{{'worklistMain, actionHis' | translate}}</div>
</ion-card-header>
<ion-card-content> -->
<!-- <ion-card class="cardContent"> -->
<!-- <ion-card-header class="boxHdr">
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
</ion-card-header> -->
<!-- <ion-card-content> -->
<div class="noDataDiv" [hidden]="itemHistoryRes && itemHistoryRes.length > 0">
<p>{{ 'general, empty' | translate}}</p>
</div>
<ion-list class="itemeHistoryist" *ngIf="itemHistoryRes && itemHistoryRes.length > 0 ">
<ion-grid class="gridItemReq">
<ion-item class="itemReqContent" *ngFor="let itemHistory of itemHistoryRes; let i=index; ">
<div class="itemReqDiv">
<!-- // <ion-row> -->
<!-- <ion-col class="colItemReqHeader"> -->
<!-- <label for="">{{ts.trPK('worklistMain','description')}}
</label> -->
<!-- </ion-col>
<ion-col> {{itemHistory.OU_NAME}}-->
<!-- <label for="">{{i+1}}. </label> -->
<!-- </ion-col> -->
<!-- </ion-row> -->
<ion-row>
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','request_number')}}
</label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.REQUEST_NUMBER}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','uom')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.UNIT_OF_MEASURE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.QUANTITY}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col size="6"class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Date_Req')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.DATE_REQUIRED}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','line_status')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.LINE_STATUS_DIS}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','date_status')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.STATUS_DATE}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','trans_type')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.TRANSACTION_TYPE_NAME}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','organization')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.ORGANIZATION_NAME}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','organization_code')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.ORGANIZATION_CODE}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','operating_unit')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.OPERATING_UNIT_NAME}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','from_subinventory')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.FROM_SUBINVENTORY_CODE}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','from_locator')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.FROM_LOCATOR}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to_subinventory')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.TO_SUBINVENTORY_CODE}} </ion-label>
</ion-col>
<!-- </ion-row>
<ion-row> -->
<ion-col size="6" class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to_locator')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.TO_LOCATOR}} </ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="colItems">
<label class="colItemReq" for="">{{ts.trPK('worklistMain','ShipToLocation')}} </label>
<br />
<!-- </ion-col>
<ion-col> -->
<ion-label class="labelValue" for="">{{itemHistory.SHIP_TO_LOCATION}} </ion-label>
</ion-col>
</ion-row>
</div>
</ion-item>
</ion-grid>
</ion-list>
<!-- </ion-card-content>
</ion-card> -->
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>

@ -0,0 +1,31 @@
.itemeHistoryist {
background: #f0efef;
padding: 6px;
/* margin-top: 20px; */
/* width: 100%;*/
}
ion-label.labelValue.sc-ion-label-ios-h.sc-ion-label-ios-s.ios.hydrated,
ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
{
// white-space: pre-wrap !important;
// --color: initial;
// display: block;
// color: var(--color);
// font-family: var(--ion-font-family,inherit);
// font-size: inherit;
// text-overflow: ellipsis;
// overflow: hidden;
// -webkit-box-sizing: border-box;
// box-sizing: border-box
--color: initial;
display: contents !important;
font-family: var(--ion-font-family, inherit);
font-size: inherit;
text-overflow: ellipsis !important;
white-space: pre;
overflow: hidden;
box-sizing: border-box;
}

@ -1,4 +1,11 @@
import { Component, OnInit } from '@angular/core';
import { WorklistMainService } from '../service/work-list.main.service';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { ModalController } from '@ionic/angular';
import { WorklistService } from '../service/worklist.service';
import { MOItemHistoryReq } from '../models/MOItemHistoryReq';
import { MOItemHistoryRes } from '../models/MOItemHistoryRes';
@Component({
selector: 'app-mo-item-history',
@ -6,12 +13,111 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./mo-item-history.component.scss'],
})
export class MoItemHistoryComponent implements OnInit {
getPassMOInfo: any;
itemHistoryRes: any;
IsReachEnd: boolean = false;
P_PAGE_NUM: number = 1;
P_PAGE_LIMIT: number = 50;
MOItemHistoryReq: any;
constructor() { }
constructor(
public worklistMainService: WorklistMainService,
private cs: CommonService,
private ts: TranslatorService,
public worklistService: WorklistService
) {
this.getPassMOInfo = this.cs.sharedService.getSharedData('passMOReq');
this.MOItemHistoryReq = new MOItemHistoryReq();
this.MOItemHistoryReq.P_PAGE_NUM = this.P_PAGE_NUM;
this.MOItemHistoryReq.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.MOItemHistoryReq.P_ITEM_ID= this.getPassMOInfo.P_ITEM_ID;
this.MOItemHistoryReq.P_ORG_ID= this.getPassMOInfo.P_ORG_ID;
}
ngOnInit() {
this.getMOItemHistory(this.getPassMOInfo.P_ITEM_ID,this.getPassMOInfo.P_ORG_ID);
}
getMOItemHistory(itemID ,orgID) {
console.log(itemID);
this.IsReachEnd = false;
const request = new MOItemHistoryReq();
request.P_ITEM_ID = parseInt(itemID);
request.P_PAGE_LIMIT = 100;
request.P_PAGE_NUM = 1;
request.P_ORG_ID= parseInt(orgID);
this.worklistMainService.getMOItemHistory(request).
subscribe((result: MOItemHistoryRes) => {
this.handleItemHistoryResult(result);
});
}
handleItemHistoryResult(result) {
if (this.cs.validResponse(result)) {
if (this.cs.hasData(result.GetMoItemHistoryList)) {
this.itemHistoryRes = result.GetMoItemHistoryList;
this.P_PAGE_NUM++;
this.MOItemHistoryReq.P_PAGE_NUM = this.P_PAGE_NUM;
let lastItemIndex = this.itemHistoryRes.length - 1;
if (result.GetMoItemHistoryList[lastItemIndex]) {
let lastitem = result.GetMoItemHistoryList[lastItemIndex];
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
}
}
}
}
doInfinite(infiniteScroll) {
if (!this.IsReachEnd) {
// this.POItemHistoryReq.P_PAGE_NUM = this.P_PAGE_NUM;
this.worklistMainService.getMOItemHistory(this.MOItemHistoryReq).
subscribe((result: any) => {
if (this.cs.validResponse(result)) {
if (result.GetMoItemHistoryList != undefined) {
this.MOItemHistoryReq.P_PAGE_NUM=this.P_PAGE_NUM++;
(result.GetMoItemHistoryList).forEach(element => {
if (element.ROW_NUM == element.NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.itemHistoryRes.push(element);
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
}// if list length >0
else {
this.IsReachEnd = true;
}
}// if response == 1
//this.pageNum++;
infiniteScroll.target.complete();
});
} else {
if (infiniteScroll)
infiniteScroll.target.complete();
}
}//end infiniteScroll
}

@ -27,10 +27,10 @@ import { QutationAnalysisComponent } from './qutation-analysis/qutation-analysis
import { WorklistMainMRComponent } from './worklist-main-mr/worklist-main-mr.component';
import { WorklistAdvancedSearchComponent } from './worklist-advanced-search/worklist-advanced-search.component';
import { WorkListMainItgComponent } from './work-list-main-itg/work-list-main-itg.component';
import { MoItemHistoryComponent } from './mo-item-history/mo-item-history.component';
// import { WorklistMainComponent } from './worklist-main/worklist-main.component';
import {MoreActionModalComponent} from './more-action-modal/more-action-modal.component'
import { WorkListReplacementItgComponent } from './work-list-replacement-itg/work-list-replacement-itg.component';
import { MoItemHistoryComponent } from './mo-item-history/mo-item-history.component';
const routes: Routes = [
@ -114,7 +114,11 @@ const routes: Routes = [
{
path: 'worklist-replacement-itg',
component: WorkListReplacementItgComponent
}
},
{
path: 'item-history-MO',
component: MoItemHistoryComponent
}
]
}
];

@ -34,7 +34,7 @@ export class WorklistMainService {
public static getPRNotificationBody =
"Services/ERP.svc/REST/GET_PR_NOTIFICATION_BODY";
public static getPOItemHistory = "Services/ERP.svc/REST/GET_PO_ITEM_HISTORY";
public static getMOItemHistory = "GET_MO_ITEM_HISTORY";
public static getMOItemHistory = "Services/ERP.svc/REST/GET_MO_ITEM_HISTORY";
public static getNotificationButtons =
"Services/ERP.svc/REST/GET_NOTIFICATION_BUTTONS";
public static getUserInfo = "Services/ERP.svc/REST/Get_UserInformation";

@ -11,19 +11,20 @@
<ion-item lines="none">
<ion-label class="boldTxtNav">{{'replacementRoll, searchBy' | translate}}</ion-label>
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
[(ngModel)]="searchBy">
[(ngModel)]="searchBy" (ionChange)="onChangeSelect($event)">
<ion-select-option value="1" selected="true">{{'addAttach, name' | translate}}</ion-select-option>
<ion-select-option value="2">{{'login, username' | translate}}</ion-select-option>
<ion-select-option value="3">{{'general, email' | translate}}</ion-select-option>
</ion-select>
</ion-item>
<ion-item lines="none">
<ion-button class="filterBtn" button-type="clear" (click)="getreplacmentemployee()" item-end>
<ion-button [ngClass]="direction == 'en'? 'filterBtn':'filterBtn-ar'" button-type="clear" (click)="getreplacmentemployee()" item-end>
<ion-icon slot="icon-only" color="white" name="search"></ion-icon>
</ion-button>
<ion-input class="filterInput" [(ngModel)]="inputSearch" placeholder='{{"general, search" | translate}}'></ion-input>
<ion-input [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="inputSearch" placeholder='{{"general, search" | translate}}'></ion-input>
<!-- <button ion-button icon-only (click)="getreplacmentemployee()" clear type="button" item-end>
<ion-icon name="search"></ion-icon>

@ -81,6 +81,18 @@ button.item-button.button.button-md.button-clear.button-clear-md {
border-radius: 21px;
padding-left: 10px !important;
}
.filterInput-ar{
// border: solid var(--gray) 1px;
// border-radius: 21px;
// padding-left: 10px !important;
border: solid var(--gray) 1px;
border-radius: 21px;
padding-left: 145px !important;
margin-left: 86px;
padding-right: 129px;
margin-right: -143px;
}
.filterBtn{
background: var(--newgreen);
--background: var (--newgreen);
@ -88,6 +100,20 @@ button.item-button.button.button-md.button-clear.button-clear-md {
height: 60px;
width: 60px;
}
.filterBtn-ar{
// background: var(--newgreen);
// --background: var (--newgreen);
// border-radius: 50%;
// height: 60px;
// width: 60px;
background: var(--newgreen);
--background: var (--newgreen);
border-radius: 50%;
height: 60px;
width: 60px;
margin-left: -181px;
margin-right: 269px;
}
@ -121,6 +147,12 @@ button.item-button.button.button-md.button-clear.button-clear-md {
// box-shadow: 0 2px 5px rgba(0, 0, 0, 0.26);
}
.disabledButton{
opacity:.5;
}

@ -38,8 +38,10 @@ export class WorkListReplacementRollComponent implements OnInit {
getpassResAttr: any = [];
active: any;
demoeAttach:any=[];
isSelect: boolean =false;
searchKeyEnter: boolean = false;
messageSuccess: boolean =false;
public direction: string;
constructor(public worklistService: WorklistService, private cs: CommonService, private ts: TranslatorService, public workListMainService: WorklistMainService, public modalCtrl: ModalController) {
this.P_PAGE_NUM = 1;
this.P_PAGE_LIMIT = 50;
@ -60,6 +62,7 @@ export class WorkListReplacementRollComponent implements OnInit {
this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.RespondAttributeList =[];// this.getpassResAttr;
this.WorkListActionObj.P_APPROVER_INDEX = null;
this.direction = TranslatorService.getCurrentLanguageName();
}
ngOnInit() {
@ -333,5 +336,26 @@ export class WorkListReplacementRollComponent implements OnInit {
closeModal() {
this.modalCtrl.dismiss();
}
onChangeSelect(select){
console.log(select.detail.value);
let selectValue= select.detail.value;
if(selectValue == "1" || selectValue == "2" ||selectValue == "3"){
this.isSelect=true;
}
else{
this.isSelect=false;
}
}
onChangeInput(){
if (this.inputSearch.length >0) {
this.searchKeyEnter=true;
}else{
this.searchKeyEnter=false;
}
}
}

@ -8,7 +8,7 @@
</ion-header>
<ion-content *ngIf="!messageSuccess" class="colorBG">
<ion-content class="colorBG">
<div *ngIf="!messageSuccess" >
<div class="subjectNotification">{{getPassNotificationDetails.SUBJECT}}</div>
@ -408,6 +408,25 @@
</ion-row>
<ion-row >
<ion-col>
<div style="text-align: center">
<button ion-button class="itemHISBtn"
(click)="getMOItemHistory(notificationList.ITEM_ID , notificationList.ORG_ID)">
{{ts.trPK('worklistMain','ITEM_HIS')}}
</button>
</div>
</ion-col>
</ion-row>
@ -640,13 +659,12 @@
<ion-tabs>
<ion-tab-bar class="tabBar" slot="bottom">
<ion-tab-button *ngIf="approveDis" (click)="actionButton('APPROVE')">
<ion-tab-button *ngIf="approveDis" (click)="actionButton('APPROVED')">
<img src="../assets/imgs/action-approve.png">
<ion-label>Approve</ion-label>
</ion-tab-button>
<ion-tab-button *ngIf="rejectDis" (click)="actionButton('REJECT
')">
<ion-tab-button *ngIf="rejectDis" (click)="actionButton('REJECTED')">
<img src="../assets/imgs/action-reject.png">
<ion-label>Reject</ion-label>
</ion-tab-button>
@ -660,7 +678,7 @@
<ion-label>Skip</ion-label>
</ion-tab-button>
<ion-tab-button (click)="openMoreActions()">
<ion-tab-button [disabled]="moreDisabled" (click)="openMoreActions()">
<img src="../assets/imgs/action-more.png">
<ion-label>More</ion-label>
</ion-tab-button>

@ -31,6 +31,8 @@ import { ApplyActionModalComponent } from '../apply-action-modal/apply-action-mo
import { MoreActionModalComponent } from '../more-action-modal/more-action-modal.component';
import { WorkListReplacementRollComponent } from '../work-list-replacement-roll/work-list-replacement-roll.component';
import { WorkListRfcComponent } from '../work-list-rfc/work-list-rfc.component';
import { MOItemHistoryRes } from '../models/MOItemHistoryRes';
import { MOItemHistoryReq } from '../models/MOItemHistoryReq';
@Component({
selector: 'app-worklist-main-mr',
@ -99,6 +101,8 @@ export class WorklistMainMRComponent implements OnInit {
approveDis: boolean = false;
rejectDis: boolean = false;
requestDis: boolean = false;
public static PASS_MO_REQ = "passMOReq";
moreDisabled: boolean = true;
direction: string;
defaultSegment = '';
@ -233,7 +237,7 @@ export class WorklistMainMRComponent implements OnInit {
}
handleWorkListBodyResult(result, Type) {
this.notificationBodyRes = {};
this.notificationBodyRes = [];
if (this.common.validResponse(result)) {
this.pInformation = result.P_INFORMATION;
this.pQuestion = result.P_QUESTION;
@ -265,15 +269,22 @@ export class WorklistMainMRComponent implements OnInit {
this.common.sharedService.setSharedData(this.notificationButtonRes, 'passActionMore');
console.log('test' + this.notificationButtonRes.length);
for (let i = 0; i < this.notificationButtonRes.length; i++) {
if (this.notificationButtonRes[i].BUTTON_ACTION == 'APPROVE') {
if (this.notificationButtonRes[i].BUTTON_ACTION == "APPROVED" ) {
this.approveDis = true;
} else
if (this.notificationButtonRes[i].BUTTON_ACTION == 'REJECT') {
if (this.notificationButtonRes[i].BUTTON_ACTION == "REJECTED" ) {
this.rejectDis = true;
} else
if (this.notificationButtonRes[i].BUTTON_ACTION == 'REQUEST_INFO') {
this.requestDis = true;
} // if result == null
else if(
this.notificationButtonRes[i].BUTTON_ACTION != "APPROVED" && this.notificationButtonRes[i].BUTTON_ACTION != "REJECTED" && this.notificationButtonRes[i].BUTTON_ACTION != "REQUEST_INFO")
{
this.moreDisabled = false;
}
} // valid it
} // if result == null
@ -357,10 +368,10 @@ export class WorklistMainMRComponent implements OnInit {
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
if (
ButtonAction == 'APPROVE' ||
ButtonAction == 'REJECT' ||
ButtonAction == 'DEL' ||
ButtonAction == 'CLOSE'
ButtonAction == "APPROVED" ||
ButtonAction == "REJECTED" ||
ButtonAction == "DEL" ||
ButtonAction == "CLOSE"
) {
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = '';
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
@ -374,10 +385,10 @@ export class WorklistMainMRComponent implements OnInit {
);
/////////////////////////////////////////////
if (ButtonAction == 'APPROVE') {
if (ButtonAction == "APPROVED") {
this.confirmMsg = this.ts.trPK('worklistMain', 'approveMsg')
}
else if (ButtonAction == 'REJECT') {
else if (ButtonAction == "REJECTED") {
this.confirmMsg = this.ts.trPK('worklistMain', 'rejectMsg')
}
@ -389,15 +400,15 @@ export class WorklistMainMRComponent implements OnInit {
this.confirmMsg = this.ts.trPK('worklistMain', 'closeMsg')
}
this.openApplyModal(this.WorkListActionObj);
// this.openApplyModal(this.WorkListActionObj);
// this.common.confirmAlertDialogAction(
// () => {
// this.applyAction(this.WorkListActionObj);
// }, this.ts.trPK('general', 'ok'),
// () => { }, this.ts.trPK('general', 'cancel'),
// this.ts.trPK('vacation-rule', 'confirmation'),
// this.confirmMsg);
this.common.confirmAlertDialogAction(
() => {
this.applyAction(this.WorkListActionObj);
}, this.ts.trPK('general', 'ok'),
() => { }, this.ts.trPK('general', 'cancel'),
this.ts.trPK('vacation-rule', 'confirmation'),
this.confirmMsg);
//////////////////////////////////////////////////////////
@ -1035,4 +1046,52 @@ export class WorklistMainMRComponent implements OnInit {
}
getMOItemHistory(itemID ,orgID) {
console.log(itemID);
this.IsReachEnd = false;
const request = new MOItemHistoryReq();
request.P_ITEM_ID = parseInt(itemID);
request.P_PAGE_LIMIT = 100;
request.P_PAGE_NUM = 1;
request.P_ORG_ID= parseInt(orgID);
this.worklistMainService.getMOItemHistory(request).
subscribe((result: MOItemHistoryRes) => {
// this.common.sharedService.setSharedData(
// result.GetItemHistoryList,
// WorklistMainPoComponent.ItemHistoryList
// );
this.common.sharedService.setSharedData(
request,
WorklistMainMRComponent.PASS_MO_REQ
);
//open page
// this.common.openItemHistoryPage();
this.handleItemHistoryResult(result);
});
}
handleItemHistoryResult(result) {
if (this.common.validResponse(result)) {
if (this.common.hasData(result.GetMoItemHistoryList)) {
this.common.openMOItemHistoryPage();
}
}
else {
this.common.presentAlert(
this.ts.trPK("general", "empty")
);
}
}
}

@ -796,7 +796,7 @@
<ion-label>Skip</ion-label>
</ion-tab-button>
<ion-tab-button (click)="openMoreActions()">
<ion-tab-button [disabled]="moreDisabled" (click)="openMoreActions()">
<img src="../assets/imgs/action-more.png">
<ion-label>More</ion-label>
</ion-tab-button>

@ -115,6 +115,7 @@ export class WorklistMainPoComponent implements OnInit {
approveDis: boolean = false;
rejectDis: boolean = false;
requestDis: boolean = false;
moreDisabled: boolean = true;
direction: string;
defaultSegment = '';
@ -307,6 +308,13 @@ export class WorklistMainPoComponent implements OnInit {
if (this.notificationButtonRes[i].BUTTON_ACTION == "REQUEST_INFO") {
this.requestDis = true;
} // if result == null
else if (
this.notificationButtonRes[i].BUTTON_ACTION != "APPROVE" && this.notificationButtonRes[i].BUTTON_ACTION != "REJECT" && this.notificationButtonRes[i].BUTTON_ACTION != "REQUEST_INFO")
{
this.moreDisabled = false;
}
} // valid it
} // valid it

@ -508,7 +508,7 @@
<ion-label>Skip</ion-label>
</ion-tab-button>
<ion-tab-button (click)="openMoreActions()">
<ion-tab-button [disabled]="moreDisabled" (click)="openMoreActions()">
<img src="../assets/imgs/action-more.png">
<ion-label>More</ion-label>
</ion-tab-button>

@ -100,6 +100,7 @@ export class WorklistMainPRComponent implements OnInit {
approveDis: boolean;
rejectDis: boolean;
requestDis: boolean;
moreDisabled: boolean = true;
direction: string;
defaultSegment = '';
@ -309,6 +310,12 @@ export class WorklistMainPRComponent implements OnInit {
if (this.notificationButtonRes[i].BUTTON_ACTION == 'REQUEST_INFO') {
this.requestDis = true;
} // if result == null
else if (
this.notificationButtonRes[i].BUTTON_ACTION != "APPROVE" && this.notificationButtonRes[i].BUTTON_ACTION != "REJECT" && this.notificationButtonRes[i].BUTTON_ACTION != "REQUEST_INFO")
{
this.moreDisabled = false;
}
} // valid it
}
} // valid it

@ -68,7 +68,7 @@
<div style="margin: 10px; " *ngIf="subordinatesleaveList != undefined">Employee will also on leave </div>
<ion-item class="subOrdinateList" *ngFor="let List of subordinatesleaveList;">
<ion-item lines="none" class="subOrdinateList" *ngFor="let List of subordinatesleaveList;">

@ -185,6 +185,7 @@
--background: transparent;
margin-left: -15px;
margin-right: 6px;
margin-bottom:8px;
}
.status{
text-align: center;

@ -94,6 +94,7 @@ export class WorklistMainComponent implements OnInit {
rejectDis: boolean = false;
requestDis: boolean = false;
moreDisabled: boolean = true;
dirfromNotificationPage: boolean = false;
direction: string;
defaultSegment = '';
@ -313,7 +314,7 @@ export class WorklistMainComponent implements OnInit {
if (this.notificationButtonRes[i].BUTTON_ACTION == "REQUEST_INFO") {
this.requestDis = true;
} // if result == null
else (
else if(
this.notificationButtonRes[i].BUTTON_ACTION != "APPROVED" && this.notificationButtonRes[i].BUTTON_ACTION != "REJECTED" && this.notificationButtonRes[i].BUTTON_ACTION != "REQUEST_INFO")
{
this.moreDisabled = false;
@ -546,6 +547,7 @@ export class WorklistMainComponent implements OnInit {
EITNotificatonBodyResponse.NOT_WORKLIST
);
// this.navCtrl.push("EitUpdateListPage");
this.common.eitUpdate();// must be test
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
this.common.sharedService.setSharedData(
this.notificationBodyRes,
@ -559,7 +561,18 @@ export class WorklistMainComponent implements OnInit {
// dirfromNotificationPage: true,
// submitAbsObjList: this.notificationBodyRes[0].Collection_Notification
// });
this.common.openConfirmAbsece();
//this.common.openConfirmAbsece();
this.dirfromNotificationPage=true,
this.common.sharedService.setSharedData(
this.dirfromNotificationPage,
"dirfromNotificationPage"
);
this.common.sharedService.setSharedData(
this.notificationBodyRes[0].Collection_Notification,
"submitAbsObjList"
);
this.common.openSubmitAbsencePage();
}
}
else if (this.notificationButtonRes.length > 0 && !ButtonAction) {

@ -98,7 +98,7 @@
<p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
</div>
<div [ngClass]=" direction == 'ltr' ? 'div-green' : 'div-green-ar'">
<div [ngClass]=" direction == 'ltr' ? 'div-green-ar' : 'div-green'">
<ion-col>
<ion-row>
<label class="green-label">{{ts.trPK('payslip','earnings-key')}}</label>
@ -108,7 +108,7 @@
</ion-row>
</ion-col>
</div>
<div [ngClass]=" direction == 'ltr' ? 'div-blue' : 'div-blue-ar'">
<div [ngClass]=" direction == 'ltr' ? 'div-blue-ar' : 'div-blue'">
<ion-col>
<ion-row>
<label class="blue-label">{{ts.trPK('payslip','deductions-key')}}</label>

@ -167,8 +167,10 @@
border-radius: 20px !important;
padding-top: 13px;
padding-bottom: 14px;
margin-left: 26px;
margin-right: 28px;
// margin-left: 26px;
// margin-right: 28px;
margin-left: 19px;
margin-right: 19px;
margin-top: -2px;
margin-bottom: 10px;
padding-right: 21px;
@ -234,23 +236,23 @@
}
}
.green-label{
font-size: 12px;
margin-top: -13px;
font-size: 10px;
margin-top: -13px;
}
.green-amount{
font-size: 17px;
font-size: 14px;
font-family: WorkSans-Bold;
margin-top: -3px;
}
.blue-label{
font-size: 12px;
font-size: 10px;
margin-top: -13px;
}
.blue-amount{
font-size: 17px;
font-size: 14px;
font-family: WorkSans-Bold;
margin-top: -4px;
}

@ -1,9 +1,21 @@
<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">
<div class="header-div">
<ion-buttons slot="start">
<nav-buttons [enableMenu]="false" [enableBack]="true" [navigate]="true"></nav-buttons>
</ion-buttons>
<p class="proTitles">{{ts.trPK('userProfile','title')}}</p>
<!-- <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons> -->
<!-- <p class="proTitles">{{ts.trPK('userProfile','title')}}</p> -->
<div>

@ -8,16 +8,19 @@
background: var(--ion-item-background,var(--ion-background-color,#fff));
}
.header-toolbar-new{
--background: #22c6b3;
}
.colorBG{
--background: #f0efef;
}
.header-div{
text-transform: capitalize;
background: #22C6B3;
display: block;
position: relative;
height: 160px;
margin-bottom: 60px;
text-transform: capitalize;
background: #22C6B3;
display: block;
position: relative;
height: 113px;
margin-bottom: 60px;
}

@ -114,6 +114,10 @@ private handlePerformanceAppraisalResult(result){
this.sharedData.setSharedData(this.performanceData, PerformanceAppraisalResponse.PERFORMANCE_DATA);
//localStorage.setItem("performanceData", this.performanceData)
this.cs.openPerformanceevaluation();
}else{
let msg: string = this.ts.trPK("userProfile", "no-appraisal");
this.cs.presentAlert(msg);
}
}
}

@ -47,8 +47,6 @@
</div>
</div> <!-- end header-div -->
<div>
<!-- <ion-card *ngIf="personalInfo"> -->

@ -1,4 +1,3 @@
<ion-header >
<ion-toolbar class="header-toolbar-new">
<ion-title color="light">{{ts.trPK('userProfile','performance')}}</ion-title>

@ -156,8 +156,9 @@
.percentage{
font-size: 19px !important;
font-size: 20px !important;
margin-top: 15px !important;
margin-left: -7px;
}
.percentage-ar{

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

@ -47,4 +47,8 @@ width: 234px;
//box-shadow: 0px 0px 0px 10px #8c8c8c;
}
}
.header-toolbar-new{
--background: #22c6b3;
}

@ -75,7 +75,7 @@ public setImage:any;
handleUpdateImageProfileResult(result) {
if (this.common.validResponse(result)) {
this.common.setUpdateImage(this.displayImg);
this.common.setUpdateImage(this.displayImg,true);
this.event.publish('img-change', this.displayImg);
let msg: string = this.ts.trPK("userProfile", "successChange");
this.common.presentAlert(msg);

@ -16,7 +16,7 @@
<ion-item>
<ion-label class="boldTxtNav">{{'vacation-rule, search-by' | translate}}</ion-label>
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
[(ngModel)]="searchKeySelect">
[(ngModel)]="searchKeySelect" (ionChange)="onChangeSelect($event)">
<ion-select-option value="1" selected="true">{{'vacation-rule, search-by-name' | translate}}</ion-select-option>
<ion-select-option value="2">{{'vacation-rule, search-by-username' | translate}}</ion-select-option>
<ion-select-option value="3">{{'vacation-rule, search-by-email' | translate}}</ion-select-option>
@ -24,14 +24,14 @@
</ion-item>
<ion-item lines="none">
<ion-button class="filterBtn" button-type="clear" button-type="clear" (click)="SearchReplacementList()">
<ion-button [ngClass]="direction == 'en'? 'filterBtn':'filterBtn-ar'" button-type="clear" button-type="clear" (click)="SearchReplacementList()">
<ion-icon slot="icon-only" color="white" name="search"></ion-icon>
</ion-button>
<ion-input class="filterInput" [(ngModel)]="searchKey" placeholder="{{'vacation-rule, search-employee' | translate}}"></ion-input>
<ion-input [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="searchKey" placeholder="{{'vacation-rule, search-employee' | translate}}"></ion-input>
</ion-item>
<!-- <ion-item>
<ion-list [(ngModel)]="selEmp" *ngIf="ReplacementList">
@ -53,7 +53,7 @@
</ion-radio-group>
</ion-list> -->
<ion-item>
<ion-item lines="none">
<div *ngIf="ReplacementList" class="square-container">
<div (click)="select(employee,i)" *ngFor="let employee of ReplacementList;let i=index;" class="square">
<div class="profileImageDiv">

@ -108,6 +108,15 @@ button.item-button.button.button-md.button-clear.button-clear-md {
border-radius: 21px;
padding-left: 10px !important;
}
.filterInput-ar{
border: solid var(--gray) 1px;
border-radius: 21px;
padding-left: 100px !important;
margin-left: 86px;
padding-right: 129px;
margin-right: -139px;
}
.filterBtn{
background: var(--newgreen);
--background: var (--newgreen);
@ -116,7 +125,15 @@ button.item-button.button.button-md.button-clear.button-clear-md {
width: 60px;
}
.filterBtn-ar{
background: var(--newgreen);
--background: var (--newgreen);
border-radius: 50%;
height: 60px;
width: 60px;
margin-left: -167px;
margin-right: 247px;
}
*{
box-sizing: border-box;
@ -164,4 +181,7 @@ button.item-button.button.button-md.button-clear.button-clear-md {
border: #dedede solid 1px;
}
.disabledButton{
opacity:.5;
}

@ -29,12 +29,23 @@ export class ReplacementListComponent implements OnInit {
isAbs: boolean = false;
isSave: boolean = false;
active: any;
public direction: string;
isSelect: boolean =false;
searchKeyEnter: boolean = false;
request: ReplacementServiceRequest;
constructor(public vacationRuleService: VacationRuleServiceService, public ts: TranslatorService, public cs: CommonService, public modalController: ModalController) { }
constructor(public vacationRuleService: VacationRuleServiceService, public ts: TranslatorService, public cs: CommonService, public modalController: ModalController) {
this.direction = TranslatorService.getCurrentLanguageName();
}
ngOnInit() { }
ngOnInit() {
this.request = new ReplacementServiceRequest();
}
SearchReplacementList() {
console.log("this.searchKeySelect" + this.searchKeySelect);
this.ReplacementList = [];
this.IsReachEnd = false;
this.P_PAGE_NUM = 1;
@ -73,15 +84,15 @@ export class ReplacementListComponent implements OnInit {
this.P_SEARCH_EMAIL_ADDRESS = "";
}
const request = new ReplacementServiceRequest();
request.P_SEARCH_USER_NAME = this.P_SEARCH_USER_NAME;
request.P_SEARCH_EMPLOYEE_DISPLAY_NAME = this.P_SEARCH_EMPLOYEE_DISPLAY_NAME;
request.P_SEARCH_EMAIL_ADDRESS = this.P_SEARCH_EMAIL_ADDRESS;
request.P_PAGE_NUM = this.P_PAGE_NUM;
request.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
request.P_SELECTED_EMPLOYEE_NUMBER = this.selEmp;
// const request = new ReplacementServiceRequest();
this.request.P_SEARCH_USER_NAME = this.P_SEARCH_USER_NAME;
this.request.P_SEARCH_EMPLOYEE_DISPLAY_NAME = this.P_SEARCH_EMPLOYEE_DISPLAY_NAME;
this.request.P_SEARCH_EMAIL_ADDRESS = this.P_SEARCH_EMAIL_ADDRESS;
this.request.P_PAGE_NUM = this.P_PAGE_NUM;
this.request.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.request.P_SELECTED_EMPLOYEE_NUMBER = this.selEmp;
this.vacationRuleService.getReplacementList(request).
this.vacationRuleService.getReplacementList(this.request).
subscribe((result: any) => {
this.handleReplacment(result);
});
@ -161,13 +172,14 @@ export class ReplacementListComponent implements OnInit {
if (!this.IsReachEnd) {
const request = new ReplacementServiceRequest();
request.P_PAGE_NUM = this.P_PAGE_NUM;
request.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
///const request = new ReplacementServiceRequest();
console.log(this.request.P_SEARCH_USER_NAME + "-" + this.request.P_SEARCH_EMAIL_ADDRESS + "-" + this.request.P_SEARCH_EMPLOYEE_DISPLAY_NAME )
this.request.P_PAGE_NUM = this.P_PAGE_NUM;
this.request.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
// request.P_SELECTED_EMPLOYEE_NUMBER=this.selEmp;
this.vacationRuleService.getReplacementList(request).
this.vacationRuleService.getReplacementList(this.request).
subscribe((result: any) => {
if (this.cs.validResponse(result)) {
if (this.cs.hasData(result.ReplacementList)) {
@ -198,4 +210,27 @@ export class ReplacementListComponent implements OnInit {
infiniteScroll.target.complete();
}
}
onChangeSelect(select){
console.log(select.detail.value);
let selectValue= select.detail.value;
if(selectValue == "1" || selectValue == "2" ||selectValue == "3"){
this.isSelect=true;
}
else{
this.isSelect=false;
}
}
onChangeInput(){
if (this.searchKey.length >0) {
this.searchKeyEnter=true;
}else{
this.searchKeyEnter=false;
}
}
}

@ -33,8 +33,8 @@
<ion-row no-wrap>
<div class="stepHeaderDiv">
<label class="stepHeaderLebal">Applay for vacation Rule </label><br>
<label class="stepHeaderLebal">Step 1</label>
<label class="stepHeaderLebal">{{ 'vacation-rule, apply-for-vacation-rule' | translate}} </label><br>
<label class="stepHeaderLebal"> {{ 'vacation-rule, step-1' | translate}}</label>
</div>
<ion-item class="selectItem">
@ -59,7 +59,7 @@
<div *ngIf="notificationTypeShow && !isUpdate" class="divStep">
<div class="stepHeaderDiv">
<label class="stepHeaderLebal">Step 2</label>
<label class="stepHeaderLebal">{{ 'vacation-rule, step-2' | translate}}</label>
</div>
<ion-row >
@ -93,7 +93,7 @@
<div *ngIf="createVacationRuleShow" class="divStep" >
<div class="stepHeaderDiv">
<label class="stepHeaderLebal">Step 3</label>
<label class="stepHeaderLebal">{{ 'vacation-rule, step-3' | translate}}</label>
</div>
<ion-row>
<ion-grid>

@ -160,15 +160,15 @@
},
"check-user-text1":{
"en":"Please Enter your Employee ID, A ",
"ar":""
"ar":"يرجى ادخال رقم الموظف "
},
"check-user-text2":{
"en":"login Code ",
"ar":""
"ar":"رمز تسجيل الدخول"
},
"check-user-text3":{
"en":"will be sent to your mobile number",
"ar":""
"ar":"سيتم ارساله الى رقم هاتفك"
}
},
"verificationcode": {
@ -1005,6 +1005,10 @@
"en": "Performance",
"ar": "الاداء"
},
"no-appraisal": {
"en": "No Performance Evaluation",
"ar": "لايوجد تقييم"
},
"your-performance": {
"en": "Your Performance In",
"ar": "ادائك في"
@ -1021,6 +1025,10 @@
"en": "Business Group",
"ar": "مجموعة العمل"
},
"phone-no": {
"en": "Phone Number",
"ar": "رقم الجوال"
},
"job": {
"en": "Job",
"ar": "الوظيفة"
@ -1029,6 +1037,10 @@
"en": "Location Name",
"ar": "اسم الموقع"
},
"emp-detail": {
"en": "Employee Detail",
"ar": "بيانات الموظف"
},
"address": {
"en": "Address",
"ar": "العنوان"
@ -1151,6 +1163,22 @@
"en": "Vacation Rule",
"ar": "قواعد الإجازات"
},
"apply-for-vacation-rule": {
"en": "Apply for vacation Rule",
"ar": "التقدم بطلب اجازه"
},
"step-1": {
"en": "Step 1",
"ar": "الخطوه الاولى"
},
"step-2": {
"en": "Step 2",
"ar": "الخطوه الثانيه"
},
"step-3": {
"en": "Step 3",
"ar": "الخطوه الثالثه"
},
"ruleName": {
"en": "Rule Name",
"ar": "اسم القاعدة"
@ -1175,6 +1203,14 @@
"en": "Rule Information",
"ar": "معلومات القاعدة"
},
"create-request": {
"en": "Create Request",
"ar": "انشاء طلب"
},
"call": {
"en": "Call",
"ar": "مكالمه"
},
"deleteVR": {
"en": "Are you sure you want to delete this rule?",
"ar": "هل تريد فعلا حذف هذه القاعدة؟"
@ -1792,7 +1828,7 @@
},
"title":{
"en": "Replacement Roll",
"ar":"استبدال لفة"
"ar":"تفويض موظف"
},
"searchForReplacment":{
"en": "Search for an employee",
@ -2287,6 +2323,10 @@
"line_details":{
"en": "Line Details",
"ar":"Line Details"
},
"request_number":{
"en": "Request Number",
"ar":"Request Number"
}
},

@ -671,7 +671,7 @@ img.flipImg{
transform: translate3d(0, 0, 0);
width: 100%;
padding: 6px 0px;
background: var(--light);
// background: var(--light);
border-bottom: var(--cusgray) solid 1px;
border-radius: 0px;
-webkit-appearance: none;
@ -699,6 +699,7 @@ img.flipImg{
}
content: "";
z-index: 98;
margin-left: 31px;
}
.daynamicForm-Select{

@ -33,6 +33,7 @@
}
.itemReqDiv{
padding:10px;
width: 100%;
// padding-bottom: 10px;
// padding-top: 10px;
}
@ -231,7 +232,7 @@ ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
.timeline .timeline-item {
width: 40px;
// width: 40px;
}
@ -547,9 +548,9 @@ left: 66px;
height:70px
}
.empImge{
border-radius: 50%;
width:100%;
height: 100%;
border-radius: 50% !important;
width: 60px !important;
height: 60px !important;
border: #dedede solid 1px;
}

Loading…
Cancel
Save