Merge branch 'MOHEMM-Q3-DEV' into sultan-q3

# Conflicts:
#	Mohem/src/app/profile/home/home.component.scss
#	Mohem/src/app/profile/home/home.component.ts
MOE_DEV_NEW_TEMPORARY_DESIGN
Sultan Khan 4 years ago
commit 3be79111d2

@ -5,19 +5,20 @@
<ion-content padding>
<!-- <div [ngClass]=" direction === 'en' ? 'custom-text-area-element Field-en' : 'custom-text-area-element Field-ar'" >
<div [ngClass]=" direction === 'en' ? 'custom-text-area-element Field-en' : 'custom-text-area-element Field-ar'" >
<label class="label" position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','absenceType')}} </label>
<select class="label-Select" [(ngModel)]="absenceType" (change)="onTypeAbsenceChange()" required>
<select name="selectAbsenceType" class="label-Select" #selectAbsenceType="ngModel" [(ngModel)]="absenceType" (change)="onTypeAbsenceChange()" required>
<option value="noType" selected hidden selected><p>{{ts.trPK('absenceList','selectType')}}</p></option>
<option value= "{{item.ABSENCE_ATTENDANCE_TYPE_ID}}" *ngFor="let item of absenceTypeList; let i=index;">{{item.ABSENCE_ATTENDANCE_TYPE_NAME}} </option>
</select>
</div> -->
<ion-item class='dynamicField'>
</div>
<!-- <ion-item class='dynamicField'>
<ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','absenceType')}} </ion-label>
<ion-select (ionChange)="calcDay()" okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="absenceType" (ionChange)="onTypeAbsenceChange()" required>
<!-- let item of AbsenceType; let i=index; -->
let item of AbsenceType; let i=index;
<ion-select-option value= "{{item.ABSENCE_ATTENDANCE_TYPE_ID}}" *ngFor="let item of absenceTypeList; let i=index;">{{item.ABSENCE_ATTENDANCE_TYPE_NAME}} </ion-select-option>
</ion-select>
</ion-item>
</ion-item> -->
<ion-item class='dynamicField'>
<ion-label position='floating' class="colBold requiredClass">{{ts.trPK('submitAbsence','startDate')}} </ion-label>

