merge master-newdesign

myteam
Mohamed Mekawy 6 years ago
commit 024ed04baf

17084
Mohem/package-lock.json generated

File diff suppressed because it is too large Load Diff

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

@ -29,6 +29,10 @@ export class AppComponent implements OnInit, AfterViewInit {
companyDesc: string = "Powered By Cloud Solutions"; companyDesc: string = "Powered By Cloud Solutions";
public direction = "ltr"; public direction = "ltr";
User_Job_name: string; User_Job_name: string;
requestGetLoginInfo: {
DeviceType: string; DeviceToken: string; //this.deviceToken
};
user: boolean;
constructor( constructor(
public ts: TranslatorService, public ts: TranslatorService,
private cs: CommonService, private cs: CommonService,
@ -71,6 +75,7 @@ export class AppComponent implements OnInit, AfterViewInit {
} }
private startReceivingPushService() { private startReceivingPushService() {
console.log("platform.ready")
this.pushService.startReceiving(); this.pushService.startReceiving();
} }
subscribeEvents() { subscribeEvents() {
@ -161,4 +166,5 @@ export class AppComponent implements OnInit, AfterViewInit {
} }
} }

@ -1,5 +1,5 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar"> <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> <ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons> </ion-buttons>

@ -78,6 +78,7 @@ export class CheckUserComponent implements OnInit {
console.log(result); console.log(result);
this.loginData.LogInTokenID = result.LogInTokenID; this.loginData.LogInTokenID = result.LogInTokenID;
this.loginData.P_USER_NAME = this.P_USER_NAME; this.loginData.P_USER_NAME = this.P_USER_NAME;
// this.loginData.EMPLOYEE_NAME=result.MemberLoginList[0].EMPLOYEE_NAME;
this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA); this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA);
this.sharedData.setSharedData(true,Password.IS_FORGET_PSW); this.sharedData.setSharedData(true,Password.IS_FORGET_PSW);
this.cs.stopLoading(); this.cs.stopLoading();

@ -1,5 +1,5 @@
<ion-header *ngIf="!accessFromOutSide"> <ion-header *ngIf="!accessFromOutSide">
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" ></ion-back-button> <ion-back-button color="light" class="btnBack" ></ion-back-button>
</ion-buttons> </ion-buttons>
@ -28,7 +28,10 @@
<!-- <img [src]="logo" class="loginLogo" /> <!-- <img [src]="logo" class="loginLogo" />
<h1 class="heading1">{{welcome}} </h1> --> <h1 class="heading1">{{welcome}} </h1> -->
<!-- <p class="text1" style="margin-bottom: -8px;font-weight: bold;font-size: 22px;">{{ts.trPK('login','Verify-text')}} </p> --> <!-- <p class="text1" style="margin-bottom: -8px;font-weight: bold;font-size: 22px;">{{ts.trPK('login','Verify-text')}} </p> -->
<!--
<p class="text1" style="font-size: 28px;margin-bottom: 0px" >{{empname}}</p> <p class="text1" style="font-size: 28px;margin-bottom: 0px" >{{empname}}</p>
-->
</ion-col> </ion-col>
</ion-row> <div *ngIf="onlySMSBox"><p>{{ts.trPK('login','verify-login-with')}}</p></div> </ion-row> <div *ngIf="onlySMSBox"><p>{{ts.trPK('login','verify-login-with')}}</p></div>
<!-- <type-writer *ngIf="!onlySMSBox" [text]="'login, verify-fingerprint' | translate" class="description" <!-- <type-writer *ngIf="!onlySMSBox" [text]="'login, verify-fingerprint' | translate" class="description"

