fixed merging conflicts

mekawy-issues
umasoodch 6 years ago
commit 5538076b13

@ -0,0 +1,224 @@
SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS
Commands marked with * may be preceded by a number, _N.
Notes in parentheses indicate the behavior if _N is given.
A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K.
h H Display this help.
q :q Q :Q ZZ Exit.
---------------------------------------------------------------------------
MMOOVVIINNGG
e ^E j ^N CR * Forward one line (or _N lines).
y ^Y k ^K ^P * Backward one line (or _N lines).
f ^F ^V SPACE * Forward one window (or _N lines).
b ^B ESC-v * Backward one window (or _N lines).
z * Forward one window (and set window to _N).
w * Backward one window (and set window to _N).
ESC-SPACE * Forward one window, but don't stop at end-of-file.
d ^D * Forward one half-window (and set half-window to _N).
u ^U * Backward one half-window (and set half-window to _N).
ESC-) RightArrow * Right one half screen width (or _N positions).
ESC-( LeftArrow * Left one half screen width (or _N positions).
ESC-} ^RightArrow Right to last column displayed.
ESC-{ ^LeftArrow Left to first column.
F Forward forever; like "tail -f".
ESC-F Like F but stop when search pattern is found.
r ^R ^L Repaint screen.
R Repaint screen, discarding buffered input.
---------------------------------------------------
Default "window" is the screen height.
Default "half-window" is half of the screen height.
---------------------------------------------------------------------------
SSEEAARRCCHHIINNGG
/_p_a_t_t_e_r_n * Search forward for (_N-th) matching line.
?_p_a_t_t_e_r_n * Search backward for (_N-th) matching line.
n * Repeat previous search (for _N-th occurrence).
N * Repeat previous search in reverse direction.
ESC-n * Repeat previous search, spanning files.
ESC-N * Repeat previous search, reverse dir. & spanning files.
ESC-u Undo (toggle) search highlighting.
&_p_a_t_t_e_r_n * Display only matching lines
---------------------------------------------------
A search pattern may begin with one or more of:
^N or ! Search for NON-matching lines.
^E or * Search multiple files (pass thru END OF FILE).
^F or @ Start search at FIRST file (for /) or last file (for ?).
^K Highlight matches, but don't move (KEEP position).
^R Don't use REGULAR EXPRESSIONS.
---------------------------------------------------------------------------
JJUUMMPPIINNGG
g < ESC-< * Go to first line in file (or line _N).
G > ESC-> * Go to last line in file (or line _N).
p % * Go to beginning of file (or _N percent into file).
t * Go to the (_N-th) next tag.
T * Go to the (_N-th) previous tag.
{ ( [ * Find close bracket } ) ].
} ) ] * Find open bracket { ( [.
ESC-^F _<_c_1_> _<_c_2_> * Find close bracket _<_c_2_>.
ESC-^B _<_c_1_> _<_c_2_> * Find open bracket _<_c_1_>
---------------------------------------------------
Each "find close bracket" command goes forward to the close bracket
matching the (_N-th) open bracket in the top line.
Each "find open bracket" command goes backward to the open bracket
matching the (_N-th) close bracket in the bottom line.
m_<_l_e_t_t_e_r_> Mark the current top line with <letter>.
M_<_l_e_t_t_e_r_> Mark the current bottom line with <letter>.
'_<_l_e_t_t_e_r_> Go to a previously marked position.
'' Go to the previous position.
^X^X Same as '.
ESC-M_<_l_e_t_t_e_r_> Clear a mark.
---------------------------------------------------
A mark is any upper-case or lower-case letter.
Certain marks are predefined:
^ means beginning of the file
$ means end of the file
---------------------------------------------------------------------------
CCHHAANNGGIINNGG FFIILLEESS
:e [_f_i_l_e] Examine a new file.
^X^V Same as :e.
:n * Examine the (_N-th) next file from the command line.
:p * Examine the (_N-th) previous file from the command line.
:x * Examine the first (or _N-th) file from the command line.
:d Delete the current file from the command line list.
= ^G :f Print current file name.
---------------------------------------------------------------------------
MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS
-_<_f_l_a_g_> Toggle a command line option [see OPTIONS below].
--_<_n_a_m_e_> Toggle a command line option, by name.
__<_f_l_a_g_> Display the setting of a command line option.
___<_n_a_m_e_> Display the setting of an option, by name.
+_c_m_d Execute the less cmd each time a new file is examined.
!_c_o_m_m_a_n_d Execute the shell command with $SHELL.
|XX_c_o_m_m_a_n_d Pipe file between current pos & mark XX to shell command.
s _f_i_l_e Save input to a file.
v Edit the current file with $VISUAL or $EDITOR.
V Print version number of "less".
---------------------------------------------------------------------------
OOPPTTIIOONNSS
Most options may be changed either on the command line,
or from within less by using the - or -- command.
Options may be given in one of two forms: either a single
character preceded by a -, or a name preceded by --.
-? ........ --help
Display help (from command line).
-a ........ --search-skip-screen
Search skips current screen.
-A ........ --SEARCH-SKIP-SCREEN
Search starts just after target line.
-b [_N] .... --buffers=[_N]
Number of buffers.
-B ........ --auto-buffers
Don't automatically allocate buffers for pipes.
-c ........ --clear-screen
Repaint by clearing rather than scrolling.
-d ........ --dumb
Dumb terminal.
-D [_x_n_._n] . --color=_x_n_._n
Set screen colors. (MS-DOS only)
-e -E .... --quit-at-eof --QUIT-AT-EOF
Quit at end of file.
-f ........ --force
Force open non-regular files.
-F ........ --quit-if-one-screen
Quit if entire file fits on first screen.
-g ........ --hilite-search
Highlight only last match for searches.
-G ........ --HILITE-SEARCH
Don't highlight any matches for searches.
-h [_N] .... --max-back-scroll=[_N]
Backward scroll limit.
-i ........ --ignore-case
Ignore case in searches that do not contain uppercase.
-I ........ --IGNORE-CASE
Ignore case in all searches.
-j [_N] .... --jump-target=[_N]
Screen position of target lines.
-J ........ --status-column
Display a status column at left edge of screen.
-k [_f_i_l_e] . --lesskey-file=[_f_i_l_e]
Use a lesskey file.
-K ........ --quit-on-intr
Exit less in response to ctrl-C.
-L ........ --no-lessopen
Ignore the LESSOPEN environment variable.
-m -M .... --long-prompt --LONG-PROMPT
Set prompt style.
-n -N .... --line-numbers --LINE-NUMBERS
Don't use line numbers.
-o [_f_i_l_e] . --log-file=[_f_i_l_e]
Copy to log file (standard input only).
-O [_f_i_l_e] . --LOG-FILE=[_f_i_l_e]
Copy to log file (unconditionally overwrite).
-p [_p_a_t_t_e_r_n] --pattern=[_p_a_t_t_e_r_n]
Start at pattern (from command line).
-P [_p_r_o_m_p_t] --prompt=[_p_r_o_m_p_t]
Define new prompt.
-q -Q .... --quiet --QUIET --silent --SILENT
Quiet the terminal bell.
-r -R .... --raw-control-chars --RAW-CONTROL-CHARS
Output "raw" control characters.
-s ........ --squeeze-blank-lines
Squeeze multiple blank lines.
-S ........ --chop-long-lines
Chop (truncate) long lines rather than wrapping.
-t [_t_a_g] .. --tag=[_t_a_g]
Find a tag.
-T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e]
Use an alternate tags file.
-u -U .... --underline-special --UNDERLINE-SPECIAL
Change handling of backspaces.
-V ........ --version
Display the version number of "less".
-w ........ --hilite-unread
Highlight first new line after forward-screen.
-W ........ --HILITE-UNREAD
Highlight first new line after any forward movement.
-x [_N[,...]] --tabs=[_N[,...]]
Set tab stops.
-X ........ --no-init
Don't use termcap init/deinit strings.
-y [_N] .... --max-forw-scroll=[_N]
Forward scroll limit.
-z [_N] .... --window=[_N]
Set size of window.
-" [_c[_c]] . --quotes=[_c[_c]]
Set shell quote characters.
-~ ........ --tilde
Don't display tildes after end of file.
-# [_N] .... --shift=[_N]
Horizontal scroll amount (0 = one half screen width)
--follow-name
The F command changes files if the input file is renamed.
--mouse
Enable mouse input.
--no-keypad
Don't send termcap keypad init/deinit strings.
--no-histdups
Remove duplicates from command history.
--rscroll=C
Set the character used to mark truncated lines.
--save-marks
Retain marks across invocations of less.
--use-backslash
Subsequent options use backslash as escape char.
--wheel-lines=N
Each click of the mouse wheel moves N lines.
---------------------------------------------------------------------------

@ -88,9 +88,9 @@ button.item-button.button.button-md.button-clear.button-clear-md {
// padding-left: 10px !important;
border: solid var(--gray) 1px;
border-radius: 21px;
padding-left: 145px !important;
// padding-left: 145px !important;
margin-left: 86px;
padding-right: 129px;
// padding-right: 129px;
margin-right: -143px;
}
// {padding-left: unset;

@ -61,10 +61,7 @@
<div class="result-text-container">
<!-- <h2>{{totalnumber}}</h2> -->
<!-- <h2>{{accrualNet + accrualUsed + accrualYearly}}</h2> -->
<!-- <span>{{ts.trPK('absenceList','totalNumber')}}</span> -->
</div>
@ -76,7 +73,7 @@
<div [ngClass]=" direction == 'ltr' ? 'div-green' : 'div-green-ar'">
<ion-col>
<ion-row>
<label class="green-label">{{ts.trPK('absenceList','accrualNet')}}</label>
<label class="green-label">{{ts.trPK('absenceList','currentBalance')}}</label>
</ion-row>
<ion-row>
<label class="green-amount">{{accrualNet}}</label>
@ -86,7 +83,7 @@
<div [ngClass]=" direction == 'ltr' ? 'div-red' : 'div-red-ar'">
<ion-col>
<ion-row>
<label class="red-label">{{ts.trPK('absenceList','accrualUsed')}}</label>
<label class="red-label">{{ts.trPK('absenceList','usedBalance')}}</label>
</ion-row>
<ion-row>
@ -97,7 +94,7 @@
<div [ngClass]=" direction == 'ltr' ? 'div-orng' : 'div-orng-ar'">
<ion-col>
<ion-row>
<label class="orng-label">{{ts.trPK('absenceList','accrualYearly')}}</label>
<label class="orng-label">{{ts.trPK('absenceList','annualBalance')}}</label>
</ion-row>
<ion-row>

@ -213,6 +213,7 @@ margin-top: -13px;
margin-top: 0px;
}
.red-label{
font-size: 12px;
margin-top: -13px;
@ -224,16 +225,20 @@ margin-top: -13px;
margin-top: 0px;
}
.orng-label{
font-size: 12px;
margin-top: -13px;
}
.orng-amount{
font-size: 15px;
font-family: WorkSans-Bold;
margin-top: 0px;
}
.contentEit:before {
position: absolute;
content: "";
@ -247,17 +252,18 @@ margin-top: -13px;
.div-green{
position: relative;
left: 82%;
bottom: 128px;
bottom: 141px;
color: black;
background-color: #1FA269;
width: 11%;
height: 6px;
}
.div-green-ar{
.div-orng-ar{
position: relative;
bottom: 59px;
color: black;
background-color: #1FA269;
background-color: #DDB017;
// background-color: #1FA269;
width: 11%;
height: 6px;
right: 9px;
@ -270,12 +276,12 @@ margin-top: -13px;
background-color: #CB3232;
width: 11%;
height: 6px;
right: 102px;
right: 92px;
}
.div-red{
position: relative;
left: 59%;
bottom: 131px;
bottom: 146px;
color: black;
background-color: #CB3232;
// background-color: #094875;
@ -293,12 +299,12 @@ margin-top: -13px;
width: 11%;
height: 6px;
}
.div-orng-ar{
.div-green-ar{
position: relative;
bottom: 139px;
bottom: 124px;
color: black;
// background-color: #CB3232;
background-color: #DDB017;
// background-color: #DDB017;
background-color: #1FA269;
width: 11%;
height: 6px;
right: 10px;

@ -251,6 +251,7 @@ createAbsence() {
});
}
}
handleAccrualResult(result) {
if (this.common.validResponse(result)) {
this.balance = result.GetAccrualBalancesList;

@ -1051,7 +1051,7 @@ export class SubmitAbsenceComponent implements OnInit {
this.absenceDffresponse[i].DISPLAY_FLAG != "N"
) {
//date
// elemVal = this.common.formatDate(elemVal);
elemVal = this.common.formatDate(elemVal);
} else if (
this.absenceDffresponse[i].FORMAT_TYPE == "Y" &&
this.absenceDffresponse[i].DISPLAY_FLAG != "N"

@ -12,7 +12,7 @@
<ion-label>{{ts.trPK('accrualBalances','selectDate')}}</ion-label>
<ion-datetime [(ngModel)]="Sdate" min="1900" max="2100" displayFormat="MMM/DD/YYYY " placeholder="MM/DD/YYYY"
(ionChange)="getAccrualBalance()"></ion-datetime>
</ion-item>
<ul>

@ -9,6 +9,7 @@ import { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/mo
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
Sdate: any;
emp_no: any;
@ -57,4 +58,5 @@ export class HomeComponent implements OnInit {
this.balance=result.GetAccrualBalancesList;
}
}
}

@ -61,9 +61,10 @@
<div class="" style="text-align:center">
<img src="{{companyUrl}}" class="CompanyImg logoImg">
<p class="companyTxt">{{companyDesc}}</p>
<!-- <p class="companyTxt">{{companyDesc}}</p> -->
</div>
<div class="menuFooter">
<div> <img src="../assets/imgs/CS.png" class="CompanyImg"></div>
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-content>
@ -112,25 +113,53 @@
</ion-label>
</ion-item>
<ion-item (click)="openChangePassword()">
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 25px !important;" src="../assets/imgs/lock_icon.png" item-left>
</ion-thumbnail>
<ion-label class="changepassword" >
{{ts.trPK('login','changepassword')}}
<ion-badge class="end-badge main-badge" slot="end" color="danger">{{notBadge}}</ion-badge>
</ion-label>
</ion-item>
</ion-list>
<ion-thumbnail slot="start" class="menu-thumb">
<img style= "height: 25px !important;" src="../assets/imgs/lock_icon.png" item-left>
</ion-thumbnail>
<ion-label class="changepassword" >
{{ts.trPK('login','changepassword')}}
<div class="" style="text-align:center">
<img src="{{companyUrl}}" class="CompanyImg logoImg">
<p class="companyTxt">{{companyDesc}}</p>
</div>
<div class="menuFooter">
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-content>
</ion-menu>
<ion-badge [ngClass]=" direction === 'rtl' ? 'end-badge' : 'start-badge'" slot="end" color="danger" class="main-badge">{{notBadge}}</ion-badge>
</ion-label>
<!-- <button class="menu-item" ion-item menuClose ion-item (click)="goToWorkListPage()" >
</button> -->
</ion-item>
<!-- <ion-item (click)="profile()">
<ion-thumbnail slot="start" class="menu-thumb">
<img width="30" src="../assets/imgs/profile_icon.png" item-left>
</ion-thumbnail>
<ion-label>
{{ts.trPK('userProfile','title')}}
</ion-label>
</ion-item> -->
<!-- <ion-item (click)="logout();">
<ion-thumbnail slot="start" class="menu-thumb">
<img width="30" src="../assets/imgs/signout.png" item-left>
</ion-thumbnail>
<ion-label>
{{ts.trPK('home','logout')}}
</ion-label>
</ion-item> -->
</ion-list>
<div class="" style="text-align:center">
<img src="{{companyUrl}}" class="CompanyImg logoImg">
<!-- <p class="companyTxt">{{companyDesc}}</p> -->
</div>
<div class="menuFooter">
<div> <img src="../assets/imgs/CS.png" class="CompanyImg"></div>
<p class="companyTxt">{{companyDesc}}</p>
</div>
</ion-content>
</ion-menu>
<ion-router-outlet main></ion-router-outlet>
</ion-split-pane>

@ -7,12 +7,12 @@
.alert-radio-label.sc-ion-alert-md,
.alert-radio-label.sc-ion-alert-ios {
white-space: normal;
white-space: normal;
}
.alert-tappable.sc-ion-alert-md,
.alert-tappable.sc-ion-alert-ios {
height: 50px;
height: 70px;
}
.main-badge{
position: absolute;

@ -34,7 +34,9 @@
<!-- <type-writer *ngIf="!onlySMSBox" [text]="'login, verify-fingerprint' | translate" class="description"
color="primary" fontSize="0.55cm" lineHeight="1cm" fontSize="0.55cm"></type-writer>
-->
<div *ngIf="!onlySMSBox"><p>{{ts.trPK('login','verify-fingerprint')}}</p></div>
<div *ngIf="!onlySMSBox && FFloginType == 2"><p>{{ts.trPK('login','verify-fingerprint')}}</p></div>
<div *ngIf="!onlySMSBox && FFloginType == 3"><p>{{ts.trPK('login','verify-faceId')}}</p></div>
</ion-col>

@ -73,6 +73,7 @@ export class ConfirmLoginComponent implements OnInit {
empname: string;
lastLoginDate: string;
user_name: string;
FFloginType: any;
constructor(
@ -515,8 +516,8 @@ export class ConfirmLoginComponent implements OnInit {
loginWithFingurePrint(el: any) {
if (!el.disabled) {
this.FFloginType=el.value;
this.startBiometricLoginIfAvailable();
@ -527,7 +528,7 @@ export class ConfirmLoginComponent implements OnInit {
faceReconization(el: any) {
if (!el.disabled) {
this.FFloginType=el.value;
this.startBiometricLoginIfAvailable();
}
@ -700,7 +701,6 @@ export class ConfirmLoginComponent implements OnInit {
}
}else {
this.onlySMSBox = false;
this.button();

@ -140,8 +140,8 @@ export class LoginComponent implements OnInit, OnDestroy {
const remember = localStorage.getItem('remember'); // ****//
this.empname = localStorage.getItem('emp-name');
this.logintype = localStorage.getItem('login-type');
// tslint:disable-next-line: triple-equals
if (remember == 'true') { this.remeberMe = true; } else { this.remeberMe = false; }
// tslint:disable-next-line: triple-equals
if (remember == 'true') { this.remeberMe = true ; } else { this.remeberMe = false; }
}
ngOnDestroy(): void {
@ -353,6 +353,11 @@ export class LoginComponent implements OnInit, OnDestroy {
}
login() {
let anotherUser = this.sharedData.getSharedData('anotherUser');
if(anotherUser){
this.username = '';
this.password = '';
}
console.log('login emit');
console.log('login');
// this.checkUserAuthentication();

@ -270,14 +270,14 @@ export class AddEitComponent implements OnInit {
const elem = document.getElementById(
feildsList[i].APPLICATION_COLUMN_NAME
);
elem.addEventListener("click", e => {
if (feildsList[i].MOBILE_ENABLED != "Y") return false;
this.showDateTimePicker(
feildsList[i].APPLICATION_COLUMN_NAME,
feildsList[i].MAXIMUM_SIZE
);
e.stopImmediatePropagation();
});
// elem.addEventListener("click", e => {
// if (feildsList[i].MOBILE_ENABLED != "Y") return false;
// this.showDateTimePicker(
// feildsList[i].APPLICATION_COLUMN_NAME,
// feildsList[i].MAXIMUM_SIZE
// );
// e.stopImmediatePropagation();
// });
// else if(feildsList[i].DEFAULT_TYPE=="D"){
// this.datetimeInput = new DateTimeInput(feildsList[i].SEGMENT_PROMPT,feildsList[i].APPLICATION_COLUMN_NAME,"currentDateTime",containerId,feildsList[i].MOBILE_ENABLED);
// }else if(feildsList[i].DEFAULT_TYPE=="P"||feildsList[i].DEFAULT_TYPE=="S"){
@ -521,7 +521,7 @@ export class AddEitComponent implements OnInit {
select.value = select.dataset.hiddenval;
//select.dataset.hiddenval="";
} else {
select.value = DV.P_VALUE_COLUMN_NAME;
select.value = DV.P_ID_COLUMN_NAME;
}
select.disabled = false;
}

@ -3,8 +3,6 @@
[headerText]="headerTitle">
</app-generic-header>
<ion-content>
<div class="">
<!-- class="colorBG" -->
@ -16,6 +14,17 @@
<div style="color: black;">
<div class="result-graph">
<div >
<ion-datetime [(ngModel)]="Sdate" class="datetime" displayFormat="DD MMMM YYYY" placeholder="DD MMMM YYYY"
(ionChange)="getAccrualBalance()"></ion-datetime>
<ion-icon class="iconCalendar" ios="ios-calendar" md="md-calendar"></ion-icon>
</div>
<div style=" border-bottom: 1px solid #a7a4a4; margin-bottom: 12px;
margin-top: -10px; margin-right: -9px;"></div>
<!-- <div class="result-text-container">
</div> -->
<p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>

@ -4,6 +4,26 @@
min-height: 45px;
min-width: 200px;
}
.datetime{
// text-align: center;
// font-family: WorkSans-Bold;
// margin-left: 111px;
text-align: center;
font-family: WorkSans-Bold;
margin-left: 47px;
margin-top: -19px;
}
.iconCalendar{
// margin-left: -241px;
// margin-top: 5px;
margin-left: 30px !important;
width: 22% !important;
height: 26px !important;
margin-top: -69px !important;
margin-bottom: 20px !important;
}
h4 {
font-size: 2.2rem;
text-align: center;

@ -9,6 +9,9 @@ import { EitService } from '../services/eit.service';
import { EIT_ACTION } from '../models/submit.eit.action';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
import { AddEitResponse } from '../models/add.eit.response';
import { AccrualService } from 'src/app/accrual-balances/services/accrual.service';
import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service';
import { AuthenticatedUser } from 'src/app/hmg-common/services/authentication/models/authenticated-user';
@Component({
selector: 'app-eit-list',
@ -16,7 +19,10 @@ import { AddEitResponse } from '../models/add.eit.response';
styleUrls: ['./eit-list.component.scss'],
})
export class EitListComponent implements OnInit {
Sdate: any;
emp_no: any;
balance:any;
//////////////up
P_PAGE_NUM: number;
P_PAGE_LIMIT: number;
IsReachEnd = false;
@ -56,7 +62,8 @@ export class EitListComponent implements OnInit {
// gaugeLabel = "";
// tslint:disable-next-line: max-line-length
constructor(private cs: CommonService, private EITService: EitService, public ts: TranslatorService, private modalCtrl: ModalController) {
constructor(private cs: CommonService, private EITService: EitService, public ts: TranslatorService,
private modalCtrl: ModalController, public accrualService: AccrualService, public authService:AuthenticationService,) {
this.direction = TranslatorService.getCurrentLanguageName();
this.selMenu = this.cs.sharedService.getSharedData(MenuResponse.SHARED_DATA, false);
this.selEmp = this.cs.sharedService.getSharedData(MenuResponse.SHARED_SEL_EMP, false);
@ -72,6 +79,10 @@ export class EitListComponent implements OnInit {
}
ngOnInit() {
/////////////
this.Sdate = new Date().toISOString();
this.getUserDetails();
////////////////up
this.getEITTransactions();
this.accrualBalancesList = this.cs.sharedService.getSharedData('tickitsbalance', false);
@ -96,8 +107,44 @@ export class EitListComponent implements OnInit {
};
}
getUserDetails(){
this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => {
if (user) {
this.emp_no=user.EMPLOYEE_NUMBER;
}
});
}
public getAccrualBalance() {
if (this.Sdate) {
let today = new Date(this.Sdate);
let day = today.getDate();
let month = today.getMonth() + 1;
let year = today.getFullYear();
let todayDate = month + '/' + day + '/' + year;
let effectiveDate = todayDate;
const request = {
P_SELECTED_EMPLOYEE_NUMBER: this.emp_no,
P_EFFECTIVE_DATE: effectiveDate
};
this.accrualService
.getAccrualBalances(request)
.subscribe((result: any) => {
this.handleAccrualResult(result);
});
}
}
handleAccrualResult(result) {
if (this.cs.validResponse(result)) {
this.balance=result.GetAccrualBalancesList;
this.accrualNetAdult = this.balance[1].ACCRUAL_NET_ENTITLEMENT;
this.accrualUNetChild = this.balance[2].ACCRUAL_NET_ENTITLEMENT;
this. accrualNetInfants = this.balance[3].ACCRUAL_NET_ENTITLEMENT;
}
}
///////////////////////////////////
getEITTransactions() {
console.log('jkfdjkdfsffjhfsdahffg');
this.IsReachEnd = false;
this.EITTransactionsListObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
this.EITTransactionsListObj.P_PAGE_NUM = this.P_PAGE_NUM;
@ -520,5 +567,42 @@ export class EitListComponent implements OnInit {
this.removeItems(item.Collection_Transaction[0].TRANSACTION_NUMBER);
}
//////////////////////////
// getUserDetails(){
// this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => {
// if (user) {
// this.emp_no=user.EMPLOYEE_NUMBER;
// }
// });
// }
// public getAccrualBalance() {
// if (this.Sdate) {
// let today = new Date(this.Sdate);
// let day = today.getDate();
// let month = today.getMonth() + 1;
// let year = today.getFullYear();
// let todayDate = month + '/' + day + '/' + year;
// let effectiveDate = todayDate;
// const request = {
// P_SELECTED_EMPLOYEE_NUMBER: this.emp_no,
// P_EFFECTIVE_DATE: effectiveDate
// };
// this.accrualService
// .getAccrualBalances(request)
// .subscribe((result: any) => {
// this.handleAccrualResult(result);
// });
// }
// }
// handleAccrualResult(result) {
// if (this.cs.validResponse(result)) {
// this.balance=result.GetAccrualBalancesList;
// }
// }
}
////////////////////////////////up

@ -2,7 +2,6 @@
<div class="circle pulse"></div>
<div class="circle">
<ion-fab class="fab-i ">
<ion-fab-button [ngClass]="type === 'add' ? 'addnon' : 'cbookApointmentBtn' " (click)="onClick()" >
<!-- <img style="width: 39%; margin-top: -29%;" src="assets/icon/booking.png" /> -->
<div *ngIf="type != 'add' ">
@ -14,7 +13,6 @@
<!-- <ion-icon name="add-outline"></ion-icon> -->
</div>
</ion-fab-button>
</ion-fab>
</div>
</div>

@ -1,4 +1,4 @@
<div feedback class="custom-button">
<div feedback class="custom-button" *ngIf='show'>
<div class="iconBox">
<img [src]="icon" class="icon">
</div>

@ -16,6 +16,7 @@ export class StatsButtonComponent implements OnInit {
@Output() trigger = new EventEmitter();
@Input() focusicon: string;
@Input() disabled = false;
@Input() show: boolean ;
public direction: string;
public style: any;
constructor(

@ -15,6 +15,7 @@ import { ConfirmLoginComponent } from 'src/app/authentication/confirm-login/conf
import * as moment from 'moment'
import { ButtonSettings } from '../button/models/button-settingsl';
import { Events } from '@ionic/angular';
import { SharedDataService } from '../../services/shared-data-service/shared-data.service';
@Component({
selector: "welcome-login",
@ -76,7 +77,8 @@ export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
public ts: TranslatorService,
public cs: CommonService,
public authservice: AuthenticationService,
public events: Events
public events: Events,
public sharedData: SharedDataService,
) { }
ngOnInit() {
@ -107,7 +109,9 @@ export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
// 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.user.LoginType)
this.logintype = this.user.LoginType;
console.log(" this.lastLoginTime" + this.lastLoginTime);
console.log(" this.lastLoginDate" + this.lastLoginDate);
@ -209,6 +213,7 @@ export class WelcomeComponent implements OnInit, AfterViewInit, OnDestroy {
login() {
this.sharedData.setSharedData(true, "anotherUser")
this.onLogin.emit();
}
loginwithuser() {

@ -14,6 +14,7 @@
[title]="button.title"
[statsValue]="button.statsValue"
[icon]="button.icon"
[show]="button.show"
(click)="openStatsButton(button.link)">
</app-stats-button>
</ion-slide>
@ -21,7 +22,6 @@
</ion-row>
<ion-row *ngFor="let menuItem of menuEntries; let i=index">
<ion-row class="attendance-module" *ngIf="i == 1">
<ion-col [size]="8">
<h3>{{'home,monthly-attendance' | translate}}</h3>
@ -46,7 +46,7 @@
[icon]="subMenu.ICON">
</app-services-button>
</ion-slide>
<ion-slide *ngIf="i == 0">
<ion-slide *ngIf="i == 0 && showVcationRule">
<app-services-button
(click)="Vacation_Rule()"
[title]="vacationRuleTitle"

@ -34,6 +34,7 @@ import { GetSubordinatesLeavesResponse } from '../hmg-common/services/dashbored/
import { AccrualService } from '../accrual-balances/services/accrual.service';
import { TimeCardService } from '../time-card/service/time-card.service';
import { WorklistMainService } from '../notification/service/work-list.main.service';
import { isThisISOWeek } from 'date-fns';
@Component({
selector: 'app-home',
@ -57,12 +58,15 @@ export class HomePage implements OnInit {
ticketRequestObject: any;
leaveRequestObject: any;
missingSwipeRequestObject: any;
public isShow = false;
public showVcationRule = false;
public statsButtons = [
{
title: this.ts.trPK('home','worklist'),
statsValue: 0,
icon: 'assets/icon/new-design/work_list.png',
link: '1'
link: '1',
show: true
},
// {
// title: 'Pending Request',
@ -74,19 +78,22 @@ export class HomePage implements OnInit {
title: this.ts.trPK('home','missing-swipes'),
statsValue: 0,
icon: 'assets/icon/new-design/missing_swipe.png',
link: '2'
link: '2',
show:true
},
{
title: this.ts.trPK('home','leave-balance'),
statsValue: 0,
icon: 'assets/icon/new-design/leave_balance.png',
link: '3'
link: '3',
show: this.isShow,
},
{
title: this.ts.trPK('absenceList','tickets-balance'),
statsValue: 0,
icon: 'assets/icon/new-design/ticket_balance.png',
link: '4'
link: '4',
show: this.isShow
}
];
@ -256,11 +263,22 @@ export class HomePage implements OnInit {
setServicesPrivilage() {
for (const servicePrivilage of AuthenticationService.servicePrivilage) {
if (servicePrivilage.Previlege === false) {
document
.getElementById(servicePrivilage.ServiceName)
.setAttribute('disabled', 'disabled');
document.getElementById(servicePrivilage.ServiceName).style.filter =
'grayscale(1)';
if(servicePrivilage.ServiceName === 'accrualBalance'){
this.statsButtons[2].show = false;
this.statsButtons[3].show = false;
}
if(servicePrivilage.ServiceName === 'vacationRule'){
this.showVcationRule = false;
}
// document
// .getElementById(servicePrivilage.ServiceName)
// .setAttribute('disabled', 'disabled');
// document.getElementById(servicePrivilage.ServiceName).style.filter =
// 'grayscale(1)';
}else{
this.statsButtons[2].show = true;
this.statsButtons[3].show = true;
this.showVcationRule = true;
}
}
}

@ -87,7 +87,7 @@ button.item-button.button.button-md.button-clear.button-clear-md {
// padding-left: 10px !important;
border: solid var(--gray) 1px;
border-radius: 21px;
padding-left: 145px !important;
// padding-left: 145px !important;
margin-left: 86px;
padding-right: 129px;
margin-right: -143px;

@ -42,16 +42,21 @@ export class WorkListReplacementRollComponent implements OnInit {
searchKeyEnter: boolean = false;
messageSuccess: boolean =false;
public direction: string;
P_RESPOND_ATTRIBUTES_TBL: any[];
constructor(public worklistService: WorklistService, private cs: CommonService, private ts: TranslatorService, public workListMainService: WorklistMainService, public modalCtrl: ModalController) {
this.P_PAGE_NUM = 1;
this.P_PAGE_LIMIT = 50;
this.getPassActionMode = this.cs.sharedService.getSharedData('passActionMode', false);
console.log(this.getPassActionMode);
this.getPassNotificationDetails = this.cs.sharedService.getSharedData('passNotificationInfo', false);
this.getpassResAttr = this.cs.sharedService.getSharedData('passResAttr', false);
console.log(this.getpassResAttr);
this.pQuestion = this.cs.sharedService.getSharedData('pQuestion', false);
if (this.getPassActionMode == "ANSWER_INFO") {
this.isAnswer = true;
}
this.WorkListReplacmentEmployeeObj.P_PAGE_NUM = this.P_PAGE_NUM;
this.WorkListReplacmentEmployeeObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
@ -210,17 +215,42 @@ export class WorkListReplacementRollComponent implements OnInit {
console.log("selEmp "+ this.selEmp.USER_NAME);
if (this.selectedUserInf && this.selectedUserInf.USER_NAME) {
console.log("userInfo "+this.selectedUserInf.USER_NAME);
if (this.userNote) {
if(this.getPassActionMode == "APPROVE_AND_FORWARD" || this.getPassActionMode == "FORWARD"){
let index_FORWARD = this.getpassResAttr.findIndex(x => x.ATTRIBUTE_NAME === "FORWARD_TO_USERNAME_RESPONSE");
this.getpassResAttr[index_FORWARD].ATTRIBUTE_TEXT_VALUE = this.selectedUserInf.USER_NAME;
// this.userNote;
let index_Note = this.getpassResAttr.findIndex(x => x.ATTRIBUTE_NAME === "NOTE");
this.getpassResAttr[index_Note].ATTRIBUTE_TEXT_VALUE = this.userNote;
this.P_RESPOND_ATTRIBUTES_TBL= this.getpassResAttr;
console.log(this.P_RESPOND_ATTRIBUTES_TBL);
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = this.selectedUserInf.USER_NAME;
this.WorkListActionObj.P_ACTION_MODE = this.getPassActionMode;
this.WorkListActionObj.P_COMMENTS =""// response Attr
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
}else{
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = this.selectedUserInf.USER_NAME;
this.WorkListActionObj.P_ACTION_MODE = this.getPassActionMode;
this.WorkListActionObj.P_COMMENTS = this.userNote;// response Attr
// this.modalCtrl.dismiss();
}
this.workListMainService.actionButton(this.WorkListActionObj).
subscribe((result: any) => {
this.handleApplayActionResult(result);
});
} else {
let msg: string = this.ts.trPK("replacementRoll", "enterNote");
this.cs.showErrorMessageDialog(() => {
@ -237,12 +267,13 @@ export class WorkListReplacementRollComponent implements OnInit {
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = null;
this.WorkListActionObj.P_ACTION_MODE = this.getPassActionMode;
this.WorkListActionObj.P_COMMENTS = this.userNote;// response Attr
// here must send response attr
// this.modalCtrl.dismiss();
this.workListMainService.actionButton(this.WorkListActionObj).
subscribe((result: any) => {
this.handleApplayActionResult(result);
});
// this.workListMainService.actionButton(this.WorkListActionObj).
// subscribe((result: any) => {
// this.handleApplayActionResult(result);
// });
} else {
let msg: string = this.ts.trPK("replacementRoll", "enterNote");
this.cs.showErrorMessageDialog(() => {
@ -275,7 +306,7 @@ export class WorkListReplacementRollComponent implements OnInit {
});
}, 5000);
this.cs.openNotificationPage();
}
} // not valid it

@ -141,6 +141,7 @@ export class WorkListRfcComponent implements OnInit {
});
}, 5000);
this.cs.openNotificationPage();
}
} // valid it

@ -185,24 +185,7 @@
</ion-card-content>
<ion-card-content>
<div>
<div id="notificationDynamicFields1">
</div>
</div>
<!-- <ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem">
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
<ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
[(ngModel)]="actionType" required>
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
</ion-select>
</ion-item> -->
</ion-card-content>
</ion-card>
</ng-container>
<!-- </ion-slide> -->
@ -509,8 +492,8 @@
<!-- [ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Rejected','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}" -->
<ion-label
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submite' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Reject','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Reject' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class=""> {{actionHistory.ACTION}}</ion-label>
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION_CODE === 'SUBMIT' ,'bg-orange-txt' : actionHistory.ACTION_CODE === 'PENDING' ,'bg-red-txt' : actionHistory.ACTION_CODE === 'REJECT','bg-green-txt' : actionHistory.ACTION_CODE != 'PENDING' && actionHistory.ACTION_CODE != 'REJECT' && actionHistory.ACTION_CODE != 'SUBMIT'}"
class=""> {{actionHistory.ACTION}}</ion-label>
<ion-label *ngIf="actionHistory.NOTIFICATION_DATE != ''" class="dateActionHistory">
@ -530,14 +513,15 @@
</ng-container>
<!-- <ion-slide> -->
<ng-container *ngIf="activeSegment === 'attach'">
<ion-card class="cardContent">
<ion-card-content>
<div class="noDataDiv" [hidden]="attachmentRes && attachmentRes.length > 0">
<p>{{ 'general, notAttch' | translate}}</p>
</div>
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
<ion-grid>
<ion-item class="itemAttch" *ngFor="let attachList of attachmentRes">
<ion-item class="itemAttch" *ngFor="let attachList of attachmentRes ;let i=index;">
<!-- <div *ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
</div>
@ -552,8 +536,8 @@
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/img.png">
</div> -->
<ion-label>
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
<ion-label style="color: black !important">
{{i+1 }}. {{attachList.FILE_NAME}} </ion-label>
<button float-end class="attachImgBtn"
(click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
@ -566,19 +550,20 @@
</div>
</ion-card-content>
</ion-card>
</ng-container>
<!-- </ion-slide>
</ion-slides> -->
<!-- <div id="notificationDynamicFields">
</div> -->
<ion-row>
<ion-col col-12>
<div id="notificationDynamicFields">
<div id="notificationDynamicFieldsMR">
</div>
</ion-col>
</ion-row>
@ -590,19 +575,14 @@
<ion-icon class="succssfullIcon" name="checkmark"></ion-icon>
<!--filled-->
</ion-col>
<ion-col size="12"> <div style="font-size: 30px !important"> Transaction Successful </div> </ion-col>
<ion-col size="12"> <div style="font-size: 30px !important"> {{'worklistMain, Tran_Succ' | translate}} </div> </ion-col>
</div>
</ion-content>
<ion-footer *ngIf="!messageSuccess" class="footerSearchBtn">
<!-- <ion-row>
<ion-col col-12>
<div id="notificationDynamicFields">
</div>
</ion-col>
</ion-row> -->
<!-- <ion-row>
<ion-col col-2>

@ -33,6 +33,8 @@ import { WorkListReplacementRollComponent } from '../work-list-replacement-roll/
import { WorkListRfcComponent } from '../work-list-rfc/work-list-rfc.component';
import { MOItemHistoryRes } from '../models/MOItemHistoryRes';
import { MOItemHistoryReq } from '../models/MOItemHistoryReq';
import { GetOpenNotificationsResponse } from 'src/app/hmg-common/services/dashbored/models/GetOpenNotificationsResponse';
import { DashboredService } from 'src/app/hmg-common/services/dashbored/dashbored.service';
@Component({
selector: 'app-worklist-main-mr',
@ -105,9 +107,12 @@ export class WorklistMainMRComponent implements OnInit {
moreDisabled: boolean = true;
direction: string;
defaultSegment = '';
public isPostNoLoad = true;
public worklistNotifications: any;
public totalRequestCount = 0;
constructor(
public common: CommonService,
public ts: TranslatorService,
public worklistMainService: WorklistMainService,
@ -116,7 +121,8 @@ export class WorklistMainMRComponent implements OnInit {
public events: Events,
public worklistAttachService: WorklistAttachService,
private modalCtrl: ModalController,
public worklistService: WorklistService
public worklistService: WorklistService,
public dashboredService: DashboredService,
) {
this.direction = TranslatorService.getCurrentLanguageName()
//this.getPassNotificationDetails = this.common.sharedService.getSharedData('passNotificationInfo');
@ -142,7 +148,7 @@ export class WorklistMainMRComponent implements OnInit {
intializeNotificationDetail() {
if (this.messageSuccess) {
document.getElementById('notificationDynamicFields').innerHTML = '';
document.getElementById('notificationDynamicFieldsMR').innerHTML = '';
}
console.log('intializeNotificationDetail');
this.getPassNotificationDetails = this.common.sharedService.getSharedData(
@ -307,7 +313,7 @@ export class WorklistMainMRComponent implements OnInit {
setTimeout(() => {
this.messageSuccess = false;
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}, 5000);
@ -315,26 +321,63 @@ export class WorklistMainMRComponent implements OnInit {
} // valid it
}
// public nextNotfification() {
// //let itemExist = false;
// let itemNo = this.getPassNotificationDetails.ROW_NUM;
// itemNo += 1;
// if (itemNo > this.notificationArray.length) {
// this.common.openNotificationPage();
// } else {
// for (let i = 0; i < this.notificationArray.length; i++) {
// if (this.notificationArray[i].ROW_NUM == itemNo) {
// this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// // itemExist = true;
// this.intializeNotificationDetail();
// // this.common.openNotificationPage();
// break;
// }
// }
// // if(itemExist==false){
// // this.nextNotfification();
// // }
// }
// }
public nextNotfification() {
//let itemExist = false;
if( document.getElementById("notificationDynamicFieldsMR") != null){
document.getElementById("notificationDynamicFieldsMR").innerHTML = "";
}
let itemNo = this.getPassNotificationDetails.ROW_NUM;
itemNo += 1;
if (itemNo > this.notificationArray.length) {
this.common.openNotificationPage();
} else {
for (let i = 0; i < this.notificationArray.length; i++) {
if (this.notificationArray[i].ROW_NUM == itemNo) {
this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// itemExist = true;
this.intializeNotificationDetail();
// this.common.openNotificationPage();
break;
}
console.log(itemNo);
let index = this.notificationArray.findIndex(x => x.ROW_NUM === itemNo);
console.log(index);
console.log(this.notificationArray);
index += 1;
if (index < this.notificationArray.length) {
this.common.sharedService.setSharedData(this.notificationArray[index], HomeComponent.NOTIFICATION_DATA);
if(this.notificationArray[index].REQUEST_TYPE == "PO" ){
this.common.openWorklistMainPOPage();
}else
if(this.notificationArray[index].REQUEST_TYPE == "PR" ){
this.common.openWorklistMainPRPage();
}
else
if(this.notificationArray[index].REQUEST_TYPE == "MR" ){
this.intializeNotificationDetail();
}else{
this.common.openWorklistMainPage();
}
// if(itemExist==false){
// this.nextNotfification();
// }
}
else{
this.common.openNotificationPage();
}
}
@ -567,6 +610,8 @@ export class WorklistMainMRComponent implements OnInit {
}
getNotificationResAttr(notificationButtonsObj) {
console.log("getNotificationResAttr");
this.worklistMainService
.notificationResponseAttr(notificationButtonsObj)
.subscribe((result: NotificatonButtonResponse) => {
@ -601,10 +646,12 @@ export class WorklistMainMRComponent implements OnInit {
} // End handleWorkListButtonsResult
notificationDynamicFields(notificationAttr) {
const containerId = 'notificationDynamicFields';
const containerId = 'notificationDynamicFieldsMR';
for (let i = 0; i < notificationAttr.length; i++) {
if (notificationAttr[i].ATTRIBUTE_TYPE == 'VARCHAR2') {
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, '', containerId, '', '', '');
console.log(this.textArea );
} else if (notificationAttr[i].ATTRIBUTE_TYPE == 'ROLE') {
} else if (notificationAttr[i].ATTRIBUTE_TYPE == 'DATE') {
@ -643,19 +690,19 @@ export class WorklistMainMRComponent implements OnInit {
}
}
getNotificationCountAfterSubmit() {
const req: any = {};
this.menuService.getNotificationCount(req).subscribe((result: any) => {
if (this.common.validResponse(result)) {
this.notificationCount =
result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
if (this.notificationCount <= 0) {
this.notificationCount = null;
}
this.events.publish('getNotCount', this.notificationCount);
}
});
}
// getNotificationCountAfterSubmit() {
// const req: any = {};
// this.menuService.getNotificationCount(req).subscribe((result: any) => {
// if (this.common.validResponse(result)) {
// this.notificationCount =
// result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
// if (this.notificationCount <= 0) {
// this.notificationCount = null;
// }
// this.events.publish('getNotCount', this.notificationCount);
// }
// });
// }
@ -1000,7 +1047,7 @@ export class WorklistMainMRComponent implements OnInit {
if (data.data == 'cancel' || data.data == undefined) {
return;
} else if (data.data == 'Success') {
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}
@ -1032,7 +1079,7 @@ export class WorklistMainMRComponent implements OnInit {
if (data.data == 'cancel' || data.data == undefined) {
return;
} else if (data.data == 'Success') {
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}
@ -1089,7 +1136,15 @@ export class WorklistMainMRComponent implements OnInit {
}
openNotificationsDashboard() {
this.dashboredService.getOpenNotifications('', '', this.isPostNoLoad).subscribe((result: GetOpenNotificationsResponse) => {
if (this.common.validResponse(result)) {
this.worklistNotifications = result;
this.totalRequestCount = this.worklistNotifications.P_OPEN_NTF_NUMBER;
this.common.sharedService.setSharedData(result, 'worklistNotifications');
}
});
}
}

@ -341,15 +341,7 @@
</ion-card-content>
<ion-card-content>
<div>
<div id="notificationDynamicFields1">
</div>
</div>
</ion-card-content>
</ion-card>
</ng-container>
@ -625,8 +617,8 @@
<ion-label
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submite' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Reject','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Reject' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
class=""> {{actionHistory.ACTION}}</ion-label>
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION_CODE === 'SUBMIT' ,'bg-orange-txt' : actionHistory.ACTION_CODE === 'PENDING' ,'bg-red-txt' : actionHistory.ACTION_CODE === 'REJECT','bg-green-txt' : actionHistory.ACTION_CODE != 'PENDING' && actionHistory.ACTION_CODE != 'REJECT' && actionHistory.ACTION_CODE != 'SUBMIT'}"
class=""> {{actionHistory.ACTION}}</ion-label>
<ion-label *ngIf="actionHistory.NOTIFICATION_DATE != ''" class="dateActionHistory"> {{actionHistory.NOTIFICATION_DATE| dateString }} </ion-label>
@ -644,14 +636,15 @@
</ion-card>
</ng-container>
<ng-container *ngIf="activeSegment === 'attach'">
<ion-card class="cardContent">
<ion-card-content>
<div class="noDataDiv" [hidden]="attachmentRes && attachmentRes.length > 0">
<p>{{ 'general, notAttch' | translate}}</p>
</div>
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
<ion-grid>
<ion-item class="itemAttch" *ngFor="let attachList of attachmentRes" >
<ion-item class="itemAttch" *ngFor="let attachList of attachmentRes ; let i=index;" >
<!-- <div
*ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
@ -667,8 +660,8 @@
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/img.png">
</div> -->
<ion-label>
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
<ion-label style="color: black !important" >
{{i+1}}. {{attachList.FILE_NAME}} </ion-label>
<button float-end class="attachImgBtn"
(click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
@ -681,14 +674,15 @@
</div>
</ion-card-content>
</ion-card>
</ng-container>
<!-- </ion-slides> -->
<ion-row>
<ion-col col-12>
<div id="notificationDynamicFields">
<div id="notificationDynamicFieldsPO">
</div>
</ion-col>
</ion-row>
@ -698,7 +692,7 @@
<ion-icon class="succssfullIcon" name="checkmark"></ion-icon>
<!--filled-->
</ion-col>
<ion-col size="12"> <div style="font-size: 30px !important"> Transaction Successful </div> </ion-col>
<ion-col size="12"> <div style="font-size: 30px !important"> {{'worklistMain, Tran_Succ' | translate}}</div> </ion-col>
</div>
</ion-content>

@ -35,6 +35,8 @@ import { QuotationAnalysisRequest } from '../models/quotationAnalysisReq';
import { MoreActionModalComponent } from '../more-action-modal/more-action-modal.component'
import { WorkListReplacementRollComponent } from '../work-list-replacement-roll/work-list-replacement-roll.component';
import { WorkListRfcComponent } from '../work-list-rfc/work-list-rfc.component';
import { DashboredService } from 'src/app/hmg-common/services/dashbored/dashbored.service';
import { GetOpenNotificationsResponse } from 'src/app/hmg-common/services/dashbored/models/GetOpenNotificationsResponse';
@Component({
selector: 'app-worklist-main-po',
@ -54,7 +56,9 @@ export class WorklistMainPoComponent implements OnInit {
public static PASS_PO_HEADER_ID = "passPOHeader";
public static PASS_ACTION_MODE = "passActionMode";
public static PASS_ACTION_MORE = "passActioMore";
public isPostNoLoad = true;
public worklistNotifications: any;
public totalRequestCount = 0;
getPassNotificationDetails: any;
public static PASS_RES_ATTR = "passResAttr";
TransactionID: number = -999;
@ -129,6 +133,8 @@ export class WorklistMainPoComponent implements OnInit {
public worklistAttachService: WorklistAttachService,
private modalCtrl: ModalController,
public worklistService: WorklistService,
public dashboredService: DashboredService,
) {
this.direction = TranslatorService.getCurrentLanguageName()
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
@ -147,7 +153,7 @@ export class WorklistMainPoComponent implements OnInit {
}//ngOn
intializeNotificationDetail() {
if (this.messageSuccess) {
document.getElementById("notificationDynamicFields").innerHTML = "";
document.getElementById("notificationDynamicFieldsPO").innerHTML = "";
}
console.log("intializeNotificationDetail");
this.getPassNotificationDetails = this.common.sharedService.getSharedData(
@ -340,7 +346,7 @@ export class WorklistMainPoComponent implements OnInit {
setTimeout(() => {
this.messageSuccess = false;
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}, 5000);
@ -349,24 +355,59 @@ export class WorklistMainPoComponent implements OnInit {
} // valid it
}
// public nextNotfification() {
// //let itemExist = false;
// let itemNo = this.getPassNotificationDetails.ROW_NUM;
// itemNo += 1;
// if (itemNo > this.notificationArray.length) {
// this.common.openNotificationPage();
// } else {
// for (let i = 0; i < this.notificationArray.length; i++) {
// if (this.notificationArray[i].ROW_NUM == itemNo) {
// this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// // itemExist = true;
// this.intializeNotificationDetail();
// break;
// }
// }
// // if(itemExist==false){
// // this.nextNotfification();
// // }
// }
// }
public nextNotfification() {
//let itemExist = false;
if( document.getElementById("notificationDynamicFieldsPO") != null){
document.getElementById("notificationDynamicFieldsPO").innerHTML = "";
}
let itemNo = this.getPassNotificationDetails.ROW_NUM;
itemNo += 1;
if (itemNo > this.notificationArray.length) {
this.common.openNotificationPage();
} else {
for (let i = 0; i < this.notificationArray.length; i++) {
if (this.notificationArray[i].ROW_NUM == itemNo) {
this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// itemExist = true;
this.intializeNotificationDetail();
break;
}
console.log(itemNo);
let index = this.notificationArray.findIndex(x => x.ROW_NUM === itemNo);
console.log(index);
console.log(this.notificationArray);
index += 1;
if (index < this.notificationArray.length) {
this.common.sharedService.setSharedData(this.notificationArray[index], HomeComponent.NOTIFICATION_DATA);
if(this.notificationArray[index].REQUEST_TYPE == "PO" ){
this.intializeNotificationDetail();
}else
if(this.notificationArray[index].REQUEST_TYPE == "PR" ){
this.common.openWorklistMainPRPage()
}
else
if(this.notificationArray[index].REQUEST_TYPE == "MR" ){
this.common.openWorklistMainMRPage()
}else{
this.common.openWorklistMainPage();
}
// if(itemExist==false){
// this.nextNotfification();
// }
}
else{
this.common.openNotificationPage();
}
}
@ -393,14 +434,17 @@ export class WorklistMainPoComponent implements OnInit {
}
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
console.log("a"+ this.P_RESPOND_ATTRIBUTES_TBL);
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);
}
// 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);
// }
if (
ButtonAction == "APPROVE" ||
ButtonAction == "REJECT" ||
@ -411,6 +455,7 @@ export class WorklistMainPoComponent implements OnInit {
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
//sheardData
// this.common.sharedService.setSharedData(
@ -435,7 +480,7 @@ export class WorklistMainPoComponent implements OnInit {
this.common.confirmAlertDialogAction(
() => {
this.applyAction(this.WorkListActionObj);
// this.applyAction(this.WorkListActionObj);
}, this.ts.trPK('general', 'ok'),
() => { }, this.ts.trPK('general', 'cancel'),
this.ts.trPK('vacation-rule', 'confirmation'),
@ -500,6 +545,8 @@ export class WorklistMainPoComponent implements OnInit {
this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainPoComponent.PASS_RES_ATTR
);
console.log("c"+ this.P_RESPOND_ATTRIBUTES_TBL);
// this.common.openWorklistRollReplacement();
this.openRepRolModal();
} else if (
@ -603,6 +650,8 @@ export class WorklistMainPoComponent implements OnInit {
}
getNotificationResAttr(notificationButtonsObj) {
console.log("getNotificationResAttr");
this.worklistMainService
.notificationResponseAttr(notificationButtonsObj)
.subscribe((result: NotificatonButtonResponse) => {
@ -637,10 +686,12 @@ export class WorklistMainPoComponent implements OnInit {
} // End handleWorkListButtonsResult
notificationDynamicFields(notificationAttr) {
const containerId = 'notificationDynamicFields';
const containerId = 'notificationDynamicFieldsPO';
for (let i = 0; i < notificationAttr.length; i++) {
if (notificationAttr[i].ATTRIBUTE_TYPE == "VARCHAR2") {
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, "", containerId, "", "", "");
console.log(this.textArea );
} else if (notificationAttr[i].ATTRIBUTE_TYPE == "ROLE") {
} else if (notificationAttr[i].ATTRIBUTE_TYPE == "DATE") {
@ -679,19 +730,19 @@ export class WorklistMainPoComponent implements OnInit {
}
}
getNotificationCountAfterSubmit() {
const req: any = {};
this.menuService.getNotificationCount(req).subscribe((result: any) => {
if (this.common.validResponse(result)) {
this.notificationCount =
result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
if (this.notificationCount <= 0) {
this.notificationCount = null;
}
this.events.publish("getNotCount", this.notificationCount);
}
});
}
// getNotificationCountAfterSubmit() {
// const req: any = {};
// this.menuService.getNotificationCount(req).subscribe((result: any) => {
// if (this.common.validResponse(result)) {
// this.notificationCount =
// result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
// if (this.notificationCount <= 0) {
// this.notificationCount = null;
// }
// this.events.publish("getNotCount", this.notificationCount);
// }
// });
// }
@ -1068,7 +1119,7 @@ export class WorklistMainPoComponent implements OnInit {
if (data.data == "cancel" || data.data == undefined) {
return;
} else if (data.data == "Success") {
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}
@ -1112,4 +1163,15 @@ export class WorklistMainPoComponent implements OnInit {
}
openNotificationsDashboard() {
this.dashboredService.getOpenNotifications('', '', this.isPostNoLoad).subscribe((result: GetOpenNotificationsResponse) => {
if (this.common.validResponse(result)) {
this.worklistNotifications = result;
this.totalRequestCount = this.worklistNotifications.P_OPEN_NTF_NUMBER;
this.common.sharedService.setSharedData(result, 'worklistNotifications');
}
});
}
}

@ -171,23 +171,7 @@
</ion-card-content>
<ion-card-content>
<div>
<div id="notificationDynamicFields1">
</div>
</div>
<!-- <ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem">
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
<ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
[(ngModel)]="actionType" required>
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
</ion-select>
</ion-item> -->
</ion-card-content>
</ion-card>
@ -359,7 +343,7 @@
<!-- [ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Rejected','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}" -->
<ion-label
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submite' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Reject','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Reject' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION_CODE === 'SUBMIT' ,'bg-orange-txt' : actionHistory.ACTION_CODE === 'PENDING' ,'bg-red-txt' : actionHistory.ACTION_CODE === 'REJECT','bg-green-txt' : actionHistory.ACTION_CODE != 'PENDING' && actionHistory.ACTION_CODE != 'REJECT' && actionHistory.ACTION_CODE != 'SUBMIT'}"
class=""> {{actionHistory.ACTION}}</ion-label>
@ -378,8 +362,8 @@
</ion-card>
</ng-container>
<ng-container *ngIf="activeSegment === 'attach'">
<!-- <ion-card class="cardContent">
<ion-card-content> -->
<ion-card class="cardContent">
<ion-card-content>
<div class="noDataDiv" [hidden]="attachmentRes && attachmentRes.length > 0">
<p>{{ 'general, notAttch' | translate}}</p>
</div>
@ -387,7 +371,7 @@
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
<ion-grid>
<ion-item class="itemAttch" *ngFor="let attachList of attachmentRes">
<ion-item class="itemAttch" *ngFor="let attachList of attachmentRes ; let i=index;">
<!-- <div *ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
</div>
@ -402,8 +386,8 @@
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/img.png">
</div> -->
<ion-label>
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
<ion-label style="color: black !important">
{{i+1}}. {{attachList.FILE_NAME}} </ion-label>
<button float-end class="attachImgBtn"
(click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
@ -416,12 +400,12 @@
</div>
<!-- </ion-card-content>
</ion-card> -->
</ion-card-content>
</ion-card>
</ng-container>
<ion-row>
<ion-col col-12>
<div id="notificationDynamicFields">
<div id="notificationDynamicFieldsPR">
</div>
</ion-col>
</ion-row>
@ -431,7 +415,7 @@
<ion-icon class="succssfullIcon" name="checkmark"></ion-icon>
<!--filled-->
</ion-col>
<ion-col size="12"> <div style="font-size: 30px !important"> Transaction Successful </div> </ion-col>
<ion-col size="12"> <div style="font-size: 30px !important"> {{'worklistMain, Tran_Succ' | translate}} </div> </ion-col>
</div>
</ion-content>

@ -31,6 +31,8 @@ import { ApplyActionModalComponent } from '../apply-action-modal/apply-action-mo
import { MoreActionModalComponent } from '../more-action-modal/more-action-modal.component';
import { WorkListReplacementRollComponent } from '../work-list-replacement-roll/work-list-replacement-roll.component';
import { WorkListRfcComponent } from '../work-list-rfc/work-list-rfc.component';
import { DashboredService } from 'src/app/hmg-common/services/dashbored/dashbored.service';
import { GetOpenNotificationsResponse } from 'src/app/hmg-common/services/dashbored/models/GetOpenNotificationsResponse';
@Component({
selector: 'app-worklist-main-pr',
@ -38,7 +40,9 @@ import { WorkListRfcComponent } from '../work-list-rfc/work-list-rfc.component';
styleUrls: ['./worklist-main-pr.component.scss'],
})
export class WorklistMainPRComponent implements OnInit {
public isPostNoLoad = true;
public worklistNotifications: any;
public totalRequestCount = 0;
private WorkListBodyObj: WorkListBodyRequest;
private WorkListButtonsObj: WorkListButtonRequest;
private WorkListActionObj: WorkListActionRequest;
@ -106,6 +110,7 @@ export class WorklistMainPRComponent implements OnInit {
constructor(
public dashboredService: DashboredService,
public common: CommonService,
public ts: TranslatorService,
public worklistMainService: WorklistMainService,
@ -139,7 +144,7 @@ export class WorklistMainPRComponent implements OnInit {
intializeNotificationDetail() {
if (this.messageSuccess) {
document.getElementById('notificationDynamicFields').innerHTML = '';
document.getElementById('notificationDynamicFieldsPR').innerHTML = '';
}
console.log('intializeNotificationDetail');
@ -340,30 +345,66 @@ export class WorklistMainPRComponent implements OnInit {
this.messageSuccess = false;
}, 5000);
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}
} // valid it
}
// public nextNotfification() {
// //let itemExist = false;
// let itemNo = this.getPassNotificationDetails.ROW_NUM;
// itemNo += 1;
// if (itemNo > this.notificationArray.length) {
// this.common.openNotificationPage();
// } else {
// for (let i = 0; i <= this.notificationArray.length; i++) {
// if (this.notificationArray[i].ROW_NUM == itemNo) {
// this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// // itemExist = true;
// this.intializeNotificationDetail();
// break;
// }
// }
// // if(itemExist==false){
// // this.nextNotfification();
// // }
// }
// }
public nextNotfification() {
//let itemExist = false;
if( document.getElementById("notificationDynamicFieldsPR") != null){
document.getElementById("notificationDynamicFieldsPR").innerHTML = "";
}
let itemNo = this.getPassNotificationDetails.ROW_NUM;
itemNo += 1;
if (itemNo > this.notificationArray.length) {
this.common.openNotificationPage();
} else {
for (let i = 0; i <= this.notificationArray.length; i++) {
if (this.notificationArray[i].ROW_NUM == itemNo) {
this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// itemExist = true;
this.intializeNotificationDetail();
break;
}
console.log(itemNo);
let index = this.notificationArray.findIndex(x => x.ROW_NUM === itemNo);
console.log(index);
console.log(this.notificationArray);
index += 1;
if (index < this.notificationArray.length) {
this.common.sharedService.setSharedData(this.notificationArray[index], HomeComponent.NOTIFICATION_DATA);
if(this.notificationArray[index].REQUEST_TYPE == "PO" ){
this.common.openWorklistMainPOPage()
}else
if(this.notificationArray[index].REQUEST_TYPE == "PR" ){
this.intializeNotificationDetail();
}
else
if(this.notificationArray[index].REQUEST_TYPE == "MR" ){
this.common.openWorklistMainMRPage()
}else{
this.common.openWorklistMainPage();
}
// if(itemExist==false){
// this.nextNotfification();
// }
}
else{
this.common.openNotificationPage();
}
}
@ -601,6 +642,8 @@ export class WorklistMainPRComponent implements OnInit {
}
getNotificationResAttr(notificationButtonsObj) {
console.log("getNotificationResAttr");
this.worklistMainService
.notificationResponseAttr(notificationButtonsObj)
.subscribe((result: NotificatonButtonResponse) => {
@ -635,10 +678,12 @@ export class WorklistMainPRComponent implements OnInit {
} // End handleWorkListButtonsResult
notificationDynamicFields(notificationAttr) {
const containerId = 'notificationDynamicFields';
const containerId = 'notificationDynamicFieldsPR';
for (let i = 0; i < notificationAttr.length; i++) {
if (notificationAttr[i].ATTRIBUTE_TYPE == 'VARCHAR2') {
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, '', containerId, '', '', '');
console.log(this.textArea );
} else if (notificationAttr[i].ATTRIBUTE_TYPE == 'ROLE') {
} else if (notificationAttr[i].ATTRIBUTE_TYPE == 'DATE') {
@ -677,19 +722,19 @@ export class WorklistMainPRComponent implements OnInit {
}
}
getNotificationCountAfterSubmit() {
const req: any = {};
this.menuService.getNotificationCount(req).subscribe((result: any) => {
if (this.common.validResponse(result)) {
this.notificationCount =
result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
if (this.notificationCount <= 0) {
this.notificationCount = null;
}
this.events.publish('getNotCount', this.notificationCount);
}
});
}
// getNotificationCountAfterSubmit() {
// const req: any = {};
// this.menuService.getNotificationCount(req).subscribe((result: any) => {
// if (this.common.validResponse(result)) {
// this.notificationCount =
// result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
// if (this.notificationCount <= 0) {
// this.notificationCount = null;
// }
// this.events.publish('getNotCount', this.notificationCount);
// }
// });
// }
@ -1000,7 +1045,7 @@ export class WorklistMainPRComponent implements OnInit {
if (data.data == 'cancel' || data.data == undefined) {
return;
} else if (data.data == 'Success') {
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}
@ -1043,4 +1088,14 @@ export class WorklistMainPRComponent implements OnInit {
}
openNotificationsDashboard() {
this.dashboredService.getOpenNotifications('', '', this.isPostNoLoad).subscribe((result: GetOpenNotificationsResponse) => {
if (this.common.validResponse(result)) {
this.worklistNotifications = result;
this.totalRequestCount = this.worklistNotifications.P_OPEN_NTF_NUMBER;
this.common.sharedService.setSharedData(result, 'worklistNotifications');
}
});
}
}

@ -40,7 +40,7 @@
<ng-container *ngIf="activeSegment === 'info'">
<div *ngIf="notificationBodyRes?.length > 0 ">
<ion-card *ngFor="let item of notificationBodyRes; let i=index ">
<ion-card *ngFor="let item of notificationBodyRes;let i=index; ">
<!-- <ion-card-header class="boxHdr">
<div class="hrTitle"> {{'worklistMain, notfDetails' | translate}}</div>
@ -86,7 +86,7 @@
<ion-col size="9">
<label style="font-weight: bold; " class="label" for="">{{List.EMPLOYEE_NAME}} </label>
<br />
<label class="label" for="">JOB TITLE DEMO </label><br />
<label class="label" for="">{{List.POSITION_TITLE}} </label><br />
</ion-col>
<ion-col class="status" size="3">
@ -109,6 +109,7 @@
</ion-grid>
<!-- </ion-col> -->
</ion-item>
<!-- </ion-card-content>
</ion-card> -->
</ng-container>
@ -368,7 +369,7 @@
</div>
</div>
<ion-label
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submite' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Reject','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Reject' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION_CODE === 'SUBMIT' ,'bg-orange-txt' : actionHistory.ACTION_CODE === 'PENDING' ,'bg-red-txt' : actionHistory.ACTION_CODE === 'REJECT','bg-green-txt' : actionHistory.ACTION_CODE != 'PENDING' && actionHistory.ACTION_CODE != 'REJECT' && actionHistory.ACTION_CODE != 'SUBMIT'}"
class=""> {{actionHistory.ACTION}}</ion-label>
@ -390,14 +391,19 @@
</ng-container>
<ng-container *ngIf="activeSegment === 'attach'">
<ion-card class="cardContent">
<ion-card-content>
<div class="noDataDiv" [hidden]="attachmentRes && attachmentRes.length > 0">
<p>{{ 'general, notAttch' | translate}}</p>
</div>
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
<ion-grid>
<ion-item class="itemAttch" *ngFor="let attachList of attachmentRes">
<ion-item class="itemAttch" *ngFor="let attachList of attachmentRes ;let i=index;">
<!-- <div *ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
</div>
@ -412,8 +418,8 @@
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
<img float-start class="attachImg" src="../assets/imgs/img.png">
</div> -->
<ion-label>
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
<ion-label style="color: black !important">
{{i+1 }}. {{attachList.FILE_NAME}} </ion-label>
<button float-end class="attachImgBtn"
(click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
@ -426,29 +432,12 @@
</div>
</ion-card-content>
</ion-card>
</ng-container>
<div>
<!-- ATTRIBUTE_DISPLAY_NAME: "Note"
ATTRIBUTE_FORMAT: "4000"
ATTRIBUTE_NAME: "WF_NOTE"
ATTRIBUTE_TYPE: "VARCHAR2" -->
<div id="notificationDynamicFields1">
</div>
<!-- <json-schema-form *ngIf="schemaNotific" [form]="schemaNotific" [(ngModel)]="notExampleJsonObject">
</json-schema-form> -->
</div>
<!-- <ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem">
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
<ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
[(ngModel)]="actionType" required>
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
</ion-select>
</ion-item> -->
<ion-row>
<ion-col col-12>
@ -457,12 +446,13 @@
</ion-col>
</ion-row>
</div>
<div *ngIf="messageSuccess" class="succssfullMSG">
<ion-col size="12">
<ion-icon class="succssfullIcon" name="checkmark"></ion-icon>
<!--filled-->
</ion-col>
<ion-col size="12"> <div style="font-size: 30px !important"> Transaction Successful </div> </ion-col>
<ion-col size="12"> <div style="font-size: 30px !important"> {{'worklistMain, Tran_Succ' | translate}} </div> </ion-col>
</div>
</ion-content>

@ -35,6 +35,7 @@ import { WorkListSubmitterInfoRequest } from '../models/WorklistsubmitterInfoReq
import { WorkListReplacementRollComponent } from '../work-list-replacement-roll/work-list-replacement-roll.component';
import { WorkListRfcComponent } from '../work-list-rfc/work-list-rfc.component';
import { ApplyActionModalComponent } from '../apply-action-modal/apply-action-modal.component';
import { GetOpenNotificationsResponse } from 'src/app/hmg-common/services/dashbored/models/GetOpenNotificationsResponse';
@ -97,6 +98,9 @@ export class WorklistMainComponent implements OnInit {
dirfromNotificationPage: boolean = false;
direction: string;
defaultSegment = '';
public isPostNoLoad = true;
public worklistNotifications: any;
public totalRequestCount = 0;
constructor(
public worklistService: WorklistService,
@ -134,6 +138,14 @@ export class WorklistMainComponent implements OnInit {
});
}
//name=document.getElementById('notificationDynamicFields').value;
//removeElement('parentDiv', name);"
//var navbar = document.getElementById("notificationDynamicFields").value;
// document.querySelector('svg .gauge.chart > text').remove();
// var inputValue = (<HTMLInputElement>document.getElementById("notificationDynamicFields")).value;
console.log(" this.selEmp" + this.selEmp);
this.intializeNotificationDetail();
@ -145,15 +157,17 @@ export class WorklistMainComponent implements OnInit {
}
intializeNotificationDetail() {
if (this.messageSuccess) {
document.getElementById("notificationDynamicFields").innerHTML = "";
}
this.getPassNotificationDetails = this.common.sharedService.getSharedData(
HomeComponent.NOTIFICATION_DATA,
false
);
console.log(this.getPassNotificationDetails.ROW_NUM);
console.log("for next()"+ this.getPassNotificationDetails.ROW_NUM);
this.notificationArray = this.common.sharedService.getSharedData(
HomeComponent.NOTIFICATION_ARR,
false
@ -350,7 +364,8 @@ export class WorklistMainComponent implements OnInit {
setTimeout(() => {
this.messageSuccess = false;
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}, 5000);
@ -359,27 +374,74 @@ export class WorklistMainComponent implements OnInit {
} // valid it
}
// public nextNotfification() {
// //let itemExist = false;
// let itemNo = this.getPassNotificationDetails.ROW_NUM;
// itemNo += 1;
// if (itemNo > this.notificationArray.length) {
// this.common.openNotificationPage();
// } else {
// for (let i = 0; i < this.notificationArray.length; i++) {
// if (this.notificationArray[i].ROW_NUM == itemNo) {
// this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// // itemExist = true;
// this.intializeNotificationDetail();
// break;
// }
// }
// // if(itemExist==false){
// // this.nextNotfification();
// // }
// }
// }
public nextNotfification() {
//let itemExist = false;
if( document.getElementById("notificationDynamicFields") != null){
document.getElementById("notificationDynamicFields").innerHTML = "";
}
let itemNo = this.getPassNotificationDetails.ROW_NUM;
itemNo += 1;
if (itemNo > this.notificationArray.length) {
this.common.openNotificationPage();
} else {
for (let i = 0; i < this.notificationArray.length; i++) {
if (this.notificationArray[i].ROW_NUM == itemNo) {
this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
// itemExist = true;
this.intializeNotificationDetail();
break;
}
console.log(itemNo);
let index = this.notificationArray.findIndex(x => x.ROW_NUM === itemNo);
console.log(index);
console.log(this.notificationArray);
index += 1;
if (index < this.notificationArray.length) {
this.common.sharedService.setSharedData(this.notificationArray[index], HomeComponent.NOTIFICATION_DATA);
if(this.notificationArray[index].REQUEST_TYPE == "PO" ){
this.common.openWorklistMainPOPage()
}else
if(this.notificationArray[index].REQUEST_TYPE == "PR" ){
this.common.openWorklistMainPRPage()
}
else
if(this.notificationArray[index].REQUEST_TYPE == "MR" ){
this.common.openWorklistMainMRPage()
}else{
this.intializeNotificationDetail();
}
// if(itemExist==false){
// this.nextNotfification();
// }
}
else{
this.common.openNotificationPage();
}
}
sortArray(arrayToSort: any) {
return arrayToSort.sort((a: any, b: any) =>
new Date(b.BEGIN_DATE).getTime() - new Date(a.BEGIN_DATE).getTime()
);
}
actionButton(action) {
//let ButtonAction: string = this.actionType;
let ButtonAction: string = action;
@ -399,6 +461,8 @@ export class WorklistMainComponent implements OnInit {
}
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
console.log("a"+ this.P_RESPOND_ATTRIBUTES_TBL);
let repUserName = this.selEmployeeID;
if (this.hideForwordEmployee && this.hideForwordEmployee.ATTRIBUTE_NAME) {
let obj: any = {};
@ -407,6 +471,8 @@ export class WorklistMainComponent implements OnInit {
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
}
console.log( "b"+ this.P_RESPOND_ATTRIBUTES_TBL);
if (
ButtonAction == "APPROVED" ||
@ -531,6 +597,8 @@ export class WorklistMainComponent implements OnInit {
this.P_RESPOND_ATTRIBUTES_TBL,
WorklistMainComponent.PASS_RES_ATTR
);
console.log("c"+ this.P_RESPOND_ATTRIBUTES_TBL);
// this.common.openWorklistRollReplacement();
this.openRepRolModal();
} else if (
@ -615,6 +683,7 @@ export class WorklistMainComponent implements OnInit {
}
getNotificationResAttr(notificationButtonsObj) {
console.log("getNotificationResAttr");
this.worklistMainService
.notificationResponseAttr(notificationButtonsObj)
.subscribe((result: NotificatonButtonResponse) => {
@ -625,7 +694,8 @@ export class WorklistMainComponent implements OnInit {
handleNotificationResAttrResult(result) {
if (this.common.validResponse(result)) {
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
this.NotRespondAttributeList =
this.NotRespondAttributeList = [];
result.NotificationGetRespondAttributesList;
if (
result.NotificationRespondRolesList != "" &&
@ -650,6 +720,7 @@ export class WorklistMainComponent implements OnInit {
for (let i = 0; i < notificationAttr.length; i++) {
if (notificationAttr[i].ATTRIBUTE_TYPE == "VARCHAR2") {
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, "", containerId, "", "", "");
console.log(this.textArea );
} else if (notificationAttr[i].ATTRIBUTE_TYPE == "ROLE") {
} else if (notificationAttr[i].ATTRIBUTE_TYPE == "DATE") {
@ -687,19 +758,19 @@ export class WorklistMainComponent implements OnInit {
}
}
getNotificationCountAfterSubmit() {
const req: any = {};
this.menuService.getNotificationCount(req).subscribe((result: any) => {
if (this.common.validResponse(result)) {
this.notificationCount =
result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
if (this.notificationCount <= 0) {
this.notificationCount = null;
}
this.events.publish("getNotCount", this.notificationCount);
}
});
}
// getNotificationCountAfterSubmit() {
// const req: any = {};
// this.menuService.getNotificationCount(req).subscribe((result: any) => {
// if (this.common.validResponse(result)) {
// this.notificationCount =
// result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
// if (this.notificationCount <= 0) {
// this.notificationCount = null;
// }
// this.events.publish("getNotCount", this.notificationCount);
// }
// });
// }
getAttachmentNotification(WorkListAttachObj) {
@ -904,7 +975,7 @@ export class WorklistMainComponent implements OnInit {
if (data.data == "cancel" || data.data == undefined) {
return;
} else if (data.data == "Success") {
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}
@ -936,7 +1007,7 @@ export class WorklistMainComponent implements OnInit {
if (data.data == "cancel" || data.data == undefined) {
return;
} else if (data.data == "Success") {
this.getNotificationCountAfterSubmit();
this.openNotificationsDashboard();
this.nextNotfification();
}
@ -1017,4 +1088,15 @@ export class WorklistMainComponent implements OnInit {
}
}//end infiniteScroll
openNotificationsDashboard() {
this.dashboredService.getOpenNotifications('', '', this.isPostNoLoad).subscribe((result: GetOpenNotificationsResponse) => {
if (this.common.validResponse(result)) {
this.worklistNotifications = result;
this.totalRequestCount = this.worklistNotifications.P_OPEN_NTF_NUMBER;
this.common.sharedService.setSharedData(result, 'worklistNotifications');
}
});
}
}

@ -48,7 +48,8 @@
</button>
</ion-col>
<ion-col>
<p class="label"><b style="font-family: WorkSans-Bold;">{{ (showPaySlip.PAYSLIP_CHOICE)?.substring(15,23) }}</b></p>
<p class="label" *ngIf="direction==='en'"><b style="font-family: WorkSans-Bold;">{{ (showPaySlip.PAYSLIP_CHOICE)?.substring(15,23) }}</b></p>
<p class="label" *ngIf="direction==='ar'"><b style="font-family: WorkSans-Bold;">{{ (showPaySlip.PAYSLIP_CHOICE)?.substring(23,17) }}</b></p>
</ion-col>
<ion-col>
<button ion-button icon-end class="slidbtn" (click)="slideNext(sliderOne,slideWithNav)">
@ -65,7 +66,7 @@
</ion-icon>
<!-- <ion-icon [ngClass]="{'disabledArrow' : payslipIndex === 0 , 'activeArrow' : payslipIndex != 0 , 'disabledArrow-ar' : direction != 'en' ,'disabledArrow' : direction == 'en'}" ios="ios-arrow-dropright-circle" md="md-arrow-dropright-circle">
</ion-icon> -->
</button>
</ion-col>
@ -120,7 +121,7 @@
<!-- <span>TOTAL <br> OPEN REQUEST</span> -->
<span>{{ts.trPK('payslip','total')}} <br> {{ts.trPK('payslip','salary')}}</span>
</div>
<p-chart #chart class="today-graph" type="doughnut" [data]="data" [options]="options"></p-chart>
<p-chart #chart [ngClass]="direction == 'en'? 'today-graph':'today-graph-ar'" type="doughnut" [data]="data" [options]="options"></p-chart>
</div>
<div [ngClass]=" direction == 'en' ? 'div-green':'div-green-ar'">

@ -159,6 +159,21 @@
-o-transform: scaleX(-1);
transform: scaleX(-1);
}
.today-graph{
display: block !important;
height: 162px;
width: 335px;
/* padding-left: 51px; */
margin-left: 3px !important;
}
.today-graph-ar{
display: block !important;
height: 162px;
width: 335px;
margin-right: 45px;
margin-left: -25px !important;
}
.result-graph{
font-size: 14px;
@ -191,7 +206,8 @@
padding: 0;
margin: 0;
position: absolute;
left: 54%;
// left: 54%;
left: 45%;
top: 50%;
display: block;
text-align: center;
@ -199,7 +215,7 @@
h2 {
font-size: 25px;
font-size: 23px;
font-family: WorkSans-Bold;
margin: 0 auto;
line-height: 36px;
@ -211,7 +227,7 @@
width: 125px;
display: block;
margin: 0 auto;
font-size: 15px;
font-size: 14px;
font-family: workSans-Regular;
}
}
@ -221,7 +237,7 @@
padding: 0;
margin: 0;
position: absolute;
left: 42%;
left: 40%;
top: 50%;
display: block;
text-align: center;
@ -251,7 +267,7 @@
}
.green-amount{
font-size: 14px;
font-size: 13px;
font-family: WorkSans-Bold;
margin-top: -3px;
}
@ -262,7 +278,7 @@
}
.blue-amount{
font-size: 14px;
font-size: 13px;
font-family: WorkSans-Bold;
margin-top: -4px;
}

@ -54,7 +54,7 @@ export class HomeComponent implements OnInit {
@ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll;
public options = {
cutoutPercentage: 80,
cutoutPercentage: 85,
tooltips: { enabled: false },
legend: { display: false }};
gaugeType = "full";

@ -147,11 +147,10 @@
}
.labelvalue-ar{
// margin-right: 19px !important;
font-size: 24px !important;
font-weight: bold !important;
/* margin-top: 7px !important; */
margin-right: 19px !important;
margin-right: 25px !important;
}
@ -162,8 +161,9 @@
}
.percentage-ar{
// margin-right: -54px;
font-size: 19px !important;
margin-right: -54px;
margin-right: -51px;
}
.gauge{

@ -15,6 +15,7 @@ export class TextAreaInput extends UiElement {
}
public getTemplate() {
console.log("getTemplate");
let requiredClass: string = "";
if (this.required == 'Y')
requiredClass = "requiredClass"
@ -30,6 +31,7 @@ export class TextAreaInput extends UiElement {
"<ion-label class='dynamiclable-float' position='floating' style='font-size: medium !important;' id='title' >" + this.label + "</ion-label>" +
"<ion-textarea id='" + this.elementId + "' " + this.disabled + " >" + this.value + "</ion-textarea>" +
"</ion-item>";
console.log("template"+ template);
return template;
}

@ -79,7 +79,7 @@
<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 [ngClass]="item.RULE_STATUS === 'Inactive' || item.RULE_STATUS === 'غير ساري' ? '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/>

@ -111,9 +111,9 @@ button.item-button.button.button-md.button-clear.button-clear-md {
.filterInput-ar{
border: solid var(--gray) 1px;
border-radius: 21px;
padding-left: 100px !important;
// padding-left: 100px !important;
margin-left: 86px;
padding-right: 129px;
// padding-right: 129px;
margin-right: -139px;
}

@ -72,12 +72,12 @@
</ion-row>
<ion-row>
<!-- style="max-width: 100% !important;; width: 100% !important;" mode="ios" -->
<ion-item class="selectItem " *ngIf="notifTypeSelP2=='sel_opt'" >
<ion-label>{{'vacation-rule, notification' | translate}}</ion-label>
<ion-select mode="ios" class="notifiSelect" 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">
<ion-select-option style="min-height: 100% !important; height: 100% !important;" value="{{i}}" *ngFor="let x of notification_list; let i=index">
{{x.NOTIFICATION_DISPLAY_NAME}}
</ion-select-option>
</ion-select>

@ -91,6 +91,7 @@ color: black !important;
.stepHeaderLebal{
margin:0;
}
// .progcontainer {
// margin: auto;
// text-align: center;

@ -154,13 +154,17 @@
"en": "To activate fingerprint login service, please verify by using one of the following options. ",
"ar": "لتفعيل خدمة الدخول بالبصمة، يرجى التحقق من خلال احدى الخيارات التالية"
},
"verify-faceId": {
"en": "To activate face ID login service, please verify by using one of the following options. ",
"ar": "لتفعيل خدمة الدخول ببصمة الوجه، يرجى التحقق من خلال احدى الخيارات التالية"
},
"Verify-text":{
"en":"Verify its you",
"ar":"Verify its you"
},
"check-user-text1":{
"en":"Please Enter your Employee ID, A ",
"ar":"يرجى ادخال رقم الموظف "
"en":"Employee ID",
"ar":"رقم الموظف "
},
"check-user-text2":{
"en":"login Code ",
@ -1381,17 +1385,17 @@
"en": "Accrual Balances",
"ar": "رصيد حساب المستحقات"
},
"accrualNet": {
"en": "Accrual Net",
"ar": "صافي الاستحقاق"
"currentBalance": {
"en": "Current Balance",
"ar": " الرصيد الحالي"
},
"accrualUsed": {
"en": "Accrual Used",
"ar": "الاستحقاق المستخدم"
"usedBalance": {
"en": "Used Balance",
"ar": "الرصيد المستخدم"
},
"accrualYearly": {
"en": "Accrual Yearly",
"ar": "الاستحقاق السنوي"
"annualBalance": {
"en": "Annual Balance",
"ar": "الرصيد السنوي"
},
"totalNumber": {
"en": "TOTAL NUMBERS",
@ -2376,10 +2380,11 @@
"en": "Request Number",
"ar":"Request Number"
},
"ITEM_AMU":{
"en": "AMU (Last 3 months)",
"ar":"AMU (Last 3 months)"
}
"Tran_Succ":{
"en": "Transaction Successful",
"ar":"عملية ناجحه"
}
},
"payslip": {
"title":{

@ -1514,3 +1514,7 @@ table.monthview-datetable th small {
background: #094875;
}
}
.alert-wrapper {
min-width: 80% !important;//what ever you like
}

Loading…
Cancel
Save