@ -51,7 +51,7 @@ export class SubmitAbsenceComponent implements OnInit {
private modalFlag: any = false;
menuType: any;
employeeSel: any;
absenceType: any;
absenceType = 'noType';
absenceTypeName: string = null;
absenceTypeList: any;
startDate: any;

@ -298,7 +298,7 @@ export class AppComponent implements OnInit {
//this.userInfo = this.cs.sharedService.getSharedData('bussiness-card-info', false);
const modal = await this.modalController.create({
component: BusinessCardComponent,
cssClass: 'digital-id-modal-css',
cssClass: 'business-card-modal-css',
componentProps: {
'userInfo': this.userInfo
}

@ -1,5 +1,5 @@
<ion-content dir="ltr" *ngIf="userInfo.company_type == 'CS'">
<ion-grid class="card-size">
<!-- <ion-grid class="card-size">
<ion-row>
<ion-col size='6'>
<img class="logo-img-style" [src]='userInfo.company_logo' alt="https://hmgwebservices.com/images/Moheem/CS.jpg"/>
@ -9,16 +9,11 @@
</ion-col>
</ion-row>
<ion-row>
<ion-col size='6'>
<ion-col size='12'>
<ion-label>
<h1 class='font-text-style' style="font-size: 20px !important; width: 200%;">{{userInfo.name_en}}</h1>
</ion-label>
</ion-col>
<ion-col size='6'>
<ion-label>
<h1 class='font-text-style name-ar-style'>{{userInfo.name_ar}}</h1>
</ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
@ -53,17 +48,24 @@
</ion-label>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
</ion-grid> -->
<div style="height: 300px; width: 300px; transform: rotate(90deg) !important;">
<img style="width: 100px; margin-left: 20px; margin-top: 26px;" [src]='userInfo.company_logo' alt="https://hmgwebservices.com/images/Moheem/CS.jpg"/>
<h1 class='font-text-style' style="font-size: 25px !important; margin-left: 20px; margin-top: 5px; margin-bottom: 0px;">{{userInfo.name_en}}</h1>
<h5 class='font-text-style' style="margin-left: 20px; margin-top: 0px; ">{{userInfo.job_en}}</h5>
<h5 class='font-text-style' style="margin-left: 20px; font-size: 18px; margin-bottom: 0px;">{{userInfo.mobile}}</h5>
<h5 class='font-text-style' style="margin-left: 20px; margin-top: 5px; font-size: 12px; margin-bottom: 5px;">{{userInfo.email}}</h5>
<h5 class='font-text-style' style="margin-left: 20px; margin-top: 0px;">{{userInfo.company_url}}</h5>
</div>
<!-- <ion-footer>
<div class="centerDiv" style="margin-top: 20px !important;">
<ion-button class="button-login" (click)="dismiss()"><b>{{ts.trPK('general','close')}}</b></ion-button>
<div style="height: 150px; width: 300px;">
<img style="width: 140px; margin-left: 145px; margin-top: 26px;" [src]="userInfo.qr"/>
</div>
</ion-footer> -->
</ion-content>
<ion-content dir="ltr" *ngIf="userInfo.company_type != 'CS'">
<ion-grid class="cs-card-size">
<!-- <ion-grid class="cs-card-size">
<ion-row>
<ion-col style="padding-left: 315px;">
<img class="logo-img-hmg-style" [alt]='userInfo.company_logo' src="../assets/icon/HMG_LOGO.png"/>
@ -79,7 +81,7 @@
</ion-label>
</ion-col>
</ion-row>
<ion-row>
<ion-row class="name-div">
<ion-col>
<ion-label>
<h5 class='font-text-style'>{{userInfo.job_en}}</h5>
@ -107,5 +109,19 @@
</ion-label>
</ion-col>
</ion-row>
</ion-grid>
</ion-grid> -->
<div style="height: 300px; width: 300px; transform: rotate(90deg) !important;">
<img style="width: 300px; margin-left: 185px; margin-top: 26px;" [alt]='userInfo.company_logo' src="../assets/icon/HMG_LOGO.png"/>
<div style="margin-top: 30px;">
<h1 class='font-text-style' style="font-size: 25px !important; margin-left: 20px; margin-top: 5px; margin-bottom: 0px;">{{userInfo.name_en}}</h1>
<h5 class='font-text-style' style="margin-left: 20px; margin-top: 0px; ">{{userInfo.job_en}}</h5>
<h5 class='font-text-style' style="margin-left: 20px; font-size: 18px; margin-bottom: 0px;">{{userInfo.mobile}}</h5>
<h5 class='font-text-style' style="margin-left: 20px; margin-top: 5px; font-size: 12px; margin-bottom: 5px;">{{userInfo.email}}</h5>
<h5 class='font-text-style' style="margin-left: 20px; margin-top: 0px;">{{userInfo.company_url}}</h5>
</div>
</div>
<div style="height: 150px; width: 300px;">
<img style="width: 140px; margin-left: 10px; margin-top: 50px;" [src]="userInfo.qr"/>
</div>
</ion-content>

@ -38,10 +38,9 @@
// CS
.card-size{
transform: rotate(90deg) !important;
// padding: 5% !important;
// padding-right: 0px !important;
padding-right: 0px !important;
padding-left: 15% !important;
padding: 8% !important;
}
.qr-style{
left: 260% !important;
@ -57,6 +56,9 @@
.qr-img-hmg-style{
left: 580px !important;
}
.cs-card-size{
padding: 15px !important;
}
}
@media screen and (min-width: 400px) and (min-height:700px) and (max-height: 799px){
@ -81,6 +83,9 @@
.qr-img-hmg-style{
left: 495px !important;
}
.cs-card-size{
padding: 20px !important;
}
}
@media screen and (min-width: 325px) and (max-width:399px) and (max-height: 812px){
@ -103,6 +108,9 @@
.qr-img-hmg-style{
left: 550px !important;
}
.cs-card-size{
padding: 10px !important;
}
}
@media screen and (min-width: 325px) and (max-width:399px) and (max-height: 700px){
@ -140,18 +148,25 @@
}
// HMG
.logo-img-hmg-style{
left: 245px !important;
left: 225px !important;
}
.qr-img-hmg-style{
left: 430px !important;
}
.cs-card-size{
padding:5px !important;
}
.name-div{
padding: 3px !important;
}
}
@media screen and (min-width: 1px) and (max-width:320px) {
.card-size{
transform: rotate(90deg) !important;
position: relative;
bottom: 3%;
bottom: 10%;
left: 8%;
padding: 10% !important
}
.qr-style{
width: 70% !important;
@ -176,34 +191,47 @@
.logo-img-hmg-style{
width: 380px !important;
position: fixed !important;
left: 200px !important;
left: 240px !important;
height: 81px !important;
bottom: 205px !important;
bottom: 175px !important;
}
.qr-img-hmg-style{
width: 105px !important;
margin-top: 0px !important;
position: relative !important;
left: 390px !important;
top: 160px !important;
top: 150px !important;
}
.cs-card-size{
padding: 15px !important;
padding: 0px !important;
padding-top: 0px !important;
padding-left: 1px !important;
}
}
@media screen and (min-width: 200px) and (max-width: 300px) and (max-height: 700px){
.font-text-style{
font-size: 11px !important;
}
.card-size{
padding: 0% !important;
left: 7% !important;
bottom: 0% !important;
position: relative;
}
}
.card-size{
transform: rotate(90deg);
padding: 6%;
padding: 18%;
}
.qr-style{
width: 70%;
margin-top: 0px;
position: relative;
left: 200%;
left: 135%;
}
.name-ar-style{
font-size: 20px;
@ -234,5 +262,5 @@
.cs-card-size{
transform: rotate(90deg);
padding: 25px;
padding: 0px;
}

@ -53,6 +53,7 @@ export class ConfirmLoginComponent implements OnInit {
public isNFCAvailable = false;
direction: string;
userInfo: any;
public businessInfo: object;
constructor(
public ts: TranslatorService,
@ -294,7 +295,7 @@ export class ConfirmLoginComponent implements OnInit {
private presentBiometricDialog() {
this.faio.show({
title: 'Biometric Authetnciation', // (Android Only) | optional | Default: "<APP_NAME> Biometric Sign On"
subtitle: 'Coolest Plugin ever', // (Android Only) | optional | Default: null
subtitle: 'Mohemm', // (Android Only) | optional | Default: null
description: this.ts.trPK('general', 'auth-please'), // optional | Default: null
fallbackButtonTitle: this.ts.trPK('general', 'use-pin'), // optional | When disableBackup is false defaults to "Use Pin".
disableBackup: true, // optional | default: false
@ -367,10 +368,24 @@ export class ConfirmLoginComponent implements OnInit {
this.authService.checkSMS(request, () => { }, this.ts.trPK('general', 'ok'))
.subscribe((result: SMSCheckResponse) => {
if (this.cs.validResponse(result)) {
this.businessInfo = {
show_business: result.BusinessCardPrivilege,
name_en: result.MemberInformationList[0].EMPLOYEE_NAME_En,
job_en: result.MemberInformationList[0].JOB_NAME_En,
name_ar: result.MemberInformationList[0].EMPLOYEE_NAME_Ar,
job_ar: result.MemberInformationList[0].JOB_NAME_Ar,
mobile: result.MemberInformationList[0].MobileNumberWithZipCode,
qr: result.MemberInformationList[0].BusinessCardQR,
company_logo: result.BC_Logo ? result.BC_Logo: result.CompanyImageURL,
company_url: result.BC_Domain,
company_type: result.CompanyMainCompany,
email: result.MemberInformationList[0].EMPLOYEE_EMAIL_ADDRESS
}
// Wifi Credientials
CommonService.MOHEMM_WIFI_SSID = result.Mohemm_Wifi_SSID;
CommonService.MOHEMM_WIFI_PASSWORD = result.Mohemm_Wifi_Password;
localStorage.setItem('bussiness-card-info', JSON.stringify(this.businessInfo));
AuthenticationService.servicePrivilage = result.Privilege_List;
this.authService.setAuthenticatedUser(result).subscribe(() => {

@ -111,6 +111,7 @@ import { GenericHeaderComponent } from './ui/generic-header/generic-header.compo
import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { AttendanceOptionsComponent } from '../home/attendance-options/attendance-options.component';
import { CardCalendarComponent } from './ui/card-calendar/card-calendar.component';
import { WorklistSettingComponent } from '../notification/worklist-setting/worklist-setting.component';
@NgModule({
imports: [
@ -194,7 +195,8 @@ import { CardCalendarComponent } from './ui/card-calendar/card-calendar.componen
Modal,
GenericHeaderComponent,
AttendanceOptionsComponent,
CardCalendarComponent
CardCalendarComponent,
WorklistSettingComponent
],
exports: [
FabButtonComponent,
@ -306,7 +308,7 @@ import { CardCalendarComponent } from './ui/card-calendar/card-calendar.componen
BarcodeScanner,
BackgroundGeolocation
],
entryComponents: [DateInfoModalComponent],
entryComponents: [DateInfoModalComponent, WorklistSettingComponent],
})
export class HmgCommonModule { }

@ -30,6 +30,12 @@
</ion-buttons> -->
</ion-col>
<ion-col *ngIf="worklistSetting" [size]="2" style="padding: 0;" (click)="openNotifictionSetting()">
<div class="profile-image-container">
<ion-icon name='settings' style="width: 30px;height: 30px;margin-top: 5px; color: white;"></ion-icon>
</div>
</ion-col>
</ion-row>
</ion-toolbar>
</ion-header>

@ -1,4 +1,6 @@
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { WorklistSettingComponent } from 'src/app/notification/worklist-setting/worklist-setting.component';
import { CommonService } from '../../services/common/common.service';
@Component({
@ -16,10 +18,13 @@ export class GenericHeaderComponent implements OnInit {
@Input() updateDirection = false;
@Input() headerText = '';
@Input() backLink: string;
@Input() worklistSetting = false;
@Output() trigger = new EventEmitter();
public close = 'assets/imgs/cancel.png';
constructor(public common: CommonService) { }
constructor(
public common: CommonService,
public modalController: ModalController) { }
ngOnInit() {
if (this.updateDirection) {
@ -35,4 +40,12 @@ export class GenericHeaderComponent implements OnInit {
this.trigger.emit();
}
async openNotifictionSetting() {
const modal = await this.modalController.create({
component: WorklistSettingComponent,
cssClass: 'app-update-modal-css',
});
return await modal.present();
}
}

@ -796,7 +796,7 @@ export class HomePage implements OnInit {
async openBusinessCard() {
const modal = await this.modalController.create({
component: BusinessCardComponent,
cssClass: 'digital-id-modal-css'
cssClass: 'business-card-modal-css'
});
return await modal.present();
}

@ -1,6 +1,7 @@
<app-generic-header
showBack="true"
backLink="/home"
[worklistSetting] ='true'
[headerText]="'home, worklist' | translate">
</app-generic-header>

@ -76,6 +76,7 @@ export class HomeComponent implements OnInit {
public totalPR = 0;
public totalMR = 0;
public totalIC = 0;
public totalStamp = 0;
public showChart = false;
@ -88,16 +89,17 @@ export class HomeComponent implements OnInit {
public data = {
datasets: [
{
data: [0, 0, 0, 0, 0, 0],
data: [0, 0, 0, 0, 0, 0, 0],
backgroundColor: [
'#18a169',
'#3cb9d5',
'#114475',
'#38c9b3',
'#cc3232',
'#9e7e97'
'#9e7e97',
'#ff9800'
],
borderWidth: 5
borderWidth: 6
}]
};
public filters = [
@ -156,6 +158,14 @@ export class HomeComponent implements OnInit {
color: '#9e7e97',
key: 'INVITEM',
disable: false
},
{
value: 0,
name: 'STAMP',
active: false,
color: '#ff9800',
key: 'STAMP',
disable: false
}
];
@ -264,6 +274,10 @@ export class HomeComponent implements OnInit {
this.data.datasets[0].data[5] = 0;
}
if (this.totalStamp === 0) {
this.data.datasets[0].data[6] = 0;
}
const openNotificationsArray = this.worklistNotifications.GetOpenNotificationsList;
for (const notification of openNotificationsArray) {
@ -282,6 +296,9 @@ export class HomeComponent implements OnInit {
} else if (notification.ITEM_TYPE === 'INVITEM') {
this.filters[6].value = this.totalIC;
this.data.datasets[0].data[5] = notification.OPEN_NTF_NUMBER;
} else if (notification.ITEM_TYPE === 'STAMP') {
this.filters[7].value = this.totalStamp;
this.data.datasets[0].data[6] = notification.OPEN_NTF_NUMBER;
}
}
// this.data.datasets[0].data[4] = this.ITGCount;
@ -440,6 +457,8 @@ export class HomeComponent implements OnInit {
this.totalMR = this.totalMR + 1;
} else if (workList.ITEM_TYPE === 'INVITEM') {
this.totalIC = this.totalIC + 1;
} else if (workList.ITEM_TYPE === 'STAMP') {
this.totalStamp = this.totalStamp + 1;
}
}

@ -88,6 +88,7 @@ export class WorklistMainComponent implements OnInit {
newArr: any = [];
selEmp: any;
subordinatesleaveList: any = [];
allSubordinatesleaveList: any = [];
private WorkListSubmitterInfoObj: WorkListSubmitterInfoRequest;
submitterInfoRes: any;
approveDis: boolean = false;
@ -986,7 +987,14 @@ export class WorklistMainComponent implements OnInit {
public handleSubordinatesLeavesResult(result) {
if (this.common.validResponse(result)) {
if (this.common.hasData(result.SubordinatesOnLeavesList)) {
this.subordinatesleaveList = result.SubordinatesOnLeavesList;
this.allSubordinatesleaveList = result.SubordinatesOnLeavesList;
// this.subordinatesleaveList.push(this.allSubordinatesleaveList.find(
// el => el.EMPLOYEE_NUMBER !== this.getPassNotificationDetails.SELECTED_EMPLOYEE_NUMBER));
this.allSubordinatesleaveList.forEach(element => {
if (element.EMPLOYEE_NUMBER !== this.getPassNotificationDetails.SELECTED_EMPLOYEE_NUMBER) {
this.subordinatesleaveList.push(element);
}
});
}
}
}

@ -0,0 +1,32 @@
<ion-header>
<ion-toolbar class="header-toolbar">
<ion-title color="light">{{ 'worklist, worklist-setting' | translate}} </ion-title>
<ion-buttons slot="primary">
<ion-button style="background: none !important;" (click)="dismiss()">
<ion-icon slot="icon-only" name="close"></ion-icon>
</ion-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content>
<div style="padding: 5px;">
<h3 style="font-weight: bold;">{{ 'worklist, turn-on-notification' | translate}}</h3>
</div>
<br>
<ion-list>
<ion-item *ngFor="let data of notificationList">
<ion-label>
<p *ngIf="direction == 'ltr'" style="color: black; padding: 5px; font-size: 16px; font-family: 'Poppins'; padding-bottom: 10px;">{{data.nameEn}}</p>
<p *ngIf="direction == 'rtl'" style="color: black; padding: 5px; font-size: 16px; font-family: 'Poppins'; padding-bottom: 10px;">{{data.nameAr}}</p>
</ion-label>
<ion-toggle [checked]="data.isChecked"></ion-toggle>
</ion-item>
<br>
</ion-list>
</ion-content>
<ion-footer>
<ion-button style="font-size: 16px !important; width:371px; --background: #259CB8; background: white;" expand="block" (click)='dismiss()'>{{ 'worklist, save-changes' | translate}}</ion-button>
</ion-footer>

@ -0,0 +1,7 @@
.header-toolbar{
--background: #269DB8;
}
ion-toggle{
--background-checked: #269DB8;
}

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

@ -0,0 +1,60 @@
import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-worklist-setting',
templateUrl: './worklist-setting.component.html',
styleUrls: ['./worklist-setting.component.scss'],
})
export class WorklistSettingComponent implements OnInit {
notificationList = [
{
id: 0,
nameEn: "Human Resource (HR)",
nameAr: "الموارد البشرية (HR)",
isChecked: false
},
{
id: 1,
nameEn: "Purchase Order (PO)",
nameAr: "امر شراء (PO)",
isChecked: false
},
{
id: 2,
nameEn: "Purchase Requesr (PR)",
nameAr: "طلب شراء (PR)",
isChecked: false
},
{
id: 3,
nameEn: "Move Request (MR)",
nameAr: "طلب نقل (MR)",
isChecked: false
},
{
id: 4,
nameEn: "Item Creation (IC)",
nameAr: "انشاء عنصر (IC)",
isChecked: false
}
];
public direction: string;
constructor(public modalController: ModalController, public ts: TranslatorService) { }
ngOnInit() {
this.direction = TranslatorService.getCurrentDirection();
}
dismiss() {
this.modalController.dismiss({
'dismissed': true
});
}
}

@ -37,25 +37,32 @@
</div>
<div class="user-actions">
<ion-row class="ion-justify-content-center">
<ion-col [size]="4" (click)="selectedSegment('personal')">
<ion-col [size]="3" (click)="selectedSegment('personal')">
<div class="action-button col-button">
<img *ngIf="!personalInfoSegment" style="width: 40px;" src="../assets/imgs/profile-icons/info@2x.png">
<img *ngIf="personalInfoSegment" style="width: 40px;" src="../assets/imgs/profile-icons/info-a@2x.png">
<span class="btnTitle">{{ts.trPK('general','personal-info')}}</span>
</div>
</ion-col>
<ion-col [size]="4" (click)="selectedSegment('basic')">
<ion-col [size]="3" (click)="selectedSegment('basic')">
<div class="action-button col-button">
<img *ngIf="!basicDetailsSegment" style="width: 40px;" src="../assets/imgs/profile-icons/basic-detail@2x.png">
<img *ngIf="basicDetailsSegment" style="width: 40px;" src="../assets/imgs/profile-icons/basic-detail@21.png">
<span class="btnTitle">{{ts.trPK('general','basic-details')}}</span>
</div>
</ion-col>
<ion-col [size]="4" (click)="selectedSegment('address')">
<ion-col [size]="3" (click)="selectedSegment('address')">
<div class="action-button col-button">
<img *ngIf="!addressSegment" style="width: 40px;" src="../assets/imgs/profile-icons/main-address@2x.png">
<img *ngIf="addressSegment" style="width: 40px;" src="../assets/imgs/profile-icons/main address-a@2x.png">
<span class="btnTitle">{{ts.trPK('userProfile','address')}} </span>
<span class="btnTitle">{{ts.trPK('userProfile','contact-details')}} </span>
</div>
</ion-col>
<ion-col [size]="3" (click)="selectedSegment('family')">
<div class="action-button col-button">
<img *ngIf="!familyMemberSegment" style="width: 40px;" src="../assets/imgs/profile-icons/family.svg">
<img *ngIf="familyMemberSegment" style="width: 40px;" src="../assets/imgs/profile-icons/family-g.svg">
<span class="btnTitle">{{ts.trPK('userProfile','family-members')}}</span>
</div>
</ion-col>
</ion-row>
@ -110,7 +117,16 @@
</ion-grid>
</div>
<br>
<br><br>
<div style="display: flex; justify-content: center;">
<div [ngClass]='profileProgress > 0 && profileProgress >= 25 ? "profile-green":"profile-gray"'></div>
<div [ngClass]='profileProgress >= 25 && profileProgress >= 50 ? "profile-green":"profile-gray"'></div>
<div [ngClass]='profileProgress >= 50 && profileProgress >= 75? "profile-green":"profile-gray"'></div>
<div [ngClass]='profileProgress >= 85 ? "profile-green":"profile-gray"'></div>
</div>
<div [ngClass]='direction === "ltr"? "profile-compilation-en":"profile-compilation-ar"'>{{ts.trPK('userProfile','profile-compitation')}} {{profileProgress}}%</div>
<div *ngIf="familyMemberSegment" [ngClass]='direction === "ltr"? "profile-note-en":"profile-note-ar"'>{{ts.trPK('userProfile','note-part-1')}}<br>
{{ts.trPK('userProfile','note-part-2')}}</div>
<ion-card *ngIf="personalInfoSegment" [ngClass]="direction === 'ltr'? 'card-size-info-en': 'card-size-info-ar' ">
<ion-card-content>
@ -193,6 +209,39 @@
</ion-card-content>
</ion-card>
<ion-card *ngIf="addressSegment" [ngClass]="direction === 'ltr'? 'card-size-info-en': 'card-size-info-ar' ">
<ion-card-content *ngIf="!editAddress && employeeAdress">
<ion-grid>
<ion-row style="width: 113%;">
<ion-col size="10">
<ion-label>
<h1 [ngClass]="direction === 'ltr'? 'header-label-text-form': 'header-label-text-form-ar' ">{{ts.trPK('userProfile','phone-no')}}</h1>
</ion-label>
</ion-col>
<ion-col size="2" *ngIf="addressSubMenu && addressSubMenu.UPDATE_BUTTON === 'Y'" (click)="allowEdit('address')">
<img style="width: 18px; height: 18px;" src="../assets/imgs/profile-icons/editing@2x.png">
</ion-col>
<ion-col size="2" *ngIf="addressSubMenu && addressSubMenu.ADD_BUTTON === 'Y'" (click)="allowEdit('address')">
<ion-icon class="add-icon-styling" name="add"></ion-icon>
</ion-col>
</ion-row>
</ion-grid>
<br>
<ion-label>
<h3 [ngClass]="direction === 'ltr'? 'type-label-text-form': 'type-label-text-form-ar' " >{{ts.trPK('general','mobile')}}</h3>
</ion-label>
<h3 [ngClass]="direction === 'ltr'? 'result-label-text-form': 'result-label-text-form-ar' " >0567845661</h3>
<br>
<br>
<ion-label>
<h3 [ngClass]="direction === 'ltr'? 'type-label-text-form': 'type-label-text-form-ar' " >{{ts.trPK('userProfile','work')}}</h3>
</ion-label>
<h3 [ngClass]="direction === 'ltr'? 'result-label-text-form': 'result-label-text-form-ar' " >4922</h3>
<br>
</ion-card-content>
</ion-card>
<ion-card *ngIf="addressSegment" [ngClass]="direction === 'ltr'? 'card-size-info-en': 'card-size-info-ar' ">
<ion-card-content *ngIf="!editAddress && employeeAdress">
<ion-grid>
@ -244,7 +293,65 @@
<br>
</ion-card-content>
</ion-card>
<!-- <ion-card *ngIf="familyMemberSegment" [ngClass]="direction === 'ltr'? 'card-size-info-en': 'card-size-info-ar' ">
<ion-card-content>
<ion-grid>
<ion-row>
<ion-col size='5'>
<h2 style="font-weight: bold; padding-top: 15px;">ENAD, Hilal</h2>
</ion-col>
<ion-col size='3' offset='2'>
<div class='family-member-button'>
<ion-icon style="width: 20px;" name="create"></ion-icon>
<p>update</p>
</div>
</ion-col>
</ion-row>
<ion-row>
<ion-col size='5'>
<ion-label><p style="font-weight: bold;">Father</p></ion-label>
</ion-col>
<ion-col size='3' offset='2'>
<div class='family-member-button'>
<ion-icon name="trash" style="width: 20px; height: 20px; color: #CA3332;"></ion-icon>
<p style="color: #CA3332;">Remove</p>
</div>
</ion-col>
</ion-row>
</ion-grid>
</ion-card-content>
</ion-card> -->
<div *ngIf="familyMemberSegment">
<br>
<div *ngFor='let data of familyMemberData' style="background: white; border-radius: 20px; margin-left: 15px; margin-right: 15px; margin-bottom: 15px;">
<ion-grid>
<ion-row>
<ion-col size='4'>
<h2 style="font-weight: bold; font-size: 17px;">{{data.name}}</h2>
</ion-col>
<ion-col [size]='direction === "ltr" ? 5 : 8 ' [offset]='direction === "ltr" ? 3 : 0 '>
<div class='family-member-button' style="height: 32px !important;" (click)='updateFunction()'>
<ion-icon style="width: 20px;" name="create"></ion-icon>
<p>{{ts.trPK('userProfile','update')}}</p>
</div>
</ion-col>
</ion-row>
<ion-row>
<ion-col size='4'>
<ion-label><p style="font-weight: bold; font-size: 17px;">{{data.relation}}</p></ion-label>
</ion-col>
<ion-col [size]='direction === "ltr" ? 5 : 8 ' [offset]='direction === "ltr" ? 3 : 0 '>
<div class='family-member-button' style="height: 32px !important;" (click)='RemoveFunction()'>
<ion-icon name="trash" style="width: 20px; height: 20px; color: #CA3332;"></ion-icon>
<p style="color: #CA3332;">{{ts.trPK('userProfile','remove')}}</p>
</div>
</ion-col>
</ion-row>
</ion-grid>
</div>
</div>
<!-- <ion-footer *ngIf="editBasic||editAddress">
<ion-grid>
<ion-row>

@ -1168,8 +1168,10 @@ $actionBtnSize: 36px;
.card-size-info-en{
// width: 88%;
// left: 2%;
width: 89%;
left: 10px;
// width: 89%;
// left: 10px;
width: 90%;
left: 0px;
}
.card-size-info-ar{
@ -1355,4 +1357,50 @@ $actionBtnSize: 36px;
}
.create-edit{
font-size: 20px;
}
.profile-green{
background: #20A16A;
margin-right: 5px;
width: 80px;
height: 8px;
border-radius: 5px;
}
.profile-gray{
background: #D9D9D9;
margin-right: 5px;
width: 80px;
height: 8px;
border-radius: 5px;
}
.family-member-button{
width: 115px;
height: 45px;
background-color: #F5F5F5;
display: flex;
align-items: center;
padding: 16px;
border-radius: 20px;
box-shadow: 0px 0px 5px #00000029;
}
.profile-note-en{
margin-left: 20px;
margin-top: 5px;
font-size: 13px;
}
.profile-note-ar{
margin-right: 20px;
margin-top: 5px;
font-size: 13px;
}
.profile-compilation-en{
margin-left: 20px;
margin-top: 5px;
font-size: 13px;
}
.profile-compilation-ar{
margin-left: 20px;
margin-top: 5px;
font-size: 13px;
}

@ -20,6 +20,21 @@ import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-respo
})
export class HomeComponent implements OnInit {
public familyMemberData = [
{
name: 'test',
relation: 'Father'
},
{
name: 'test 1',
relation: 'Son'
},
{
name: 'test 2',
relation: 'daughter'
},
]
public direction: string;
public setImage: any;
public user_image: any = '../assets/imgs/profile.png';
@ -28,6 +43,7 @@ export class HomeComponent implements OnInit {
public performanceData: any = [];
public static PERFORMANCE_DATA = 'perAppData';
public personalInfoSegment = false;
public familyMemberSegment = false;
public basicDetailsSegment = false;
public addressSegment = false;
public editBasic = false;
@ -51,6 +67,7 @@ export class HomeComponent implements OnInit {
public country: any;
public employeeAdress: any = [];
public jobName: any;
public profileProgress = 84;
constructor(
public ts: TranslatorService,
@ -75,18 +92,27 @@ export class HomeComponent implements OnInit {
this.personalInfoSegment = true;
this.basicDetailsSegment = false;
this.addressSegment = false;
this.familyMemberSegment = false;
} else if (this.targetValue === 'basicDetails') {
this.personalInfoSegment = false;
this.basicDetailsSegment = true;
this.addressSegment = false;
this.familyMemberSegment = false;
} else if (this.targetValue === 'address') {
this.personalInfoSegment = false;
this.basicDetailsSegment = false;
this.addressSegment = true;
this.familyMemberSegment = false;
} else if (this.targetValue === 'fmaily') {
this.personalInfoSegment = false;
this.basicDetailsSegment = false;
this.addressSegment = false;
this.familyMemberSegment = true;
} else {
this.personalInfoSegment = true;
this.basicDetailsSegment = false;
this.addressSegment = false;
this.familyMemberSegment = false;
}
});
}
@ -260,6 +286,7 @@ export class HomeComponent implements OnInit {
this.addressSegment = false;
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = false;
break;
case "basic":
this.personalInfoSegment = false;
@ -267,6 +294,7 @@ export class HomeComponent implements OnInit {
this.addressSegment = false;
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = false;
break;
case "address":
this.personalInfoSegment = false;
@ -274,6 +302,15 @@ export class HomeComponent implements OnInit {
this.addressSegment = true;
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = false;
break;
case "family":
this.personalInfoSegment = false;
this.basicDetailsSegment = false;
this.addressSegment = false;
this.editBasic = false;
this.editAddress = false;
this.familyMemberSegment = true;
break;
}
}
@ -372,5 +409,18 @@ export class HomeComponent implements OnInit {
console.log(response);
})
}
updateFunction() {
// this.cs.presentAlert(this.ts.trPK('general', 'error-itg'));
this.cs.presentConfirmDialog(this.ts.trPK('userProfile', 'update-msg'),
() => {
this.cs.greenToastPK("userProfile", "update-confirm");
});
}
RemoveFunction() {
this.cs.presentConfirmDialog(this.ts.trPK('userProfile', 'remove-msg'),
() => {
this.cs.redToastPK("userProfile", "remove-confirm");
});
}
}

@ -33,9 +33,9 @@
<!-- //// okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'/// -->
<div class="selectItem">
<label class="label">{{'vacation-rule, itemType' | translate}}</label>
<select class="label-Select" [(ngModel)]="index" (ionChange)="vacationRuleSel($event)" required>
<option [selected]="x.ITEM_TYPE_DISPLAY_NAME" value="{{i}}"
*ngFor="let x of ruleTypeList; let i=index;">
<select class="label-Select" name="selectAbsenceType" #selectAbsenceType="ngModel" [(ngModel)]="index" (change)="vacationRuleSel()" required>
<option value="noType" selected hidden selected><p>{{ts.trPK('absenceList','selectType')}}</p></option>
<option value="{{i}}" *ngFor="let x of ruleTypeList; let i=index;">
{{x.ITEM_TYPE_DISPLAY_NAME}} </option>
</select>
</div>

@ -26,7 +26,7 @@ import { WorkListReplacementRollComponent } from 'src/app/notification/work-list
})
export class VacationTypeComponent implements OnInit {
ruleTypeList: any;
index: any;
index = 'noType';
vactionRuleSelected:any =-1;
notificationTypeSelected: number;
notification_list: any; ////
@ -165,13 +165,11 @@ export class VacationTypeComponent implements OnInit {
}
vacationRuleSel(event){
this.vactionRuleSelected=event.detail.value;
vacationRuleSel(){
this.vactionRuleSelected = this.index;
if(this.notificationTypeShow){
//this.notificationTypeShow = false
this.notificationTypeShow = false
this.notifTypeSelP2 = "*";
//this.part3show = false
}
if (this.createVacationRuleShow){
this.createVacationRuleShow = false
@ -180,11 +178,6 @@ export class VacationTypeComponent implements OnInit {
}
console.log("event: "+ event.detail.value);
}
notificationSel(event){

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="39" height="39" viewBox="0 0 39 39">
<g id="Group_7680" data-name="Group 7680" transform="translate(-111 -245.557)">
<circle id="Ellipse_152" data-name="Ellipse 152" cx="19.5" cy="19.5" r="19.5" transform="translate(111 245.557)" fill="#259cb8"/>
<path id="family_3_" data-name="family (3)" d="M9.537,15.144v.993A3.01,3.01,0,0,1,6.53,19.144H2.647A.344.344,0,0,1,2.3,18.8V16.984A2.186,2.186,0,0,1,4.487,14.8H9.193A.344.344,0,0,1,9.537,15.144ZM6.53,19.831c-2.567,0-3.49.008-3.871,0a.343.343,0,0,0-.355.343v.637a2.977,2.977,0,1,0,5.953-.024v-.852a.343.343,0,0,0-.458-.324A3.674,3.674,0,0,1,6.53,19.831Zm4.753,11.8a3.875,3.875,0,0,1-1.948.006.172.172,0,0,0-.177.274,1.486,1.486,0,0,0,2.3-.007A.171.171,0,0,0,11.283,31.633Zm1.506-.259h-.071a.339.339,0,0,0-.321.237,2.184,2.184,0,0,1-3.968.451,2.276,2.276,0,0,1-.208-.449.344.344,0,0,0-.325-.238H7.806a2.062,2.062,0,0,0-2.062,2.062v.344a.344.344,0,0,0,.344.344h8.42a.344.344,0,0,0,.344-.344v-.344A2.062,2.062,0,0,0,12.789,31.374ZM2.307,30.112H.344A.344.344,0,0,0,0,30.455v3.324a.344.344,0,0,0,.344.344H2.307a.344.344,0,0,0,.344-.344V30.455A.344.344,0,0,0,2.307,30.112Zm5.736-5.361a.344.344,0,0,0-.181-.625l-.1,0a.284.284,0,0,0-.266.184,2.33,2.33,0,0,1-2.142,1.547,2.362,2.362,0,0,1-2.182-1.591.208.208,0,0,0-.2-.14A2.976,2.976,0,0,0,0,27.1v1.98a.344.344,0,0,0,.344.344H2.307a.344.344,0,0,0,.344-.344v-.144a.351.351,0,0,1,.321-.354.344.344,0,0,1,.366.343v4.854a.344.344,0,0,0,.344.344H4.713a.343.343,0,0,0,.344-.35c0-.089,0-.195,0-.338a2.754,2.754,0,0,1,2-2.644.344.344,0,0,0,.178-.543,3.873,3.873,0,0,1,.813-5.5Zm9.574-.626a.279.279,0,0,0-.265.193,2.209,2.209,0,0,1-2.046,1.526,2.305,2.305,0,0,1-2.07-1.545.277.277,0,0,0-.258-.174c-.077,0-.156,0-.239,0a.344.344,0,0,0-.186.625,3.873,3.873,0,0,1,.81,5.5.344.344,0,0,0,.177.543,2.754,2.754,0,0,1,2,2.645c0,.143,0,.249,0,.338a.343.343,0,0,0,.344.35h1.031a.344.344,0,0,0,.344-.344V28.925a.344.344,0,0,1,.366-.343.351.351,0,0,1,.321.354v.144a.344.344,0,0,0,.344.344h1.964a.344.344,0,0,0,.344-.344V27.1A2.976,2.976,0,0,0,17.618,24.124Zm.326,6.331v3.324a.344.344,0,0,0,.344.344h1.964a.344.344,0,0,0,.344-.344V30.455a.344.344,0,0,0-.344-.344H18.287A.344.344,0,0,0,17.944,30.455ZM15.374,14.82A4.284,4.284,0,0,0,11.052,19.1V23.36a.344.344,0,0,0,.469.32,3.654,3.654,0,0,1,.567-.166.345.345,0,0,0,.207-.544,3.711,3.711,0,0,1-.722-2.2V19.442a1.031,1.031,0,0,1,1.043-1.031,12.582,12.582,0,0,0,4.157-.649,1.618,1.618,0,0,1,2.133,1.532v1.5a3.678,3.678,0,0,1-.721,2.183.343.343,0,0,0,.2.542,3.63,3.63,0,0,1,.737.242.344.344,0,0,0,.488-.312v-4.3a4.315,4.315,0,0,0-4.237-4.334Zm-5.076,9.9a3.179,3.179,0,1,0,3.179,3.179A3.183,3.183,0,0,0,10.3,24.715Zm4.123-.347a.172.172,0,0,0-.164.285,1.382,1.382,0,0,0,2.176-.062.172.172,0,0,0-.182-.274A3.688,3.688,0,0,1,14.421,24.368Zm2.572-5.954a13.252,13.252,0,0,1-4.385.684.343.343,0,0,0-.348.344v1.326a2.98,2.98,0,1,0,5.959.024v-1.5A.93.93,0,0,0,16.993,18.414ZM4.35,24.35a.172.172,0,0,0-.171.282,1.545,1.545,0,0,0,2.381-.053.172.172,0,0,0-.182-.275A3.669,3.669,0,0,1,4.35,24.35Z" transform="translate(120.203 239.361)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="39" height="39" viewBox="0 0 39 39">
<g id="Group_7680" data-name="Group 7680" transform="translate(-111 -245.557)">
<circle id="Ellipse_152" data-name="Ellipse 152" cx="19.5" cy="19.5" r="19.5" transform="translate(111 245.557)" fill="#4d4d4d"/>
<path id="family_3_" data-name="family (3)" d="M9.537,15.144v.993A3.01,3.01,0,0,1,6.53,19.144H2.647A.344.344,0,0,1,2.3,18.8V16.984A2.186,2.186,0,0,1,4.487,14.8H9.193A.344.344,0,0,1,9.537,15.144ZM6.53,19.831c-2.567,0-3.49.008-3.871,0a.343.343,0,0,0-.355.343v.637a2.977,2.977,0,1,0,5.953-.024v-.852a.343.343,0,0,0-.458-.324A3.674,3.674,0,0,1,6.53,19.831Zm4.753,11.8a3.875,3.875,0,0,1-1.948.006.172.172,0,0,0-.177.274,1.486,1.486,0,0,0,2.3-.007A.171.171,0,0,0,11.283,31.633Zm1.506-.259h-.071a.339.339,0,0,0-.321.237,2.184,2.184,0,0,1-3.968.451,2.276,2.276,0,0,1-.208-.449.344.344,0,0,0-.325-.238H7.806a2.062,2.062,0,0,0-2.062,2.062v.344a.344.344,0,0,0,.344.344h8.42a.344.344,0,0,0,.344-.344v-.344A2.062,2.062,0,0,0,12.789,31.374ZM2.307,30.112H.344A.344.344,0,0,0,0,30.455v3.324a.344.344,0,0,0,.344.344H2.307a.344.344,0,0,0,.344-.344V30.455A.344.344,0,0,0,2.307,30.112Zm5.736-5.361a.344.344,0,0,0-.181-.625l-.1,0a.284.284,0,0,0-.266.184,2.33,2.33,0,0,1-2.142,1.547,2.362,2.362,0,0,1-2.182-1.591.208.208,0,0,0-.2-.14A2.976,2.976,0,0,0,0,27.1v1.98a.344.344,0,0,0,.344.344H2.307a.344.344,0,0,0,.344-.344v-.144a.351.351,0,0,1,.321-.354.344.344,0,0,1,.366.343v4.854a.344.344,0,0,0,.344.344H4.713a.343.343,0,0,0,.344-.35c0-.089,0-.195,0-.338a2.754,2.754,0,0,1,2-2.644.344.344,0,0,0,.178-.543,3.873,3.873,0,0,1,.813-5.5Zm9.574-.626a.279.279,0,0,0-.265.193,2.209,2.209,0,0,1-2.046,1.526,2.305,2.305,0,0,1-2.07-1.545.277.277,0,0,0-.258-.174c-.077,0-.156,0-.239,0a.344.344,0,0,0-.186.625,3.873,3.873,0,0,1,.81,5.5.344.344,0,0,0,.177.543,2.754,2.754,0,0,1,2,2.645c0,.143,0,.249,0,.338a.343.343,0,0,0,.344.35h1.031a.344.344,0,0,0,.344-.344V28.925a.344.344,0,0,1,.366-.343.351.351,0,0,1,.321.354v.144a.344.344,0,0,0,.344.344h1.964a.344.344,0,0,0,.344-.344V27.1A2.976,2.976,0,0,0,17.618,24.124Zm.326,6.331v3.324a.344.344,0,0,0,.344.344h1.964a.344.344,0,0,0,.344-.344V30.455a.344.344,0,0,0-.344-.344H18.287A.344.344,0,0,0,17.944,30.455ZM15.374,14.82A4.284,4.284,0,0,0,11.052,19.1V23.36a.344.344,0,0,0,.469.32,3.654,3.654,0,0,1,.567-.166.345.345,0,0,0,.207-.544,3.711,3.711,0,0,1-.722-2.2V19.442a1.031,1.031,0,0,1,1.043-1.031,12.582,12.582,0,0,0,4.157-.649,1.618,1.618,0,0,1,2.133,1.532v1.5a3.678,3.678,0,0,1-.721,2.183.343.343,0,0,0,.2.542,3.63,3.63,0,0,1,.737.242.344.344,0,0,0,.488-.312v-4.3a4.315,4.315,0,0,0-4.237-4.334Zm-5.076,9.9a3.179,3.179,0,1,0,3.179,3.179A3.183,3.183,0,0,0,10.3,24.715Zm4.123-.347a.172.172,0,0,0-.164.285,1.382,1.382,0,0,0,2.176-.062.172.172,0,0,0-.182-.274A3.688,3.688,0,0,1,14.421,24.368Zm2.572-5.954a13.252,13.252,0,0,1-4.385.684.343.343,0,0,0-.348.344v1.326a2.98,2.98,0,1,0,5.959.024v-1.5A.93.93,0,0,0,16.993,18.414ZM4.35,24.35a.172.172,0,0,0-.171.282,1.545,1.545,0,0,0,2.381-.053.172.172,0,0,0-.182-.275A3.669,3.669,0,0,1,4.35,24.35Z" transform="translate(120.203 239.361)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@ -1454,6 +1454,54 @@
"postal-code": {
"en": "Postal Code",
"ar": "الرمز البريدي"
},
"contact-details":{
"en":"Contact Details",
"ar":"بيانات المتصل"
},
"family-members":{
"en":"Family Members",
"ar":"أفراد الأسرة"
},
"profile-compitation":{
"en":"Profile Completions",
"ar":"استكمال الملف الشخصي"
},
"work":{
"en":"Work",
"ar":"العمل"
},
"update":{
"en":"Update",
"ar":"تعديل"
},
"remove":{
"en":"Remove",
"ar":"حذف"
},
"update-msg":{
"en":"Are you sure you want update this member ?",
"ar":"هل انت متاكد من تعديل هذا العضو؟"
},
"remove-msg":{
"en":"Are you sure you want rmove this member ?",
"ar":"هل انت متاكد من حذف هذا العضو ؟"
},
"update-confirm":{
"en":"member updated successfully",
"ar":"تم تعديل البيانات بنجاح"
},
"remove-confirm":{
"en":"member removed successfully",
"ar":"تم حذف البيانات بنجاح"
},
"note-part-1":{
"en":"Add or update information about your beneficiaries of dependants.",
"ar":"قم بإضافة أو تحديث المعلومات حول المستفيدين من المعالين."
},
"note-part-2":{
"en":"Note: People you enter here become dependants or beneficiaries only after you complete benefits enrollment.",
"ar":"ملاحظة: الأشخاص الذين تدخلهم هنا يصبحون معالين أو مستفيدين فقط بعد إكمال تسجيل المزايا."
}
},
"changePassword": {
@ -1826,6 +1874,10 @@
"tickets-balance": {
"en": "Ticket Balance",
"ar": "رصيد التذاكر"
},
"selectType": {
"en": "Select Type",
"ar": "اختر النوع"
}
},
"accrualBalances": {
@ -2502,6 +2554,18 @@
"urgent": {
"en": "Urgent",
"ar": "عاجل"
},
"worklist-setting":{
"en":"WORKLIST SETTINGS",
"ar":"اعدادات اشعارات"
},
"turn-on-notification":{
"en":"Turn on notification for",
"ar":"تفعيل الاشعارات "
},
"save-changes":{
"en":"Save Changes",
"ar":"حفظ التغيرات"
}
},
"worklistMain": {

@ -1561,6 +1561,15 @@ table.monthview-datetable th small {
position: absolute;
display: block;
}
.business-card-modal-css .modal-wrapper{
height: 500px;
width: 300px;
top: 50%;
position: absolute;
display: block;
margin-top: -250px;
}
.app-update-modal-css .modal-wrapper{
border-radius: 0px !important;
}

Loading…
Cancel
Save