@ -29,6 +29,7 @@ import { PushService } from 'src/app/hmg-common/services/push/push.service';
import { Platform } from '@ionic/angular'; import { Platform } from '@ionic/angular';
import { CheckUserAuthenticationResponse } from 'src/app/hmg-common/services/authentication/models/check-user-auth.response'; import { CheckUserAuthenticationResponse } from 'src/app/hmg-common/services/authentication/models/check-user-auth.response';
import { LoginModel } from '../models/LoginModel'; import { LoginModel } from '../models/LoginModel';
import * as moment from "moment";
@ -70,6 +71,8 @@ export class ConfirmLoginComponent implements OnInit {
password:any; password:any;
loginType: any; loginType: any;
empname: string; empname: string;
lastLoginDate: string;
user_name: string;
constructor( constructor(
@ -120,6 +123,7 @@ export class ConfirmLoginComponent implements OnInit {
this.password = localStorage.getItem("password"); this.password = localStorage.getItem("password");
this.empname = localStorage.getItem("emp-name"); this.empname = localStorage.getItem("emp-name");
} }
@ -674,9 +678,9 @@ export class ConfirmLoginComponent implements OnInit {
console.log("authService.getLoginInfo"); console.log("authService.getLoginInfo");
if(result.Mohemm_GetPatientID_List.length > 0){ if(result.Mohemm_GetMobileLoginInfoList.length > 0){
if ( result.Mohemm_GetPatientID_List[0].LoginType == 2 || result.Mohemm_GetPatientID_List[0].LoginType == 3) { if ( result.Mohemm_GetMobileLoginInfoList[0].LoginType == 2 || result.Mohemm_GetMobileLoginInfoList[0].LoginType == 3) {
this.loginTokenID = result.LogInTokenID; this.loginTokenID = result.LogInTokenID;
//send silent sms //send silent sms
@ -742,6 +746,11 @@ export class ConfirmLoginComponent implements OnInit {
console.log("insert"); console.log("insert");
localStorage.setItem("emp-name",result.MemberInformationList[0].EMPLOYEE_NAME); localStorage.setItem("emp-name",result.MemberInformationList[0].EMPLOYEE_NAME);
console.log("empnmae: "+ localStorage.getItem("emp-name")); console.log("empnmae: "+ localStorage.getItem("emp-name"));
this.user_name=result.MemberInformationList[0].EMPLOYEE_NAME;
//get date and time of last login
let currDateTime = moment().format('MMM DD , YYYY HH:mm')
localStorage.setItem("login-at",currDateTime);
if (this.platform.is("cordova")) { if (this.platform.is("cordova")) {
this.insertMobileLogin(); this.insertMobileLogin();
@ -781,12 +790,13 @@ export class ConfirmLoginComponent implements OnInit {
request.DeviceType= this.cs.getDeviceType(); request.DeviceType= this.cs.getDeviceType();
request.DeviceToken=this.deviceToken; request.DeviceToken="5ca8a69cf1804db55264c349edffb99b9d63acd9fa9b6b18956bcb2ad3f2ba36";//this.deviceToken;
//request.TokenID= //request.TokenID=
request.LoginType=this.selectedOption; request.LoginType=this.selectedOption;
request.EmployeeName=this.user_name;
this.authService this.authService
@ -840,10 +850,13 @@ private checkUserAuthentication() {
console.log("this.loginData before "+ this.loginData); console.log("this.loginData before "+ this.loginData);
this.loginData = new LoginModel(); this.loginData = new LoginModel();
console.log("this.loginData after "+ this.loginData); console.log("this.loginData after "+ this.loginData);
// console.log("result.MemberLoginList.EMPLOYEE_NAME "+ result.MemberInformationList[0].EMPLOYEE_NAME);
this.loginData.LogInTokenID = result.LogInTokenID; this.loginData.LogInTokenID = result.LogInTokenID;
this.loginData.MobileNumber = result.MemberLoginList.P_MOBILE_NUMBER; this.loginData.MobileNumber = result.MemberLoginList.P_MOBILE_NUMBER;
this.loginData.P_USER_NAME = this.username; this.loginData.P_USER_NAME = this.username;
this.loginData.EmployeeName = this.user_name;
this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA); this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA);
this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA); this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA);
//this.remeberMyInfo(); //this.remeberMyInfo();

@ -1,5 +1,5 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" ></ion-back-button> <ion-back-button color="light" class="btnBack" ></ion-back-button>
</ion-buttons> </ion-buttons>

@ -5,7 +5,7 @@
<img class="centerDiv" src="../assets/imgs/header.png" /> <img class="centerDiv" src="../assets/imgs/header.png" />
</ion-col> </ion-col>
</ion-row> --> </ion-row> -->
<ion-row *ngIf="loginDiv"> <ion-row *ngIf="!user">
<div class="content"> <div class="content">
@ -19,7 +19,7 @@
</div> </div>
</ion-row> </ion-row>
<ion-row *ngIf="welcomeBack "> <ion-row *ngIf="user ">
<ion-col [size]="4"> <ion-col [size]="4">
<img [src]="logo" class="logo" /> <img [src]="logo" class="logo" />
@ -30,12 +30,12 @@
<ion-row> <ion-row>
<ion-col *ngIf="loginDiv"> <ion-col *ngIf="!user">
<P class="pageTitle text-caps">{{ts.trPK('login','login')}}</P> <P class="pageTitle text-caps">{{ts.trPK('login','login')}}</P>
</ion-col> </ion-col>
</ion-row> </ion-row>
</ion-grid> </ion-grid>
<div *ngIf="loginDiv"> <div *ngIf="!user">
<ion-item class="item-input-login"> <ion-item class="item-input-login">
<img class="item-icon" src="assets/imgs/username.png" item-start /> <img class="item-icon" src="assets/imgs/username.png" item-start />
<ion-input class="login-input" required type="text" [(ngModel)]="username" placeholder="{{ts.trPK('login','username')}}"> <ion-input class="login-input" required type="text" [(ngModel)]="username" placeholder="{{ts.trPK('login','username')}}">
@ -73,7 +73,7 @@
<!-- div login--> <!-- div login-->
<!-- <div *ngIf="welcomeBack"> --> <!-- <div *ngIf="welcomeBack"> -->
<welcome-login (onLogin)="login()" (loginWithUser)="loginWithUser()" *ngIf="welcomeBack "> <welcome-login (onLogin)="login()" (loginWithUser)="loginWithUser()" *ngIf="user ">
</welcome-login> </welcome-login>
<!-- </div> --> <!-- </div> -->
@ -83,7 +83,7 @@
</ion-content> </ion-content>
<ion-footer *ngIf="loginDiv"> <ion-footer *ngIf="!user">
<div class="centerDiv"> <div class="centerDiv">
<ion-button class="button-login" (click)="onLogin()">{{ts.trPK('login','login')}}</ion-button> <ion-button class="button-login" (click)="onLogin()">{{ts.trPK('login','login')}}</ion-button>
</div> </div>

@ -45,7 +45,10 @@ export class LoginComponent implements OnInit, OnDestroy {
public loginDiv:boolean =true; public loginDiv:boolean =true;
public welcomeBack:boolean =false; public welcomeBack:boolean =false;
public logo = "assets/icon/login/password.png"; public logo = "assets/icon/login/password.png";
deviceToken: any="";
user: boolean =false;
DeviceType: string;
requestGetLoginInfo:any;
constructor( constructor(
public cs: CommonService, public cs: CommonService,
@ -64,25 +67,61 @@ export class LoginComponent implements OnInit, OnDestroy {
) { } ) { }
ngOnInit() { ngOnInit() {
// this.deviceToken= this.cs.sharedService.getSharedData(AuthenticationService.DEVICE_TOKEN, false);
// console.log("get deviceToken login"+ this.deviceToken)
this.deviceToken= localStorage.getItem('devicyeToken');
console.log("let deviceToken" + this.deviceToken);
if (this.deviceToken) {
console.log('login enabled first time: ' + this.deviceToken);
} else {
console.log("no deviceToken" );
this.pushService.startReceiving();
setTimeout(() => {
this.deviceToken= localStorage.getItem('deviceToken');
console.log('login enabled second time: ' + this.deviceToken);
}, 1000);
}
setTimeout(() => {
this.getLastLoginInfo();
},5000);
//here will delete below part and depdding on user (response from getMobileInfo)
this.username = localStorage.getItem("user"); this.username = localStorage.getItem("user");
this.password = localStorage.getItem("password"); this.password = localStorage.getItem("password"); //****//
let remember = localStorage.getItem("remember"); let remember = localStorage.getItem("remember");//****//
this.empname= localStorage.getItem("emp-name"); this.empname= localStorage.getItem("emp-name");
this.logintype= localStorage.getItem("login-type"); this.logintype= localStorage.getItem("login-type");
if (remember == "true") { this.remeberMe = true } else { this.remeberMe = false } if (remember == "true") { this.remeberMe = true } else { this.remeberMe = false }
if(this.username || this.empname){
this.loginDiv=false; //here will be check on user if exite then s part and depdding on user (response from getMobileInfo)
this.welcomeBack=true;
if(this.user){
// this.loginDiv=false;
// this.welcomeBack=true;
}else{ }else{
this.loginDiv=true; // this.user=true;
this.welcomeBack=false; // this.welcomeBack=false;
} }
// alert("user>>" + this.username); // alert("user>>" + this.username);
// alert("pass>>>" + this.password); // alert("pass>>>" + this.password);
// alert("remember>>>" + this.remeberMe); // alert("remember>>>" + this.remeberMe);
/// call getLoginInfo
} }
ngOnDestroy(): void { ngOnDestroy(): void {
@ -125,20 +164,24 @@ export class LoginComponent implements OnInit, OnDestroy {
} }
public onLogin() { public onLogin() {
// console.log("onLogin"); console.log("onLogin");
// this.checkAppUpdated(); // this.checkAppUpdated();
// this.checkUserAuthentication(); // this.checkUserAuthentication();
let deviceToken = localStorage.getItem('deviceToken'); this.deviceToken = localStorage.getItem('deviceToken');
if (deviceToken) { console.log("let deviceToken" + this.deviceToken);
console.log('login enabled first time: ' + deviceToken);
if (this.deviceToken) {
console.log('login enabled first time: ' + this.deviceToken);
this.checkAppUpdated(); this.checkAppUpdated();
} else { } else {
console.log("no deviceToken" );
this.pushService.startReceiving(); this.pushService.startReceiving();
setTimeout(() => { setTimeout(() => {
deviceToken = localStorage.getItem('deviceToken'); this.deviceToken = localStorage.getItem('deviceToken');
this.checkAppUpdated(); this.checkAppUpdated();
console.log('login enabled second time: ' + deviceToken); console.log('login enabled second time: ' + this.deviceToken);
}, 1000); }, 1000);
} }
} }
@ -194,9 +237,12 @@ export class LoginComponent implements OnInit, OnDestroy {
console.log("success"); console.log("success");
this.cs.stopLoading(); this.cs.stopLoading();
if (this.cs.validResponse(result)) { if (this.cs.validResponse(result)) {
// alert("result.MemberLoginList.EMPLOYEE_NAME :" + result.MemberLoginList.EMPLOYEE_NAME);
this.loginData.LogInTokenID = result.LogInTokenID; this.loginData.LogInTokenID = result.LogInTokenID;
this.loginData.MobileNumber = result.MemberLoginList.P_MOBILE_NUMBER; this.loginData.MobileNumber = result.MemberLoginList.P_MOBILE_NUMBER;
this.loginData.P_USER_NAME = this.username; this.loginData.P_USER_NAME = this.username;
// this.loginData.EMPLOYEE_NAME =result.MemberLoginList[0].EMPLOYEE_NAME;
this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA); this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA);
this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA); this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA);
this.remeberMyInfo(); this.remeberMyInfo();
@ -279,6 +325,8 @@ export class LoginComponent implements OnInit, OnDestroy {
console.log(result); console.log(result);
this.loginData.LogInTokenID = result.LogInTokenID; this.loginData.LogInTokenID = result.LogInTokenID;
this.loginData.P_USER_NAME = this.username; this.loginData.P_USER_NAME = this.username;
this.loginData.EmployeeName =result.MemberLoginList[0].EMPLOYEE_NAME;
this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA); this.cs.sharedService.setSharedData(this.loginData.P_USER_NAME, LoginRequest.SHARED_DATA);
this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA); this.sharedData.setSharedData(this.loginData, AuthenticationService.LOGIN_DATA);
this.sharedData.setSharedData(true, Password.IS_FORGET_PSW); this.sharedData.setSharedData(true, Password.IS_FORGET_PSW);
@ -292,8 +340,8 @@ export class LoginComponent implements OnInit, OnDestroy {
console.log("login emit"); console.log("login emit");
console.log("login"); console.log("login");
// this.checkUserAuthentication(); // this.checkUserAuthentication();
this.loginDiv=true; //this.loginDiv=true;
this.welcomeBack=false; this.user=false;
} }
@ -302,4 +350,33 @@ export class LoginComponent implements OnInit, OnDestroy {
this.cs.openConfirmLoginPage(); this.cs.openConfirmLoginPage();
} }
///
getLastLoginInfo(){
this.requestGetLoginInfo= {
DeviceType:this.cs.getDeviceType(),
DeviceToken:this.deviceToken//"5ca8a69cf1804db55264c349edffb99b9d63acd9fa9b6b18956bcb2ad3f2ba36"//this.deviceToken
}
this.authService.getLoginInfo(this.requestGetLoginInfo,() => {}, this.ts.trPK('general', 'ok')).subscribe(res => {
if (this.cs.validResponse(res)) {
if(res.Mohemm_GetMobileLoginInfoList.length > 0){
this.cs.sharedService.setSharedData(
// res.Patient_SELECTDeviceIMEIbyIMEIList[0],
res.Mohemm_GetMobileLoginInfoList[0],
AuthenticationService.IMEI_USER_DATA
);
this.user = true;
}
else{
this.user=false
}
}
});
}
} }

@ -3,4 +3,7 @@ export class LoginModel {
activationCode: string; activationCode: string;
P_USER_NAME: string; P_USER_NAME: string;
MobileNumber: string; MobileNumber: string;
EMPLOYEE_DISPLAY_NAME: string;
EMPLOYEE_NAME:string;
EmployeeName:string;
} }

@ -1,5 +1,5 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<ion-buttons slot="start"> <ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" ></ion-back-button> <ion-back-button color="light" class="btnBack" ></ion-back-button>
</ion-buttons> </ion-buttons>

@ -22,6 +22,7 @@ import { SMSCheckResponse } from "src/app/hmg-common/services/authentication/mod
import { Password } from "../models/password"; import { Password } from "../models/password";
import { GetLoginInfoRequest } from 'src/app/hmg-common/services/authentication/models/get-login-info.request'; import { GetLoginInfoRequest } from 'src/app/hmg-common/services/authentication/models/get-login-info.request';
import * as moment from "moment";
@ -79,6 +80,7 @@ export class SmsPageComponent implements OnInit {
public smc_code: any = []; public smc_code: any = [];
code: any; code: any;
user_name: string;
constructor( constructor(
@ -346,6 +348,12 @@ export class SmsPageComponent implements OnInit {
console.log("insert"); console.log("insert");
localStorage.setItem("emp-name",result.MemberInformationList[0].EMPLOYEE_NAME); localStorage.setItem("emp-name",result.MemberInformationList[0].EMPLOYEE_NAME);
console.log("empnmae: "+ localStorage.getItem("emp-name")); console.log("empnmae: "+ localStorage.getItem("emp-name"));
// localStorage.setItem("login-at", new Date().toISOString());
this.user_name=result.MemberInformationList[0].EMPLOYEE_NAME;
//get date and time of last login
let currDateTime = moment().format('MMM DD , YYYY HH:mm')
localStorage.setItem("login-at",currDateTime);
if (this.platform.is("cordova")) { if (this.platform.is("cordova")) {
// localStorage.setItem("full-name", result.P_USER_NAME); // localStorage.setItem("full-name", result.P_USER_NAME);
@ -370,7 +378,7 @@ export class SmsPageComponent implements OnInit {
public insertMobileLogin(){ public insertMobileLogin(){
// alert("insertMobileLogin"); console.log("loginData" + this.loginData);
let request = new GetLoginInfoRequest(); let request = new GetLoginInfoRequest();
@ -388,10 +396,12 @@ export class SmsPageComponent implements OnInit {
request.DeviceType= this.common.getDeviceType(); request.DeviceType= this.common.getDeviceType();
request.DeviceToken=this.deviceToken; request.DeviceToken=this.deviceToken;//"5ca8a69cf1804db55264c349edffb99b9d63acd9fa9b6b18956bcb2ad3f2ba36";//this.deviceToken;
request.LoginType=this.loginTypeData.loginType; request.LoginType=this.loginTypeData.loginType;
request.EmployeeName=this.user_name;
this.authService this.authService
.insertMobileLoginInfo( .insertMobileLoginInfo(

@ -12,7 +12,9 @@
<ion-content> <ion-content>
<ion-list style="margin-top: 40px;border-top: 1px solid #c8c8c8;">
<!--From Home List-->
<ion-list style="margin-top: 40px;border-top: 1px solid #c8c8c8;" [hidden]="pageType=='myteam'" *ngIf="pageType=='home'">
<ion-item lines="none" class="custCollabs ion-item-styling" *ngFor="let menuItem of menu.children; let i=index" <ion-item lines="none" class="custCollabs ion-item-styling" *ngFor="let menuItem of menu.children; let i=index"
(click)="openPage(menuItem, i);"> (click)="openPage(menuItem, i);">
<ion-row style="width: 100%;"> <ion-row style="width: 100%;">
@ -46,4 +48,44 @@
*ngIf="menuItem.children && menuItem.MENU_ENTRY_TYPE=='MENU'" slot="end" class="arrow-down"></ion-icon> --> *ngIf="menuItem.children && menuItem.MENU_ENTRY_TYPE=='MENU'" slot="end" class="arrow-down"></ion-icon> -->
</ion-item> </ion-item>
</ion-list> </ion-list>
<!--From My Team List-->
<ion-list style="margin-top: 40px;border-top: 1px solid #c8c8c8;" [hidden]="pageType=='home'" *ngIf="pageType=='myteam'">
<ion-item lines="none" class="custCollabs ion-item-styling" *ngFor="let menuItem of menu; let i=index"
(click)="openPage(menuItem, i);">
<ion-row style="width: 100%;">
<!-- Parent Pages -->
<ion-col size="12" class="">
<div [ngClass]="{'selectedDiv': selectedMenu == i,'notSelected': selectedMenu != i }">
<ion-label>
<b text-wrap>{{menuItem.PROMPT}}</b>
<ion-icon style="float: right;font-size: 25px;color: grey;" name="arrow-forward"></ion-icon>
</ion-label>
</div>
<!-- Child Pages -->
<ion-list [hidden]="selectedMenu != i" lines="full">
<ion-item lines="full" class="" *ngFor="let subPage of menuItem.children;let i2=index" text-wrap
(click)="openPage(subPage)">
<!-- <ion-row>
<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-icon style="float: right;font-size: 25px;color: grey;" name="arrow-forward"></ion-icon>
</ion-label>
<!-- </ion-col>
</ion-row> -->
</ion-item>
</ion-list>
</ion-col>
</ion-row>
<!-- <ion-icon [name]="selectedMenu == i? 'ios-arrow-down' : 'ios-arrow-forward'"
*ngIf="menuItem.children && menuItem.MENU_ENTRY_TYPE=='MENU'" slot="end" class="arrow-down"></ion-icon> -->
</ion-item>
</ion-list>
</ion-content> </ion-content>

@ -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;
pageType :string;
constructor(private cs: CommonService, private ts: TranslatorService) { constructor(private cs: CommonService, private ts: TranslatorService) {
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.selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false); this.selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false);
const title: string = this.ts.trPK('eit', 'my-requests'); const title: string = this.ts.trPK('eit', 'my-requests');
this.headerTitle = this.menu.PROMPT ? this.menu.PROMPT : title; this.headerTitle = this.menu.PROMPT ? this.menu.PROMPT : title;

@ -55,7 +55,7 @@ export class AuthenticationService {
public static smsSendCode='Services/ERP.svc/REST/SendPublicActivationCode'; public static smsSendCode='Services/ERP.svc/REST/SendPublicActivationCode';
public static sendActivationCodeByType = 'Services/ERP.svc/REST/Mohemm_SendActivationCodebyOTPNotificationType'; public static sendActivationCodeByType = 'Services/ERP.svc/REST/Mohemm_SendActivationCodebyOTPNotificationType';
public static getMobileLoginInfo ='Services/ERP.svc/REST/Mohemm_GetMobileLoginInfo'; public static getMobileLoginInfo ='Services/ERP.svc/REST/Mohemm_GetMobileLoginInfo_NEW';//Mohemm_GetMobileLoginInfo
public static insertMobileLoginInfo ='Services/ERP.svc/REST/Mohemm_InsertMobileLoginInfo'; public static insertMobileLoginInfo ='Services/ERP.svc/REST/Mohemm_InsertMobileLoginInfo';
/* register methods */ /* register methods */
@ -82,6 +82,7 @@ export class AuthenticationService {
public static LOGIN_DATA="logindata"; public static LOGIN_DATA="logindata";
public static DEVICE_TOKEN = "device_token"; public static DEVICE_TOKEN = "device_token";
public static LAST_LOGIN = 'last-login'; public static LAST_LOGIN = 'last-login';
public static IMEI_USER_DATA = "imei-user-data";
// private static user: AuthenticatedUser; // private static user: AuthenticatedUser;
@ -303,11 +304,11 @@ export class AuthenticationService {
} }
public getLoginInfo( public getLoginInfo(
request: GetLoginInfoRequest, request: any,
onError: any, onError: any,
errorLabel: string errorLabel: string
): Observable<GetLoginInfoResponse> { ): Observable<GetLoginInfoResponse> {
this.setPublicFields(request); //this.setPublicFields(request);
return this.con.post( return this.con.post(
AuthenticationService.getMobileLoginInfo, AuthenticationService.getMobileLoginInfo,
request, request,

@ -21,4 +21,6 @@ export class CheckUserAuthenticationResponse extends Response {
//public P_SESSION_ID:string; //public P_SESSION_ID:string;
public MemberLoginList: MemberList ; public MemberLoginList: MemberList ;
public BasicMemberInformation: BasicInfo; public BasicMemberInformation: BasicInfo;
public EMPLOYEE_DISPLAY_NAME: string;
public EMPLOYEE_NAME:string;
} }

@ -14,6 +14,8 @@ export class GetLoginInfoRequest extends Request {
CompanyID:number; CompanyID:number;
DeviceType:string; DeviceType:string;
LoginType:number; LoginType:number;
EMPLOYEE_NAME:string;
EmployeeName:string;
// constructor(user: AuthenticatedUser) { // constructor(user: AuthenticatedUser) {
// super(); // super();
// this.NationalID = user.IdentificationNo; // this.NationalID = user.IdentificationNo;

@ -5,7 +5,8 @@ export class GetLoginInfoResponse extends Response {
SMSLoginRequired: boolean; SMSLoginRequired: boolean;
isSMSSent: boolean; isSMSSent: boolean;
LogInTokenID: string; LogInTokenID: string;
Mohemm_GetPatientID_List:any Mohemm_GetPatientID_List:any //old one
Mohemm_GetMobileLoginInfoList:any
isActiveCode: boolean; isActiveCode: boolean;
// PatientOutSA: boolean; // PatientOutSA: boolean;
} }

@ -6,4 +6,6 @@ export class MemberList {
public P_RETURN_MSG: string; public P_RETURN_MSG: string;
public P_RETURN_STATUS: string; public P_RETURN_STATUS: string;
public P_SESSION_ID: number; public P_SESSION_ID: number;
public EMPLOYEE_DISPLAY_NAME: string;
public EMPLOYEE_NAME:string;
} }

@ -43,6 +43,7 @@ export class PushService {
) { } ) { }
public startReceiving() { public startReceiving() {
console.log("startReceiving");
// this.processStartReceiving(); // this.processStartReceiving();
this.processStartReceivingWithFirebase(); this.processStartReceivingWithFirebase();
} }
@ -165,6 +166,7 @@ export class PushService {
if (data) { if (data) {
this.cs.sharedService.setSharedData(data, AuthenticationService.DEVICE_TOKEN); this.cs.sharedService.setSharedData(data, AuthenticationService.DEVICE_TOKEN);
localStorage.setItem('deviceToken', data); localStorage.setItem('deviceToken', data);
} }
if (this.authService.isAuthenticated()) { if (this.authService.isAuthenticated()) {
this.registerAuthenticatedUser(data); this.registerAuthenticatedUser(data);
@ -216,14 +218,22 @@ export class PushService {
private processStartReceivingWithFirebase() { private processStartReceivingWithFirebase() {
console.log("processStartReceivingWithFirebase");
this.firebasex.getToken().then(token => { this.firebasex.getToken().then(token => {
console.log(token); alert("token: "+ token);
this.registerInBackend(token);
});
this.firebasex.onTokenRefresh().subscribe(token => {
console.log(token);
this.registerInBackend(token); this.registerInBackend(token);
}); }).catch(error => console.error('Error getting token', error));
// this.firebase.getToken()
// .then(token => console.log(`The token is ${token}`))
// .catch(error => console.error('Error getting token', error));
// this.firebasex.onTokenRefresh().subscribe(token => {
// alert("token: "+ token);
// this.registerInBackend(token);
// });
} }
public onPushReceived(payload: any) { public onPushReceived(payload: any) {
@ -240,4 +250,7 @@ export class PushService {
} }

@ -3,10 +3,16 @@
<div class="circle"> <div class="circle">
<ion-fab class="fab-i "> <ion-fab class="fab-i ">
<ion-fab-button class="cbookApointmentBtn" (click)="onClick()" > <ion-fab-button [ngClass]="type === 'add' ? 'addnon' : 'cbookApointmentBtn' " (click)="onClick()" >
<!-- <img style="width: 39%; margin-top: -29%;" src="assets/icon/booking.png" /> --> <!-- <img style="width: 39%; margin-top: -29%;" src="assets/icon/booking.png" /> -->
<div *ngIf="type != 'add' ">
<ion-icon class="iconFab" name="finger-print"></ion-icon> <ion-icon class="iconFab" name="finger-print"></ion-icon>
<p class="fab-p">{{ 'attendance-tracking,title' | translate }} </p> <p class="fab-p">{{ 'attendance-tracking,title' | translate }} </p>
</div>
<div *ngIf="type === 'add' ">
<ion-icon style="margin-top:0px" class="iconFab" name="add"></ion-icon>
<!-- <ion-icon name="add-outline"></ion-icon> -->
</div>
</ion-fab-button> </ion-fab-button>
</ion-fab> </ion-fab>

@ -19,6 +19,22 @@ ion-fab-button{
--background: transparent; --background: transparent;
} }
.addnon{
--background: var(--darkblue)!important;
background-size: cover;
background-position: top right;
border-radius: 50%;
height: 80px;
width: 80px;
width: 80px;
height: 80px;
right: 8%;
position: fixed;
color: white;
bottom: 20%;
border-radius: 50%;
z-index: 999;
}
.fab-p{ .fab-p{
// position: absolute; // position: absolute;

@ -1,4 +1,4 @@
import { Component, OnInit, Output, EventEmitter } from '@angular/core'; import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';
import { TranslatorService } from '../../services/translator/translator.service'; import { TranslatorService } from '../../services/translator/translator.service';
@Component({ @Component({
@ -7,13 +7,14 @@ import { TranslatorService } from '../../services/translator/translator.service'
styleUrls: ['./fab-button.component.scss'], styleUrls: ['./fab-button.component.scss'],
}) })
export class FabButtonComponent implements OnInit { export class FabButtonComponent implements OnInit {
@Input() type:string;
@Output() trigger = new EventEmitter(); @Output() trigger = new EventEmitter();
public direction: any; public direction: any;
constructor( constructor(
) { } ) { }
ngOnInit() { ngOnInit() {
console.log("type" + this.type);
this.direction = TranslatorService.getCurrentDirection(); this.direction = TranslatorService.getCurrentDirection();
} }

@ -1,7 +1,7 @@
<div feedback class="custom-button"> <div feedback class="custom-button">
<div class="iconBox"> <div class="iconBox">
<img *ngIf="title != 'My Team'" [src]="'data:image/png;base64,'+icon" class="icon"> <img *ngIf="title != 'My Team' && title != 'Vacation Rule'" [src]="'data:image/png;base64,'+icon" class="icon">
<img *ngIf="title == 'My Team'" [src]="icon" class="icon"> <img *ngIf="title == 'My Team' || title == 'Vacation Rule'" [src]="icon" class="icon">
</div> </div>
<div class="titleBox"> <div class="titleBox">
<p class="pClass">{{title}}</p> <p class="pClass">{{title}}</p>

@ -1,33 +1,46 @@
<ion-content has-bouncing="false" forceOverscroll="false" class="ion-no-padding"> <ion-content has-bouncing="false" forceOverscroll="false" class="ion-no-padding">
<ion-grid padding> <ion-grid padding>
<ion-row> <!-- <ion-row>
<ion-col [size]="12"> <ion-col [size]="12">
<!-- <img [src]="logo" class="loginLogo" /> <img [src]="logo" class="loginLogo" />
<h1 class="heading1">{{welcome}} </h1> --> <h1 class="heading1">{{welcome}} </h1>
<p class="text1" style="margin-bottom: -8px;font-weight: bold;font-size: 28px;">{{'home,welcome-back' | translate}} </p> <p class="text1" style="margin-bottom: -8px;font-weight: bold;font-size: 28px;">{{'home,welcome-back' | translate}} </p>
<p class="text1" style="font-size: 28px;margin-top: 0px;" >{{empname}}</p> <p class="text1" style="font-size: 28px;margin-top: 0px;" >{{empname}}</p>
<p *ngIf="!empname" class="text1">{{welcome_txt}} </p> <p *ngIf="!empname" class="text1">{{welcome_txt}} </p>
<p class="text1">{{txt_account}} </p> <p class="text1">{{txt_account}} </p>
</ion-col> </ion-col>
</ion-row> -->
<ion-row>
<ion-col [size]="12">
<h1 class="heading1">{{welcome}} </h1>
<p *ngIf="!user" class="text1">{{welcome_txt}} </p>
<p class="text1">{{txt_account}} </p>
</ion-col>
</ion-row> </ion-row>
<ion-row class="row-border" *ngIf="empname && isLastLogin"> <ion-row class="row-border" *ngIf="user && isLastLogin">
<ion-col size="6" style="padding: 5px 10px; border-right:1px solid #bbbbbb"> <ion-col size="6" style="padding: 5px 10px; border-right:1px solid #bbbbbb">
<p class="last-login" style="font-weight: bold">{{'login,last-login' | translate}} </p> <p class="last-login" style="font-weight: bold">{{'login,last-login' | translate}} </p>
<!-- <p class="last-login small-font-size">{{user.EditedOn | date}} <p class="last-login small-font-size">{{user.EditedOn | date}}
{{lastLoginTime}}</p>--> {{lastLoginTime }}</p>
<!-- <p class="last-login "> {{lastLoginDate}}</p> -->
</ion-col> </ion-col>
<ion-col size="6" style="padding: 5px 10px;"> <ion-col size="6" style="padding: 5px 10px;">
<p class="last-login" style="font-weight: bold" [ngClass]="{'fadein':empname && isLastLogin }"> <p class="last-login" style="font-weight: bold" [ngClass]="{'fadein':user && isLastLogin }">
{{'login,last-login-with' | translate}} {{'login,last-login-with' | translate}}
</p> </p>
<p class="last-login">{{getLoginType(logintype)}}</p> <p class="last-login">{{getLoginType(logintype)}}</p>
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row class="ion-no-padding description" *ngIf="empname && isLastLogin"> <ion-row class="ion-no-padding description" *ngIf="user && isLastLogin">
<ion-col style="margin-top:-5px" class="ion-no-padding " [size]=6> <ion-col style="margin-top:-5px" class="ion-no-padding " [size]=6>
<app-confirm-login [accessFromOutSide]="true" *ngIf="empname"></app-confirm-login> <app-confirm-login [accessFromOutSide]="true" *ngIf="user"></app-confirm-login>
</ion-col> </ion-col>
<ion-col [size]=6> <ion-col [size]=6>
<app-button (click)="loginwithuser()" [title]="button.title | translate " [icon]="button.icon" <app-button (click)="loginwithuser()" [title]="button.title | translate " [icon]="button.icon"
@ -44,7 +57,7 @@
</ion-content> </ion-content>
<ion-footer class="welcome-footer"> <ion-footer class="welcome-footer">
<ion-row class="ion-justify-content-center " *ngIf="empname"> <ion-row class="ion-justify-content-center " *ngIf="user">
<ion-col [size]="12"> <ion-col [size]="12">
<ion-button class="centerDiv button-login" expand="block" (click)="login()"> <ion-button class="centerDiv button-login" expand="block" (click)="login()">

@ -69,6 +69,8 @@ export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
password: string; password: string;
empname: string; empname: string;
logintype: any; logintype: any;
lastLoginDate: string;
user_name: string;
constructor( constructor(
public ts: TranslatorService, public ts: TranslatorService,
@ -80,12 +82,32 @@ export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
ngOnInit() { ngOnInit() {
// retrive user info ** // retrive user info **
this.user = this.cs.sharedService.getSharedData(
AuthenticationService.IMEI_USER_DATA,
false
);
this.userName = localStorage.getItem("user"); this.userName = localStorage.getItem("user");
this.password = localStorage.getItem("password"); this.password = localStorage.getItem("password");
let remember = localStorage.getItem("remember"); let remember = localStorage.getItem("remember");
this.empname= localStorage.getItem("emp-name"); this.empname= localStorage.getItem("emp-name");
this.logintype= localStorage.getItem("login-type"); this.logintype= localStorage.getItem("login-type");
this.lastLoginDate= localStorage.getItem("login-at");
// this.lastLoginDate= new Date(this.lastLoginDate).toISOString()
// let day = this.lastLoginDate.getDate();
// let month = this.lastLoginDate.getMonth() + 1;
// let year = this.lastLoginDate.getFullYear();
// let todayDate = month + '/' + day + '/' + year;
// this.lastLoginTime = moment(this.cs.evaluteDateAsObject(this.lastLoginDate)).format("HH:mm");
this.logintype = parseInt(this.logintype) this.logintype = parseInt(this.logintype)
console.log(" this.lastLoginTime" + this.lastLoginTime);
console.log(" this.lastLoginDate" + this.lastLoginDate);
this.welcome_txt = this.ts.trPK("home", "welcome-txt"); this.welcome_txt = this.ts.trPK("home", "welcome-txt");
@ -99,7 +121,7 @@ export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
this.setDescription(); this.setDescription();
//later to fix below code //later to fix below code
if (this.user) { if (this.user) {
// this.lastLoginTime = moment(this.cs.evaluteDateAsObject(this.user.EditedOn)).format("HH:mm"); this.lastLoginTime = moment(this.cs.evaluteDateAsObject(this.user.EditedOn)).format("HH:mm");
} }
} }
@ -107,7 +129,7 @@ export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
} }
private setWelcomeMessage() { private setWelcomeMessage1() {
console.log(this.userName + "this.userName"); console.log(this.userName + "this.userName");
if (this.userName) { if (this.userName) {
@ -117,12 +139,38 @@ export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
this.welcome += " " + this.empname || ''; this.welcome += " " + this.empname || '';
this.isLastLogin = true; this.isLastLogin = true;
console.log(this.isLastLogin + "this.isLastLogin"); console.log(this.isLastLogin + "this.isLastLogin");
} else { } else {
this.welcome = this.ts.trPK("home", "welcome-head"); this.welcome = this.ts.trPK("home", "welcome-head");
} }
} }
private setWelcomeMessage() {
console.log(" setWelcomeMessage ");
if (this.user) {
console.log(" this.user.EmployeeName: "+ this.user.EmployeeName);
if(this.user.EmployeeName != null && this.user.EmployeeName !=''){
this.user_name=this.user.EmployeeName;
}
else{
this.user_name="";
}
this.welcome = this.ts.trPK("home", "welcome-back");
this.welcome += " " + this.user_name || '';
this.isLastLogin = true;
} else {
this.welcome = this.ts.trPK("home", "welcome-head");
}
}
private setDescription() { private setDescription() {
this.txt_account = this.userName ? this.txt_account = this.userName ?
this.ts.trPK("home", "account-info") :""; this.ts.trPK("home", "account-info") :"";

@ -62,6 +62,15 @@
[icon]="subMenu.ICON"> [icon]="subMenu.ICON">
</app-services-button> </app-services-button>
</ion-slide> </ion-slide>
<ion-slide *ngIf="i == 2">
<app-services-button
(click)="Vacation_Rule()"
title="Vacation Rule"
icon="assets/icon/new-design/vacation_rules_icon.png">
</app-services-button>
</ion-slide>
</ion-slides> </ion-slides>
</ion-row> </ion-row>

@ -436,6 +436,7 @@ export class HomePage implements OnInit {
this.menuEntries = tree; this.menuEntries = tree;
console.log(this.menuEntries); console.log(this.menuEntries);
this.common.sharedService.setSharedData(tree, "menuEntries"); this.common.sharedService.setSharedData(tree, "menuEntries");
this.common.sharedService.setSharedData("home", "homemenuentries");
// this.common.navigateForward("/eit/homepage"); // this.common.navigateForward("/eit/homepage");
// this.common.openEITPage(); // this.common.openEITPage();
} }
@ -715,6 +716,7 @@ openProfilePage() {
this.common.openEditProfile(); this.common.openEditProfile();
} }
openStatsButton(link: any) { openStatsButton(link: any) {
// console.log(link); // console.log(link);
if (link == "1") { if (link == "1") {

@ -515,6 +515,7 @@ doInfinite(infiniteScroll) {
sortMenuEntires(list) { sortMenuEntires(list) {
const tree = this.common.list_to_tree(list); const tree = this.common.list_to_tree(list);
this.common.sharedService.setSharedData(tree, 'menuEntries'); this.common.sharedService.setSharedData(tree, 'menuEntries');
this.common.sharedService.setSharedData("myteam", "homemenuentries");
this.common.openEITPage(); this.common.openEITPage();
} }

@ -1,18 +1,36 @@
<ion-header>
<ion-toolbar>
<!-- class="header-toolbar" <nav-buttons></nav-buttons> -->
<ion-title style="text-align: center;font-weight: bold;" color="dark">Confirmation</ion-title>
</ion-toolbar>
</ion-header>
<ion-content> <ion-content>
<div> <div class="dynamicFields" id="notificationDynamicFieldsModal">
<div id="notificationDynamicFields">
</div> </div>
<!-- <div class="msgConfirm">
{{confirmMsg}}
</div> -->
<div class="msgConfirm">
<div *ngIf="getPassActionMode === 'APPROVED'" [innerHTML]='"worklistMain, approveMsg" | translate'></div>
<div *ngIf="getPassActionMode === 'REJECTED'" [innerHTML]='"worklistMain, rejectMsg" | translate'></div>
<div *ngIf="getPassActionMode === 'DEL'" [innerHTML]='"worklistMain, delMsg" | translate'></div>
<div *ngIf="getPassActionMode === 'CLOSE'" [innerHTML]='"worklistMain, closeMsg" | translate'></div>
</div> </div>
<ion-footer> <ion-footer>
<ion-row style="text-align: center;"> <ion-row style="text-align: center;">
<ion-col> <ion-col size="12">
<ion-button color="customnavy" class="confirmBtn" (click)="applyAction()"> {{ts.trPK('general','confirm')}} <ion-button class="checkOutOkBtn" (click)="actionButton()"> {{ts.trPK('general','confirm')}}
</ion-button> </ion-button>
</ion-col> </ion-col>
<ion-col> <ion-col size="12">
<ion-button color="customnavy" class="cancelBtn" (click)="closeModel()"> {{ts.trPK('general','cancel')}} <ion-button class="checkOutCancelBtn" (click)="closeModel()"> {{ts.trPK('general','cancel')}}
</ion-button> </ion-button>
</ion-col> </ion-col>

@ -1 +1,14 @@
.dynamicFields{
width: 93%;
border: #dbdbdb solid 1px;
border-radius: 16px;
margin: 10px;
padding: 10px;
}
.msgConfirm{
text-align: center;
font-size: 20px !important;
// font-weight: bold;
}

@ -4,6 +4,7 @@ import { CommonService } from 'src/app/hmg-common/services/common/common.service
import { WorklistMainService } from '../service/work-list.main.service'; import { WorklistMainService } from '../service/work-list.main.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { TextAreaInput } from 'src/app/uI-elements/text-area.input'; import { TextAreaInput } from 'src/app/uI-elements/text-area.input';
import { WorkListActionRequest } from '../models/NotificationActionReq';
@Component({ @Component({
selector: 'app-apply-action-modal', selector: 'app-apply-action-modal',
@ -15,51 +16,57 @@ export class ApplyActionModalComponent implements OnInit {
getpassResAttr: any; getpassResAttr: any;
getPassNotificationDetails: any; getPassNotificationDetails: any;
getPassNotification: any; getPassNotification: any;
confirmMsg: string;
getPassActionMode: any;
P_RESPOND_ATTRIBUTES_TBL: any;
selEmployeeID: any;
hideForwordEmployee: any;
private WorkListActionObj: WorkListActionRequest;
messageSuccess: boolean;
constructor( private ts: TranslatorService,private modalCtrl: ModalController, private cs: CommonService,public worklistMainService: WorklistMainService, constructor( private ts: TranslatorService,private modalCtrl: ModalController, private cs: CommonService,public worklistMainService: WorklistMainService,
) { ) {
this.getPassNotificationDetails = this.cs.sharedService.getSharedData('passNotificationInfo',false); this.getPassNotificationDetails = this.cs.sharedService.getSharedData('passNotificationInfo',false);
this.getpassResAttr = this.cs.sharedService.getSharedData('passResAttr' ,false); this.getpassResAttr = this.cs.sharedService.getSharedData('notificationDynamicAttributeArr' ,false);
this.getPassNotification = this.cs.sharedService.getSharedData('ApplyActionModalPage',false); this.getPassNotification = this.cs.sharedService.getSharedData('ApplyActionModalPage',false);
this.getPassActionMode = this.cs.sharedService.getSharedData('passActionMode',false);
this.WorkListActionObj = new WorkListActionRequest();
} }
ngOnInit() { ngOnInit() {
document.getElementById("notificationDynamicFields").innerHTML=""; document.getElementById("notificationDynamicFieldsModal").innerHTML="";
console.log(this.getPassNotificationDetails); console.log(this.getPassNotificationDetails);
//this.applyAction(this.getPassNotificationDetails); //this.applyAction(this.getPassNotificationDetails);
this.notificationDynamicFields(this.getpassResAttr); this.notificationDynamicFields(this.getpassResAttr);
console.log("confirmMsg" + this.confirmMsg)
if (this.getPassActionMode === "APPROVED") {
this.confirmMsg = this.ts.trPK('worklistMain', 'approveMsg')
} }
else if (this.getPassActionMode === "REJECTED") {
this.confirmMsg = this.ts.trPK('worklistMain', 'rejectMsg')
applyAction() {
this.worklistMainService
.actionButton(this.getPassNotification)
.subscribe((result: any) => {
this.handleApplayActionResult(result);
});
} }
else if (this.getPassActionMode === "DEL") {
this.confirmMsg = this.ts.trPK('worklistMain', 'delMsg')
handleApplayActionResult(result) {
if (this.cs.validResponse(result)) {
if (result.MessageStatus == 1) {
// this.navCtrl.push("HomePage");
//this.common.openHome();
//this.common.openNotificationPage();
// for( var i = 0; i < this.notificationArray.length; i++){
// if ( this.notificationArray[i].ROW_NUM === this.getPassNotificationDetails.ROW_NUM) {
// this.notificationArray.splice(i, 1);
// }
// }
////////////// this.getNotificationCountAfterSubmit();
///////////// this.nextNotfification();
} }
} // valid it else if (this.getPassActionMode === "CLOSE") {
this.confirmMsg = this.ts.trPK('worklistMain', 'closeMsg')
} }
}
notificationDynamicFields(notificationAttr){ notificationDynamicFields(notificationAttr){
const containerId = 'notificationDynamicFields'; const containerId = 'notificationDynamicFieldsModal';
for(let i=0;i<notificationAttr.length;i++){ for(let i=0;i<notificationAttr.length;i++){
if(notificationAttr[i].ATTRIBUTE_TYPE=="VARCHAR2"){ if(notificationAttr[i].ATTRIBUTE_TYPE=="VARCHAR2"){
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, "", containerId,"","",""); this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, "", containerId,"","","");
@ -78,4 +85,80 @@ export class ApplyActionModalComponent implements OnInit {
} }
actionButton() {
let ButtonAction: string = this.getPassActionMode;
this.P_RESPOND_ATTRIBUTES_TBL = [];
for (let i = 0; i < this.getpassResAttr.length; i++) {
let obj: any = {};
obj.ATTRIBUTE_NAME = this.getpassResAttr[i].ATTRIBUTE_NAME;
if (this.getpassResAttr[i].ATTRIBUTE_TYPE === "number") {
obj.ATTRIBUTE_NUMBER_VALUE = (document.getElementById(this.getpassResAttr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
}
else if (this.getpassResAttr[i].ATTRIBUTE_TYPE == "VARCHAR2") {
obj.ATTRIBUTE_TEXT_VALUE = (document.getElementById(this.getpassResAttr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
}
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
let repUserName = this.selEmployeeID;
if (this.hideForwordEmployee && this.hideForwordEmployee.ATTRIBUTE_NAME) {
let obj: any = {};
repUserName = "";
obj.ATTRIBUTE_NAME = this.hideForwordEmployee.ATTRIBUTE_NAME;
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
this.applyAction(this.WorkListActionObj);
}
applyAction(WorkListActionObj) {
this.worklistMainService
.actionButton(WorkListActionObj)
.subscribe((result: any) => {
this.handleApplayActionResult(result);
});
}
handleApplayActionResult(result) {
if (this.cs.validResponse(result)) {
if (result.MessageStatus == 1) {
// this.navCtrl.push("HomePage");
//this.common.openHome();
//this.common.openNotificationPage();
// for( var i = 0; i < this.notificationArray.length; i++){
// if ( this.notificationArray[i].ROW_NUM === this.getPassNotificationDetails.ROW_NUM) {
// this.notificationArray.splice(i, 1);
// }
// }
this.messageSuccess = true;
setTimeout(() => {
this.messageSuccess = false;
}, 5000);
this.cs.openNotificationPage();
// this.getNotificationCountAfterSubmit();
//this.nextNotfification();
}
} // valid it
}
} }

@ -6,17 +6,22 @@
} }
.Header{ .Header{
// color: black !important;
// font-size: 16px !important;
// font-weight: bold !important;;
// margin: 0;
// position: absolute;
// left: 50%;
// top: 50%;
// transform: translate(-58px, 2px);
color: black !important; color: black !important;
font-size: 16px !important; font-size: 16px !important;
font-weight: bold !important;; font-weight: bold !important;
margin: 0; margin: auto;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-58px, 2px);
} }
.labelRadio{ .labelRadio{
color: black !important; color: black !important;
font-weight: bold !important; font-weight: bold !important;
} }

@ -42,17 +42,7 @@
</div> --> </div> -->
</ion-list> </ion-list>
<div class="noteInput">
<ion-label [hidden]="isAnswer==false" class="boldTxtNav" padding>{{"replacementRoll, question" | translate}} :
{{pQuestion}} ?</ion-label>
<ion-label [hidden]="isAnswer==false" class="boldTxtNav" padding>{{"replacementRoll, answer" | translate}}
</ion-label>
<ion-label [hidden]="isAnswer==true" class="boldTxtNav" padding>{{"replacementRoll, enterNote" | translate}}
</ion-label>
<ion-item>
<ion-textarea [(ngModel)]="userNote"></ion-textarea>
</ion-item>
</div>
<ion-item [hidden]="isAnswer==true"> <ion-item [hidden]="isAnswer==true">
<!-- <ion-list *ngIf="ReplacementList"> --> <!-- <ion-list *ngIf="ReplacementList"> -->
@ -122,6 +112,19 @@
</ion-content> </ion-content>
<ion-footer> <ion-footer>
<div class="noteInput">
<ion-label [hidden]="isAnswer==false" class="boldTxtNav" padding>{{"replacementRoll, question" | translate}} :
{{pQuestion}} ?</ion-label>
<ion-label [hidden]="isAnswer==false" class="boldTxtNav" padding>{{"replacementRoll, answer" | translate}}
</ion-label>
<ion-label [hidden]="isAnswer==true" class="boldTxtNav" padding>{{"replacementRoll, enterNote" | translate}}
</ion-label>
<ion-item>
<ion-textarea [(ngModel)]="userNote"></ion-textarea>
</ion-item>
</div>
<br/>
<div class="centerDiv"> <div class="centerDiv">
<ion-button class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; " ion-button (click)="submitAction()"> <ion-button class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; " ion-button (click)="submitAction()">
{{'general, submit' | translate}}</ion-button> {{'general, submit' | translate}}</ion-button>

@ -116,6 +116,7 @@ button.item-button.button.button-md.button-clear.button-clear-md {
color: white; color: white;
border-radius: 9px; border-radius: 9px;
text-align: center; text-align: center;
min-height: 92px;
// background-color: #0095ff; // background-color: #0095ff;
// box-shadow: 0 2px 5px rgba(0, 0, 0, 0.26); // box-shadow: 0 2px 5px rgba(0, 0, 0, 0.26);
} }

@ -63,34 +63,6 @@ export class WorkListReplacementRollComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.demoeAttach = [{
USER_NAME: '18888',
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
EMAIL_ADDRESS: "test@yuyuu.hjj",
},
{
USER_NAME: '18888',
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
EMAIL_ADDRESS: "test@yuyuu.hjj"
},
{
USER_NAME: '18888',
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
EMAIL_ADDRESS: "test@yuyuu.hjj"
},
{
USER_NAME: '18888',
EMPLOYEE_DISPLAY_NAME: "AAA fgfhfhfhf hyutyututut ",
EMAIL_ADDRESS: "test@yuyuu.hjj"
}
];
} }
getreplacmentemployee() { getreplacmentemployee() {

@ -1,13 +1,14 @@
<ion-header> <ion-header>
<ion-toolbar > <ion-toolbar >
<ion-title color="dark">{{ 'workListMain, rfc' | translate}}</ion-title> <ion-title color="dark">{{ 'workListMain, rfc' | translate}}</ion-title>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content padding> <ion-content padding>
<div class="tipsPadding boldTxtNav"> <div class="tipsPadding boldTxtNav">
{{"replacementRoll.msgRFC" | translate}} {{'replacementRoll , msgRFC' | translate}}
</div> </div>
<!-- <ion-list (ionChange)="radioChecked($event)" radio-group> <!-- <ion-list (ionChange)="radioChecked($event)" radio-group>
<ion-item *ngFor="let rfcEmployeeList of RFCEmployeeListListRes; let i = index;"> <ion-item *ngFor="let rfcEmployeeList of RFCEmployeeListListRes; let i = index;">
@ -18,13 +19,7 @@
</ion-list> --> </ion-list> -->
<div class="noteInput">
<label class="boldTxtNav" padding>{{"replacementRoll.enterNote" | translate}}</label>
<ion-item>
<ion-textarea [(ngModel)]="userNote"></ion-textarea>
</ion-item>
</div>
<ion-item> <ion-item>
@ -59,7 +54,14 @@
</ion-content> </ion-content>
<ion-footer> <ion-footer>
<div class="noteInput">
<label class="boldTxtNav" padding>{{'replacementRoll , enterNote' | translate}}</label>
<ion-item>
<ion-textarea [(ngModel)]="userNote"></ion-textarea>
</ion-item>
</div>
<br/>
<div class="centerDiv"> <div class="centerDiv">
<ion-button class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; " ion-button (click)="submitAction()"> <ion-button class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; " ion-button (click)="submitAction()">
{{'general, submit' | translate}}</ion-button> {{'general, submit' | translate}}</ion-button>

@ -1,5 +1,5 @@
<ion-header *ngIf="!messageSuccess"> <ion-header *ngIf="!messageSuccess">
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title> <ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons backLink="/notification/homepage"></nav-buttons> <nav-buttons backLink="/notification/homepage"></nav-buttons>
@ -19,21 +19,22 @@
<ion-segment-button value="item-req" [ngClass]="activeSegment == 'item-req' ? 'active-Segment' : 'normal-Segment'"> <ion-segment-button value="item-req" [ngClass]="activeSegment == 'item-req' ? 'active-Segment' : 'normal-Segment'">
{{ts.trPK('worklistMain','itemReq')}} <ion-label>{{ts.trPK('worklistMain','itemReq')}}</ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button value="action-history" <ion-segment-button value="action-history"
[ngClass]="activeSegment == 'action-history' ? 'active-Segment' : 'normal-Segment'"> [ngClass]="activeSegment == 'action-history' ? 'active-Segment' : 'normal-Segment'">
{{'worklistMain, action' | translate}} <ion-label> {{'worklistMain, action' | translate}}</ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button value="attach" [ngClass]="activeSegment == 'attach' ? 'active-Segment' : 'normal-Segment'"> <ion-segment-button value="attach" [ngClass]="activeSegment == 'attach' ? 'active-Segment' : 'normal-Segment'">
{{'general, file' | translate}} <ion-label> {{'general, file' | translate}}</ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button value="info" [ngClass]="activeSegment == 'info' ? 'active-Segment' : 'normal-Segment'"> <ion-segment-button value="info" [ngClass]="activeSegment == 'info' ? 'active-Segment' : 'normal-Segment'">
{{ts.trPK('worklistMain','info')}} <ion-label> {{ts.trPK('worklistMain','info')}}</ion-label>
</ion-segment-button> </ion-segment-button>
</ion-segment> </ion-segment>
@ -179,7 +180,7 @@
</ion-grid> </ion-grid>
<button ion-button [hidden]="IsReachEnd" class="itemHISBtn" (click)="loadMoreNotificationBody()">Load <button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreNotificationBody()">Load
More</button> More</button>
</ion-card-content> </ion-card-content>
@ -502,7 +503,7 @@
</ion-list> </ion-list>
</div> </div>
<button ion-button [hidden]="IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load More</button> <button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load More</button>
</ion-card-content> </ion-card-content>
</ion-card> </ion-card>

@ -105,3 +105,4 @@
// font-weight: bold; // font-weight: bold;
// } // }

@ -88,7 +88,7 @@ export class WorklistMainMRComponent implements OnInit {
delMsg: string; delMsg: string;
closeMsg: string; closeMsg: string;
activeSegment: any = "info"; activeSegment: any = "info";
lines_note_limit: any = 15; lines_note_limit: any = 24;
orgNote: string; orgNote: string;
truncating: boolean; truncating: boolean;
selectedIndex: any; selectedIndex: any;
@ -386,14 +386,15 @@ export class WorklistMainMRComponent implements OnInit {
this.confirmMsg = this.ts.trPK('worklistMain', 'closeMsg') this.confirmMsg = this.ts.trPK('worklistMain', 'closeMsg')
} }
this.openApplyModal(this.WorkListActionObj);
this.common.confirmAlertDialogAction( // this.common.confirmAlertDialogAction(
() => { // () => {
this.applyAction(this.WorkListActionObj); // this.applyAction(this.WorkListActionObj);
}, this.ts.trPK('general', 'ok'), // }, this.ts.trPK('general', 'ok'),
() => { }, this.ts.trPK('general', 'cancel'), // () => { }, this.ts.trPK('general', 'cancel'),
this.ts.trPK('vacation-rule', 'confirmation'), // this.ts.trPK('vacation-rule', 'confirmation'),
this.confirmMsg); // this.confirmMsg);
////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////

@ -1,5 +1,5 @@
<ion-header *ngIf="!messageSuccess"> <ion-header *ngIf="!messageSuccess">
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title> <ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons backLink="/notification/homepage"></nav-buttons> <nav-buttons backLink="/notification/homepage"></nav-buttons>
@ -24,21 +24,21 @@
<ion-segment-button value="line_details" <ion-segment-button value="line_details"
[ngClass]="activeSegment == 'line_details' ? 'active-Segment' : 'normal-Segment'"> [ngClass]="activeSegment == 'line_details' ? 'active-Segment' : 'normal-Segment'">
{{ts.trPK('worklistMain','line_details')}} <ion-label> {{ts.trPK('worklistMain','line_details')}} </ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button value="action-history" <ion-segment-button value="action-history"
[ngClass]="activeSegment == 'action-history' ? 'active-Segment' : 'normal-Segment'"> [ngClass]="activeSegment == 'action-history' ? 'active-Segment' : 'normal-Segment'">
{{'worklistMain, action' | translate}} <ion-label> {{'worklistMain, action' | translate}} </ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button value="attach" <ion-segment-button value="attach"
[ngClass]="activeSegment == 'attach' ? 'active-Segment' : 'normal-Segment'"> [ngClass]="activeSegment == 'attach' ? 'active-Segment' : 'normal-Segment'">
{{'general, file' | translate}} <ion-label> {{'general, file' | translate}} </ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button checked value="info" [ngClass]="activeSegment == 'info' ? 'active-Segment' : 'normal-Segment'" > <ion-segment-button checked value="info" [ngClass]="activeSegment == 'info' ? 'active-Segment' : 'normal-Segment'" >
{{ts.trPK('worklistMain','info')}} <ion-label> {{ts.trPK('worklistMain','info')}} </ion-label>
</ion-segment-button> </ion-segment-button>
</ion-segment> </ion-segment>
@ -342,7 +342,7 @@
</ion-grid> </ion-grid>
<!-- --> <!-- -->
<button ion-button [hidden]="IsReachEnd" class="itemHISBtn" (click)="loadMoreNotificationBody()">Load More</button> <button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreNotificationBody()">Load More</button>
</ion-card-content> </ion-card-content>
@ -618,7 +618,7 @@
<div *ngIf="checkLines(actionHistory.NOTE)"> <div *ngIf="checkLines(actionHistory.NOTE)">
<div class="containerNote" [ngClass]="actionHistory.visible ? 'show' : '' " > <div class="containerNote" [ngClass]="actionHistory.visible ? 'show' : '' " >
Note: {{actionHistory.NOTE}} {{actionHistory.NOTE}} Note: {{actionHistory.NOTE}}
</div> </div>
@ -642,7 +642,7 @@
</div> </div>
</ion-list> </ion-list>
</div> </div>
<button ion-button [hidden]="IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load More</button> <button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load More</button>
</ion-card-content> </ion-card-content>

@ -101,7 +101,7 @@ export class WorklistMainPoComponent implements OnInit {
itemHistoryRes: any; itemHistoryRes: any;
QutationAnalysisRes: any; QutationAnalysisRes: any;
activeSegment: any = "info"; activeSegment: any = "info";
lines_note_limit: number = 15; lines_note_limit: number = 24;
notiActionBtnMore: any = []; notiActionBtnMore: any = [];
demoeAttach: any = []; demoeAttach: any = [];
orgNote: any; orgNote: any;

@ -1,5 +1,5 @@
<ion-header *ngIf="!messageSuccess"> <ion-header *ngIf="!messageSuccess">
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title> <ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons backLink="/notification/homepage"></nav-buttons> <nav-buttons backLink="/notification/homepage"></nav-buttons>
@ -17,21 +17,21 @@
<ion-segment-button value="item-req" <ion-segment-button value="item-req"
[ngClass]="activeSegment == 'item-req' ? 'active-Segment' : 'normal-Segment'"> [ngClass]="activeSegment == 'item-req' ? 'active-Segment' : 'normal-Segment'">
{{ts.trPK('worklistMain','itemReq')}} <ion-label> {{ts.trPK('worklistMain','itemReq')}} </ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button value="action-history" <ion-segment-button value="action-history"
[ngClass]="activeSegment == 'action-history' ? 'active-Segment' : 'normal-Segment'"> [ngClass]="activeSegment == 'action-history' ? 'active-Segment' : 'normal-Segment'">
{{'worklistMain, action' | translate}} <ion-label> {{'worklistMain, action' | translate}} </ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button value="attach" [ngClass]="activeSegment == 'attach' ? 'active-Segment' : 'normal-Segment'"> <ion-segment-button value="attach" [ngClass]="activeSegment == 'attach' ? 'active-Segment' : 'normal-Segment'">
{{'general, file' | translate}} <ion-label> {{'general, file' | translate}} </ion-label>
</ion-segment-button> </ion-segment-button>
<ion-segment-button checked value="info" <ion-segment-button checked value="info"
[ngClass]="activeSegment == 'info' ? 'active-Segment' : 'normal-Segment'"> [ngClass]="activeSegment == 'info' ? 'active-Segment' : 'normal-Segment'">
{{ts.trPK('worklistMain','info')}} <ion-label> {{ts.trPK('worklistMain','info')}} </ion-label>
</ion-segment-button> </ion-segment-button>
</ion-segment> </ion-segment>
@ -165,7 +165,7 @@
</ion-grid> </ion-grid>
<button [hidden]="IsReachEnd" ion-button class="itemHISBtn" (click)="loadMoreNotificationBody()">Load <button *ngIf="!IsReachEnd" ion-button class="itemHISBtn" (click)="loadMoreNotificationBody()">Load
More</button> More</button>
</ion-card-content> </ion-card-content>
@ -361,7 +361,7 @@
</div> </div>
</ion-list> </ion-list>
</div> </div>
<button ion-button [hidden]="IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load <button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load
More</button> More</button>
</ion-card-content> </ion-card-content>

@ -89,7 +89,7 @@ export class WorklistMainPRComponent implements OnInit {
closeMsg: string; closeMsg: string;
truncating: boolean; truncating: boolean;
orgNote: any; orgNote: any;
lines_note_limit: any = 15; lines_note_limit: any = 24;
selectedIndex: any; selectedIndex: any;
showLessBtn: boolean; showLessBtn: boolean;
showMoreBtn: boolean; showMoreBtn: boolean;

@ -1,5 +1,5 @@
<ion-header *ngIf="!messageSuccess"> <ion-header *ngIf="!messageSuccess">
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title> <ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
<ion-buttons slot="start"> <ion-buttons slot="start">
<nav-buttons backLink="/notification/homepage"></nav-buttons> <nav-buttons backLink="/notification/homepage"></nav-buttons>
@ -75,8 +75,13 @@
<ion-grid class="gridSubordinates"> <ion-grid class="gridSubordinates">
<div class="subOrdinateDiv"> <div class="subOrdinateDiv">
<img class="subOrdinateImg" src="../assets/imgs/profile.png"></div> <!-- <img class="subOrdinateImg" src="../assets/imgs/profile.png"> -->
<img *ngIf="List.EMPLOYEE_IMAGE" class="empImgeSub"
[src]="'data:image/png;base64,'+List.EMPLOYEE_IMAGE">
<img *ngIf="List.EMPLOYEE_IMAGE == null"
class="empImgeSub" src="../assets/imgs/profile.png">
</div>
<ion-row class="rowHeader subOrdinateRow"> <ion-row class="rowHeader subOrdinateRow">
<ion-col size="9"> <ion-col size="9">
@ -377,7 +382,7 @@
</ion-list> </ion-list>
</div> </div>
<button ion-button [hidden]="IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load <button ion-button *ngIf="!IsReachEnd" class="itemHISBtn" (click)="loadMoreActionHistory()">Load
More</button> More</button>
</ion-card-content> </ion-card-content>

@ -92,12 +92,12 @@
.rowBorder{ .rowBorder{
border-bottom: solid 0.03cm var(--grayBG); border-bottom: solid 0.02cm var(--grayBG);
} }
.colBorder{ .colBorder{
border-right: solid 0.03cm var(--grayBG); border-right: solid 0.02cm var(--grayBG);
} }
@ -183,7 +183,7 @@
// border: var(--cusgray) 1px solid !important; // border: var(--cusgray) 1px solid !important;
--background: transparent; --background: transparent;
margin-left: -15px; margin-left: -15px;
margin-right: 7px; margin-right: 6px;
} }
.status{ .status{
text-align: center; text-align: center;
@ -231,7 +231,7 @@ color: white;
.subOrdinateDiv{ .subOrdinateDiv{
z-index: 4; z-index: 4;
margin-left: -44px; margin-left: -32px;
position: absolute; position: absolute;
top: -2px; top: -2px;
} }
@ -244,7 +244,7 @@ color: white;
} }
.subOrdinateRow{ .subOrdinateRow{
margin-left: 40px; margin-left: 55px;
} }
.label{ .label{

@ -78,7 +78,7 @@ export class WorklistMainComponent implements OnInit {
P_PAGE_LIMIT: number = 100; P_PAGE_LIMIT: number = 100;
notificationCount: any; notificationCount: any;
activeSegment: any = "info"; activeSegment: any = "info";
lines_note_limit: any = 15; lines_note_limit: any = 24;
attachmentRes: any; attachmentRes: any;
private WorkListActionHistoryObj: WorkListActionHistoryRequest; private WorkListActionHistoryObj: WorkListActionHistoryRequest;
IsReachEnd: boolean = false; IsReachEnd: boolean = false;
@ -401,6 +401,7 @@ export class WorklistMainComponent implements OnInit {
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID; obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
this.P_RESPOND_ATTRIBUTES_TBL.push(obj); this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
} }
if ( if (
ButtonAction == "APPROVED" || ButtonAction == "APPROVED" ||
ButtonAction == "REJECTED" || ButtonAction == "REJECTED" ||
@ -410,7 +411,7 @@ export class WorklistMainComponent implements OnInit {
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = ""; this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
this.WorkListActionObj.P_ACTION_MODE = ButtonAction; this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
this.WorkListActionObj.P_COMMENTS = ""; this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL; // this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
this.common.sharedService.setSharedData( this.common.sharedService.setSharedData(
this.getPassNotificationDetails, this.getPassNotificationDetails,
@ -420,6 +421,7 @@ export class WorklistMainComponent implements OnInit {
ButtonAction, ButtonAction,
WorklistMainComponent.PASS_ACTION_MODE WorklistMainComponent.PASS_ACTION_MODE
); );
this.common.sharedService.setSharedData( this.common.sharedService.setSharedData(
this.P_RESPOND_ATTRIBUTES_TBL, this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainComponent.PASS_RES_ATTR WorklistMainComponent.PASS_RES_ATTR
@ -455,6 +457,9 @@ export class WorklistMainComponent implements OnInit {
} }
if (ButtonAction == "RFC") { if (ButtonAction == "RFC") {
// alert("Return For Correction"); // alert("Return For Correction");
this.WorkListActionObj.P_ACTION_MODE = ButtonAction; this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
@ -614,6 +619,10 @@ export class WorklistMainComponent implements OnInit {
} }
this.notificationDynamicFields(result.NotificationGetRespondAttributesList); this.notificationDynamicFields(result.NotificationGetRespondAttributesList);
this.notificationDynamicAttributeArr = result.NotificationGetRespondAttributesList; this.notificationDynamicAttributeArr = result.NotificationGetRespondAttributesList;
this.common.sharedService.setSharedData(
this.notificationDynamicAttributeArr,
"notificationDynamicAttributeArr"
);
if (result.P_Schema) this.schemaNotific = JSON.parse(result.P_Schema); if (result.P_Schema) this.schemaNotific = JSON.parse(result.P_Schema);
} // valid it } // valid it
} // End handleWorkListButtonsResult } // End handleWorkListButtonsResult
@ -701,6 +710,7 @@ export class WorklistMainComponent implements OnInit {
} }
handleWorkListActionHistoryResult(result) { handleWorkListActionHistoryResult(result) {
console.log( "1"+ this.IsReachEnd);
if (this.common.validResponse(result)) { if (this.common.validResponse(result)) {
if (this.common.hasData(result.GetActionHistoryList)) { if (this.common.hasData(result.GetActionHistoryList)) {
this.actionHistoryRes = result.GetActionHistoryList; this.actionHistoryRes = result.GetActionHistoryList;
@ -711,8 +721,12 @@ export class WorklistMainComponent implements OnInit {
let lastitem = result.GetActionHistoryList[lastItemIndex]; let lastitem = result.GetActionHistoryList[lastItemIndex];
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) { if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
this.IsReachEnd = true; this.IsReachEnd = true;
console.log( "2"+ this.IsReachEnd);
} else { } else {
this.IsReachEnd = false; this.IsReachEnd = false;
console.log( "3"+ this.IsReachEnd);
} }
} }
this.turnCateFun(this.actionHistoryRes); this.turnCateFun(this.actionHistoryRes);
@ -944,6 +958,40 @@ export class WorklistMainComponent implements OnInit {
loadMoreActionHistory() {
console.log("doInfinite action history MR");
if (!this.IsReachEnd) {
this.worklistService.getActionHistory(this.WorkListActionHistoryObj).
subscribe((result: any) => {
if (this.common.validResponse(result)) {
if (result.GetActionHistoryList != undefined) {
this.P_PAGE_NUM++;
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
(result.GetActionHistoryList).forEach(element => {
if (element.ROW_NUM == element.NO_OF_ROWS) {
this.IsReachEnd = true;
} else {
this.IsReachEnd = false;
}
this.actionHistoryRes.push(element);
}, (Error) => console.log(Error), () =>
//infiniteScroll.target.complete()
console.log("TEST"));
}// if list length >0
else {
this.IsReachEnd = true;
}
}// if response == 1
//this.pageNum++;
// infiniteScroll.target.complete();
});
} else {
//if (infiniteScroll)
//infiniteScroll.target.complete();
}
}//end infiniteScroll
} }

@ -31,7 +31,7 @@ export class TimeInput extends UiElement {
this.formatDate(); this.formatDate();
} }
const template = const template =
"<div class='custom-text-area-element' 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>" +
// " <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>"+

@ -1,5 +1,5 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<!-- <nav-buttons></nav-buttons> --> <!-- <nav-buttons></nav-buttons> -->
<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>
@ -10,13 +10,13 @@
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content padding> <ion-content class="colorBG" padding>
<!-- <div #containerDiv id="containerDiv"> --> <!-- <div #containerDiv id="containerDiv"> -->
<!-- </div> --> <!-- </div> -->
<div style="padding: 0 10px;" [innerHTML]='"vacation-rule, tip" | translate'></div> <!-- <div style="padding: 0 10px;" [innerHTML]='"vacation-rule, tip" | translate'></div> -->
<ion-card *ngFor="let item of GetVacationRulesList; let i = index;"> <!-- <ion-card *ngFor="let item of GetVacationRulesList; let i = index;">
<ion-card-header class="boxHdr"> <ion-card-header class="boxHdr">
<ion-grid no-padding> <ion-grid no-padding>
<ion-row class="hrTitle" nowrap> <ion-row class="hrTitle" nowrap>
@ -78,15 +78,55 @@
</ion-card-content> </ion-card-content>
</ion-card> </ion-card>
-->
<ion-list class="listVR">
<!-- Multi-line sliding item with icon options on both sides -->
<ion-item-sliding class="itemVR" *ngFor="let item of GetVacationRulesList; let i = index;">
<ion-item lines="none" >
<ion-label>
<ion-badge [ngClass]=" direction === 'rtl' ? 'end-badge' : 'start-badge'" slot="end" color="danger" class="main-badge">{{notBadge}}</ion-badge>
<p [ngClass]="item.RULE_STATUS === 'Inactive' ? 'red-status' : 'green-status' ">{{item.RULE_STATUS}}</p><br/>
<p class="textBold" > {{item.RULE_NAME}} | {{item.ITEM_TYPE_DISPLAY_NAME}}</p><br/>
<p class="label">{{item.BEGIN_DATE | dateString }} - {{item.END_DATE | dateString}}</p><br/>
<p class="createdOn">Created on:</p><br/>
</ion-label>
</ion-item>
<ion-item-options side="start">
<ion-item-option class="optionBtn" (click)="deleteFunc(i)">
<img class="imgSize" src="../assets/imgs/delete-circle.png">
</ion-item-option>
<ion-item-option class="optionBtn" (click)="updateFunc(i)">
<img class="imgSize" src="../assets/imgs/update-circle.png">
</ion-item-option>
</ion-item-options>
</ion-item-sliding>
</ion-list>
<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-content> </ion-content>
<div class="fixed-shift-timer" >
<ion-footer> <fab-button [type]="add" (trigger)="Vacation_Type()"></fab-button>
<div class="centerDiv"> <!-- <page-trailer [small] = "true"></page-trailer> -->
</div>
<ion-footer class="colorBG">
<!-- <div class="centerDiv">
<ion-button class="footer-button" color="customnavy" ion-button (click)="Vacation_Type()"> <ion-button class="footer-button" color="customnavy" ion-button (click)="Vacation_Type()">
{{'vacation-rule, createRule' | translate}}</ion-button> {{'vacation-rule, createRule' | translate}}</ion-button>
</div> </div> -->
</ion-footer> </ion-footer>

@ -69,3 +69,64 @@ ion-card-header {
margin: 0px 5px !important; margin: 0px 5px !important;
} }
} }
//////////new design////////////////////////
.itemVR
{
background: #f0efef !important;
--background: #f0efef !important;
border: #dbdbdb 1px solid;
border-radius: 10px;
margin-bottom: 7px;
}
.listVR{
background: transparent !important;
}
.red-status{
color: var(--light) !important;
font-weight:bold;
background: var( --red);
border-radius: 9px;
text-align: center;
margin-top: 10px;
position: relative;
width: auto;
height: 100%;
display: inline-block !important;
padding: 0px 15px 0px 15px;
}
.green-status{
color: var(--light) !important;
font-weight:bold;
background: var( --custgreen);
border-radius: 9px;
text-align: center;
margin-top: 10px;
position: relative;
width: auto;
height: 100%;
display: inline-block !important;
padding: 0px 15px 0px 15px;
}
.textBold{
color: black;
font-weight: bold;
font-size: 17px;
}
.label{
margin-top: -19px;
border-bottom: #eaeaea solid;
padding-bottom: 8px;
color: black !important;
}
.createdOn{
margin: -12px 0px -14px 0px;
}
.optionBtn{
background: transparent !important;
}

@ -25,7 +25,7 @@ export class HomeComponent implements OnInit {
isUpdate: boolean = false; isUpdate: boolean = false;
IsReachEnd: boolean = false; IsReachEnd: boolean = false;
RespondAttributeList: any; RespondAttributeList: any;
add:any='add';
button: ButtonInput; button: ButtonInput;
// dateTime: DateTimeInput; // dateTime: DateTimeInput;
// date: DateInput; // date: DateInput;
@ -37,7 +37,7 @@ export class HomeComponent implements OnInit {
constructor(public vacationRuleService: VacationRuleServiceService, public ts: TranslatorService, public cs: CommonService, private router: Router) { constructor(public vacationRuleService: VacationRuleServiceService, public ts: TranslatorService, public cs: CommonService, private router: Router) {
this.P_PAGE_NUM = 1; this.P_PAGE_NUM = 1;
this.P_PAGE_LIMIT = 1; this.P_PAGE_LIMIT = 50;
//this.button = new ButtonInput('btnSubmit', 'Submit', 'containerDiv', 'Y'); //this.button = new ButtonInput('btnSubmit', 'Submit', 'containerDiv', 'Y');
// this.dateTime = new DateTimeInput('Start Date', 'SDate', '', 'containerDiv', 'Y', 'Y', 'Y'); // this.dateTime = new DateTimeInput('Start Date', 'SDate', '', 'containerDiv', 'Y', 'Y', 'Y');
@ -141,7 +141,9 @@ export class HomeComponent implements OnInit {
this.isUpdate = true; this.isUpdate = true;
this.cs.sharedService.setSharedData(this.isUpdate, 'isUpdate'); this.cs.sharedService.setSharedData(this.isUpdate, 'isUpdate');
this.router.navigate(['/vacation-rule/create-vacation-rule']); // this.router.navigate(['/vacation-rule/create-vacation-rule']);
this.cs.navigateForward('/vacation-rule/vacation-type');
} }

@ -10,25 +10,19 @@
<ion-content padding no-bounce> <ion-content padding no-bounce>
<ion-grid no-padding> <ion-grid no-padding>
<ul class="cusprogressbar"> <!-- <ul class="cusprogressbar">
<ion-row nowrap> <ion-row nowrap>
<ion-col size="4"> <ion-col size="4">
<!-- <ul class="cusprogressbar"> -->
<li>{{'vacation-rule, itemType' | translate}}</li> <li>{{'vacation-rule, itemType' | translate}}</li>
<!-- </ul> -->
</ion-col> </ion-col>
<ion-col size="4"> <ion-col size="4">
<!-- <ul class="cusprogressbar"> -->
<li class="active">{{'vacation-rule, notification-type' | translate}}</li> <li class="active">{{'vacation-rule, notification-type' | translate}}</li>
<!-- </ul> -->
</ion-col> </ion-col>
<ion-col size="4"> <ion-col size="4">
<!-- <ul class="cusprogressbar"> -->
<li>{{'vacation-rule, create-vacation-rule' | translate}}</li> <li>{{'vacation-rule, create-vacation-rule' | translate}}</li>
<!-- </ul> -->
</ion-col> </ion-col>
</ion-row> </ion-row>
</ul> </ul> -->
<ion-row justify-content-center> <ion-row justify-content-center>
<div [innerHTML]='"vacation-rule, notification-tip" | translate'></div> <div [innerHTML]='"vacation-rule, notification-tip" | translate'></div>

@ -1,17 +1,17 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar"> <ion-toolbar>
<!-- <nav-buttons></nav-buttons> --> <!-- <nav-buttons></nav-buttons> -->
<ion-title color="light">{{ 'vacation-rule, search-employee' | translate}}</ion-title> <ion-title color="dark">{{ 'vacation-rule, search-employee' | translate}}</ion-title>
<ion-buttons slot="primary"> <!-- <ion-buttons slot="primary">
<ion-button style="background: none !important;" (click)="closePage()"> <ion-button style="background: none !important;" (click)="closePage()">
<ion-icon slot="icon-only" name="close"></ion-icon> <ion-icon slot="icon-only" name="close"></ion-icon>
</ion-button> </ion-button>
</ion-buttons> </ion-buttons> -->
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content padding> <ion-content >
<div style="padding: 0 10px;" [innerHTML]='"vacation-rule, replacement-employee-tip" | translate'></div> <!-- <div style="padding: 0 10px;" [innerHTML]='"vacation-rule, replacement-employee-tip" | translate'></div> -->
<ion-item> <ion-item>
<ion-label class="boldTxtNav">{{'vacation-rule, search-by' | translate}}</ion-label> <ion-label class="boldTxtNav">{{'vacation-rule, search-by' | translate}}</ion-label>
@ -23,13 +23,16 @@
</ion-select> </ion-select>
</ion-item> </ion-item>
<ion-item> <ion-item lines="none">
<ion-input [(ngModel)]="searchKey" placeholder="{{'vacation-rule, search-employee' | translate}}"></ion-input> <ion-button class="filterBtn" button-type="clear" button-type="clear" (click)="SearchReplacementList()">
<ion-button style="width: 19%;" button-type="clear" (click)="SearchReplacementList()"> <ion-icon slot="icon-only" color="white" name="search"></ion-icon>
<ion-icon slot="icon-only" name="search"></ion-icon>
</ion-button> </ion-button>
<ion-input class="filterInput" [(ngModel)]="searchKey" placeholder="{{'vacation-rule, search-employee' | translate}}"></ion-input>
</ion-item> </ion-item>
<!-- <ion-item> <!-- <ion-item>
<ion-list [(ngModel)]="selEmp" *ngIf="ReplacementList"> <ion-list [(ngModel)]="selEmp" *ngIf="ReplacementList">
<ion-item *ngFor="let employee of ReplacementList;let i=index;"> <ion-item *ngFor="let employee of ReplacementList;let i=index;">
@ -40,7 +43,7 @@
</ion-list> </ion-list>
</ion-item> --> </ion-item> -->
<ion-list> <!-- <ion-list>
<ion-radio-group mode="md" [(ngModel)]="selEmp" *ngIf="ReplacementList"> <ion-radio-group mode="md" [(ngModel)]="selEmp" *ngIf="ReplacementList">
<ion-item *ngFor="let employee of ReplacementList;let i=index;"> <ion-item *ngFor="let employee of ReplacementList;let i=index;">
<ion-label><span class="boldTxt">{{employee.EMPLOYEE_DISPLAY_NAME}}</span> <br>{{employee.USER_NAME}}<br> <ion-label><span class="boldTxt">{{employee.EMPLOYEE_DISPLAY_NAME}}</span> <br>{{employee.USER_NAME}}<br>
@ -48,13 +51,55 @@
<ion-radio value="{{i}}"></ion-radio> <ion-radio value="{{i}}"></ion-radio>
</ion-item> </ion-item>
</ion-radio-group> </ion-radio-group>
</ion-list> </ion-list> -->
<ion-item>
<div *ngIf="ReplacementList" class="square-container">
<div (click)="select(employee,i)" *ngFor="let employee of ReplacementList;let i=index;" class="square">
<div class="profileImageDiv">
<!-- <img class="profileImage" src="../assets/imgs/profile.png"> -->
<img *ngIf="employee.EMPLOYEE_IMAGE" class="empImgeRep" [src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE">
<img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImgeRep" src="../assets/imgs/profile.png">
</div>
<div *ngIf="active == i" class="selIEmpDiv">
<img class="selIEmpImage" src="../assets/imgs/green.png">
</div>
<div [ngClass]="{'activated': (active == i),'deactivated': (active != i)}"
class="content">
<ion-label class="labelRep">
<span style="font-weight: bold !important">{{employee.EMPLOYEE_DISPLAY_NAME}}</span>
<br>{{employee.USER_NAME}}<br>
{{employee.EMAIL_ADDRESS}}
</ion-label>
</div>
</div>
</div>
</ion-item>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content> </ion-content>
<ion-footer> <ion-footer>
<div class="centerDiv"> <!-- <div class="centerDiv">
<ion-button (click)="closePage()" class="footer-button" color="customnavy">{{'general, save' | translate}} <ion-button (click)="closePage()" class="footer-button" color="customnavy">{{'general, save' | translate}}
</ion-button> </ion-button>
</div> -->
<div class="centerDiv">
<ion-button class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; " ion-button (click)="closePage()">
{{'general, save' | translate}}</ion-button>
<ion-button class="footer-button" style="background: var(--darkblue)!important;border-radius: 10px; --background: transparent; " ion-button (click)="closeModal()">
{{'general, cancel' | translate}}</ion-button>
</div> </div>
</ion-footer> </ion-footer>

@ -2,7 +2,18 @@ ion-item {
margin-top: 5%; margin-top: 5%;
margin-right: 7%; margin-right: 7%;
} }
.labelRep{
--color: initial;
display: block;
color: var(--color);
font-family: var(--ion-font-family,inherit);
font-size: inherit;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.footer-button { .footer-button {
border-radius: 3px; border-radius: 3px;
padding: 0 1.1em; padding: 0 1.1em;
@ -13,3 +24,144 @@ ion-item {
color: #3ac1f1 !important; color: #3ac1f1 !important;
} }
.boldTxt{font-weight:bold;} .boldTxt{font-weight:bold;}
////////////////////////
button.item-button.button.button-md.button-clear.button-clear-md {
background-color: transparent;
}
.footer-button {
border-radius: 3px;
padding: 0 1.1em;
min-height: 45px;
min-width: 200px;
}
// ion-item {
// margin-top: 5%;
// margin-right: 7%;
// width: 100%;
// }
.ionItem{
border: #e4e4e4 solid;
/* margin: 6px; */
/* padding: 11px; */
height: 85px;
width: 164px;
border-radius: 5px;
text-align: center;
}
.profileImageDiv{
text-align: center;
margin-bottom: -27px;
z-index: 3;
position: relative;
top: 0;
}
.profileImage{
width:60px !important;
// margin-left: -25px;
// margin-right: 22px;
}
.activated{
border: #209a83 0.02cm solid ;
}
.deactivated{ border: #e4e4e4 0.02cm solid;
}
.repContentDiv{
text-align: center;
width: 85%;
font-size: 14px;
border: #e4e4e4 solid;
border-radius: 5px;
padding: 20px 8px 8px 8px;
margin-top: -9px;
margin-right: -35px
}
.selIEmpDiv{
text-align: right;
margin-bottom: -26px;
margin-right: 0px;
z-index: 3;
position: relative;
top: 0;
}
.selIEmpImage{
width:22px !important
}
.noteInput{
border: solid var(--gray) 1px;
border-radius: 15px;
margin: 8px 17px 0px 17px;
padding: 10px 2px 10px 2px;
}
.filterInput{
border: solid var(--gray) 1px;
border-radius: 21px;
padding-left: 10px !important;
}
.filterBtn{
background: var(--newgreen);
--background: var (--newgreen);
border-radius: 50%;
height: 60px;
width: 60px;
}
*{
box-sizing: border-box;
}
.square-container{
// padding: 8px;
width:100%;
}
.square{
// width:calc(100% / 2);
width:50%;
float:left;
position: relative;
// padding-bottom: calc(100% / 2);
}
.square .content{
width: calc(100% - 16px) !important;
height: calc(100% - 16px) !important;
margin: 8px;
padding: 16px;
// position: absolute;
color: white;
border-radius: 9px;
text-align: center;
min-height: 90px;
// background-color: #0095ff;
// box-shadow: 0 2px 5px rgba(0, 0, 0, 0.26);
}
.empImge{
border-radius: 50%;
width:100%;
height: 100%;
border: #dedede solid 1px;
}
.empImgeRep {
border-radius: 50% !important;
width: 80px;
height: 80px;
border: #dedede solid 1px;
}

@ -28,6 +28,7 @@ export class ReplacementListComponent implements OnInit {
replacmentRequest: any = ""; replacmentRequest: any = "";
isAbs: boolean = false; isAbs: boolean = false;
isSave: boolean = false; isSave: boolean = false;
active: any;
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) { }
@ -104,27 +105,97 @@ export class ReplacementListComponent implements OnInit {
} }
} }
doInfinite(infiniteScroll) {
}
closePage() { closePage() {
this.isSave = true; this.isSave = true;
let data: any = null; let data: any = null;
if (this.isSave == true) { if (this.isSave == true) {
if (this.selEmp) { if (this.selEmp) {
data = this.ReplacementList[this.selEmp]; // data = this.ReplacementList[this.selEmp];
data=this.selEmp;
} else { } else {
data = null; let msg: string = this.ts.trPK("replacementRoll", "msg");
this.cs.presentAlert(msg);
return;
} }
if (typeof this.callback == 'function') { // if (typeof this.callback == 'function') {
this.callback(data); // this.callback(data);
// }
// this.modalController.dismiss({
// 'dismissed': true,
// empData: data
// });
this.modalController.dismiss(data);
// }else{
// let msg: string = this.ts.trPK("replacementRoll", "msg");
// this.cs.presentAlert(msg);
// return;
// }
} }
this.modalController.dismiss({ }
'dismissed': true, closeModal() {
empData: data this.modalController.dismiss();
}
select(selectEmp,index){
console.log(selectEmp.EMPLOYEE_DISPLAY_NAME);
this.selEmp=selectEmp
console.log("this.selEmp" + this.selEmp);
this.active=index;
}
doInfinite(infiniteScroll) {
if (!this.IsReachEnd) {
const request = new ReplacementServiceRequest();
request.P_PAGE_NUM = this.P_PAGE_NUM;
request.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
// request.P_SELECTED_EMPLOYEE_NUMBER=this.selEmp;
this.vacationRuleService.getReplacementList(request).
subscribe((result: any) => {
if (this.cs.validResponse(result)) {
if (this.cs.hasData(result.ReplacementList)) {
this.P_PAGE_NUM++;
result.ReplacementList.forEach(vr => {
if (vr.ROW_NUM == vr.NO_OF_ROWS) {
this.IsReachEnd = true;
}
else {
this.IsReachEnd = false;
}
this.ReplacementList.push(vr);
// this.pro.GetVacationRulesList.push(vr);
}); });
} else {
this.IsReachEnd = true;
}
}
//this.P_PAGE_NUM++;
if (infiniteScroll)
infiniteScroll.target.complete();
// console.log(resFlag);
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
} else {
if (infiniteScroll)
infiniteScroll.target.complete();
} }
} }
} }

@ -13,6 +13,7 @@ import { CreateVacationRuleComponent } from './create-vacation-rule/create-vacat
import { ReplacementListComponent } from './replacement-list/replacement-list.component'; import { ReplacementListComponent } from './replacement-list/replacement-list.component';
// import { MaterialDesignFrameworkModule } from 'angular6-json-schema-form'; // import { MaterialDesignFrameworkModule } from 'angular6-json-schema-form';
import { PipesModule } from '../pipes/pipes.module';
const routes: Routes = [ const routes: Routes = [
{ {
@ -48,6 +49,8 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
PipesModule,
HmgCommonModule, HmgCommonModule,
// { // {
// ngModule: JsonSchemaFormModule, // ngModule: JsonSchemaFormModule,

@ -1,5 +1,5 @@
<ion-header> <ion-header>
<ion-toolbar class="header-toolbar"> <ion-toolbar class="header-toolbar-new">
<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>
</ion-buttons> </ion-buttons>
@ -7,39 +7,38 @@
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content padding> <ion-content class="colorBG" padding>
<ion-grid no-padding> <ion-grid no-padding>
<ul class="cusprogressbar"> <!-- <ul class="cusprogressbar">
<ion-row nowrap> <ion-row nowrap>
<ion-col size="4"> <ion-col size="4">
<!-- <ul class="cusprogressbar"> -->
<li class="active">{{'vacation-rule, itemType' | translate}}</li> <li class="active">{{'vacation-rule, itemType' | translate}}</li>
<!-- </ul> -->
</ion-col> </ion-col>
<ion-col size="4"> <ion-col size="4">
<!-- <ul class="cusprogressbar"> -->
<li>{{'vacation-rule, notification-type' | translate}}</li> <li>{{'vacation-rule, notification-type' | translate}}</li>
<!-- </ul> -->
</ion-col> </ion-col>
<ion-col size="4"> <ion-col size="4">
<!-- <ul class="cusprogressbar"> -->
<li>{{'vacation-rule, create-vacation-rule' | translate}}</li> <li>{{'vacation-rule, create-vacation-rule' | translate}}</li>
<!-- </ul> -->
</ion-col> </ion-col>
</ion-row> </ion-row>
</ul> </ul> -->
<ion-row justify-content-center> <!-- <ion-row justify-content-center>
<div [innerHTML]='"vacation-rule, vacation-type-text" | translate'></div> <div [innerHTML]='"vacation-rule, vacation-type-text" | translate'></div>
</ion-row> </ion-row> -->
<div *ngIf="!isUpdate" class="divStep ">
<ion-row no-wrap> <ion-row no-wrap>
<div class="stepHeaderDiv">
<label class="stepHeaderLebal">Applay for vacation Rule </label><br>
<label class="stepHeaderLebal">Step 1</label>
</div>
<ion-item> <ion-item class="selectItem">
<ion-label>{{'vacation-rule, itemType' | translate}}</ion-label> <ion-label>{{'vacation-rule, itemType' | translate}}</ion-label>
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}' <ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
[(ngModel)]="index" required> [(ngModel)]="index" (ionChange)="vacationRuleSel($event)" required>
<ion-select-option [selected]="x.ITEM_TYPE_DISPLAY_NAME" value="{{i}}" <ion-select-option [selected]="x.ITEM_TYPE_DISPLAY_NAME" value="{{i}}"
*ngFor="let x of ruleTypeList; let i=index;"> *ngFor="let x of ruleTypeList; let i=index;">
{{x.ITEM_TYPE_DISPLAY_NAME}} </ion-select-option> {{x.ITEM_TYPE_DISPLAY_NAME}} </ion-select-option>
@ -54,12 +53,148 @@
</p> </p>
</ion-row> </ion-row>
</div>
<div *ngIf="notificationTypeShow && !isUpdate" class="divStep">
<div class="stepHeaderDiv">
<label class="stepHeaderLebal">Step 2</label>
</div>
<ion-row >
<ion-list style="width: 100% !important;">
<ion-radio-group (ionChange)="notificationTypeSel($event)" [(ngModel)]="notifTypeSelP2" mode="md">
<ion-item>
<ion-label class="labelRadio">{{'vacation-rule, all-label' | translate}}</ion-label>
<ion-radio color="secondary" mode="md" checked value="*"></ion-radio>
</ion-item>
<ion-item>
<ion-label class="labelRadio">{{'vacation-rule, select-label' | translate}}</ion-label>
<ion-radio color="secondary" mode="md" value="sel_opt"></ion-radio>
</ion-item>
</ion-radio-group>
</ion-list>
</ion-row>
<ion-row>
<ion-item class="selectItem" *ngIf="notifTypeSelP2=='sel_opt'" >
<ion-label>{{'vacation-rule, notification' | translate}}</ion-label>
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
[(ngModel)]="var_notification" (ionChange)="notificationSel($event)" >
<ion-select-option value="{{i}}" *ngFor="let x of notification_list; let i=index">
{{x.NOTIFICATION_DISPLAY_NAME}}
</ion-select-option>
</ion-select>
</ion-item>
</ion-row>
</div>
<div *ngIf="createVacationRuleShow" class="divStep" >
<div class="stepHeaderDiv">
<label class="stepHeaderLebal">Step 3</label>
</div>
<ion-row>
<ion-grid>
<ion-row style="margin-top: 20px;">
<ion-col style="border-right: solid #d3d3d3 1px" size="6">
<p class="labelTitle label">{{'vacation-rule, itemType' | translate}}</p><br/>
<p class="labelValue label floatlabel">{{P_ITEM_TYPE_TITLE}} </p>
</ion-col>
<ion-col size="6">
<p class="labelTitle label">{{'vacation-rule, notification' | translate}} </p><br/>
<p class="labelValue label floatlabel">{{Notification_Title}} </p>
</ion-col>
</ion-row>
</ion-grid>
<!-- <ion-item>
<ion-label class="label">{{'vacation-rule, itemType' | translate}}</ion-label>
<ion-label class="label floatlabel">{{P_ITEM_TYPE_TITLE}} </ion-label>
</ion-item>
<ion-item>
<ion-label class="label">{{'vacation-rule, notification' | translate}} </ion-label>
<ion-label class="label floatlabel">{{Notification_Title}} </ion-label>
</ion-item> -->
<ion-item class="requiredItem selectItem">
<ion-label class="label">{{'vacation-rule, start-date' | translate}}</ion-label>
<ion-datetime [(ngModel)]="Sdate" min="1900" max="2100" displayFormat="MM/DD/YYYY hh:mm:ss A"
placeholder="MM/DD/YYYY hh:mm:ss A" required></ion-datetime>
</ion-item>
<ion-item class="requiredItem selectItem">
<ion-label class="label">{{'vacation-rule, end-date' | translate}}</ion-label>
<ion-datetime [(ngModel)]="Edate" min="1900" max="2100" displayFormat="MM/DD/YYYY hh:mm:ss A"
placeholder="MM/DD/YYYY hh:mm:ss A" required></ion-datetime>
</ion-item>
<ion-item lines="none" class="requiredItem selectItem">
<ion-label>{{'vacation-rule, message-label' | translate}}</ion-label>
<ion-textarea required [(ngModel)]="msgVal"></ion-textarea>
</ion-item>
<ion-list style="width: 95%;">
<ion-radio-group [(ngModel)]="notifTypeSel">
<ion-item *ngFor="let assignMode of REASSIGN_val;let i=index">
<ion-label class="labelRadio">{{assignMode.RADIO_BUTTON_LABEL}}</ion-label>
<ion-radio color="secondary" mode="md" value="{{assignMode.RADIO_BUTTON_ACTION}}" [checked]="i==0"></ion-radio>
</ion-item>
<ion-item *ngIf="isDeliver">
<ion-label class="labelRadio">{{'vacation-rule, deliver' | translate}}</ion-label>
<ion-radio color="secondary" mode="md" value="DELIVER"></ion-radio>
</ion-item>
<ion-item *ngIf="showForType_Y">
<ion-label class="labelRadio">{{'vacation-rule, close' | translate}}</ion-label>
<ion-radio color="secondary" mode="md" value="CLOSE"></ion-radio>
</ion-item>
<!-- <button *ngIf="notifTypeSel!='RESPOND'" ion-button block (click)="SearchReplacment()">{{'createVacationRule.search' | translate}}</button> -->
<ion-item *ngIf="RespondAttributeList.length > 0 && showForType_Y == false">
<ion-label class="labelRadio">{{'vacation-rule, respond' | translate}}</ion-label>
<ion-radio color="secondary" mode="md" value="RESPOND"></ion-radio>
</ion-item>
</ion-radio-group>
</ion-list>
<div [ngClass]="RespondAttributeList.length > 0 ? 'dynamicFields' : '' " id="CVDynamicFields">
</div>
<!-- <json-schema-form *ngIf="schemaNotific && notifTypeSel =='RESPOND'" [form]="schemaNotific"
[(ngModel)]="exampleJsonObject">
</json-schema-form> -->
<ion-item class="selectItem" lines="none" (click)="openReplacementRoll()"
*ngIf="(hideForwordEmployee && notifTypeSel =='RESPOND') || (notifTypeSel == 'DELEGATE') || (notifTypeSel == 'TRANSFER') ">
<ion-input [(ngModel)]="employeeSel" placeholder="{{'vacation-rule, search-employee' | translate}}"></ion-input>
<ion-button style="width: 19%;" button-type="clear">
<ion-icon slot="icon-only" name="search"></ion-icon>
</ion-button>
</ion-item>
</ion-row>
</div>
</ion-grid> </ion-grid>
</ion-content> </ion-content>
<ion-footer> <ion-footer class="colorBG">
<div class="centerDiv"> <div class="centerDiv">
<ion-button class="footer-button" color="customnavy" ion-button (click)="NextPage()"> <ion-button *ngIf="!createBtn" class="button-login footer-button" ion-button (click)="NextPage()">
{{'vacation-rule, next-label' | translate}}</ion-button> {{'vacation-rule, next-label' | translate}}</ion-button>
<!-- <ion-button *ngIf="createBtn" class="footer-button" color="customnavy" ion-button (click)="createVacationRule()">
create </ion-button> -->
<div *ngIf="isUpdate==false && createBtn" class="centerDiv">
<ion-button class="button-login footer-button" ion-button (click)="openConfirmAlertDialogAction(true)">
{{'vacation-rule, apply' | translate}}</ion-button>
</div>
<div *ngIf="isUpdate " class="centerDiv">
<ion-button class="button-login footer-button" ion-button (click)="openConfirmAlertDialogAction(false)">
{{'vacation-rule, update' | translate}}</ion-button>
</div>
</div> </div>
</ion-footer> </ion-footer>

@ -12,7 +12,7 @@ li {
} }
ion-item { ion-item {
width: 100%; width: 95%;
margin-left: 2%; margin-left: 2%;
margin-right: 5%; margin-right: 5%;
} }
@ -30,6 +30,67 @@ p.smallTip {
min-width: 200px; min-width: 200px;
} }
.noteInput{
border: solid var(--gray) 1px;
border-radius: 15px;
margin: 8px 17px 0px 17px;
padding: 10px 2px 10px 2px;
}
// new css //
.divStep{
border: solid var(--gray) 1px;
border-radius: 15px;
padding: 10px 2px 10px 2px;
background: white;
box-shadow: 0px 0px 6px 0px #d5d5d5ab;
margin-bottom: 17px;
}
.ionItemStep{
width: 100%;
margin-left: 5%;
margin-right: 5%;
margin-top: 10px;
border-radius: 30px;
border: 1px solid #dbdbdb;
}
.selectItem{
border: solid 1px #dbdbdb;
border-radius: 25px;
margin: 15px;
width: 100%;
}
.labelTitle{
margin-left: 15px;
}
.labelValue{
margin-top: -27px;
font-weight: 900;
margin-left: 15px;
}
.labelRadio{
white-space: pre-line !important;
color: black !important;
}
.dynamicFields{
width: 321px;
border: #dbdbdb solid 1px;
border-radius: 16px;
margin: 10px;
padding: 10px;
}
.stepHeaderDiv{
text-align: center;
margin: auto;
font-weight: bolder;
}
.stepHeaderLebal{
margin:0;
}
// .progcontainer { // .progcontainer {
// margin: auto; // margin: auto;
// text-align: center; // text-align: center;

@ -1,10 +1,23 @@
import { vacationTypeResponse } from './../model/vacationType.Respond'; import { vacationTypeResponse } from './../model/vacationType.Respond';
import { notificationTypeResponse } from './../model/notification.Respond'; import { notificationTypeResponse } from './../model/notification.Respond';
import { VacationTypeRequest } from './../model/VacationTypeRequest'; import { VacationTypeRequest } from './../model/VacationTypeRequest';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit, ElementRef } from '@angular/core';
import { VacationRuleServiceService } from '../service/vacation-rule-service.service'; import { VacationRuleServiceService } from '../service/vacation-rule-service.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { notificationTypeRequest } from '../model/notification.Request';
import * as moment from 'moment';
import { vacationRuleResponse } from '../model/vacationRule.Respond';
import { LoginRequest } from 'src/app/hmg-common/services/authentication/models/login.request';
import { ReplacementServiceRequest } from '../model/replacement-Service.request';
import { NumberInput } from 'src/app/uI-elements/number.input';
import { DateInput } from 'src/app/uI-elements/date.input';
import { SelectInput } from 'src/app/uI-elements/select.input';
import { TextInput } from 'src/app/uI-elements/text.input';
import { ModalController } from '@ionic/angular';
import { ReplacementListComponent } from '../replacement-list/replacement-list.component';
import { createVacationRequest } from '../model/createVacation.Request';
import { WorkListReplacementRollComponent } from 'src/app/notification/work-list-replacement-roll/work-list-replacement-roll.component';
@Component({ @Component({
selector: 'app-vacation-type', selector: 'app-vacation-type',
@ -12,15 +25,195 @@ import { CommonService } from 'src/app/hmg-common/services/common/common.service
styleUrls: ['./vacation-type.component.scss'], styleUrls: ['./vacation-type.component.scss'],
}) })
export class VacationTypeComponent implements OnInit { export class VacationTypeComponent implements OnInit {
ruleTypeList: any; ruleTypeList: any;
index: any; index: any;
vactionRuleSelected:any =-1;
notificationTypeSelected: number;
notification_list: any; ////
notificationTypeShow:boolean=false;
notificationSelected: any;
createVacationRuleShow: boolean=false;
createBtn: boolean;
Sdate: any;
isUpdate: any;
SelAction: any;
updateData: any;
notificationType: { NOTIFICATION_NAME: any; NOTIFICATION_DISPLAY_NAME: any; NOTIFICATION_SUBJECT: any; FYI_FLAG: any; };
P_ITEM_TYPE_TITLE: any;
selEmployeeID: any;
selEmployeeName: any;
employeeSel: any;
msgVal: any;
notifTypeSel: any;
itemType: any;
Edate: string;
Notification_Title: any;
showForType_Y: boolean;
isDeliver: boolean;
REASSIGN_val: any =[];
var_notification: any;
exampleJsonObject: {};
RespondAttributeList: any=[];
GetRespondAttributeValueList: any;
wFLookUpList: any;
Resp2_val: any;
dateInput: DateInput;
numberInput: NumberInput;
selectInput: any;
textInput: TextInput;
hideForwordEmployee: any;
notifTypeSelP2: string;
P_RESPOND_ATTRIBUTES_TBL: any=[];
vacationRuleRequest: createVacationRequest;
confirmMsg: string;
constructor(public vacationRuleService: VacationRuleServiceService,
public ts: TranslatorService,
public cs: CommonService,
public modalController: ModalController,
private elementRef: ElementRef) {
constructor(public vacationRuleService: VacationRuleServiceService, public ts: TranslatorService, public cs: CommonService) { }
}
ngOnInit() { ngOnInit() {
this.isUpdate = this.cs.sharedService.getSharedData('isUpdate');
if (this.isUpdate) {
this.initCreateVaction();
}
else{
this.getVacationType(); this.getVacationType();
} }
}
initCreateVaction(){
this.Sdate = moment().format('YYYY-MM-DDTHH:mm:ssZ');
this.Edate="";
// this.isUpdate = this.cs.sharedService.getSharedData('isUpdate');
if (this.isUpdate) {
this.updateData = this.cs.sharedService.getSharedData(vacationRuleResponse.SHARED_DATA, false);
this.SelAction = this.updateData.ACTION;
if (this.updateData.ACTION == "RESPOND" && this.updateData.FYI_FLAG == "Y") {
this.SelAction = "Close"
}
this.notificationType = {
NOTIFICATION_NAME: this.updateData.NOTIFICATION_NAME,
NOTIFICATION_DISPLAY_NAME: this.updateData.NOTIFICATION_SUBJECT,
NOTIFICATION_SUBJECT: this.updateData.NOTIFICATION_SUBJECT,
FYI_FLAG: this.updateData.FYI_FLAG
}
/*************** */
this.P_ITEM_TYPE_TITLE = this.updateData.ITEM_TYPE_DISPLAY_NAME;
this.selEmployeeID = this.updateData.REPLACEMENT_USER_NAME;
if (this.selEmployeeID) {
this.selEmployeeName = this.updateData.RULE_NAME;
this.employeeSel = this.updateData.RULE_NAME;
}
/************ */
this.msgVal = this.updateData.MESSAGE;
this.notifTypeSel = this.updateData.ACTION;
this.itemType = this.updateData;
this.notificationType = this.updateData;
//this.Sdate = this.updateData.BEGIN_DATE;
//this.Edate = this.updateData.END_DATE;
let _Sdate = this.updateData.BEGIN_DATE ? this.updateData.BEGIN_DATE : "";
let _Edate = this.updateData.END_DATE ? this.updateData.END_DATE : "";
//let tzoffset = moment().utcOffset(); //offset in milliseconds
if (_Sdate) {
this.Sdate = moment(_Sdate).format('YYYY-MM-DDTHH:mm:ssZ');
//this.Sdate = (new Date(myStartTime - tzoffset)).toISOString().slice(0, -1);
//this.startTime = this.Sdate;
}
if (_Edate) {
this.Edate = moment(_Edate).format('YYYY-MM-DDTHH:mm:ssZ');
//this.Edate = (new Date(myEndTime - tzoffset)).toISOString().slice(0, -1);
// this.endTime = this.Edate;
}
//this.schemaNotific =this.updateData.RespondAttributeList;
//this.notifTypeSel=this.REASSIGN_val[0].RADIO_BUTTON_LABEL;
//console.log(this.notifTypeSel);
// this.getNotificationReassign();
} else {
this.msgVal="";
this.isUpdate = false;
this.SelAction = "";
this.employeeSel = "";
this.itemType = this.cs.sharedService.getSharedData(vacationTypeResponse.SHARED_DATA, false);
this.notificationType = this.cs.sharedService.getSharedData(notificationTypeResponse.SHARED_DATA, false);
}
this.Notification_Title = this.notificationType.NOTIFICATION_DISPLAY_NAME;
this.P_ITEM_TYPE_TITLE = this.itemType.ITEM_TYPE_DISPLAY_NAME;
console.log("showForType_Y");
if (this.notificationType.FYI_FLAG == 'Y') {
this.showForType_Y = true;
} else {
this.showForType_Y = false;
}
if (this.itemType.ITEM_TYPE == "*") {
this.isDeliver = false;
} else {
this.isDeliver = true;
}
this.getNotificationReassign();
this.respondAttributes();
}
vacationRuleSel(event){
this.vactionRuleSelected=event.detail.value;
if(this.notificationTypeShow){
//this.notificationTypeShow = false
this.notificationTypeShow = false
this.notifTypeSelP2 = "*";
//this.part3show = false
}
if (this.createVacationRuleShow){
this.createVacationRuleShow = false
this.createBtn=false;
}
console.log("event: "+ event.detail.value);
}
notificationSel(event){
this.notificationSelected=event.detail.value;
if(this.createVacationRuleShow){
//this.notificationTypeShow = false
this.createVacationRuleShow = false
this.createBtn=false;
//this.part3show = false
}
//
console.log("notificationSel event: "+ event.detail.value);
}
notificationTypeSel(event){
// notifTypeSelP2
this.notificationTypeSelected=event.detail.value;
if(this.createVacationRuleShow){
//this.notificationTypeShow = false
this.createVacationRuleShow = false
this.createBtn=false;
//this.part3show = false
}
}
getVacationType() { getVacationType() {
let request: VacationTypeRequest = new VacationTypeRequest(); let request: VacationTypeRequest = new VacationTypeRequest();
@ -38,6 +231,11 @@ export class VacationTypeComponent implements OnInit {
} }
NextPage() { NextPage() {
//notification_list
if(this.vactionRuleSelected >= 0 ){
//&& !this.notificationTypeShow && !this.notificationTypeShow){
if(!this.notificationTypeShow){
this.cs.sharedService.setSharedData(this.ruleTypeList[this.index], vacationTypeResponse.SHARED_DATA); this.cs.sharedService.setSharedData(this.ruleTypeList[this.index], vacationTypeResponse.SHARED_DATA);
if (this.ruleTypeList[this.index].ITEM_TYPE == "*") { if (this.ruleTypeList[this.index].ITEM_TYPE == "*") {
@ -47,12 +245,657 @@ export class VacationTypeComponent implements OnInit {
notificatioAtt.NOTIFICATION_NAME = "*"; notificatioAtt.NOTIFICATION_NAME = "*";
notificatioAtt.NOTIFICATION_SUBJECT = ""; notificatioAtt.NOTIFICATION_SUBJECT = "";
this.cs.sharedService.setSharedData(notificatioAtt, notificationTypeResponse.SHARED_DATA); this.cs.sharedService.setSharedData(notificatioAtt, notificationTypeResponse.SHARED_DATA);
this.cs.navigateForward('/vacation-rule/create-vacation-rule'); //part 3
this.createVacationRuleShow = true
this.createBtn=true;
// if (this.notifTypeSelP2 == "*") {
// let notificatioAtt: notificationTypeResponse = new notificationTypeResponse();
// notificatioAtt.FYI_FLAG = "";
// notificatioAtt.NOTIFICATION_DISPLAY_NAME = "All";
// notificatioAtt.NOTIFICATION_NAME = "*";
// notificatioAtt.NOTIFICATION_SUBJECT = "";
// this.cs.sharedService.setSharedData(notificatioAtt, notificationTypeResponse.SHARED_DATA);
// } else {
// this.cs.sharedService.setSharedData(this.notification_list[this.var_notification], notificationTypeResponse.SHARED_DATA);
// }
this.initCreateVaction();
//this.cs.navigateForward('/vacation-rule/create-vacation-rule');
} else {
//part 2
this.getNotificationType();
// this.cs.navigateForward('/vacation-rule/notification-type');
}
}//end part not show
else{
// check if notifictype sele and part 3 not show
//this.notificationSelected=event.detail.value;
///if(this.createVacationRuleShow
if((this.notificationSelected >= 0 || this.notifTypeSelP2 == '*') && !this.createVacationRuleShow){
//call part3
this.createVacationRuleShow = false
this.createBtn=false;
if (this.notifTypeSelP2 == "*") {
let notificatioAtt: notificationTypeResponse = new notificationTypeResponse();
notificatioAtt.FYI_FLAG = "";
notificatioAtt.NOTIFICATION_DISPLAY_NAME = "All";
notificatioAtt.NOTIFICATION_NAME = "*";
notificatioAtt.NOTIFICATION_SUBJECT = "";
this.cs.sharedService.setSharedData(notificatioAtt, notificationTypeResponse.SHARED_DATA);
} else {
this.cs.sharedService.setSharedData(this.notification_list[this.var_notification], notificationTypeResponse.SHARED_DATA);
}
this.initCreateVaction();
}
}
}
else{
alert("please select vaction rule");
}
}////////////////////////////////
getNotificationType() {
let request: notificationTypeRequest = new notificationTypeRequest();
request.P_ITEM_TYPE = this.ruleTypeList[this.index].ITEM_TYPE; //;this.itemTypeObj.ITEM_TYPE;
this.vacationRuleService.getNotificationType(request, () => {
this.getNotificationType();
}, this.ts.trPK('general', 'retry')).subscribe((result) => {
console.log(result);
if (this.cs.validResponse(result)) {
console.log(result.GetItemTypeNotificationsList);
this.notification_list = result.GetItemTypeNotificationsList;
//rest radio button of notifTypeSel (All , select)
this.notificationTypeShow=true;
} else {
this.cs.presentAlert(result.ErrorEndUserMessage);
}
});
}
getNotificationReassign() {
let request: LoginRequest = new LoginRequest();
this.vacationRuleService.notificationReassign(request, () => {
this.getNotificationReassign();
}, this.ts.trPK('general', 'retry')).subscribe((result) => {
console.log(result);
if (this.cs.validResponse(result)) {
console.log(result.GetNotificationReassignModeList);
this.REASSIGN_val = result.GetNotificationReassignModeList;//[0].RADIO_BUTTON_ACTION;
this.notifTypeSel = this.REASSIGN_val[0].RADIO_BUTTON_ACTION;
this.reverseAction();
this.createVacationRuleShow = true;
this.createBtn=true;
} else {
this.cs.presentAlert(result.ErrorEndUserMessage);
}
});
}
reverseAction() {
if (this.updateData) {
switch (this.SelAction) {
case 'FORWARD': {
this.notifTypeSel = "DELEGATE";
break;
}
case 'RESPOND': {
this.notifTypeSel = "RESPOND";
break;
}
case 'CLOSE': {
this.notifTypeSel = "CLOSE";
break;
}
case 'NOOP': {
this.notifTypeSel = "DELIVER";
break;
}
case 'TRANSFER': {
this.notifTypeSel = "TRANSFER";
break;
}
default: {
this.notifTypeSel = "";
break;
}
}
}
}
/////////////////////////////////////
respondAttributes() {
let request: notificationTypeRequest = new notificationTypeRequest();
request.P_NOTIFICATION_NAME = this.notificationType.NOTIFICATION_NAME;
request.P_ITEM_TYPE = this.itemType.ITEM_TYPE;
// this.vacationRuleService.respondAttributes(
// request).
// subscribe((result: Response) => {
// this.handlerespondAttributesResult(result);
// });
this.vacationRuleService.respondAttributes(request, () => {
this.respondAttributes();
}, this.ts.trPK('general', 'retry')).subscribe((result) => {
this.handlerespondAttributesResult(result);
});
}
handlerespondAttributesResult(result) {
if (this.cs.validResponse(result)) {
this.RespondAttributeList = result.RespondAttributesList;
if (result.RespondRolesList != "" && result.RespondRolesList[0].ATTRIBUTE_NAME != null && result.RespondRolesList[0].ATTRIBUTE_NAME != undefined) {
this.Resp2_val = result.RespondRolesList[0].ATTRIBUTE_NAME;
this.hideForwordEmployee = result.RespondRolesList[0];
}
if (result.RespondAttributesList) {
//this.schemaNotific = JSON.parse(result.P_Schema);
////////************************************** */
this.createVacationDynamicFields(result.RespondAttributesList);
}
this.reverseAction();
if (this.isUpdate) {
this.fillResposeAtrributes(result.RespondAttributesList);
}
// ATTRIBUTE_DISPLAY_NAME: "Note"
// ATTRIBUTE_FORMAT: "4000"
// ATTRIBUTE_NAME: "WF_NOTE"
// ATTRIBUTE_TYPE: "VARCHAR2"
}
}
createVacationDynamicFields(RespondAttributesList) {
console.log("createVacationDynamicFields");
const containerId = 'CVDynamicFields';
for (let i = 0; i < RespondAttributesList.length; i++) {
if (RespondAttributesList[i].ATTRIBUTE_TYPE == "VARCHAR2") {
console.log("1");
this.textInput = new TextInput(RespondAttributesList[i].ATTRIBUTE_DISPLAY_NAME, RespondAttributesList[i].ATTRIBUTE_NAME, "", containerId, "", "", "", "");
} else if (RespondAttributesList[i].ATTRIBUTE_TYPE == "LOOKUP") {
console.log("2");
//call create WF_LOOKUP
//call there or when the got response from responsedAtt
this.selectInput = new SelectInput(RespondAttributesList[i].ATTRIBUTE_DISPLAY_NAME, RespondAttributesList[i].ATTRIBUTE_NAME, "", containerId, "", "", "");
this.getWFLookUp(RespondAttributesList[i].ATTRIBUTE_FORMAT, RespondAttributesList[i].ATTRIBUTE_NAME);
} else if (RespondAttributesList[i].ATTRIBUTE_TYPE == "DATE") {
console.log("3");
this.dateInput = new DateInput(RespondAttributesList[i].ATTRIBUTE_DISPLAY_NAME, RespondAttributesList[i].ATTRIBUTE_NAME, "", containerId, "", "", "");
} else if (RespondAttributesList[i].ATTRIBUTE_TYPE == "NUMBER") {
console.log("4");
this.numberInput = new NumberInput(RespondAttributesList[i].ATTRIBUTE_DISPLAY_NAME, RespondAttributesList[i].ATTRIBUTE_NAME, "", containerId, "", "", "");
}
}
}
fillResposeAtrributes(respList) {
let body = {
P_RULE_ID: this.updateData.RULE_ID,
GetRespondAttributeValueTBL: respList
}
this.vacationRuleService.getRespondAttributeValues(
body).
subscribe((result: Response) => {
this.handleFillResponseAttr(result);
});
}
handleFillResponseAttr(result) {
if (this.cs.validResponse(result)) {
if (result.GetRespondAttributeValueList && result.GetRespondAttributeValueList.length > 0) {
this.GetRespondAttributeValueList=result.GetRespondAttributeValueList;
let resp_val: any = result.GetRespondAttributeValueList[0].P_ATTRIBUTE_NAME;
let Emp_ID: any = result.GetRespondAttributeValueList[0].P_ATTRIBUTE_TEXT_VALUE;
let valueList = result.GetRespondAttributeValueList;
var obj = {};
if (resp_val == this.Resp2_val) {
let request: ReplacementServiceRequest = new ReplacementServiceRequest();
request.P_SEARCH_USER_NAME = Emp_ID;
request.P_SEARCH_EMPLOYEE_DISPLAY_NAME = "";
request.P_SEARCH_EMAIL_ADDRESS = "";
request.P_PAGE_NUM = 1;
request.P_PAGE_LIMIT = 1000
this.vacationRuleService.getReplacementList(request).
subscribe((result: Response) => {
this.handleFillRole(result);
});
}
for (let i = 0; i < valueList.length; i++) {
obj[valueList[i].P_ATTRIBUTE_NAME] = valueList[i].P_ATTRIBUTE_TEXT_VALUE;
}
this.exampleJsonObject = obj;
//Call set value of responsed attribute
// this.createVacationDynamicFields(this.exampleJsonObject);//ashwaq
this.setRespondAttributeValue();
// this.exampleJsonObject = new Map(valueList.map(obj => [ obj., obj.P_ATTRIBUTE_TEXT_VALUE ]));
}
}
}
handleFillRole(result) {
if (this.cs.validResponse(result)) {
this.selEmployeeName = result.ReplacementList[0].EMPLOYEE_DISPLAY_NAME;
this.selEmployeeID = result.ReplacementList[0].USER_NAME;
}
}
setRespondAttributeValue(){
for (let i = 0; i < this.RespondAttributeList.length; i++) {
if(this.RespondAttributeList[i].ATTRIBUTE_NAME == this.GetRespondAttributeValueList[i].P_ATTRIBUTE_NAME){
if (this.RespondAttributeList[i].ATTRIBUTE_TYPE == "VARCHAR2") {
console.log("1");
let x = (document.getElementById(this.RespondAttributeList[i].ATTRIBUTE_NAME)) as HTMLInputElement;
x.value=this.GetRespondAttributeValueList[i].P_ATTRIBUTE_NUMBER_VALUE;
} else if (this.RespondAttributeList[i].ATTRIBUTE_TYPE == "LOOKUP") {
console.log("2");
//call create WF_LOOKUPP_ATTRIBUTE_NAME
//call there or when the got response from responsedAtt
let x = (document.getElementById(this.RespondAttributeList[i].ATTRIBUTE_NAME)) as HTMLSelectElement;
if(this.wFLookUpList){
let index= this.wFLookUpList.findIndex(x => x.LOOKUP_CODE == this.GetRespondAttributeValueList[i].P_ATTRIBUTE_TEXT_VALUE);
console.log("Hel: "+ index);
x.options[index+1].selected=true;
}
} else if (this.RespondAttributeList[i].ATTRIBUTE_TYPE == "DATE") {
console.log("3");
} else if (this.RespondAttributeList[i].ATTRIBUTE_TYPE == "NUMBER") {
console.log("4");
let x = (document.getElementById(this.RespondAttributeList[i].ATTRIBUTE_NAME)) as HTMLInputElement;
x.value=this.GetRespondAttributeValueList[i].P_ATTRIBUTE_NUMBER_VALUE;
}
}//end if
}
}
getWFLookUp(resAttrFormat: any, ATTRIBUTE_NAME) {
const request = {
P_LOOKUP_TYPE: resAttrFormat,
}
this.vacationRuleService.getLookup(request, () => { }, this.ts.trPK('general', 'retry')).subscribe(
(result: any) => {
if (this.cs.validResponse(result)) {
// console.log("Lookup result "+ result);
this.wFLookUpList=result.WFLookUpList
this.fillDropdownList(result.WFLookUpList, ATTRIBUTE_NAME);
} else {
this.cs.presentAlert(result.ErrorEndUserMessage);
}
});
}
fillDropdownList(optionList: any = [],attributeID) {
let elemID: any = attributeID;
let eitObj: any;
if (optionList.length > 0) {
let select = document.getElementById(elemID) as HTMLSelectElement;
document.getElementById(elemID).innerHTML = "";
var firstoption = document.createElement("option");
firstoption.text = this.ts.trPK("general", "choose");
firstoption.value = "";
select.add(firstoption);
for (let i = 0; i < optionList.length; i++) {
var option = document.createElement("option");
option.text = optionList[i].LOOKUP_MEANING;
option.value = optionList[i].LOOKUP_CODE;
select.add(option);
}
select.disabled = false;
}
}
async SearchReplacment() {
const modal = await this.modalController.create({
component: ReplacementListComponent
});
modal.cssClass = 'replaceRoll-modal';
modal.onDidDismiss()
.then((data) => {
const user = data.data;
console.log(data)
console.log(user);
if (data) {
this.selEmployeeName = user.EMPLOYEE_DISPLAY_NAME;
this.selEmployeeID = user.USER_NAME;
this.employeeSel = this.selEmployeeName + "," + this.selEmployeeID
}
});
return await modal.present();
}
clearEmployee() {
this.selEmployeeName = "";
this.selEmployeeID = "";
}
/////////////////////////////////////////////
ApplyFunc() {
(this.elementRef.nativeElement.querySelectorAll('ion-item') as HTMLElement[]).forEach((x) => {
if (x.classList.contains('requiredItem')) {
x.classList.add('ng-touched');
x.classList.remove('ng-untouched');
}
});
let msg: string = "";
if (this.notifTypeSel == undefined) {
msg = this.ts.trPK('vacation-rule', 'fillAction');
this.cs.presentAlert(msg);
} else if (this.msgVal == undefined) {
msg = this.ts.trPK('vacation-rule', 'fillMsg');
this.cs.presentAlert(msg);
} else if (this.Sdate == undefined) {
msg = this.ts.trPK('vacation-rule', 'fillSDate');
this.cs.presentAlert(msg);
}
// else if (this.selEmployeeID == undefined) {
// msg = this.ts.trPK('vacation-rule', 'fillReplacement');
// this.cs.presentAlert(msg);
// }
else {
// var responseAttrDic = this.exampleJsonObject;//haroon
var responseAttrDic =this.RespondAttributeList; // Ashwaq
this.P_RESPOND_ATTRIBUTES_TBL = [];
for (let key in responseAttrDic) {
let obj: any = {};
obj.ATTRIBUTE_NAME =responseAttrDic[key].ATTRIBUTE_NAME;//ashwaq to get ATTRIBUTE_NAME
if (typeof responseAttrDic[key] === "number") {
obj.ATTRIBUTE_NUMBER_VALUE = (document.getElementById(responseAttrDic[key].ATTRIBUTE_NAME) as HTMLInputElement).value;
}
else {
obj.ATTRIBUTE_TEXT_VALUE =(document.getElementById(responseAttrDic[key].ATTRIBUTE_NAME) as HTMLInputElement).value;
}
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
let repUserName = this.selEmployeeID;
if(repUserName == null || repUserName ==""){
}
if (this.hideForwordEmployee && this.hideForwordEmployee.ATTRIBUTE_NAME) {
let obj: any = {};
repUserName = "";
obj.ATTRIBUTE_NAME = this.hideForwordEmployee.ATTRIBUTE_NAME;
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
let pAction = "";
pAction = this.getActionValue();
let jsonSDate = "";
let jsonEDate = "";
if (this.Sdate) {
let startDate = moment(this.Sdate).format('YYYY-MM-DDTHH:mm:ssZ');
jsonSDate = this.cs.convertISODateToJsonDate(startDate);
} else {
jsonSDate = null;
}
if (this.Edate) {
let endDate = moment(this.Edate).format('YYYY-MM-DDTHH:mm:ssZ');
jsonEDate = this.cs.convertISODateToJsonDate(endDate);
} else {
jsonEDate = null;
}
let request: createVacationRequest = new createVacationRequest();
request.P_BEGIN_DATE = jsonSDate;
request.P_END_DATE = jsonEDate;
request.P_MESSAGE = this.msgVal;
request.P_REPLACEMENT_USER_NAME = repUserName;
request.P_ITEM_TYPE = this.itemType.ITEM_TYPE;
request.P_NOTIFICATION_NAME = this.notificationType.NOTIFICATION_NAME;
request.P_ACTION = pAction;
request.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
this.vacationRuleRequest = request;
this.vacationRuleService.createVacationRule(request, () => {
}, this.ts.trPK('general', 'retry')).subscribe((result) => {
if (this.cs.validResponse(result)) {
console.log(result);
this.handlecreateVacationResult(result);
} else { } else {
this.cs.navigateForward('/vacation-rule/notification-type'); this.cs.presentAlert(result.ErrorEndUserMessage);
}
});
}
} }
handlecreateVacationResult(result) {
if (this.cs.validResponse(result)) {
this.cs.JustAlertDialog(this.ts.trPK('general', 'ok'), this.ts.trPK('vacation-rule', 'rule-success'))
this.goToStart();
}
}
goToStart() {
this.cs.navigateRoot('/home')
} }
updateVacationRule() {
(this.elementRef.nativeElement.querySelectorAll('ion-item') as HTMLElement[]).forEach((x) => {
if (x.classList.contains('requiredItem')) {
x.classList.add('ng-touched');
x.classList.remove('ng-untouched');
}
});
let msg: string = "";
if (this.notifTypeSel == undefined) {
msg = this.ts.trPK('vacation-rule', 'fillAction');
} else if (this.msgVal == undefined) {
msg = this.ts.trPK('vacation-rule', 'fillMsg');
} else if (this.Sdate == undefined) {
msg = this.ts.trPK('vacation-rule', 'fillSDate');
} else {
var responseAttrDic = this.exampleJsonObject;
this.P_RESPOND_ATTRIBUTES_TBL = [];
for (let key in responseAttrDic) {
let obj: any = {};
obj.ATTRIBUTE_NAME = key;
if (typeof responseAttrDic[key] === "number") {
obj.ATTRIBUTE_NUMBER_VALUE = responseAttrDic[key];
}
else {
obj.ATTRIBUTE_TEXT_VALUE = responseAttrDic[key];
}
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
let repUserName = this.selEmployeeID;
if (this.hideForwordEmployee && this.hideForwordEmployee.ATTRIBUTE_NAME) {
let obj: any = {};
repUserName = "";
obj.ATTRIBUTE_NAME = this.hideForwordEmployee.ATTRIBUTE_NAME;
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
let pAction = "";
pAction = this.getActionValue();
let jsonSDate = "";
let jsonEDate = "";
if (this.Sdate) {
let startDate = moment(this.Sdate).format('YYYY-MM-DDTHH:mm:ssZ');
jsonSDate = this.cs.convertISODateToJsonDate(startDate);
} else {
jsonSDate = null;
}
if (this.Edate) {
let endDate = moment(this.Edate).format('YYYY-MM-DDTHH:mm:ssZ');
jsonEDate = this.cs.convertISODateToJsonDate(endDate);
} else {
jsonEDate = null;
}
let body: any = {
P_RULE_ID: this.updateData.RULE_ID,
P_BEGIN_DATE: jsonSDate,
P_END_DATE: jsonEDate,
P_MESSAGE: this.msgVal,
P_REPLACEMENT_USER_NAME: repUserName,
P_ACTION: pAction,
RespondAttributeList: this.P_RESPOND_ATTRIBUTES_TBL
}
this.vacationRuleService.updateVacationRule(
body).
subscribe((result: Response) => {
this.handleupdateVacationResult(result);
});
}
}
handleupdateVacationResult(result) {
if (this.cs.validResponse(result)) {
this.cs.JustAlertDialog(this.ts.trPK('general', 'ok'), this.ts.trPK('vacation-rule', 'rule-update-success'))
this.goToStart();
}
}
getActionValue(): string {
let pAction = "";
//this.pAction = this.notifTypeSel;
//console.log(this.pAction);
if (this.notifTypeSel) {
switch (this.notifTypeSel) {
case 'DELEGATE': {
pAction = "FORWARD";
break;
}
case 'RESPOND': {
pAction = "RESPOND";
break;
}
case 'CLOSE': {
pAction = "RESPOND";
break;
}
case 'DELIVER': {
pAction = "NOOP";
break;
}
case 'TRANSFER': {
pAction = "TRANSFER";
break;
}
default: {
pAction = "";
break;
}
}
return pAction;
}
}
async openReplacementRoll() {
const modal = await this.modalController.create({
component: ReplacementListComponent,
backdropDismiss: false,
});
modal.cssClass = 'replaceRoll-modal';
modal.onDidDismiss().then((data) => {
console.log(data.data);
if (data.data == "cancel" || data.data == undefined) {
return;
} else {
this.selEmployeeName = data.data.EMPLOYEE_DISPLAY_NAME;
this.selEmployeeID = data.data.USER_NAME;
this.employeeSel = this.selEmployeeName + "," + this.selEmployeeID
}
});
return await modal.present();
}
//////
openConfirmAlertDialogAction(flag){
if(flag==true){
this.confirmMsg = this.ts.trPK('vacation-rule', 'confirm-msg-success')
}
else{
this.confirmMsg= this.ts.trPK('vacation-rule', 'update-msg-success')
}
this.cs.confirmAlertDialogAction(
() => {
if(flag==true){
this.ApplyFunc();
}
else{
this.updateVacationRule();
}
}, this.ts.trPK('general', 'ok'),
() => { }, this.ts.trPK('general', 'cancel'),
this.ts.trPK('vacation-rule', 'confirmation'),
this.confirmMsg
)
}
//////
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 B

@ -1219,6 +1219,16 @@
"rule-update-success": { "rule-update-success": {
"en": "Rule updated successfully", "en": "Rule updated successfully",
"ar": "تم تحديث القاعدة بنجاح" "ar": "تم تحديث القاعدة بنجاح"
},
"confirm-msg-success": {
"en" :"Are you sure, you want to Apply for Vacation Rule?",
"ar" :"Are you sure, you want to Apply for Vacation Rule?"
},
"update-msg-success": {
"en" :"Are you sure, you want to Update this Vacation Rule?",
"ar" :"Are you sure, you want to Update this Vacation Rule?"
} }
}, },
"absenceList": { "absenceList": {
@ -1894,19 +1904,20 @@
"ar":"العناصر المطلوبة" "ar":"العناصر المطلوبة"
}, },
"approveMsg":{ "approveMsg":{
"en": "Are you sure to approve this request ?",
"en": "<p class=\"boldP\"> Are you sure to <span class=\"boldText\"> Approve </span>this request ?</p>",
"ar":"العناصر المطلوبة" "ar":"العناصر المطلوبة"
}, },
"rejectMsg":{ "rejectMsg":{
"en": "Are you sure to reject this request?", "en": "<p class=\"boldP\">Are you sure to <span class=\"boldText\"> Reject </span> this request ?</p>",
"ar":"العناصر المطلوبة" "ar":"العناصر المطلوبة"
}, },
"delMsg":{ "delMsg":{
"en": "Are you sure to delete this request?", "en": "<p class=\"boldP\">Are you sure to <span class=\"boldText\"> Delete </span> this request ?</p>",
"ar":"العناصر المطلوبة" "ar":"العناصر المطلوبة"
}, },
"closeMsg":{ "closeMsg":{
"en": "Are you sure to close this request?", "en": "<p class=\"boldP\">Are you sure to <span class=\"boldText\"> Close </span>this request ?</p>",
"ar":"العناصر المطلوبة" "ar":"العناصر المطلوبة"
}, },
"Supplier":{ "Supplier":{

@ -927,6 +927,8 @@ color: var(--dark);
// right: 5%; // right: 5%;
// bottom: 5%; // bottom: 5%;
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
padding: 60% 10% !important;
padding: 30% 10% !important; padding: 30% 10% !important;
--height: 12cm !important; --height: 12cm !important;
// --width: 80% !important; // --width: 80% !important;
@ -1020,13 +1022,13 @@ color: var(--dark);
} }
.checkOutOkBtn{ .checkOutOkBtn{
margin-left: 55px !important; /* margin-left: 50px !important; */
margin-right: 55px !important; /* margin-right: 55px !important; */
margin-top: 10px !important; margin-top: 10px !important;
margin-bottom: 10px !important; /* margin-bottom: 10px !important; */
border-radius: 5px !important; border-radius: 5px !important;
height: 32px !important; height: 40px !important;
min-height: 30px !important; min-height: 40px !important;
background: var(--lightblue) !important; background: var(--lightblue) !important;
-webkit-box-flex: 1; -webkit-box-flex: 1;
flex: 1 1 auto; flex: 1 1 auto;
@ -1034,17 +1036,19 @@ color: var(--dark);
border-right: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2); border-right: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);
color: white !important; color: white !important;
border: none !important; border: none !important;
width: 80%;
--background: var(--lightblue) !important;
} }
.checkOutCancelBtn{ .checkOutCancelBtn{
margin-left: 55px !important; /* margin-left: 55px !important; */
margin-right: 55px !important; /* margin-right: 55px !important; */
margin-top: 10px !important; /* margin-top: 10px !important; */
margin-bottom: 10px !important; /* margin-bottom: 10px !important; */
border-radius: 5px !important; border-radius: 5px !important;
height: 32px !important; height: 40px !important;
min-height: 30px !important; min-height: 40px !important;
background: var(--darkblue) !important; background: var(--darkblue) !important;
-webkit-box-flex: 1; -webkit-box-flex: 1;
flex: 1 1 auto; flex: 1 1 auto;
@ -1052,6 +1056,8 @@ color: var(--dark);
border-right: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2); border-right: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);
color: white !important; color: white !important;
border: none !important; border: none !important;
width: 80%;
--background: var(--darkblue) !important;
} }
.buttonClassWhite { .buttonClassWhite {
@ -1123,7 +1129,7 @@ border:0px
--border-radius: 33px !important; --border-radius: 33px !important;
border-radius: 33px !important; border-radius: 33px !important;
--min-height: 1.6cm !important; --min-height: 1.6cm !important;
width: 315px; width: 315px !important;
} }
@ -1160,40 +1166,9 @@ border:0px
margin-top: 10px; margin-top: 10px;
} }
.checkOutOkBtn{
margin-left: 55px !important;
margin-right: 55px !important;
margin-top: 10px !important;
margin-bottom: 10px !important;
border-radius: 5px !important;
height: 32px !important;
min-height: 30px !important;
background: var(--lightblue) !important;
-webkit-box-flex: 1;
flex: 1 1 auto;
border-top: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);
border-right: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);
color: white !important;
border: none !important;
}
.checkOutCancelBtn{
margin-left: 55px !important;
margin-right: 55px !important;
margin-top: 10px !important;
margin-bottom: 10px !important;
border-radius: 5px !important;
height: 32px !important;
min-height: 30px !important;
background: var(--darkblue) !important;
-webkit-box-flex: 1;
flex: 1 1 auto;
border-top: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);
border-right: 0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);
color: white !important;
border: none !important;
}
.more-modal { .more-modal {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
@ -1246,13 +1221,32 @@ border:0px
.alert-button-inner.sc-ion-alert-md { .alert-button-inner.sc-ion-alert-md {
justify-content: center !important; justify-content: center !important;
} }
.replaceRoll-modal {
padding: 30% 1% !important;
--height: 15cm !important;
--width: 100% !important;
--border-radius: 0.4cm;
}
.header-md:after { .header-md:after {
height: 0px !important; height: 0px !important;
display: none !important; display: none !important;
} }
.header-toolbar-new { .header-toolbar-new {
--background: #22c6b3; --background: #22c6b3;
background: #22c6b3;
}
.boldText{
color: var(--dark) !important;
font-weight: bold;
font-size: 20px;
}
.boldP{
font-size: 20px;
} }
// .select-text{ // .select-text{
// --margin-left: -10px; // --margin-left: -10px;
@ -1418,11 +1412,11 @@ table.monthview-datetable th small {
border-radius: 20px !important; border-radius: 20px !important;
} }
.replaceRoll-modal { // .replaceRoll-modal {
padding: 30% 1% !important; // padding: 30% 1% !important;
--height: 15cm !important; // --height: 15cm !important;
--width: 100% !important; // --width: 100% !important;
--border-radius: 0.4cm; // --border-radius: 0.4cm;
} // }

@ -1,5 +1,7 @@
.colorBG{ .colorBG{
--background: #f0efef; --background: #f0efef !important;
background: #f0efef !important;
} }
.footerSearchBtn{ .footerSearchBtn{
padding: 50px !important; padding: 50px !important;
@ -202,7 +204,7 @@ ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
} }
.timeline .timeline-thumb.timeline-icon { .timeline .timeline-thumb.timeline-icon {
height: 70px; height: 67px;
// text-align: center; // text-align: center;
// color: white; // color: white;
// border: 5px solid #CBD0D3; // border: 5px solid #CBD0D3;
@ -438,11 +440,11 @@ left: 66px;
.rowBorder{ .rowBorder{
border-bottom: solid 0.03cm var(--grayBG); border-bottom: solid 0.02cm var(--grayBG);
} }
.colBorder{ .colBorder{
border-right: solid 0.03cm var(--grayBG); border-right: solid 0.02cm var(--grayBG);
} }
@ -539,6 +541,13 @@ left: 66px;
height: 80px; height: 80px;
border: #dedede solid 1px; border: #dedede solid 1px;
} }
.empImgeSub{
border-radius: 50%;
width: 85px;
height: 85px;
border: #dedede solid 1px;
}
ion-card{ ion-card{
color:black !important; color:black !important;
@ -547,6 +556,19 @@ left: 66px;
.line{ .line{
padding-bottom:87px; padding-bottom:87px;
} }
ion-segment-button ion-label {
max-width: 100px;
overflow: hidden;
padding: 10px;
font-size: 14px;
color: black !important;
}
.colItems ion-label {
color: black !important;
}
.approvalTitle{ .approvalTitle{
font-weight: bold; font-weight: bold;
font-size: 16px; font-size: 16px;

Loading…
Cancel
Save