new design added with worklist and others

MOE_DEV_NEW_TEMPORARY_DESIGN
Sultan Khan 5 years ago
parent 0aafef42ea
commit df3abc660a

@ -27,17 +27,17 @@
"@ionic-native/background-geolocation": "^5.30.0",
"@ionic-native/badge": "^5.18.0",
"@ionic-native/barcode-scanner": "^5.18.0",
"@ionic-native/base64": "^5.18.0",
"@ionic-native/base64": "^5.32.1",
"@ionic-native/ble": "^5.18.0",
"@ionic-native/camera": "^5.18.0",
"@ionic-native/core": "^5.8.0",
"@ionic-native/date-picker": "^5.10.0",
"@ionic-native/device": "^5.18.0",
"@ionic-native/diagnostic": "^5.18.0",
"@ionic-native/file": "^5.18.0",
"@ionic-native/file-path": "^5.18.0",
"@ionic-native/file": "^5.32.1",
"@ionic-native/file-path": "^5.32.1",
"@ionic-native/fingerprint-aio": "^5.18.0",
"@ionic-native/firebase-x": "^5.21.5",
"@ionic-native/firebase-x": "^5.32.1",
"@ionic-native/geolocation": "^5.10.0",
"@ionic-native/globalization": "^5.18.0",
"@ionic-native/health": "^5.4.0",
@ -46,13 +46,13 @@
"@ionic-native/launch-navigator": "^5.17.0",
"@ionic-native/local-notifications": "^5.17.0",
"@ionic-native/native-storage": "^5.17.0",
"@ionic-native/nfc": "^5.30.0",
"@ionic-native/nfc": "^5.32.1",
"@ionic-native/open-native-settings": "^5.14.0",
"@ionic-native/splash-screen": "^5.0.0",
"@ionic-native/sqlite": "^5.18.0",
"@ionic-native/status-bar": "^5.0.0",
"@ionic-native/themeable-browser": "^5.18.0",
"@ionic-native/wifi-wizard-2": "^5.31.1",
"@ionic-native/wifi-wizard-2": "^5.32.1",
"@ionic-native/zbar": "^5.10.0",
"@ionic/angular": "^4.1.0",
"@ng-bootstrap/ng-bootstrap": "^4.2.2",
@ -79,7 +79,7 @@
"cordova-plugin-device": "^2.0.3",
"cordova-plugin-dialogs": "^2.0.2",
"cordova-plugin-file": "^6.0.2",
"cordova-plugin-filepath": "^1.5.6",
"cordova-plugin-filepath": "^1.6.0",
"cordova-plugin-fingerprint-aio": "^3.0.0",
"cordova-plugin-firebasex": "^7.0.2",
"cordova-plugin-geolocation": "^4.0.2",
@ -93,18 +93,17 @@
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-themeablebrowser": "^0.2.18",
"cordova-plugin-whitelist": "^1.3.4",
"cordova-plugin-wifiwizard2": "^3.1.1",
"cordova-sqlite-storage": "^3.4.0",
"cordova-support-google-services": "^1.3.2",
"cordova.plugins.diagnostic": "^5.0.1",
"core-js": "^2.5.4",
"date-fns": "^1.30.1",
"es6-promise-plugin": "^4.1.0",
"ionic2-calendar": "^0.5.8",
"ng-circle-progress": "^1.5.1",
"ionic2-calendar": "^0.5.10",
"ng-circle-progress": "^1.6.0",
"ng2-file-upload": "^1.3.0",
"ng2-pdf-viewer": "^5.3.2",
"ngx-gauge": "^1.0.0-beta.10",
"ngx-gauge": "^1.1.0",
"npm": "^6.14.11",
"phonegap-nfc": "^1.2.0",
"phonegap-plugin-barcodescanner": "^8.1.0",

@ -1,33 +1,38 @@
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{ path: '', redirectTo: 'authentication/login', pathMatch: 'full' },
{
path: 'authentication', loadChildren: './authentication/authentication.module#AuthenticationPageModule'},
{ path: 'home', loadChildren: './home/home.module#HomePageModule' },
{ path: 'profile', loadChildren: './profile/profile.module#ProfilePageModule' },
{ path: 'vacation-rule', loadChildren: './vacation-rule/vacation-rule.module#VacationRulePageModule' },
{ path: 'accrual-balances', loadChildren: './accrual-balances/accrual-balances.module#AccrualBalancesPageModule' },
{ path: 'my-team', loadChildren: './my-team/my-team.module#MyTeamPageModule' },
{ path: 'attendance', loadChildren: './attendance/attendance.module#AttendancePageModule' },
{ path: 'eit', loadChildren: './eit/eit.module#EITPageModule' },
{ path: 'absence', loadChildren: './absence/absence.module#AbsencePageModule' },
{ path: 'notification', loadChildren: './notification/notification.module#NotificationPageModule' },
{ path: 'my-specialist', loadChildren: './my-specialist/my-specialist.module#MySpecialistPageModule' },
{ path: 'my-subordinate', loadChildren: './my-subordinate/my-subordinate.module#MySubordinatePageModule' },
{ path: 'time-card', loadChildren: './time-card/time-card.module#TimeCardPageModule' },
{ path: 'payslip', loadChildren: './payslip/payslip.module#PayslipPageModule' }, { path: 'attendance-tracking', loadChildren: './attendance-tracking/attendance-tracking.module#AttendanceTrackingPageModule' }
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
];
@NgModule({
imports: [
/*RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules}),*/
RouterModule.forRoot(routes),
],
exports: [RouterModule]
})
export class AppRoutingModule { }
const routes: Routes = [
{ path: '', redirectTo: 'authentication/login', pathMatch: 'full' },
{
path: 'authentication', loadChildren: './authentication/authentication.module#AuthenticationPageModule'
},
{ path: 'home', loadChildren: './home/home.module#HomePageModule' },
{ path: 'profile', loadChildren: './profile/profile.module#ProfilePageModule' },
{ path: 'vacation-rule', loadChildren: './vacation-rule/vacation-rule.module#VacationRulePageModule' },
{ path: 'accrual-balances', loadChildren: './accrual-balances/accrual-balances.module#AccrualBalancesPageModule' },
{ path: 'my-team', loadChildren: './my-team/my-team.module#MyTeamPageModule' },
{ path: 'attendance', loadChildren: './attendance/attendance.module#AttendancePageModule' },
{ path: 'eit', loadChildren: './eit/eit.module#EITPageModule' },
{ path: 'absence', loadChildren: './absence/absence.module#AbsencePageModule' },
{ path: 'notification', loadChildren: './notification/notification.module#NotificationPageModule' },
{ path: 'my-specialist', loadChildren: './my-specialist/my-specialist.module#MySpecialistPageModule' },
{ path: 'my-subordinate', loadChildren: './my-subordinate/my-subordinate.module#MySubordinatePageModule' },
{ path: 'time-card', loadChildren: './time-card/time-card.module#TimeCardPageModule' },
{ path: 'payslip', loadChildren: './payslip/payslip.module#PayslipPageModule' },
{ path: 'attendance-tracking', loadChildren: './attendance-tracking/attendance-tracking.module#AttendanceTrackingPageModule' },
{ path: 'itemforsale', loadChildren: './itemforsale/itemforsale.module#ItemforsalePageModule' },
{ path: 'offersdiscount', loadChildren: './offersdiscount/offersdiscount.module#OffersdiscountPageModule' }
];
@NgModule({
imports: [
/*RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules}),*/
RouterModule.forRoot(routes),
],
exports: [RouterModule]
})
export class AppRoutingModule { }

@ -27,13 +27,13 @@ export class ConnectorService {
public static retryTimes = 0;
public static timeOut = 120 * 1000;
// public static host = 'https://uat.hmgwebservices.com/';
public static host = 'https://hmgwebservices.com/';
public static host = 'https://uat.hmgwebservices.com/';
//public static host = 'https://hmgwebservices.com/';
constructor(public httpClient: HttpClient,
public cs: CommonService,
private events: Events,
public ts: TranslatorService) {}
public cs: CommonService,
private events: Events,
public ts: TranslatorService) { }
public post(
service: string,
@ -98,18 +98,18 @@ export class ConnectorService {
public postNoLoad(service: string, data: any, onError: any, errorLabel?: string): Observable<any> {
return this.httpClient
.post<any>(
.post<any>(
ConnectorService.host + service,
data,
ConnectorService.httpOptions)
.pipe(
timeout(ConnectorService.timeOut),
retry(ConnectorService.retryTimes),
tap((res) => {
this.handleResponse(res, onError, errorLabel, true);
}, (error) => {
this.handleError(error, onError, errorLabel, true);
}));
.pipe(
timeout(ConnectorService.timeOut),
retry(ConnectorService.retryTimes),
tap((res) => {
this.handleResponse(res, onError, errorLabel, true);
}, (error) => {
this.handleError(error, onError, errorLabel, true);
}));
}
// absolute url connection
@ -198,23 +198,23 @@ export class ConnectorService {
let deviceToken = localStorage.getItem('deviceToken');
const requestGetLoginInfo = {
DeviceType: this.cs.getDeviceType(),
DeviceToken: deviceToken
DeviceType: this.cs.getDeviceType(),
DeviceToken: deviceToken
};
this.getLoginInfo(requestGetLoginInfo, () => {}, this.ts.trPK('general', 'ok')).subscribe(res => {
this.getLoginInfo(requestGetLoginInfo, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => {
if (this.cs.validResponse(res)) {
if (res.Mohemm_GetMobileLoginInfoList.length > 0) {
this.cs.sharedService.setSharedData(res.Mohemm_GetMobileLoginInfoList[0], 'imei-user-data');
const user = true;
this.events.publish('user', user);
this.cs.openLogin();
} else {
const user = false;
this.events.publish('user', user);
this.cs.openLogin();
}
} else {}
if (res.Mohemm_GetMobileLoginInfoList.length > 0) {
this.cs.sharedService.setSharedData(res.Mohemm_GetMobileLoginInfoList[0], 'imei-user-data');
const user = true;
this.events.publish('user', user);
this.cs.openLogin();
} else {
const user = false;
this.events.publish('user', user);
this.cs.openLogin();
}
} else { }
});
}
@ -257,7 +257,7 @@ export class ConnectorService {
this.cs.stopLoading();
this.cs.presentAcceptDialog(result.ErrorEndUserMessage, () => {
console.log("presentAcceptDialog");
this.cs.sharedService.clearAll();
this.cs.sharedService.clearAll();
// this.cs.openLogin();
this.getLastLoginInfo();
});

@ -4,7 +4,7 @@ import { CommonService } from 'src/app/hmg-common/services/common/common.service
import { Observable } from 'rxjs';
import { SubjectSubscriber } from 'rxjs/internal/Subject';
import { TranslatorService } from '../translator/translator.service';
import { promise } from 'protractor';
import { NativeStorage } from '@ionic-native/native-storage/ngx';
import { OpenNativeSettings } from '@ionic-native/open-native-settings/ngx';
@ -42,17 +42,17 @@ export class DevicePermissionsService {
private requestCamera(observer: any) {
this.hasCameraPermission().then((isAvailable) => {
if (isAvailable) {
// this.requestMicophonePermission(observer);
this.observerDone(observer, true);
// this.requestMicophonePermission(observer);
this.observerDone(observer, true);
} else {
this.diagnostic.requestCameraAuthorization(true).then((value) => {
// tslint:disable-next-line: triple-equals
if (value == DevicePermissionsService.GRANTED) {
// this.requestMicophonePermission(observer);
this.observerDone(observer, true);
// tslint:disable-next-line: triple-equals
// tslint:disable-next-line: triple-equals
} else if (value == DevicePermissionsService.DENIED_ALWAYS) {
// this.setAlwaysDenied(DevicePermissionsService.CAMERA_MIC, true);
// this.setAlwaysDenied(DevicePermissionsService.CAMERA_MIC, true);
this.observerDone(observer, false);
} else {
this.observerDone(observer, false);
@ -84,7 +84,7 @@ export class DevicePermissionsService {
// tslint:disable-next-line: triple-equals
if (value == DevicePermissionsService.GRANTED) {
this.observerDone(observer, true);
// tslint:disable-next-line: triple-equals
// tslint:disable-next-line: triple-equals
} else if (value == DevicePermissionsService.DENIED_ALWAYS) {
this.setAlwaysDenied(DevicePermissionsService.CAMERA_MIC, true);
this.observerDone(observer, false);
@ -113,15 +113,15 @@ export class DevicePermissionsService {
observer.complete();
}
public async hasCameraPermission(): Promise<boolean> {
public async hasCameraPermission(): Promise<boolean> {
return this.diagnostic.isCameraAuthorized(true);
}
public async hasCameraAndMicPermissions(): Promise<boolean> {
public async hasCameraAndMicPermissions(): Promise<boolean> {
const camera = await this.hasCameraPermission();
// let mic = await this.diagnostic.isMicrophoneAuthorized();
if (camera) {
// await this.setAlwaysDenied(DevicePermissionsService.CAMERA_MIC, false);
// await this.setAlwaysDenied(DevicePermissionsService.CAMERA_MIC, false);
return true;
} else {
return false;
@ -218,8 +218,8 @@ export class DevicePermissionsService {
// }
// } else {
if (await this.permissionRequestDialog(message)) {
return this.requestCameraPermission().toPromise();
}
return this.requestCameraPermission().toPromise();
}
// }
return false;
}
@ -229,7 +229,7 @@ export class DevicePermissionsService {
/* geolocation permission */
public async requestLocationAutherization() {
if ( await this.isLocationEnabled()) {
if (await this.isLocationEnabled()) {
if (await this.hasLocationPermissions()) {
return true;
} else {
@ -240,8 +240,8 @@ export class DevicePermissionsService {
// }
// } else {
if (await this.permissionRequestDialog(message)) {
return this.requestLocationPermission();
}
return this.requestLocationPermission();
}
// }
return false;
}
@ -259,7 +259,7 @@ export class DevicePermissionsService {
return isAvailable;
}
public async hasLocationPermissions(): Promise<boolean> {
public async hasLocationPermissions(): Promise<boolean> {
const location = await this.diagnostic.isLocationAvailable();
if (location) {
await this.setAlwaysDenied(DevicePermissionsService.LOCATION, false);
@ -289,7 +289,7 @@ export class DevicePermissionsService {
// tslint:disable-next-line: triple-equals
if (value == DevicePermissionsService.GRANTED) {
return true;
// tslint:disable-next-line: triple-equals
// tslint:disable-next-line: triple-equals
} else if (value == DevicePermissionsService.DENIED_ALWAYS) {
this.setAlwaysDenied(DevicePermissionsService.LOCATION, true);
}

@ -1,10 +1,14 @@
<div feedback class="custom-button">
<div class="iconBox">
<img *ngIf="title != 'My Team' && title != 'Vacation Rule' && title != 'فريقي' && title != 'الإنابة بالإجازات' " [src]="'data:image/png;base64,'+icon" class="icon">
<img *ngIf="title !='Item for sale' && title !='Offers & Discount' && title != 'My Team' && title != 'Vacation Rule' && title != 'فريقي' && title != 'الإنابة بالإجازات' " [src]="'data:image/png;base64,'+icon" class="icon">
<!-- <img *ngIf="title == 'My Team' || title == 'Vacation Rule'" [src]="icon" class="icon"> -->
<img *ngIf="title == 'My Team' || title == 'فريقي' " [src]="myTeamIcon" class="icon">
<img *ngIf="title == 'Vacation Rule' || title == 'الإنابة بالإجازات'" [src]="vacationRuleIcon" class="icon">
<img *ngIf="title =='Item for sale'" src="/assets/imgs/S1.png" class="icon" style="height:40px" />
<img *ngIf="title =='Offers & Discount'" src="/assets/imgs/S1.png" class="icon" style="height:40px" />
</div>
<div class="titleBox">
<p class="pClass">{{title}}</p>

@ -57,7 +57,14 @@
</ion-col>
</ion-row>
</ion-row>
<ion-slides [options]="slideOptsTwo">
<ion-slide>
<app-services-button (click)="itemForSale()" title="Item for sale" >
</app-services-button>
<app-services-button (click)="offersDiscount()" title="Offers & Discount" >
</app-services-button>
</ion-slide>
</ion-slides>
</ion-grid>
</ion-content>

@ -37,7 +37,7 @@ import { WorklistMainService } from '../notification/service/work-list.main.serv
import { isThisISOWeek } from 'date-fns';
import { Router } from '@angular/router';
import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { NFC, Ndef} from "@ionic-native/nfc/ngx"
import { NFC, Ndef } from "@ionic-native/nfc/ngx"
import { DigitalIdComponent } from '../authentication/digital-id/digital-id.component';
@Component({
@ -73,28 +73,28 @@ export class HomePage implements OnInit {
show: true
},
{
title: this.ts.trPK('home','worklist'),
title: this.ts.trPK('home', 'worklist'),
statsValue: 0,
icon: 'assets/icon/new-design/work_list.png',
link: '1',
show: true
},
{
title: this.ts.trPK('home','missing-swipes'),
title: this.ts.trPK('home', 'missing-swipes'),
statsValue: 0,
icon: 'assets/icon/new-design/missing_swipe.png',
link: '2',
show:true
show: true
},
{
title: this.ts.trPK('home','leave-balance'),
title: this.ts.trPK('home', 'leave-balance'),
statsValue: 0,
icon: 'assets/icon/new-design/leave_balance.png',
link: '3',
show: this.isShow,
},
{
title: this.ts.trPK('absenceList','tickets-balance'),
title: this.ts.trPK('absenceList', 'tickets-balance'),
statsValue: 0,
icon: 'assets/icon/new-design/ticket_balance.png',
link: '4',
@ -182,7 +182,7 @@ export class HomePage implements OnInit {
this.events.subscribe('getNotCount', badge => {
this.notBadge = badge;
});
if(openDigitalIDCard === true){
if (openDigitalIDCard === true) {
console.log("DONE");
this.openDigitalId();
}
@ -269,11 +269,11 @@ export class HomePage implements OnInit {
this.common.presentAlert(this.ts.trPK('home', 'position-error'));
}
}, (error) => {
this.common.presentAlert(this.ts.trPK('home', 'position-error'));
this.common.presentAlert(this.ts.trPK('home', 'position-error'));
});
} else {
this.geolocation.getCurrentPosition({maximumAge: 3000, timeout: 10000, enableHighAccuracy: true}).then(resp => {
if(resp && resp.coords.latitude && resp.coords.longitude) {
this.geolocation.getCurrentPosition({ maximumAge: 3000, timeout: 10000, enableHighAccuracy: true }).then(resp => {
if (resp && resp.coords.latitude && resp.coords.longitude) {
this.lat = resp.coords.latitude;
this.longt = resp.coords.longitude;
this.attendance();
@ -283,7 +283,7 @@ export class HomePage implements OnInit {
}).catch(error => {
this.common.presentAlert(this.ts.trPK('home', 'position-error'));
});
}
}
} else {
return false;
}
@ -293,11 +293,11 @@ export class HomePage implements OnInit {
setServicesPrivilage() {
for (const servicePrivilage of AuthenticationService.servicePrivilage) {
if (servicePrivilage.Previlege === false) {
if(servicePrivilage.ServiceName === 'accrualBalance'){
if (servicePrivilage.ServiceName === 'accrualBalance') {
this.statsButtons[3].show = false;
this.statsButtons[4].show = false;
}
if(servicePrivilage.ServiceName === 'vacationRule'){
if (servicePrivilage.ServiceName === 'vacationRule') {
this.showVcationRule = false;
}
// document
@ -305,7 +305,7 @@ export class HomePage implements OnInit {
// .setAttribute('disabled', 'disabled');
// document.getElementById(servicePrivilage.ServiceName).style.filter =
// 'grayscale(1)';
}else{
} else {
this.statsButtons[3].show = true;
this.statsButtons[4].show = true;
this.showVcationRule = true;
@ -344,11 +344,11 @@ export class HomePage implements OnInit {
);
if (this.common.getUpdateImage().status) {
this.userImage = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + this.common.getUpdateImage().img);
} else {
this.userImage = user.EMPLOYEE_IMAGE
? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE
: this.userImage;
}
} else {
this.userImage = user.EMPLOYEE_IMAGE
? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE
: this.userImage;
}
this.callDashboardServices();
} else {
console.log(user);
@ -403,12 +403,12 @@ export class HomePage implements OnInit {
for (let i = 0; i < this.menuList.length; i++) {
if (this.menuList[i].MENU_TYPE === 'M') {
this.events.publish('myTeamFlag', 'true');
// this.common.sharedService.setSharedData('true', "myTeamFlag");
// this.common.sharedService.setSharedData('true', "myTeamFlag");
}
}
// if (item.MENU_TYPE === 'M') {
// this.common.openMyTeamPage();
// this.common.openMyTeamPage();
// // this.navCtrl.push("MySubordinatePage");
// } else if (item.MENU_TYPE === 'S') {
// this.common.sharedService.setSharedData(item, 'mySpecList');
@ -480,15 +480,15 @@ export class HomePage implements OnInit {
for (let i = 0; i < result.GetMenuEntriesList.length; i++) {
// tslint:disable-next-line: triple-equals
if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HMG_TKT_NEW_EIT_SS') {
this.ticketRequestObject = result.GetMenuEntriesList[i];
// tslint:disable-next-line: triple-equals
this.ticketRequestObject = result.GetMenuEntriesList[i];
// tslint:disable-next-line: triple-equals
} else if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HR_LOA_SS') {
this.leaveRequestObject = result.GetMenuEntriesList[i];
// tslint:disable-next-line: triple-equals
} else if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HMG_OTL_MISSING_SWIPE_EIT_SS') {
this.missingSwipeRequestObject = result.GetMenuEntriesList[i];
}
}
// tslint:disable-next-line: triple-equals
} else if (result.GetMenuEntriesList[i].FUNCTION_NAME == 'HMG_OTL_MISSING_SWIPE_EIT_SS') {
this.missingSwipeRequestObject = result.GetMenuEntriesList[i];
}
}
this.sortMenuEntires(result.GetMenuEntriesList);
}
}
@ -541,12 +541,12 @@ export class HomePage implements OnInit {
request.QRValue = this.scannedResult.text;
request.UID = this.deviceID;
request.EmployeeID = this.userData.EMPLOYEE_NUMBER;
this.attendanceService.fakeAttendanceSwipeScanner(request, () => {console.log('Error inside in swipe attendance');})
this.attendanceService.fakeAttendanceSwipeScanner(request, () => { console.log('Error inside in swipe attendance'); })
.subscribe((result: Response) => {
if (this.common.validResponse(result)) {
this.common.presentAlert(this.ts.trPK('home', 'fake-location'));
this.common.presentAlert(this.ts.trPK('home', 'fake-location'));
}
});
});
}
swipeAttendance() {
@ -575,7 +575,7 @@ export class HomePage implements OnInit {
// Dashboard Services
showOrganizationSalaries() {
this.DS.getOrganizationSalaries().subscribe(
(result: OrganizationSalariesResponse) => {}
(result: OrganizationSalariesResponse) => { }
);
}
@ -592,7 +592,7 @@ export class HomePage implements OnInit {
showPerformanceAppraisal() {
this.DS.getPerformanceAppraisal().subscribe(
(result: PerformanceAppraisalResponse) => {}
(result: PerformanceAppraisalResponse) => { }
);
}
@ -604,7 +604,7 @@ export class HomePage implements OnInit {
return seconds;
}
convertAndAssignTime(data) {
convertAndAssignTime(data) {
this.remainingTime = this.convertInSeconds(data.P_REMAINING_HOURS.split(':'));
this.scheduledTime = this.convertInSeconds(data.P_SCHEDULED_HOURS.split(':'));
this.spentHours = this.convertInSeconds(data.P_SPENT_HOURS.split(':'));
@ -614,22 +614,22 @@ convertAndAssignTime(data) {
} else if (this.isCheckedIn && this.remainingTime === 0) {
this.percent = 100;
}
}
}
showAttendanceTracking() {
const request = {
P_SELECTED_EMPLOYEE_NUMBER: this.userData.EMPLOYEE_NUMBER
};
this.DS.getAttendanceTracking(request, '', '', this.isPostNoLoad).subscribe((result: AttendanceTrackingResponse) => {
showAttendanceTracking() {
const request = {
P_SELECTED_EMPLOYEE_NUMBER: this.userData.EMPLOYEE_NUMBER
};
this.DS.getAttendanceTracking(request, '', '', this.isPostNoLoad).subscribe((result: AttendanceTrackingResponse) => {
if (this.common.validResponse(result)) {
clearTimeout(this.intervalCountdown);
const key = 'GetAttendanceTrackingList';
this.convertAndAssignTime(result[key]);
}
});
}
}
openPeriodDateDashbored() {
openPeriodDateDashbored() {
this.DS.getOpenPeriodDates(() => { console.log('Error '); }).subscribe((result: OpenPeriodDatesResponse) => {
if (this.common.validResponse(result)) {
console.log('response');
@ -654,7 +654,7 @@ openPeriodDateDashbored() {
ITGCountAllNotification() {
this.workListService.getITGDetails('', '', this.isPostNoLoad).subscribe((result: any) => {
this.statsButtons[1].statsValue =
Math.floor(this.countAllNotification + result.TotalCount);
Math.floor(this.countAllNotification + result.TotalCount);
this.common.stopLoading();
});
}
@ -673,7 +673,7 @@ openPeriodDateDashbored() {
});
}
getSubordinatesAttStatus() {
getSubordinatesAttStatus() {
const request: GetSubordinatesAttdStatusRequest = new GetSubordinatesAttdStatusRequest();
request.P_SCHEDULE_DATE_FROM = '/Date(1578603600000+0300)/'; // test
request.P_SCHEDULE_DATE_TO = '/Date(1576011600000+0300)/'; // test
@ -732,7 +732,7 @@ getSubordinatesAttStatus() {
for (const accrualBalance of result.GetAccrualBalancesList) {
if (accrualBalance.ACCURAL_PLAN_NAME === 'HMG Annual Vacation Accrual Plan') {
this.statsButtons[3].statsValue =
Math.floor(accrualBalance.ACCRUAL_NET_ENTITLEMENT);
Math.floor(accrualBalance.ACCRUAL_NET_ENTITLEMENT);
this.common.sharedService.setSharedData(accrualBalance, 'leaveAccrualBalance');
this.common.sharedService.setSharedData(request, 'leaveAccrualBalanceDate');
this.common.sharedService.setSharedData(this.accrualBalancesList, 'tickitsbalance');
@ -745,13 +745,13 @@ getSubordinatesAttStatus() {
});
}
openattentracking() {
openattentracking() {
this.common.openAttenTrackingpage();
}
}
public showAttendanceOptions() {
this.common.openAttendanceOptionsComponent();
}
public showAttendanceOptions() {
this.common.openAttendanceOptionsComponent();
}
openStatsButton(link: any) {
// tslint:disable-next-line: triple-equals
@ -759,19 +759,19 @@ public showAttendanceOptions() {
this.isFakeLocationUsed = false;
// this.getDeviceLocation();
this.showAttendanceOptions();
// tslint:disable-next-line: triple-equals
// tslint:disable-next-line: triple-equals
} else if (link == '1') {
this.common.startLoading();
this.common.openNotificationPage();
// tslint:disable-next-line: triple-equals
// tslint:disable-next-line: triple-equals
} else if (link == '2') {
this.openPage(this.missingSwipeRequestObject);
// tslint:disable-next-line: triple-equals
// tslint:disable-next-line: triple-equals
} else if (link == '3') {
this.openPage(this.leaveRequestObject);
// tslint:disable-next-line: triple-equals
// tslint:disable-next-line: triple-equals
} else if (link == '4') {
this.openPage(this.ticketRequestObject);
this.openPage(this.ticketRequestObject);
}
}
@ -782,4 +782,10 @@ public showAttendanceOptions() {
});
return await modal.present();
}
itemForSale() {
this.common.navigateForward('/itemforsale/home');
}
offersDiscount() {
this.common.navigateForward('/offersdiscount/home');
}
}

@ -0,0 +1,242 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
</div>
<div class="header"></div>
<div class="bottom"></div>
<div class="md-stepper-horizontal ">
<div class="md-step active " [ngClass]="step >1 ? 'green' : 'orange'">
<div class="md-step-circle"><span></span></div>
<div class="md-step-title">Select Category</div>
<div class="md-step-optional">Completed</div>
<div class="md-step-bar-left"></div>
<div class="md-step-bar-right"></div>
</div>
<div class="md-step " [ngClass]="step >2 ? 'green' : step ==2 ? 'orange' : ''">
<div class="md-step-circle"><span></span></div>
<div class="md-step-title">Add Details</div>
<div class="md-step-optional">{{step >2 ? "Completed" : "Locked"}}</div>
<div class="md-step-bar-left"></div>
<div class="md-step-bar-right"></div>
</div>
<div class="md-step " [ngClass]="step >3 ? 'green' : step ==3 ? 'orange' : ''">
<div class="md-step-circle"><span></span></div>
<div class="md-step-title">Review & Sell</div>
<div class="md-step-optional">{{step >3 ? "Completed" : "Locked"}}</div>
<div class="md-step-bar-left"></div>
<div class="md-step-bar-right"></div>
</div>
</div>
<div class="content">
<div class="offering" *ngIf="step==1">
<h2>What are you offering?</h2>
</div>
<ion-grid *ngIf="step==1">
<ion-row>
<ion-col size="4">
<div class="sale-icon" (click)="nextStep()">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</ion-col>
<ion-col size="4">
<div class="sale-icon" (click)="openItem()">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</ion-col>
<ion-col size="4">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="4">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</ion-col>
<ion-col size="4">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</ion-col>
<ion-col size="4">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</ion-col>
</ion-row>
</ion-grid>
<div class="offering" *ngIf="step==2">
<h2>Add Details</h2>
</div>
<div class="add-details" *ngIf="step==2">
<ion-grid>
<ion-row>
<p>Item Info</p>
<ion-col size="12">
<ion-item lines="none">
<ion-input placeholder="Item Info"></ion-input>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="12">
<ion-item lines="none">
<ion-textarea rows="6" cols="20" placeholder="Description"></ion-textarea>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<ion-col>
<p>Item Condition</p>
<ion-radio-group value="new">
<ion-col>
<ion-radio value="new"></ion-radio>
<ion-label>New</ion-label>
</ion-col>
<ion-col>
<ion-radio value="used"></ion-radio>
<ion-label>Used</ion-label>
</ion-col>
</ion-radio-group>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="12">
<p>Item Price</p>
<ion-item lines="none">
<ion-input placeholder="Item Price"></ion-input>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<p>Item Photos</p>
</ion-row>
<ion-row>
<ion-col lines="none" size="4">
<div class="image-container">
<div class="uploaded">
<div class="closed">X</div>
<img src="assets/imgs/itemsforsale/fashion .svg" />
</div>
</div>
</ion-col>
<ion-col lines="none" size="4">
<div class="image-container">
<div class="uploaded">
<div class="closed">X</div>
<img src="assets/imgs/itemsforsale/fashion .svg" />
</div>
</div>
</ion-col>
</ion-row>
</ion-grid>
</div>
<div class="offering" *ngIf="step==3">
<h2>Review & Sell</h2>
</div>
<div class="add-details" *ngIf="step==3">
<h2>Furniture Table</h2>
<p>
Consectetur adipiscing elit. Donec blandit diam nulla, non euismod eros efficitur imperdiet. Fusce erat enim, volutpat at enim in, venenatis iaculis risus.
</p>
<div class="description-details">
<p class="orange">Used</p>
<img src="assets/imgs/itemsforsale/fashion .svg" />
<img src="assets/imgs/itemsforsale/fashion .svg" />
<div class="selling">
<strong>Selling for </strong> <h2>500 SAR</h2>
</div>
<div class="waring">
<ion-icon name="help-circle"></ion-icon> This ad will be valid for 2 week after approval
</div>
</div>
</div>
</div>
<ion-footer *ngIf="step>1">
<div class="centerDiv">
<ion-button class="footer-button" ion-button (click)="step =3" *ngIf="step ==2">
{{ts.trPK('general','next')}} </ion-button>
<ion-button class="footer-button" ion-button (click)="step =4" *ngIf="step ==3">
{{ts.trPK('general','submit')}} </ion-button>
</div>
</ion-footer>
</ion-content>

@ -0,0 +1,254 @@
.md-stepper-horizontal {
width: 90%;
margin: 0 auto;
background-color: #FFFFFF;
box-shadow: 0 3px 8px -6px #DDDDDD;
margin: auto;
position: relative;
border-radius: 25px;
}
.md-stepper-horizontal .md-step {
display:table-cell;
position:relative;
padding:24px;
}
.md-stepper-horizontal .md-step:hover,
.md-stepper-horizontal .md-step:active {
background-color:rgba(0,0,0,0.04);
}
.md-stepper-horizontal .md-step:active {
border-radius: 15% / 75%;
}
.md-stepper-horizontal .md-step:first-child:active {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.md-stepper-horizontal .md-step:last-child:active {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.md-stepper-horizontal .md-step:hover .md-step-circle {
background-color:#757575;
}
.md-stepper-horizontal .md-step:first-child .md-step-bar-left,
.md-stepper-horizontal .md-step:last-child .md-step-bar-right {
display:none;
}
.md-stepper-horizontal .md-step .md-step-circle {
width:30px;
height:30px;
margin:0 auto;
background-color:#999999;
border-radius: 50%;
text-align: center;
line-height:30px;
font-size: 16px;
font-weight: 600;
color:#FFFFFF;
}
.md-stepper-horizontal.green .md-step.active .md-step-circle {
background-color:#00AE4D;
}
.md-stepper-horizontal.orange .md-step.active .md-step-circle {
background-color:#CC9B14;
}
.md-stepper-horizontal .md-step.active .md-step-circle {
background-color: rgb(33,150,243);
}
.md-stepper-horizontal .md-step.done .md-step-circle:before {
font-family:'FontAwesome';
font-weight:100;
content: "\f00c";
}
.md-stepper-horizontal .md-step.done .md-step-circle *,
.md-stepper-horizontal .md-step.editable .md-step-circle * {
display:none;
}
.md-stepper-horizontal .md-step.editable .md-step-circle {
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
}
.md-stepper-horizontal .md-step.editable .md-step-circle:before {
font-family:'FontAwesome';
font-weight:100;
content: "\f040";
}
.md-stepper-horizontal .md-step .md-step-title {
margin-top: 10px;
font-size: 15px;
font-weight:bold;
}
.md-stepper-horizontal .md-step .md-step-title,
.md-stepper-horizontal .md-step .md-step-optional {
text-align: center;
color:rgba(0,0,0,.26);
}
.md-stepper-horizontal .md-step.active .md-step-title {
font-weight: 600;
color:rgba(0,0,0,.87);
}
.md-stepper-horizontal .md-step.active.done .md-step-title,
.md-stepper-horizontal .md-step.active.editable .md-step-title {
font-weight:600;
}
.md-stepper-horizontal .md-step .md-step-optional {
font-size:12px;
}
.md-stepper-horizontal .md-step .md-step-bar-left,
.md-stepper-horizontal .md-step .md-step-bar-right {
position:absolute;
top:36px;
height:1px;
border-top:1px solid #DDDDDD;
}
.md-stepper-horizontal .md-step .md-step-bar-right {
right:0;
left:50%;
margin-left:20px;
}
.md-stepper-horizontal .md-step .md-step-bar-left {
left:0;
right:50%;
margin-right:20px;
}
.header{
height: 150px;
width: 100%;
position: absolute;
background: #259CB8;
top: 0;
}
.header-toolbar{
--background: #259CB8 !important;
}
.bottom{
height: 88%;
width: 100%;
position: absolute;
background: #F5F5F5;
top: 20%;
}
.md-step-optional{
font-size: 12px;
background: #cccccc;
color: #ffffff !important;
padding: 2px;
border-radius: 5px;
margin: 5px;
}
.orange .md-step-optional{
font-size: 12px;
background: #CC9B14;
color: #ffffff !important;
padding: 2px;
border-radius: 5px;
}
.green .md-step-optional{
font-size: 12px;
background-color:#00AE4D;
color: #ffffff !important;
padding: 2px;
border-radius: 5px;
}
.green .md-step-circle{
background-color:#00AE4D !important;
}
.orange .md-step-circle{
background: #CC9B14 !important;
}
.content{
position: relative;
}
.offering{
font-weight: bold;
margin:20px;
position: relative;
}
.offering h2{
font-weight: bold;
}
.sale-icon{
box-shadow: 1px 1px 5px 1px #cccc;
padding: 10px;
margin: 5px;
border-radius: 10px;
background: #fff;
}
.sale-icon ion-icon{
font-size: 35px;
}
.sale-icon p{
margin-top:5px;
}
.add-details{
background: #fff;
margin: 15px;
padding: 10px;
box-shadow: 3px 4px 3px -1px #ccc;
border-radius: 20px;
}
.add-details ion-item{
border-radius: 25px;
border: 1px solid #cdcd;
padding: 5px;
}
.add-details p{
font-weight: bold;
font-size: 18px;
}
.add-details ion-label{
margin: 10px;
position: relative;
bottom: 3px;
}
.add-details ion-radio {
--color-checked: #009688;
}
.image-container{
position: relative;
height: 70px;
}
.image-container .uploaded{
position: absolute;
}
.image-container .uploaded .closed{
position: absolute;
right: 0;
font-size: 14px;
color: #fff;
top: -15px;
right: -10px;
font-weight: bolder;
background: red;
padding: 6px;
border-radius: 50%;
text-align: center;
line-height: .7;
}
.image-container .uploaded img{
width: 70px;
}
.footer-button{
background: var(--newgreen)!important;border-radius: 10px; --background: transparent;
width: 80%;
}
.description-details .orange{
color:orange
}
.description-details img{
margin:10px;
}
.waring{color: red;
padding: 10px;
font-size: 14px;}
.selling h2{
display: inline-block;
font-weight: bolder;
}
.flaot-button{float:right;margin:30px}

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

@ -0,0 +1,26 @@
import { Component, OnInit } from '@angular/core';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
})
export class HomeComponent implements OnInit {
step: any = 1;
constructor(public ts: TranslatorService, public cs: CommonService,) { }
ngOnInit() { }
openItem() {
this.cs.navigateForward('/itemforsale/items');
}
nextStep() {
this.step = 2;
}
openMyAds() {
this.cs.navigateForward('/itemforsale/my-ads');
}
}

@ -0,0 +1,61 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
</div>
<div class="header"></div>
<div class="bottom"></div>
<div>
<ion-card>
<ion-card-header>
<img src="assets/imgs/itemsforsale/furniture.svg" />
<ion-card-title>Furniture Table</ion-card-title>
</ion-card-header>
<ion-card-content>
Keep close to Nature's heart... and break clear away, once in awhile,
and climb a mountain or spend a week in the woods. Wash your spirit clean.
<div class="content-bottom">
<p class="green">New</p>
<h1>500 SAR</h1>
</div>
<ion-item-divider>
</ion-item-divider>
<div class="profile">
<ion-item lines="none" >
<ion-avatar slot="start">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==">
</ion-avatar>
<ion-label>
<h2>Aslam Khan</h2>
<p>Published on 22 April 2020</p>
<p><a href="">View Profile</a></p>
</ion-label>
</ion-item>
</div>
</ion-card-content>
</ion-card>
</div>
<ion-footer >
<div class="centerDiv details-button" >
<ion-button class="footer-button" ion-button>
{{ts.trPK('sms','title')}} </ion-button>
<ion-button class="footer-button" ion-button>
{{ts.trPK('vacation-rule','call')}} </ion-button>
</div>
</ion-footer>
</ion-content>

@ -0,0 +1,35 @@
.header{
height: 150px;
width: 100%;
position: absolute;
background: #259CB8;
top: 0;
}
.header-toolbar{
--background: #259CB8 !important;
}
.bottom{
height: 88%;
width: 100%;
position: absolute;
background: #F5F5F5;
top: 20%;
}
ion-card-header{
background-color: #fff;
padding: 15px !important;
}
.content-bottom{
padding: 15px;
}
.green{
color:green;
font-weight: bold;
}
.content-bottom h1{
font-size: 24px;
}
.details-button ion-button{
--background: #565656;
}

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

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-item-details',
templateUrl: './item-details.component.html',
styleUrls: ['./item-details.component.scss'],
})
export class ItemDetailsComponent implements OnInit {
constructor(public ts: TranslatorService, public cs: CommonService,) { }
ngOnInit() { }
}

@ -0,0 +1,48 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ItemforsalePage } from './itemforsale.page';
import { HomeComponent } from './home/home.component';
import { ItemsComponent } from './items/items.component';
import { ItemDetailsComponent } from './item-details/item-details.component';
import { MyAdsComponent } from './my-ads/my-ads.component';
const routes: Routes = [
{
path: '',
component: ItemforsalePage,
children: [
{
path: 'home',
component: HomeComponent
},
{
path: 'items',
component: ItemsComponent
},
{
path: 'items-details',
component: ItemDetailsComponent
},
{
path: 'my-ads',
component: MyAdsComponent
}
],
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [ItemforsalePage, HomeComponent, ItemsComponent, ItemDetailsComponent, MyAdsComponent]
})
export class ItemforsalePageModule { }

@ -0,0 +1,4 @@
<ion-content>
<ion-router-outlet></ion-router-outlet>
</ion-content>

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

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-itemforsale',
templateUrl: './itemforsale.page.html',
styleUrls: ['./itemforsale.page.scss'],
})
export class ItemforsalePage implements OnInit {
constructor() { }
ngOnInit() {
}
}

@ -0,0 +1,187 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
</div>
<div class="segments-container">
<ion-segment (ionChange)="segmentChanged($event)" value="1">
<ion-segment-button value="1" >
<ion-label>Item for sale</ion-label>
</ion-segment-button>
<ion-segment-button value="2">
<ion-label>My Posted Ads</ion-label>
</ion-segment-button>
</ion-segment>
</div>
<div class="header"></div>
<div class="bottom"></div>
<div class="sales-items" *ngIf="segment =='1'">
<ion-grid>
<ion-row>
<ion-col size="12">
<ion-item lines="none" class="SearchtextBox">
<ion-input placeholder="Search Item"></ion-input>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="10">
<p class="filterText">Browse Category</p>
</ion-col>
<ion-col size="2">
<img src="assets/imgs/itemsforsale/filter.svg">
</ion-col>
</ion-row>
</ion-grid>
<div class="container-icon">
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
</div>
<ion-row>
<ion-col size="6" (click)="openDetails()">
<ion-card>
<ion-card-header>
<img src="assets/imgs/itemsforsale/furniture.svg" />
<ion-card-title>Card Title</ion-card-title>
</ion-card-header>
<ion-card-content>
Keep close to Nature's heart... and break
<p class="orange">
Used
</p>
<ion-row>
<ion-col size="10">
<strong>
500 SAR
</strong>
</ion-col>
<ion-col size="2">
<ion-icon name="arrow-round-forward"></ion-icon>
</ion-col>
</ion-row>
</ion-card-content>
</ion-card>
</ion-col>
<ion-col size="6">
<ion-card>
<ion-card-header>
<img src="assets/imgs/itemsforsale/furniture.svg" />
<ion-card-title>Card Title</ion-card-title>
</ion-card-header>
<ion-card-content>
Keep close to Nature's heart... and break
<p class="green">
New
</p>
<ion-row>
<ion-col size="10">
<strong>
500 SAR
</strong>
</ion-col>
<ion-col size="2">
<ion-icon name="arrow-round-forward"></ion-icon>
</ion-col>
</ion-row>
</ion-card-content>
</ion-card>
</ion-col>
</ion-row>
</div>
<div class="my-ads" *ngIf="segment =='2'">
<ion-row>
<ion-item button (click)="testClick()">
<ion-thumbnail slot="start">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==">
</ion-thumbnail>
<ion-label>
<h3>Furniture Table</h3>
<p>good condition only 6th month used with bed and mattress</p>
<ion-row>
<ion-col size="8">
<p class="yellow">Pending Review</p>
</ion-col>
<ion-col>
<img class="icon" src="assets/imgs/itemsforsale/delete.svg" />
<img class="icon edit" src="assets/imgs/itemsforsale/edit.svg" />
</ion-col>
</ion-row>
</ion-label>
</ion-item>
</ion-row>
</div>
<ion-fab-button class="flaot-button" (click)="openMyAds()"><ion-icon name="add"></ion-icon></ion-fab-button>
<ion-footer *ngIf="segment=='2'">
<div class="centerDiv">
<ion-button class="footer-button" ion-button>
{{ts.trPK('general','next')}} </ion-button>
</div>
</ion-footer>
</ion-content>

@ -0,0 +1,108 @@
.header{
width: 100%;
position: absolute;
background: #259CB8;
top: 0;
}
.header-toolbar{
--background: #259CB8 !important;
}
.bottom{
height: 100%;
width: 100%;
position: absolute;
background: #F5F5F5;
}
.SearchtextBox{
margin: 10px;
border-radius: 20px;
}
.filterText{
margin: 5px 15px 15px;
font-size: 18px;
font-weight: bold;
}
.container-icon{
padding: 0 10px 20px;
position: relative;
white-space:nowrap;
overflow-x:auto;
}
.box-icon{
width: 100px;
height: 100px;
margin: 0px;
display: inline-block;
}
.sale-icon{
box-shadow: 1px 1px 5px 1px #cccc;
padding: 5px;
margin: 5px;
border-radius: 10px;
background: #fff;
}
.sale-icon ion-icon{
font-size: 25px;
}
.sale-icon p{
margin-top:5px;
}
.bottom-icon{
text-overflow: clip;
white-space: normal;
}
ion-card-header{
background: #fff;
}
ion-card-header img{
margin:15px auto;
}
ion-card-title{
font-weight: bold;
font-size: 18px;
padding: 5px;
}
.orange{
color: orange;
}
.green{
color:#00AE4D;
}
ion-segment-button ion-label{
padding: 0;
font-size: 12px;
}
.segment-button-checked ion-label{
color: #fff !important;
}
.segment-button-checked{
background: rgb(46, 46, 46);
}
ion-item{
--background: #fff;
margin: 10px;
border-radius: 25px;
padding: 5px;
}
ion-item h3{
color: #000;
font-weight: bold;
font-size: 16px;
}
.yellow{
color:#ffc107;
}
ion-item .icon{
margin: 5px;
}
.edit{
margin-left:20px !important;
}

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

@ -0,0 +1,21 @@
import { Component, OnInit } from '@angular/core';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-items',
templateUrl: './items.component.html',
styleUrls: ['./items.component.scss'],
})
export class ItemsComponent implements OnInit {
segment: any = '1';
constructor(public ts: TranslatorService, public cs: CommonService,) { }
ngOnInit() { }
openDetails() {
this.cs.navigateForward('/itemforsale/items-details');
}
segmentChanged(value) {
this.segment = value.detail.value;
}
}

@ -0,0 +1,11 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
</div>
</ion-content>

@ -0,0 +1,11 @@
.header{
height: 150px;
width: 100%;
position: absolute;
background: #259CB8;
top: 0;
}
.header-toolbar{
--background: #259CB8 !important;
}

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

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-my-ads',
templateUrl: './my-ads.component.html',
styleUrls: ['./my-ads.component.scss'],
})
export class MyAdsComponent implements OnInit {
constructor(public ts: TranslatorService, public cs: CommonService,) { }
ngOnInit() { }
}

@ -15,7 +15,8 @@ export class WorklistService {
public static getReplacmentEmployeeList = 'Services/ERP.svc/REST/GET_REPLACEMENT_LIST';
public static getRFCEmployeeList = 'Services/ERP.svc/REST/GET_RFC_EMPLOYEE_LIST';
public static getActionHistory = 'Services/ERP.svc/REST/GET_ACTION_HISTORY';
public static getFavorite = 'Services/ERP.svc/REST/Mohemm_GetFavoriteReplacements';
public static saveFavorite = 'Services/ERP.svc/REST/Mohemm_ChangeFavoriteReplacements';
constructor(
public api: ConnectorService,
public authService: AuthenticationService,
@ -50,4 +51,15 @@ export class WorklistService {
return this.api.post(WorklistService.getActionHistory, request, onError, errorLabel);
}
public getFavorite(req: any, onError?: any, errorLabel?: string): Observable<WorkListActionHistoryResponse> {
this.authService.authenticateRequest(req);
return this.api.post(WorklistService.getFavorite, req, onError, errorLabel);
}
public saveFavoriteList(request: any, onError?: any, errorLabel?: string): Observable<any> {
var req: any = {};
req['Mohemm_ChangeReplacementsInputList'] = request;
this.authService.authenticateRequest(req);
return this.api.post(WorklistService.saveFavorite, req, onError, errorLabel);
}
}

@ -1,8 +1,11 @@
<ion-header *ngIf="!messageSuccess">
<ion-toolbar>
<!-- class="header-toolbar" <nav-buttons></nav-buttons> -->
<ion-title *ngIf="!isAnswer" color="dark">{{ 'replacementRoll, title' | translate}}</ion-title>
<ion-title *ngIf="!isAnswer && getPassActionMode !='REQUEST_INFO' && getPassActionMode !='DELEGATE'" color="dark">{{ 'replacementRoll, title' | translate}}</ion-title>
<ion-title *ngIf="getPassActionMode =='REQUEST_INFO'" color="dark">{{ 'worklistMain, request' | translate}}</ion-title>
<ion-title *ngIf="getPassActionMode =='DELEGATE'" color="dark">{{ 'worklistMain, delegate' | translate}}</ion-title>
<!-- <ion-title *ngIf="isAnswer" color="dark">Answer</ion-title> -->
</ion-toolbar>
@ -10,49 +13,40 @@
<ion-content >
<div *ngIf="!messageSuccess">
<ion-list style="margin-bottom:2px !important" [hidden]="isAnswer==true">
<ion-item lines="none">
<ion-label class="boldTxtNav">{{'replacementRoll, searchBy' | translate}}</ion-label>
<ion-select okText='{{"general, ok" | translate }}' cancelText='{{"general, cancel" | translate }}'
[(ngModel)]="searchBy" (ionChange)="onChangeSelect($event)">
<ion-select-option value="1" selected="true">{{'addAttach, name' | translate}}</ion-select-option>
<ion-select-option value="2">{{'login, username' | translate}}</ion-select-option>
<ion-select-option value="3">{{'general, email' | translate}}</ion-select-option>
</ion-select>
</ion-item>
<ion-list [hidden]="isAnswer==true">
<ion-list-header>
<ion-label class="boldTxtNav">{{'replacementRoll, searchBy' | translate}}</ion-label>
</ion-list-header>
<ion-radio-group [(ngModel)]="searchBy" (ionChange)="onChangeSelect($event)">
<ion-row>
<ion-col class="center">
<ion-radio value="1" checked></ion-radio>
<ion-label class="radio-label">{{'addAttach, name' | translate}}</ion-label>
</ion-col>
<ion-col>
<ion-radio value="2" ></ion-radio>
<ion-label class="radio-label">{{'login, username' | translate}}</ion-label>
</ion-col>
<ion-col>
<ion-radio value="3" ></ion-radio>
<ion-label class="radio-label">{{'general, email' | translate}}</ion-label>
</ion-col>
</ion-row>
<ion-item lines="none">
<ion-button [ngClass]="{
'filterBtn': (direction == 'en'),
'filterBtn-ar': (direction != 'en'),
'disabledButton': (!searchKeyEnter || !isSelect)}"
[disabled]="(!searchKeyEnter || !isSelect) " button-type="clear" (click)="getreplacmentemployee()" item-end>
<ion-icon slot="icon-only" color="white" name="search"></ion-icon>
</ion-button>
<ion-input (ionChange)="onChangeInput()" [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="inputSearch" placeholder='{{"general, search" | translate}}'></ion-input>
<!-- <button ion-button icon-only (click)="getreplacmentemployee()" clear type="button" item-end>
<ion-icon name="search"></ion-icon>
</button> -->
</ion-radio-group>
<ion-item lines="none">
<ion-input (ionInput)="onChangeInput()" [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="inputSearch" [placeholder]='getPlaceHolder()' clearInput="true"></ion-input>
</ion-item>
<!-- <ion-item>
<ion-label>
{{selEmpName}}
</ion-label>
</ion-item> -->
<!-- <div class="centerDiv">
<button ion-button (click)="closePage()">{{'general.save' | translate}}</button>
</div> -->
</ion-list>
<div class="noteInput" *ngIf="isAnswer==true">
@ -65,40 +59,62 @@
<ion-textarea [(ngModel)]="userNote"></ion-textarea>
</ion-item>
</div>
<br/>
<ion-item [hidden]="isAnswer==true">
<!-- <ion-list *ngIf="ReplacementList"> -->
<!-- <ion-list *ngIf="ReplacementList">
-->
<!-- <ion-radio-group mode="md" [(ngModel)]="selEmp"> -->
<!-- <ion-grid fixed>
<ion-row justify-content-end>
<ion-col [ngClass]="{'activated': (active == i),'deactivated': (active != i)}" (click)="select(employee,i)"
*ngFor="let employee of demoeAttach;let i=index;"
size-xs="6" size-sm="6" size-md="6" size-lg="6" align-self-stretch>
<div class="profileImageDiv"> <img class="profileImage" src="../assets/imgs/profile.png"></div>
<div *ngIf="active == i" class="selIEmpDiv"> <img class="selIEmpImage" src="../assets/imgs/green.png"></div>
<div [hidden]="isAnswer==true" *ngIf="actionHistory.length >0 && !userSelected">
<div class="uk-margin">
{{'replacementRoll, related' | translate}}
</div>
<br/>
<div class="repContentDiv">
<ion-label style="color:var(--dark) !important">
<span style="font-weight: bold !important">{{employee.EMPLOYEE_DISPLAY_NAME}}</span>
<br>{{employee.USER_NAME}}<br>
{{employee.EMAIL_ADDRESS}}</ion-label>
<div class="square-container uk-padding" >
<div (click)="select(employee,i)" *ngFor="let employee of actionHistory;let i=index;" class="square">
<div class="profileImageDiv">
<img *ngIf="employee.EMPLOYEE_IMAGE" class="empImgeRep" [src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE">
<img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImgeRep" src="../assets/imgs/profile.png">
<ion-label class="employee-details">
<span>{{employee.NAME}}</span>
</ion-label>
<div class='star-fav'>
<img src="assets/imgs/fav.svg" />
</div>
</ion-col>
</ion-row>
</ion-grid> -->
</div>
</div>
</div>
</div>
<br/>
<div [hidden]="isAnswer==true" *ngIf="favoriteUserList.length> 0 && !userSelected">
<div class="uk-margin">
{{'replacementRoll, favorite' | translate}}
</div>
<!-- </ion-radio-group> -->
<!--
</ion-list> -->
<div class="square-container uk-padding" >
<div (click)="select(employee,i)" *ngFor="let employee of favoriteUserList;let i=index;" class="square">
<div class="profileImageDiv">
<img *ngIf="employee.EMPLOYEE_IMAGE" class="empImgeRep" [src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE">
<img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImgeRep" src="../assets/imgs/profile.png">
<ion-label class="employee-details">
<span>{{employee.EMPLOYEE_DISPLAY_NAME}}</span>
</ion-label>
<div class='star-fav'>
<img src="assets/imgs/fav filled.svg" />
</div>
</div>
</div>
</div>
</div>
<div [hidden]="isAnswer==true" *ngIf="ReplacementList.length>0 && !userSelected" class="uk-margin">
{{'replacementRoll, search-result' | translate}}
</div>
<br/>
<ion-item [hidden]="isAnswer==true" lines="none" *ngIf="!userSelected">
<div class="square-container">
<div (click)="select(employee,i)" *ngFor="let employee of ReplacementList;let i=index;" class="square">
<div class="profileImageDiv">
@ -106,32 +122,27 @@
<img *ngIf="employee.EMPLOYEE_IMAGE" class="empImgeRep" [src]="'data:image/png;base64,'+employee.EMPLOYEE_IMAGE">
<img *ngIf="employee.EMPLOYEE_IMAGE == null" class="empImgeRep" src="../assets/imgs/profile.png">
</div>
<ion-label class="employee-details">
<span>{{employee.EMPLOYEE_DISPLAY_NAME}}</span>
<!-- <br>{{employee.USER_NAME}}<br>
{{employee.EMAIL_ADDRESS}} -->
</ion-label>
<div class='star-fav'>
<img src="assets/imgs/fav.svg" />
</div>
</div>
<div *ngIf="active == i" class="selIEmpDiv">
<img class="selIEmpImage" src="../assets/imgs/green.png">
</div>
<div [ngClass]="{'activated': (active == i),'deactivated': (active != i)}"
class="content">
<ion-label>
<span style="font-weight: bold !important">{{employee.EMPLOYEE_DISPLAY_NAME}}</span>
<br>{{employee.USER_NAME}}<br>
{{employee.EMAIL_ADDRESS}}
</ion-label>
</div>
</div>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</div>
</ion-item>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content></ion-infinite-scroll-content>
</ion-infinite-scroll>
</div>
@ -146,7 +157,7 @@
<ion-footer *ngIf="!messageSuccess">
<div class="noteInput" *ngIf="isAnswer== false">
<div class="noteInput" *ngIf="isAnswer== false && userSelected ==true">
<ion-label class="boldTxtNav" padding>{{"replacementRoll, enterNote" | translate}}
</ion-label>
@ -156,10 +167,10 @@
</div>
<br/>
<div class="centerDiv">
<ion-button class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; " ion-button (click)="submitAction()">
<ion-button *ngIf="userSelected ==true" class="footer-button" style="background: var(--newgreen)!important;border-radius: 10px; --background: transparent; " ion-button (click)="submitAction()">
{{'general, submit' | translate}}</ion-button>
<ion-button class="footer-button" style="background: var(--darkblue)!important;border-radius: 10px; --background: transparent; " ion-button (click)="closeModal()">
<ion-button class="footer-button" style="border-radius: 10px; --background: transparent; " ion-button (click)="closeModal()">
{{'general, cancel' | translate}}</ion-button>
</div>
</ion-footer>

@ -3,10 +3,12 @@ button.item-button.button.button-md.button-clear.button-clear-md {
}
.footer-button {
border-radius: 3px;
padding: 0 1.1em;
min-height: 45px;
min-width: 200px;
background: #dbdbdb;
border-radius: 10px;
color: black;
--background: transparent;
font-weight: bold;
width: 75%;
}
// ion-item {
@ -27,8 +29,7 @@ button.item-button.button.button-md.button-clear.button-clear-md {
.profileImageDiv{
text-align: center;
margin-bottom: -27px;
z-index: 3;
position: relative;
top: 0;
@ -36,8 +37,7 @@ button.item-button.button.button-md.button-clear.button-clear-md {
}
.profileImage{
width:60px !important;
// margin-left: -25px;
// margin-right: 22px;
}
.activated{
@ -127,7 +127,7 @@ button.item-button.button.button-md.button-clear.button-clear-md {
}
.square{
// width:calc(100% / 2);
width:50%;
width:100%;
float:left;
position: relative;
// padding-bottom: calc(100% / 2);
@ -152,9 +152,39 @@ button.item-button.button.button-md.button-clear.button-clear-md {
}
.radio-label{
margin: 4px;
position: relative;
bottom: 4px;
}
ion-radio{
--color-checked: #269db8;
}
.center{text-align: center;}
.boldTxtNav{
font-weight: bold;
}
.employee-details{
display:inline-block;
margin: 10px;
}
.empImgeRep{
display: inline-block;
height: 40px;
width: 40px;
}
.star-fav{
float: right;
margin: 15px;
}
.uk-margin{margin: 15px 0px 0px 15px;
font-weight: bold;
clear: both;
position: relative;
top: 10px;}
.uk-padding{ padding: 20px;}
.uk-padding .employee-details{
bottom: 10px;
position: relative;}

@ -30,33 +30,39 @@ export class WorkListReplacementRollComponent implements OnInit {
P_PAGE_NUM: number;
P_PAGE_LIMIT: number;
ReplacementList: any = [];
searchBy: string = "";
searchBy: string = "1";
IsReachEnd: boolean = false;
ReplacmentListRes: WorKListReplacmentEmployeeResponse;
private WorkListReplacmentEmployeeObj: WorkListReplacmentEmployeeRequest = new WorkListReplacmentEmployeeRequest();
private WorkListActionObj: WorkListActionRequest;
getpassResAttr: any = [];
active: any;
demoeAttach:any=[];
isSelect: boolean =false;
demoeAttach: any = [];
isSelect: boolean = false;
searchKeyEnter: boolean = false;
messageSuccess: boolean =false;
messageSuccess: boolean = false;
public direction: string;
P_RESPOND_ATTRIBUTES_TBL: any[];
typingTimer: any;
userSelected: boolean;
actionHistory: [] = [];
favoriteUserList: [] = [];
constructor(public worklistService: WorklistService, private cs: CommonService, public 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.getFavruite();
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);
this.actionHistory = this.cs.sharedService.getSharedData('actionHistoryData', 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;
@ -65,12 +71,17 @@ export class WorkListReplacementRollComponent implements OnInit {
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
this.WorkListActionObj.P_ACTION_MODE = "";
this.WorkListActionObj.P_COMMENTS = "";
this.WorkListActionObj.RespondAttributeList =[];// this.getpassResAttr;
this.WorkListActionObj.RespondAttributeList = [];// this.getpassResAttr;
this.WorkListActionObj.P_APPROVER_INDEX = null;
this.direction = TranslatorService.getCurrentLanguageName();
var requestInfoDel = this.cs.sharedService.getSharedData('requestInfoDelUser');
if (requestInfoDel != null) {
this.userSelected = true;
this.inputSearch = requestInfoDel.NAME;
}
}
ngOnInit() {
ngOnInit() {
}
@ -178,10 +189,13 @@ export class WorkListReplacementRollComponent implements OnInit {
}
select(selectEmp,index){
select(selectEmp, index) {
console.log(selectEmp.EMPLOYEE_DISPLAY_NAME);
this.selEmp=selectEmp
this.active=index;
this.selEmp = selectEmp
this.active = index;
this.userSelected = true;
this.inputSearch = selectEmp.EMPLOYEE_DISPLAY_NAME ? selectEmp.EMPLOYEE_DISPLAY_NAME : selectEmp.NAME;
this.getreplacmentemployee();
}
clear() {
this.selEmpName = "";
@ -208,18 +222,18 @@ export class WorkListReplacementRollComponent implements OnInit {
}
submitAction() {
if (this.selEmp && this.isAnswer == false) {
// this.selectedUserInf = this.ReplacementList[this.selEmp];
this.selectedUserInf = this.selEmp;
console.log("selEmp "+ this.selEmp.USER_NAME);
this.selectedUserInf = this.selEmp;
console.log("selEmp " + this.selEmp.USER_NAME);
if (this.selectedUserInf && this.selectedUserInf.USER_NAME) {
console.log("userInfo "+this.selectedUserInf.USER_NAME);
console.log("userInfo " + this.selectedUserInf.USER_NAME);
if (this.userNote) {
if(this.getPassActionMode == "APPROVE_AND_FORWARD" || this.getPassActionMode == "FORWARD"){
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;
@ -227,30 +241,38 @@ export class WorkListReplacementRollComponent implements OnInit {
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;
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.P_COMMENTS = ""// response Attr
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
}else{
} 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.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);
if (this.cs.validResponse(result)) {
if (result.MessageStatus == 1) {
this.handleApplayActionResult(result);
}
}
});
} else {
let msg: string = this.ts.trPK("replacementRoll", "enterNote");
this.cs.showErrorMessageDialog(() => {
@ -291,21 +313,23 @@ export class WorkListReplacementRollComponent implements OnInit {
if (result.MessageStatus == 1) {
this.cs.sharedService.setSharedData(true, 'loadWorkList');
this.messageSuccess = true;
setTimeout(() => {
this.messageSuccess = false;
//this.modalCtrl.dismiss(succ);
this.modalCtrl.dismiss({
'dismissed': true,
data: "Success"
});
}, 5000);
this.messageSuccess = true;
this.cs.openNotificationPage();
}
setTimeout(() => {
this.messageSuccess = false;
//this.modalCtrl.dismiss(succ);
this.modalCtrl.dismiss({
'dismissed': true,
data: "Success"
});
if (this.selEmp && this.isAnswer == false)
this.setFavorite();
}, 5000);
this.cs.openNotificationPage();
}
} // not valid it
@ -358,33 +382,97 @@ export class WorkListReplacementRollComponent implements OnInit {
}
}
public col(){
public col() {
alert("test");
}
closeModal() {
this.modalCtrl.dismiss();
}
onChangeSelect(select){
onChangeSelect(select) {
console.log(select.detail.value);
let selectValue= select.detail.value;
let selectValue = select.detail.value;
if (selectValue == "1" || selectValue == "2" || selectValue == "3") {
this.isSelect = true;
}
else {
this.isSelect = false;
}
}
onChangeInput() {
clearTimeout(this.typingTimer);
this.typingTimer = setTimeout(() => {
if (this.inputSearch.length > 2) {
this.getreplacmentemployee();
}
}, 3000);
if(selectValue == "1" || selectValue == "2" ||selectValue == "3"){
this.isSelect=true;
}
else{
this.isSelect=false;
}
// if (this.inputSearch.length > 0) {
// this.searchKeyEnter = true;
// this.getreplacmentemployee();
// } else {
// this.searchKeyEnter = false;
// }
}
getPlaceHolder() {
return this.searchBy == '1' ? this.ts.trPK('replacementRoll', 'searchbyname') : this.searchBy == '2' ? this.ts.trPK('replacementRoll', 'searchbyusername') : this.ts.trPK('replacementRoll', 'searchbyemail');
}
getFavruite() {
this.cs.startLoading();
this.worklistService.getFavorite({}, () => {
}).subscribe((result) => {
if (this.cs.validResponse(result)) {
this.cs.stopLoading();
this.favoriteUserList = result['Mohemm_GetFavoriteReplacementsList'];
}
})
}
saveUserFavruiteList(request) {
this.worklistService.saveFavoriteList(request, () => {
}).subscribe((result) => {
if (this.cs.validResponse(result)) {
console.log(result);
}
})
}
onChangeInput(){
if (this.inputSearch.length >0) {
this.searchKeyEnter=true;
}else{
this.searchKeyEnter=false;
}
setFavorite() {
var confirmBoxhtml = `<div>
<h4>Do you want to add ` + this.selEmp.EMPLOYEE_DISPLAY_NAME + ` in your favorite list </h4>
<br/>
<br/>
<div class="fav-profileImageDiv">`;
if (this.selEmp.EMPLOYEE_IMAGE)
confirmBoxhtml += '<img class="empImgeRep" src="data:image/png;base64,' + this.selEmp.EMPLOYEE_IMAGE + '">';
if (!this.selEmp.EMPLOYEE_IMAGE)
confirmBoxhtml += '<img class="empImgeRep" src="../assets/imgs/profile.png">';
confirmBoxhtml += ` <ion-label class="fav-employee-details">
<span>` + this.selEmp.EMPLOYEE_DISPLAY_NAME + `</span>
</ion-label>
</div>
</div>`
let userIndex = this.favoriteUserList.findIndex(x => x['USER_NAME'] == this.selEmp.USER_NAME)
if (userIndex == -1)
this.cs.presentConfirmDialog(
confirmBoxhtml
, () => {
var request =
[{ "USER_NAME": this.selEmp['USER_NAME'], "EMPLOYEE_DISPLAY_NAME": this.selEmp['EMPLOYEE_DISPLAY_NAME'], "EMAIL_ADDRESS": this.selEmp.EMAIL_ADDRESS, "EMPLOYEE_IMAGE": this.selEmp.EMPLOYEE_IMAGE, "IsFavorite": true }];
this.saveUserFavruiteList(request);
}, () => {
})
}
}

@ -288,16 +288,16 @@
<div class="timeline">
<ion-item *ngFor="let actionHistory of actionHistoryRes">
<div class="timeline-item" slot="start">
<div
<div class="timeline-item" slot="start">
<div
[class]="direction == 'en'? 'timeline-thumb-en timeline-icon': 'timeline-thumb-ar timeline-icon'">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE" class="empImge"
[src]="'data:image/png;base64,'+actionHistory.EMPLOYEE_IMAGE">
<img *ngIf="actionHistory.EMPLOYEE_IMAGE == null" class="empImge"
src="../assets/imgs/profile.png"> </div>
</div>
<ion-col>
<ion-label style="color:black !important ;font-weight: bold;">
<ion-col size="8">
<ion-label class="name">
{{actionHistory.NAME}}
</ion-label>
@ -331,6 +331,11 @@
class="dateActionHistory">
{{actionHistory.NOTIFICATION_DATE| dateString }} </ion-label>
</ion-col>
<ion-col size="4">
<img class="req_info" src="assets/imgs/req info.svg" (click)="openRequestInfoDel(actionHistory, 'REQUEST_INFO')" />
<img class="req_info" src="assets/imgs/delegate.svg" (click)="openRequestInfoDel(actionHistory, 'DELEGATE')"/>
</ion-col>
<div class="line"></div>
</ion-item>
</div>

@ -95,9 +95,14 @@
}
.dateActionHistory{
text-align: end;
// margin-top: -25px;
margin-top: -3px;
display: inline-block;
margin-left: 5px;
}
.req_info{
width: 25px;
height: 25px;
display: inline-block;
margin: 5px;
}
@ -329,4 +334,10 @@ ion-card{
.action-btn {
white-space: pre-wrap;
font-size: 12px;
}
.name{
color:black !important ;font-weight: bold;
}
.timeline-item{
margin: 0;
}

@ -117,7 +117,7 @@ export class WorklistMainComponent implements OnInit {
private modalCtrl: ModalController,
public dashboredService: DashboredService,
public authService: AuthenticationService
) {
) {
this.direction = TranslatorService.getCurrentLanguageName()
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
this.WorkListActionHistoryObj.P_PAGE_NUM = 1;
@ -142,22 +142,18 @@ export class WorklistMainComponent implements OnInit {
public segmentChanged(event: any) {
this.activeSegment = event.detail.value;
if(this.activeSegment === 'info')
{
this.slides.slideTo(0);
}
else if(this.activeSegment === 'item-req' )
{
this.slides.slideTo(1);
}
else if(this.activeSegment === 'action-history')
{
this.slides.slideTo(2);
}
else if(this.activeSegment === 'attach')
{
this.slides.slideTo(3);
}
if (this.activeSegment === 'info') {
this.slides.slideTo(0);
}
else if (this.activeSegment === 'item-req') {
this.slides.slideTo(1);
}
else if (this.activeSegment === 'action-history') {
this.slides.slideTo(2);
}
else if (this.activeSegment === 'attach') {
this.slides.slideTo(3);
}
console.log(" event.detail.value: " + event.detail.value);
}
@ -165,20 +161,16 @@ export class WorklistMainComponent implements OnInit {
this.slides.getActiveIndex().then(index => {
console.log(index);
console.log(event);
if(index === 0)
{
if (index === 0) {
this.activeSegment = 'info';
}
else if(index === 1)
{
else if (index === 1) {
this.activeSegment = 'item-req';
}
else if(index === 2)
{
else if (index === 2) {
this.activeSegment = 'action-history';
}
else if(index === 3)
{
else if (index === 3) {
this.activeSegment = 'attach';
}
console.log(this.activeSegment);
@ -832,6 +824,7 @@ export class WorklistMainComponent implements OnInit {
actionHis[i].visible = false;
}
this.actionHistoryRes = actionHis;
console.log("test");
}
@ -917,11 +910,12 @@ export class WorklistMainComponent implements OnInit {
}// End handleWorkListButtonsResult
async openRepRolModal() {
this.common.sharedService.setSharedData(this.actionHistoryRes, 'actionHistoryData');
const modal = await this.modalCtrl.create({
component: WorkListReplacementRollComponent,
backdropDismiss: false,
});
modal.cssClass = 'replaceRoll-modal';
modal.cssClass = 'replaceRoll-modal2';
modal.onDidDismiss()
.then((data) => {
console.log(data.data);
@ -1009,4 +1003,8 @@ export class WorklistMainComponent implements OnInit {
}
});
}
openRequestInfoDel(userData, flag) {
this.common.sharedService.setSharedData(userData, 'requestInfoDelUser');
this.actionButton(flag);
}
}

@ -0,0 +1,144 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
<ion-back-button color="light" class="btnBack" defaultHref="/home"></ion-back-button>
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
</div>
<div class="header"></div>
<div class="bottom"></div>
<div class="sales-items" *ngIf="segment =='1'">
<ion-grid>
<ion-row>
<ion-col size="12">
<ion-item lines="none" class="SearchtextBox">
<ion-input placeholder="Search Item"></ion-input>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="10">
<p class="filterText">Browse Category</p>
</ion-col>
<ion-col size="2">
<img src="assets/imgs/itemsforsale/filter.svg">
</ion-col>
</ion-row>
</ion-grid>
<div class="container-icon">
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
<div class="box-icon">
<div class="sale-icon">
<div class="top">
<ion-icon name="images"></ion-icon>
</div>
<div class="bottom-icon">
<p>Mobile & Tablets</p>
</div>
</div>
</div>
</div>
<ion-row>
<ion-col size="6" (click)="openDetails()">
<ion-card>
<ion-card-header>
<img src="assets/imgs/itemsforsale/furniture.svg" />
<ion-card-title>Card Title</ion-card-title>
</ion-card-header>
<ion-card-content>
Keep close to Nature's heart... and break
<strong class="dark">
15% Off + Free Delivery
</strong>
<ion-row class="green">
<ion-col size="10">
Offer Valid
</ion-col>
<ion-col size="2">
<ion-icon name="arrow-round-forward"></ion-icon>
</ion-col>
</ion-row>
</ion-card-content>
</ion-card>
</ion-col>
<ion-col size="6" (click)="openDetails()">
<ion-card>
<ion-card-header>
<img src="assets/imgs/itemsforsale/furniture.svg" />
<ion-card-title>Card Title</ion-card-title>
</ion-card-header>
<ion-card-content>
Keep close to Nature's heart... and break
<strong class="dark">
15% Off + Free Delivery
</strong>
<ion-row class="green">
<ion-col size="10">
Offer Valid
</ion-col>
<ion-col size="2">
<ion-icon name="arrow-round-forward"></ion-icon>
</ion-col>
</ion-row>
</ion-card-content>
</ion-card>
</ion-col>
</ion-row>
</div>
</ion-content>

@ -0,0 +1,119 @@
.header{
width: 100%;
position: absolute;
background: #259CB8;
top: 0;
}
.header-toolbar{
--background: #259CB8 !important;
}
.bottom{
height: 100%;
width: 100%;
position: absolute;
background: #F5F5F5;
}
.SearchtextBox{
margin: 10px;
border-radius: 20px;
}
.filterText{
margin: 5px 15px 15px;
font-size: 18px;
font-weight: bold;
}
.container-icon{
padding: 0 10px 20px;
position: relative;
white-space:nowrap;
overflow-x:auto;
}
.box-icon{
width:90px;
height: 90px;
margin: 0px;
display: inline-block;
}
.sale-icon{
box-shadow: 1px 1px 5px 1px #cccc;
padding: 5px;
margin: 5px;
border-radius: 10px;
background: #fff;
}
.sale-icon ion-icon{
font-size: 25px;
}
.sale-icon p{
margin-top:5px;
margin-bottom: 5px;
}
.bottom-icon{
text-overflow: clip;
white-space: normal;
font-size: 14px;
}
ion-card{
margin:5px;
}
ion-card-header{
background: #fff;
}
ion-card-header img{
margin:15px auto;
}
.dark{
display: block;
margin: 6px;
font-size: 18px;
}
ion-card-title{
font-weight: bold;
font-size: 18px;
padding: 5px;
}
.orange{
color: orange;
}
.green{
color:#00AE4D;
}
ion-segment-button ion-label{
padding: 0;
font-size: 12px;
}
.segment-button-checked ion-label{
color: #fff !important;
}
.segment-button-checked{
background: rgb(46, 46, 46);
}
ion-item{
--background: #fff;
margin: 10px;
border-radius: 25px;
padding: 5px;
}
ion-item h3{
color: #000;
font-weight: bold;
font-size: 16px;
}
.yellow{
color:#ffc107;
}
ion-item .icon{
margin: 5px;
}
.edit{
margin-left:20px !important;
}

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

@ -0,0 +1,19 @@
import { Component, OnInit } from '@angular/core';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
})
export class HomeComponent implements OnInit {
segment: any = '1';
constructor(public ts: TranslatorService, public cs: CommonService,) { }
ngOnInit() { }
openDetails() {
this.cs.navigateForward('/offersdiscount/offer-details');
}
}

@ -0,0 +1,38 @@
<ion-content>
<div class="head-title">
<ion-toolbar class="header-toolbar">
<ion-buttons slot="start">
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
</ion-toolbar>
</div>
<div class="header"></div>
<div class="bottom"></div>
<div>
<ion-card>
<ion-card-header>
<img src="assets/imgs/itemsforsale/furniture.svg" />
<ion-card-title>Furniture Table</ion-card-title>
</ion-card-header>
<ion-card-content>
Keep close to Nature's heart... and break clear away, once in awhile,
and climb a mountain or spend a week in the woods. Wash your spirit clean.
<div class="content-bottom">
<p class="green">Offer Valid</p>
<h1>15% oFF + FREE HOME DELIVERY</h1>
</div>
<ion-item-divider>
</ion-item-divider>
</ion-card-content>
</ion-card>
</div>
</ion-content>

@ -0,0 +1,37 @@
.header{
height: 150px;
width: 100%;
position: absolute;
background: #259CB8;
top: 0;
}
.header-toolbar{
--background: #259CB8 !important;
}
.bottom{
height: 88%;
width: 100%;
position: absolute;
background: #F5F5F5;
top: 20%;
}
ion-card-header{
background-color: #fff;
padding: 15px !important;
}
.content-bottom{
padding: 15px;
}
.green{
color:green;
font-weight: bold;
}
.content-bottom h1{
font-size: 20px;
margin-top: 10px;
font-weight: bold;
}
.details-button ion-button{
--background: #565656;
}

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

@ -0,0 +1,16 @@
import { Component, OnInit } from '@angular/core';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
@Component({
selector: 'app-offer-details',
templateUrl: './offer-details.component.html',
styleUrls: ['./offer-details.component.scss'],
})
export class OfferDetailsComponent implements OnInit {
constructor(public ts: TranslatorService, public cs: CommonService,) { }
ngOnInit() { }
}

@ -0,0 +1,41 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { OffersdiscountPage } from './offersdiscount.page';
import { HomeComponent } from './home/home.component';
import { OfferDetailsComponent } from './offer-details/offer-details.component';
const routes: Routes = [
{
path: '',
component: OffersdiscountPage,
children: [
{
path: 'home',
component: HomeComponent
},
{
path: 'offer-details',
component: OfferDetailsComponent
},
],
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [OffersdiscountPage, HomeComponent, OfferDetailsComponent]
})
export class OffersdiscountPageModule { }

@ -0,0 +1,3 @@
<ion-content>
<ion-router-outlet></ion-router-outlet>
</ion-content>

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

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-offersdiscount',
templateUrl: './offersdiscount.page.html',
styleUrls: ['./offersdiscount.page.scss'],
})
export class OffersdiscountPage implements OnInit {
constructor() { }
ngOnInit() {
}
}

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<path id="delete_1_" data-name="delete (1)" d="M13.657,2.343A8,8,0,0,0,2.343,13.657,8,8,0,0,0,13.657,2.343Zm-2.2,8.012a.781.781,0,1,1-1.1,1.1L8,9.1,5.645,11.46a.781.781,0,0,1-1.1-1.1L6.9,8,4.54,5.645a.781.781,0,0,1,1.1-1.1L8,6.9,10.355,4.54a.781.781,0,0,1,1.1,1.1L9.1,8Zm0,0" fill="#ca3332"/>
</svg>

After

Width:  |  Height:  |  Size: 386 B

@ -0,0 +1,5 @@
<svg id="delegate" xmlns="http://www.w3.org/2000/svg" width="27.148" height="27.148" viewBox="0 0 27.148 27.148">
<path id="Path_2" data-name="Path 2" d="M213.386,301A2.389,2.389,0,0,0,211,303.386v1.946a6.693,6.693,0,0,0,4.772,0v-1.946A2.389,2.389,0,0,0,213.386,301Z" transform="translate(-199.812 -285.04)" fill="#259cb8"/>
<circle id="Ellipse_149" data-name="Ellipse 149" cx="1" cy="1" r="1" transform="translate(12.599 10.599)" fill="#259cb8"/>
<path id="Path_3" data-name="Path 3" d="M23.171,19.194a3.95,3.95,0,0,0-2.19.663l-1.827-1.827a7.04,7.04,0,0,0-.012-8.9l1.84-1.84a3.989,3.989,0,1,0-1.125-1.125l-1.84,1.84a7,7,0,0,0-8.886,0l-1.84-1.84A3.989,3.989,0,1,0,6.166,7.291l1.84,1.84a7.04,7.04,0,0,0-.012,8.9L6.166,19.857a3.989,3.989,0,1,0,1.125,1.125l1.827-1.827c.157.126.312.253.48.365V18.346a3.981,3.981,0,0,1,3.977-3.977,2.386,2.386,0,1,1,2.386-2.386,2.389,2.389,0,0,1-2.386,2.386,3.981,3.981,0,0,1,3.977,3.977V19.52c.167-.112.323-.24.48-.365l1.827,1.827a3.973,3.973,0,1,0,3.314-1.787Z" fill="#259cb8"/>
</svg>

After

Width:  |  Height:  |  Size: 1023 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14.004" height="13.318" viewBox="0 0 14.004 13.318">
<path id="Path_4" data-name="Path 4" d="M18.964,10.97a.368.368,0,0,0-.343-.255l-4.738-.1L12.328,6.157a.368.368,0,0,0-.7,0L10.077,10.62l-4.738.1a.368.368,0,0,0-.214.662L8.9,14.231,7.528,18.753a.368.368,0,0,0,.562.409l3.89-2.7,3.89,2.7a.368.368,0,0,0,.562-.409L15.06,14.231l3.775-2.854A.368.368,0,0,0,18.964,10.97Z" transform="translate(-4.978 -5.91)" fill="#259cb8"/>
</svg>

After

Width:  |  Height:  |  Size: 476 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="15.025" height="14.335" viewBox="0 0 15.025 14.335">
<path id="Path_4" data-name="Path 4" d="M18.964,10.97a.368.368,0,0,0-.343-.255l-4.738-.1L12.328,6.157a.368.368,0,0,0-.7,0L10.077,10.62l-4.738.1a.368.368,0,0,0-.214.662L8.9,14.231,7.528,18.753a.368.368,0,0,0,.562.409l3.89-2.7,3.89,2.7a.368.368,0,0,0,.562-.409L15.06,14.231l3.775-2.854A.368.368,0,0,0,18.964,10.97Z" transform="translate(-4.467 -5.41)" fill="none" stroke="#259cb8" stroke-width="1"/>
</svg>

After

Width:  |  Height:  |  Size: 507 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22.596" height="22.596" viewBox="0 0 22.596 22.596">
<path id="add_5_" data-name="add (5)" d="M13.719,9.28a.4.4,0,0,1-.4-.4V0H9.28V8.877a.4.4,0,0,1-.4.4H0v4.035H8.877a.4.4,0,0,1,.4.4V22.6h4.035V13.719a.4.4,0,0,1,.4-.4H22.6V9.28Zm0,0" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 304 B

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="33.045" height="28.881" viewBox="0 0 33.045 28.881">
<g id="pawprint" transform="translate(0)">
<path id="Path_4551" data-name="Path 4551" d="M82.4,185.654a8.046,8.046,0,0,0-13.549,0l-3.583,5.59a5.093,5.093,0,0,0,6.337,7.411l.068-.03a10.012,10.012,0,0,1,7.972.03,5.065,5.065,0,0,0,2.044.432,5.13,5.13,0,0,0,1.14-.129,5.094,5.094,0,0,0,3.154-7.714Zm0,0" transform="translate(-60.299 -170.206)" fill="#4d4d4d"/>
<path id="Path_4552" data-name="Path 4552" d="M5.931,107.953a3.906,3.906,0,0,0,2.28-2.419,5.046,5.046,0,0,0-.089-3.48,5.05,5.05,0,0,0-2.267-2.641,3.906,3.906,0,0,0-3.312-.267,4.473,4.473,0,0,0-2.19,5.9A4.718,4.718,0,0,0,4.6,108.2,3.7,3.7,0,0,0,5.931,107.953Zm0,0" transform="translate(0 -92.512)" fill="#4d4d4d"/>
<path id="Path_4553" data-name="Path 4553" d="M129.267,11.061c2.676,0,4.854-2.481,4.854-5.53S131.944,0,129.267,0s-4.853,2.481-4.853,5.531S126.591,11.061,129.267,11.061Zm0,0" transform="translate(-116.385)" fill="#4d4d4d"/>
<path id="Path_4554" data-name="Path 4554" d="M287.118,50.074h0a3.956,3.956,0,0,0,1.25.2,5.031,5.031,0,0,0,4.58-3.6,5.424,5.424,0,0,0-.077-3.742,4.1,4.1,0,0,0-6.083-2.022,5.424,5.424,0,0,0-2.3,2.951C283.605,46.511,284.786,49.3,287.118,50.074Zm0,0" transform="translate(-265.853 -37.654)" fill="#4d4d4d"/>
<path id="Path_4555" data-name="Path 4555" d="M383.908,171.789h0a4.756,4.756,0,0,0-5.615,7.586,3.8,3.8,0,0,0,2.279.736,4.908,4.908,0,0,0,3.876-2.053A4.474,4.474,0,0,0,383.908,171.789Zm0,0" transform="translate(-352.421 -160.014)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14.664" height="10.665" viewBox="0 0 14.664 10.665">
<path id="next_3_" data-name="next (3)" d="M15.469,8.861,10.8,4.2a.666.666,0,1,0-.943.943l3.528,3.528H1.667a.667.667,0,0,0,0,1.333H13.388L9.86,13.527a.666.666,0,1,0,.943.943L15.469,9.8a.667.667,0,0,0,0-.942Z" transform="translate(-1 -4)" fill="#259cb8"/>
</svg>

After

Width:  |  Height:  |  Size: 364 B

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="31.183" height="31.183" viewBox="0 0 31.183 31.183">
<g id="weightlifting" transform="translate(0 0)">
<path id="Path_4548" data-name="Path 4548" d="M3.386,261.6c-.331.208-.241.152-2.653,2.564a2.511,2.511,0,0,0,0,3.547l2.334,2.334-1.132,1.132a1.9,1.9,0,0,0,0,2.678l1.575,1.575a1.892,1.892,0,0,0,2.678,0L7.32,274.3l1.819,1.819a2.511,2.511,0,0,0,3.547,0c2.441-2.441,2.361-2.331,2.564-2.653Z" transform="translate(0 -245.67)" fill="#4d4d4d"/>
<path id="Path_4549" data-name="Path 4549" d="M276.12,9.138,273.786,6.8l1.132-1.132a1.9,1.9,0,0,0,0-2.678L273.343,1.42a1.892,1.892,0,0,0-2.678,0l-1.132,1.132L267.715.733a2.511,2.511,0,0,0-3.547,0c-2.441,2.442-2.361,2.331-2.564,2.653l11.863,11.863c.331-.208.241-.152,2.653-2.564A2.511,2.511,0,0,0,276.12,9.138Z" transform="translate(-245.67)" fill="#4d4d4d"/>
<path id="Path_4550" data-name="Path 4550" d="M0,0H13.847V5.476H0Z" transform="translate(8.783 18.576) rotate(-45)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1007 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="12.201" height="13.091" viewBox="0 0 12.201 13.091">
<path id="Path_13" data-name="Path 13" d="M11.706,9.111c-.791-.676-1.593-1.086-2.375-.411l-.466.408c-.341.3-.976,1.681-3.429-1.141S4.443,4.71,4.785,4.416l.469-.409c.777-.677.484-1.529-.077-2.406L4.839,1.07C4.276.2,3.663-.38,2.884.3L2.463.664A3.952,3.952,0,0,0,.922,3.279C.641,5.138,1.528,7.266,3.559,9.6s4.014,3.51,5.895,3.489a3.962,3.962,0,0,0,2.8-1.161l.422-.368c.777-.675.294-1.363-.5-2.041Z" transform="translate(-0.872 0)" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 551 B

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="38.443" height="24.839" viewBox="0 0 38.443 24.839">
<g id="car_1_" data-name="car (1)" transform="translate(-0.001 -73.942)">
<path id="Path_4534" data-name="Path 4534" d="M132.422,279H118.413l-1.243,3.019-.215.523h2.7a.454.454,0,0,1-.007-.072v-1.31a.459.459,0,0,1,.918,0v1.31a.454.454,0,0,1-.007.072h4.406a.454.454,0,0,1-.007-.072v-1.31a.459.459,0,0,1,.918,0v1.31a.454.454,0,0,1-.007.072h4.406a.454.454,0,0,1-.007-.072v-1.31a.459.459,0,0,1,.918,0v1.31a.452.452,0,0,1-.007.072h2.7l-.215-.523Z" transform="translate(-106.195 -186.191)" fill="#4d4d4d" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"/>
<path id="Path_4535" data-name="Path 4535" d="M38.178,81.024a.782.782,0,0,0-.686-.473H33.979a.782.782,0,0,0-.686.473,4.839,4.839,0,0,0-.243.97c-1.545-2.975-3.256-6.286-3.256-6.286a1.4,1.4,0,0,0-1.066-.9,52.813,52.813,0,0,0-19.012,0,1.4,1.4,0,0,0-1.066.9S6.94,79.019,5.395,81.994a4.84,4.84,0,0,0-.243-.97.781.781,0,0,0-.686-.473H.953a.782.782,0,0,0-.686.473,3.46,3.46,0,0,0,0,2.664.782.782,0,0,0,.686.473H4.459c0,.044,0,.087.008.131A1.8,1.8,0,0,0,3.19,86.015v11.9a.866.866,0,0,0,.866.866H8.413a.866.866,0,0,0,.866-.866v-2.09h.7l1.5-3.652a.459.459,0,0,1,.424-.284H26.535a.459.459,0,0,1,.424.284l1.5,3.652h.7v2.09a.866.866,0,0,0,.866.866H34.39a.866.866,0,0,0,.866-.866v-11.9a1.8,1.8,0,0,0-1.278-1.723c0-.044.007-.087.008-.131h3.506a.782.782,0,0,0,.686-.473A3.46,3.46,0,0,0,38.178,81.024Zm-27.6-4.3s2.092-.531,8.641-.531,8.64.531,8.64.531l3.071,7.433H7.511ZM6.766,89.59V87.148h5.29l1.572,2.442Zm24.914,0H24.818l1.572-2.442h5.29V89.59Z" transform="translate(0 0)" fill="#4d4d4d" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="14.345" height="18.444" viewBox="0 0 14.345 18.444">
<g id="Group_7396" data-name="Group 7396" transform="translate(0)">
<path id="Path_4576" data-name="Path 4576" d="M64,97.629a2.049,2.049,0,0,0,2.049,2.049h8.2A2.049,2.049,0,0,0,76.3,97.629v-12.3H64Z" transform="translate(-62.975 -81.234)" fill="#ca3332"/>
<path id="Path_4577" data-name="Path 4577" d="M53.426,1.025,52.4,0H47.278L46.253,1.025H42.667V3.074H57.012V1.025Z" transform="translate(-42.667)" fill="#ca3332"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 543 B

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16.102" height="16.102" viewBox="0 0 16.102 16.102">
<g id="Group_7192" data-name="Group 7192" transform="translate(0 0)">
<path id="Path_4489" data-name="Path 4489" d="M10.955,91.119a1.7,1.7,0,0,1-.659.407l-2.383.794a1.681,1.681,0,0,1-.533.087h0a1.685,1.685,0,0,1-1.6-2.218l.794-2.383a1.693,1.693,0,0,1,.407-.659L12.13,82H2.06A2.062,2.062,0,0,0,0,84.06V96.043A2.062,2.062,0,0,0,2.06,98.1H14.043a2.062,2.062,0,0,0,2.06-2.06V85.972Z" transform="translate(0 -82)" fill="#2e303a"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 546 B

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="28.545" height="33.303" viewBox="0 0 28.545 33.303">
<g id="electrical-appliances" transform="translate(2.5)">
<path id="Path_4536" data-name="Path 4536" d="M14.151,161.189V160H-2.5v23.788H8.2v-22a.6.6,0,0,1,.595-.595ZM-.121,164.758a.6.6,0,0,1-.595.595.6.6,0,0,1-.595-.595v-3.568a.6.6,0,0,1,.595-.595.6.6,0,0,1,.595.595Zm0,0" transform="translate(0 -150.485)" fill="#4d4d4d"/>
<path id="Path_4537" data-name="Path 4537" d="M214.151,260H197.5v17.841h16.651Zm-8.326,16.057a6.542,6.542,0,1,1,6.542-6.542A6.542,6.542,0,0,1,205.826,276.057Zm0,0" transform="translate(-188.106 -244.538)" fill="#4d4d4d"/>
<path id="Path_4538" data-name="Path 4538" d="M252.852,330a5.352,5.352,0,1,0,5.352,5.352A5.352,5.352,0,0,0,252.852,330Zm0,1.982a3.374,3.374,0,0,0-3.37,3.37.595.595,0,1,1-1.189,0,4.565,4.565,0,0,1,4.56-4.56.595.595,0,1,1,0,1.189Zm0,0" transform="translate(-235.133 -310.375)" fill="#4d4d4d"/>
<path id="Path_4539" data-name="Path 4539" d="M14.151,0H-2.5V8.326H14.151ZM-.121,7.136a.6.6,0,0,1-.595.595.6.6,0,0,1-.595-.595V3.568a.6.6,0,0,1,.595-.595.6.6,0,0,1,.595.595Zm0,0" fill="#4d4d4d"/>
<path id="Path_4540" data-name="Path 4540" d="M261.178,200H247.5v2.379h13.678Zm-10.7,1.784h-1.189a.595.595,0,0,1,0-1.189h1.189a.595.595,0,1,1,0,1.189Zm2.973,0h-1.189a.595.595,0,1,1,0-1.189h1.189a.595.595,0,1,1,0,1.189Zm0,0" transform="translate(-235.133 -188.106)" fill="#4d4d4d"/>
<path id="Path_4541" data-name="Path 4541" d="M197.5,200h1.784v2.379H197.5Zm0,0" transform="translate(-188.106 -188.106)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36.238" height="31.524" viewBox="0 0 36.238 31.524">
<g id="casual-t-shirt-" transform="translate(0 -19.219)">
<path id="Path_4546" data-name="Path 4546" d="M123.347,26.378A3.582,3.582,0,0,0,126.76,23.9a14.4,14.4,0,0,1-6.825,0A3.582,3.582,0,0,0,123.347,26.378Z" transform="translate(-105.229 -4.111)" fill="#4d4d4d"/>
<path id="Path_4547" data-name="Path 4547" d="M36.192,24.077a.83.83,0,0,0-.432-.475l-6.909-3.189a33.411,33.411,0,0,0-4.479-1.179.824.824,0,0,0-.158-.015.812.812,0,0,0-.793.637,5.434,5.434,0,0,1-10.607,0,.813.813,0,0,0-.793-.637.824.824,0,0,0-.158.015,33.539,33.539,0,0,0-4.481,1.179L.476,23.6a.813.813,0,0,0-.431.475.806.806,0,0,0,.043.64l3,5.919a.814.814,0,0,0,.963.415l3.331-.987V49.924a.821.821,0,0,0,.82.819H28.034a.82.82,0,0,0,.818-.819V30.064l3.334.987a.814.814,0,0,0,.963-.415l3-5.919A.822.822,0,0,0,36.192,24.077Z" transform="translate(0)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 954 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="19.446" height="19.624" viewBox="0 0 19.446 19.624">
<path id="Path_4563" data-name="Path 4563" d="M11.8,9.273a1.211,1.211,0,0,1,.319.82v8.924a.606.606,0,0,0,1.032.432L15.635,16.6c.333-.4.517-.6.517-.993V10.1a1.221,1.221,0,0,1,.319-.82l7.143-7.751A.909.909,0,0,0,22.946,0H5.32a.908.908,0,0,0-.668,1.524Z" transform="translate(-4.41)" fill="#4d4d4d"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="37.562" height="26.654" viewBox="0 0 37.562 26.654">
<g id="sofa" transform="translate(0.001 -73.665)">
<path id="Path_4542" data-name="Path 4542" d="M58.416,385.425l-.352,1.408a1.742,1.742,0,1,0,3.379.845L62,385.443H58.875C58.72,385.443,58.567,385.437,58.416,385.425Z" transform="translate(-53.717 -288.678)" fill="#4d4d4d"/>
<path id="Path_4543" data-name="Path 4543" d="M399.011,385.425c-.151.012-.3.018-.458.018h-3.127l.558,2.234a1.742,1.742,0,0,0,3.379-.845Z" transform="translate(-366.149 -288.678)" fill="#4d4d4d"/>
<path id="Path_4544" data-name="Path 4544" d="M43.644,80.2a4.3,4.3,0,0,1,3.849,3.43l.911,4.558a1.1,1.1,0,0,0,1.076.882H68.46a1.1,1.1,0,0,0,1.076-.882l.911-4.558A4.3,4.3,0,0,1,73.9,80.246l.149-.832a4.89,4.89,0,0,0-4.814-5.749H48.293a4.89,4.89,0,0,0-4.781,5.914Z" transform="translate(-40.189 0)" fill="#4d4d4d"/>
<path id="Path_4545" data-name="Path 4545" d="M36.725,178.641a3.112,3.112,0,0,0-2.265-.982,3.08,3.08,0,0,0-.976.159h0a3.125,3.125,0,0,0-2.065,2.335l-.911,4.557a2.288,2.288,0,0,1-2.237,1.834H9.29a2.288,2.288,0,0,1-2.237-1.834l-.911-4.557a3.124,3.124,0,0,0-2.423-2.43h0a3.1,3.1,0,0,0-3.713,3.244l.413,6.19a4.744,4.744,0,0,0,4.573,4.714h0c.055,0,.11,0,.166,0H32.4c.056,0,.111,0,.166,0h0a4.743,4.743,0,0,0,4.573-4.714l.413-6.19A3.112,3.112,0,0,0,36.725,178.641Z" transform="translate(0 -96.294)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32.579" height="32.579" viewBox="0 0 32.579 32.579">
<path id="baby-stroller_1_" data-name="baby-stroller (1)" d="M23.806,20.83A9.686,9.686,0,0,0,32.579,11.2,11.211,11.211,0,0,0,21.38,0H17.308a1.018,1.018,0,1,0,0,2.036h1.018v8.145H5.09V6.109A3.058,3.058,0,0,0,2.036,3.054H1.018a1.018,1.018,0,0,0,0,2.036H2.036A1.019,1.019,0,0,1,3.054,6.109V11.2a9.686,9.686,0,0,0,8.773,9.631c.006,0-.027-.02,4.264,3.119-3.28,2.4-3.154,2.3-3.148,2.3a3.562,3.562,0,1,0,1.15,1.682l3.722-2.722,3.732,2.73A3.558,3.558,0,1,0,22.7,26.258l-3.158-2.31c3.394-2.482,4.271-3.119,4.265-3.119Zm-5.99,1.857-2.483-1.816H20.3Z" fill="#4d4d4d"/>
</svg>

After

Width:  |  Height:  |  Size: 667 B

@ -0,0 +1,5 @@
<svg id="mobile" xmlns="http://www.w3.org/2000/svg" width="18.346" height="35.158" viewBox="0 0 18.346 35.158">
<path id="Path_4531" data-name="Path 4531" d="M18.346,4.886V2.1a2.1,2.1,0,0,0-2.1-2.1H2.1A2.1,2.1,0,0,0,0,2.1V4.886Zm0,0" fill="#4d4d4d"/>
<path id="Path_4532" data-name="Path 4532" d="M0,440.848v2.783a2.1,2.1,0,0,0,2.1,2.1H16.243a2.1,2.1,0,0,0,2.1-2.1v-2.783Zm10.823,3.431h-3.3a1.04,1.04,0,1,1,0-2.08h3.3a1.04,1.04,0,1,1,0,2.08Zm0,0" transform="translate(0 -410.576)" fill="#4d4d4d"/>
<path id="Path_4533" data-name="Path 4533" d="M0,101.449H18.346v21.225H0Zm0,0" transform="translate(0 -94.483)" fill="#4d4d4d"/>
</svg>

After

Width:  |  Height:  |  Size: 640 B

@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="31.157" height="8.902" viewBox="0 0 31.157 8.902">
<g id="more_1_" data-name="more (1)" transform="translate(0 -170.666)">
<g id="Group_7031" data-name="Group 7031" transform="translate(0 170.666)">
<g id="Group_7030" data-name="Group 7030" transform="translate(0 0)">
<circle id="Ellipse_145" data-name="Ellipse 145" cx="4.451" cy="4.451" r="4.451" fill="#4d4d4d"/>
</g>
</g>
<g id="Group_7033" data-name="Group 7033" transform="translate(11.127 170.666)">
<g id="Group_7032" data-name="Group 7032" transform="translate(0 0)">
<circle id="Ellipse_146" data-name="Ellipse 146" cx="4.451" cy="4.451" r="4.451" fill="#4d4d4d"/>
</g>
</g>
<g id="Group_7035" data-name="Group 7035" transform="translate(22.255 170.666)">
<g id="Group_7034" data-name="Group 7034" transform="translate(0 0)">
<circle id="Ellipse_147" data-name="Ellipse 147" cx="4.451" cy="4.451" r="4.451" fill="#4d4d4d"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="19.777" height="15.608" viewBox="0 0 19.777 15.608">
<g id="chat-bubbles-with-ellipsis" transform="translate(0 -3.24)">
<path id="Path_4559" data-name="Path 4559" d="M21.507,9.67h-.542v5.954a1.612,1.612,0,0,1-1.622,1.765H8.743v.283a1.909,1.909,0,0,0,1.889,1.647h8.1l3.1,1.823-.45-1.823h.119A1.463,1.463,0,0,0,22.9,17.672V11.083A1.276,1.276,0,0,0,21.507,9.67Z" transform="translate(-3.119 -2.294)" fill="#fff"/>
<path id="Path_4560" data-name="Path 4560" d="M14.643,3.24H2.33C1.247,3.24,0,4.2,0,5.13v7.462c0,.854,1.056,1.471,2.069,1.566l-.659,2.5,4.225-2.486h9.007c1.083,0,2.083-.657,2.083-1.584V5.13A2.126,2.126,0,0,0,14.643,3.24ZM4.208,9.539A1.112,1.112,0,1,1,5.321,8.427,1.112,1.112,0,0,1,4.208,9.539Zm4.154,0A1.112,1.112,0,1,1,9.475,8.427,1.112,1.112,0,0,1,8.363,9.539Zm4.155,0A1.112,1.112,0,1,1,13.63,8.427,1.113,1.113,0,0,1,12.518,9.539Z" transform="translate(0 0)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 956 B

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22.163" height="22.154" viewBox="0 0 22.163 22.154">
<g id="bank" transform="translate(0 -0.103)">
<path id="Path_4569" data-name="Path 4569" d="M22.163,453.2H20.821v-1.3H1.342v1.3H0v1.3H22.163Z" transform="translate(0 -432.237)" fill="#4d4d4d"/>
<path id="Path_4570" data-name="Path 4570" d="M31,150.9H50.479v2.6H31Z" transform="translate(-29.658 -144.267)" fill="#4d4d4d"/>
<path id="Path_4571" data-name="Path 4571" d="M61,240.9h3.9v7.835H61Z" transform="translate(-58.359 -230.371)" fill="#4d4d4d"/>
<path id="Path_4572" data-name="Path 4572" d="M211,240.9h3.9v7.835H211Z" transform="translate(-201.866 -230.371)" fill="#4d4d4d"/>
<path id="Path_4573" data-name="Path 4573" d="M361,240.9h3.9v7.835H361Z" transform="translate(-345.373 -230.371)" fill="#4d4d4d"/>
<path id="Path_4574" data-name="Path 4574" d="M22.163,4.23,11.082.1,0,4.23v1.1H22.163Zm-10.432-.2h-1.3v-1.3h1.3Z" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 984 B

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="38.443" height="24.839" viewBox="0 0 38.443 24.839">
<g id="car_1_" data-name="car (1)" transform="translate(-0.001 -73.942)">
<path id="Path_4534" data-name="Path 4534" d="M132.422,279H118.413l-1.243,3.019-.215.523h2.7a.454.454,0,0,1-.007-.072v-1.31a.459.459,0,0,1,.918,0v1.31a.454.454,0,0,1-.007.072h4.406a.454.454,0,0,1-.007-.072v-1.31a.459.459,0,0,1,.918,0v1.31a.454.454,0,0,1-.007.072h4.406a.454.454,0,0,1-.007-.072v-1.31a.459.459,0,0,1,.918,0v1.31a.452.452,0,0,1-.007.072h2.7l-.215-.523Z" transform="translate(-106.195 -186.191)" fill="#4d4d4d" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"/>
<path id="Path_4535" data-name="Path 4535" d="M38.178,81.024a.782.782,0,0,0-.686-.473H33.979a.782.782,0,0,0-.686.473,4.839,4.839,0,0,0-.243.97c-1.545-2.975-3.256-6.286-3.256-6.286a1.4,1.4,0,0,0-1.066-.9,52.813,52.813,0,0,0-19.012,0,1.4,1.4,0,0,0-1.066.9S6.94,79.019,5.395,81.994a4.84,4.84,0,0,0-.243-.97.781.781,0,0,0-.686-.473H.953a.782.782,0,0,0-.686.473,3.46,3.46,0,0,0,0,2.664.782.782,0,0,0,.686.473H4.459c0,.044,0,.087.008.131A1.8,1.8,0,0,0,3.19,86.015v11.9a.866.866,0,0,0,.866.866H8.413a.866.866,0,0,0,.866-.866v-2.09h.7l1.5-3.652a.459.459,0,0,1,.424-.284H26.535a.459.459,0,0,1,.424.284l1.5,3.652h.7v2.09a.866.866,0,0,0,.866.866H34.39a.866.866,0,0,0,.866-.866v-11.9a1.8,1.8,0,0,0-1.278-1.723c0-.044.007-.087.008-.131h3.506a.782.782,0,0,0,.686-.473A3.46,3.46,0,0,0,38.178,81.024Zm-27.6-4.3s2.092-.531,8.641-.531,8.64.531,8.64.531l3.071,7.433H7.511ZM6.766,89.59V87.148h5.29l1.572,2.442Zm24.914,0H24.818l1.572-2.442h5.29V89.59Z" transform="translate(0 0)" fill="#4d4d4d" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="36.238" height="31.524" viewBox="0 0 36.238 31.524">
<g id="casual-t-shirt-" transform="translate(0 -19.219)">
<path id="Path_4546" data-name="Path 4546" d="M123.347,26.378A3.582,3.582,0,0,0,126.76,23.9a14.4,14.4,0,0,1-6.825,0A3.582,3.582,0,0,0,123.347,26.378Z" transform="translate(-105.229 -4.111)" fill="#4d4d4d"/>
<path id="Path_4547" data-name="Path 4547" d="M36.192,24.077a.83.83,0,0,0-.432-.475l-6.909-3.189a33.411,33.411,0,0,0-4.479-1.179.824.824,0,0,0-.158-.015.812.812,0,0,0-.793.637,5.434,5.434,0,0,1-10.607,0,.813.813,0,0,0-.793-.637.824.824,0,0,0-.158.015,33.539,33.539,0,0,0-4.481,1.179L.476,23.6a.813.813,0,0,0-.431.475.806.806,0,0,0,.043.64l3,5.919a.814.814,0,0,0,.963.415l3.331-.987V49.924a.821.821,0,0,0,.82.819H28.034a.82.82,0,0,0,.818-.819V30.064l3.334.987a.814.814,0,0,0,.963-.415l3-5.919A.822.822,0,0,0,36.192,24.077Z" transform="translate(0)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 954 B

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="28.545" height="33.303" viewBox="0 0 28.545 33.303">
<g id="electrical-appliances" transform="translate(2.5)">
<path id="Path_4536" data-name="Path 4536" d="M14.151,161.189V160H-2.5v23.788H8.2v-22a.6.6,0,0,1,.595-.595ZM-.121,164.758a.6.6,0,0,1-.595.595.6.6,0,0,1-.595-.595v-3.568a.6.6,0,0,1,.595-.595.6.6,0,0,1,.595.595Zm0,0" transform="translate(0 -150.485)" fill="#4d4d4d"/>
<path id="Path_4537" data-name="Path 4537" d="M214.151,260H197.5v17.841h16.651Zm-8.326,16.057a6.542,6.542,0,1,1,6.542-6.542A6.542,6.542,0,0,1,205.826,276.057Zm0,0" transform="translate(-188.106 -244.538)" fill="#4d4d4d"/>
<path id="Path_4538" data-name="Path 4538" d="M252.852,330a5.352,5.352,0,1,0,5.352,5.352A5.352,5.352,0,0,0,252.852,330Zm0,1.982a3.374,3.374,0,0,0-3.37,3.37.595.595,0,1,1-1.189,0,4.565,4.565,0,0,1,4.56-4.56.595.595,0,1,1,0,1.189Zm0,0" transform="translate(-235.133 -310.375)" fill="#4d4d4d"/>
<path id="Path_4539" data-name="Path 4539" d="M14.151,0H-2.5V8.326H14.151ZM-.121,7.136a.6.6,0,0,1-.595.595.6.6,0,0,1-.595-.595V3.568a.6.6,0,0,1,.595-.595.6.6,0,0,1,.595.595Zm0,0" fill="#4d4d4d"/>
<path id="Path_4540" data-name="Path 4540" d="M261.178,200H247.5v2.379h13.678Zm-10.7,1.784h-1.189a.595.595,0,0,1,0-1.189h1.189a.595.595,0,1,1,0,1.189Zm2.973,0h-1.189a.595.595,0,1,1,0-1.189h1.189a.595.595,0,1,1,0,1.189Zm0,0" transform="translate(-235.133 -188.106)" fill="#4d4d4d"/>
<path id="Path_4541" data-name="Path 4541" d="M197.5,200h1.784v2.379H197.5Zm0,0" transform="translate(-188.106 -188.106)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="31.183" height="31.183" viewBox="0 0 31.183 31.183">
<g id="weightlifting" transform="translate(0 0)">
<path id="Path_4548" data-name="Path 4548" d="M3.386,261.6c-.331.208-.241.152-2.653,2.564a2.511,2.511,0,0,0,0,3.547l2.334,2.334-1.132,1.132a1.9,1.9,0,0,0,0,2.678l1.575,1.575a1.892,1.892,0,0,0,2.678,0L7.32,274.3l1.819,1.819a2.511,2.511,0,0,0,3.547,0c2.441-2.441,2.361-2.331,2.564-2.653Z" transform="translate(0 -245.67)" fill="#4d4d4d"/>
<path id="Path_4549" data-name="Path 4549" d="M276.12,9.138,273.786,6.8l1.132-1.132a1.9,1.9,0,0,0,0-2.678L273.343,1.42a1.892,1.892,0,0,0-2.678,0l-1.132,1.132L267.715.733a2.511,2.511,0,0,0-3.547,0c-2.441,2.442-2.361,2.331-2.564,2.653l11.863,11.863c.331-.208.241-.152,2.653-2.564A2.511,2.511,0,0,0,276.12,9.138Z" transform="translate(-245.67)" fill="#4d4d4d"/>
<path id="Path_4550" data-name="Path 4550" d="M0,0H13.847V5.476H0Z" transform="translate(8.783 18.576) rotate(-45)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1007 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18.279" height="25.236" viewBox="0 0 18.279 25.236">
<path id="Path_4575" data-name="Path 4575" d="M79.712,0a9.15,9.15,0,0,0-9.139,9.139c0,6.254,8.179,15.436,8.527,15.823a.823.823,0,0,0,1.225,0c.348-.388,8.527-9.569,8.527-15.823A9.15,9.15,0,0,0,79.712,0Zm0,13.738a4.6,4.6,0,1,1,4.6-4.6A4.6,4.6,0,0,1,79.712,13.738Z" transform="translate(-70.573)" fill="#4d4d4d"/>
</svg>

After

Width:  |  Height:  |  Size: 420 B

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" width="23.422" height="22.262" viewBox="0 0 23.422 22.262">
<g id="home_10_" data-name="home (10)" transform="translate(0 -12.675)">
<g id="Group_7385" data-name="Group 7385" transform="translate(0 12.675)">
<g id="Group_7384" data-name="Group 7384" transform="translate(0 0)">
<path id="Path_4561" data-name="Path 4561" d="M23.028,22.566,12.52,12.991a1.2,1.2,0,0,0-1.618,0L.393,22.566A1.2,1.2,0,0,0,1.2,24.655H2.881v9.594a.689.689,0,0,0,.689.689H9.33a.689.689,0,0,0,.689-.689V28.424H13.4v5.825a.689.689,0,0,0,.689.689h5.76a.689.689,0,0,0,.689-.689V24.655H22.22a1.2,1.2,0,0,0,.809-2.089Z" transform="translate(0 -12.675)" fill="#4d4d4d"/>
</g>
</g>
<g id="Group_7387" data-name="Group 7387" transform="translate(15.735 14.05)">
<g id="Group_7386" data-name="Group 7386" transform="translate(0 0)">
<path id="Path_4562" data-name="Path 4562" d="M348.6,42.73h-4.626l5.315,4.832V43.419A.689.689,0,0,0,348.6,42.73Z" transform="translate(-343.973 -42.73)" fill="#4d4d4d"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="26.048" height="15.415" viewBox="0 0 26.048 15.415">
<path id="fast-delivery" d="M18.569.153C20.828.677,21.692,2,22.775,3.816H18.569ZM5.371,3.968a.67.67,0,0,1,.763.712.763.763,0,0,1-.761.763H.763a.763.763,0,1,0,0,1.526H7.631a.763.763,0,1,1,0,1.526H.763a.763.763,0,1,0,0,1.526H2.442v2.289a.763.763,0,0,0,.763.763H4.739a2.926,2.926,0,0,0,5.733,0h7.748a2.926,2.926,0,0,0,5.733,0h1.33a.763.763,0,0,0,.763-.763V7.733a2.463,2.463,0,0,0-2.364-2.391H17.806a.763.763,0,0,1-.763-.763V0H3.205a.763.763,0,0,0-.763.763V2.442H1.526a.763.763,0,1,0,0,1.526ZM22.077,11.5a1.4,1.4,0,1,1-2.388.989A1.4,1.4,0,0,1,22.077,11.5ZM8.6,11.5a1.4,1.4,0,1,1-2.388.989A1.4,1.4,0,0,1,8.6,11.5Zm0,0" fill="#4d4d4d" fill-rule="evenodd"/>
</svg>

After

Width:  |  Height:  |  Size: 760 B

@ -0,0 +1,12 @@
<svg id="shopping-bag" xmlns="http://www.w3.org/2000/svg" width="22.99" height="22.99" viewBox="0 0 22.99 22.99">
<g id="Group_7390" data-name="Group 7390" transform="translate(0 10.866)">
<g id="Group_7389" data-name="Group 7389">
<path id="Path_4564" data-name="Path 4564" d="M15.581,242H.674a.673.673,0,0,0-.674.674V252.1a2.023,2.023,0,0,0,2.021,2.021H14.234a2.023,2.023,0,0,0,2.021-2.021v-9.429A.673.673,0,0,0,15.581,242Zm-3.457,4.041a4.041,4.041,0,0,1-8.082,0v-.674a.674.674,0,0,1,1.347,0v.674a2.694,2.694,0,0,0,5.388,0v-.674a.674.674,0,0,1,1.347,0Z" transform="translate(0 -242)" fill="#4d4d4d"/>
</g>
</g>
<g id="Group_7392" data-name="Group 7392" transform="translate(6.645)">
<g id="Group_7391" data-name="Group 7391">
<path id="Path_4565" data-name="Path 4565" d="M163.671,5.478h-3.457V4.041a4.041,4.041,0,0,0-8.082,0V5.478h-3.457a.673.673,0,0,0-.674.674V9.519h8.935a2.023,2.023,0,0,1,2.021,2.021v9.429a3.335,3.335,0,0,1-.691,2.021h4.058a2.023,2.023,0,0,0,2.021-2.021V6.152A.673.673,0,0,0,163.671,5.478Zm-4.8,0h-5.388V4.041a2.694,2.694,0,1,1,5.388,0Z" transform="translate(-148)" fill="#4d4d4d"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22.468" height="20.037" viewBox="0 0 22.468 20.037">
<g id="map" transform="translate(0 -27.704)">
<path id="Path_4566" data-name="Path 4566" d="M6.626,40.261a3.237,3.237,0,0,0-1.121.427l-.712-1.107A4.577,4.577,0,0,1,6.626,38.9V33.7L0,35.02V53.476L6.626,52.16Zm-2.633,3.2H2.677a4.56,4.56,0,0,1,.986-2.849l1.034.815A3.255,3.255,0,0,0,3.993,43.458Z" transform="translate(0 -5.736)" fill="#4d4d4d"/>
<path id="Path_4567" data-name="Path 4567" d="M187.582,46.288v-11.9L181,33.292V51.741l6.582,1.1V47.61a4.608,4.608,0,0,1-2.358-1.062l.863-1A3.247,3.247,0,0,0,187.582,46.288Zm-5.873-6.218.548-1.2a4.631,4.631,0,0,1,2.181,2.08l-1.17.6A3.312,3.312,0,0,0,181.709,40.07Zm2.541,5.3a4.6,4.6,0,0,1-.617-2.3,3.207,3.207,0,0,0-.033-.468l1.3-.188a4.681,4.681,0,0,1,.046.656,3.29,3.29,0,0,0,.44,1.645Z" transform="translate(-173.057 -5.343)" fill="#4d4d4d"/>
<path id="Path_4568" data-name="Path 4568" d="M361,47.477l6.626-1.317V27.7L361,29.02Zm2.633-9.754h0V36.406h1.316v1.316a4.608,4.608,0,0,1-.184,1.3l-1.264-.37A3.253,3.253,0,0,0,363.633,37.724Zm-.61,1.908,1.072.764a4.631,4.631,0,0,1-2.456,1.75l-.37-1.264A3.3,3.3,0,0,0,363.023,39.631Z" transform="translate(-345.158)" fill="#4d4d4d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,5 @@
<svg id="information_1_" data-name="information (1)" xmlns="http://www.w3.org/2000/svg" width="26.776" height="26.776" viewBox="0 0 26.776 26.776">
<g id="Group_2" data-name="Group 2">
<path id="Path_1" data-name="Path 1" d="M24.758,20.46a13.385,13.385,0,1,0-4.3,4.3l5.868,1.572ZM13.388,6.244a1.681,1.681,0,1,1-1.681,1.681A1.681,1.681,0,0,1,13.388,6.244Zm2.942,14.29H10.447V18.011h1.261V12.968H10.447V10.447h4.623v7.564H16.33v2.522Z" fill="#259cb8"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 471 B

@ -161,9 +161,9 @@
"en": "Verify its you",
"ar": "Verify its you"
},
"check-user-place-holder":{
"en":"Employee ID",
"ar":"رقم الموظف "
"check-user-place-holder": {
"en": "Employee ID",
"ar": "رقم الموظف "
},
"check-user-text1": {
"en": "Please Enter your Employee ID, A ",
@ -213,9 +213,9 @@
"en": "Allow the Mohemm app to access your location for marking your attendance",
"ar": "اسمح لتطبيق مهم بالوصول إلى موقعك لتحديد حضورك"
},
"not-now":{
"en":"not now",
"ar":"لاحقاً"
"not-now": {
"en": "not now",
"ar": "لاحقاً"
},
"birth_date": {
"en": "Birth Date",
@ -234,10 +234,9 @@
"ar": " انتهت مهلة الاتصال بسبب خطأ في الشبكة أو الخوادم قد تكون مشغولة!"
},
"error-itg": {
"en": "Dear, this service is not available now, please try again later",
"en": "Dear, this service is not available now, please try again later",
"ar": " هذه الخدمة غير متاحة الآن ، يرجى المحاولة مرة أخرى في وقت لاحق"
},
"details": {
"en": "Details",
"ar": "التفاصيل"
@ -458,7 +457,6 @@
"en": "Optional",
"ar": "خياري"
},
"advanced-search": {
"en": "Advanced Search",
"ar": "بحث متقدم"
@ -876,8 +874,8 @@
"ar": "هل أنت متأكد من حذف هذا الملف نهائيًا؟"
},
"option-attendance": {
"en":"Attendance Options",
"ar":"خيارات تسجيل الحضور"
"en": "Attendance Options",
"ar": "خيارات تسجيل الحضور"
},
"select-attendance": {
"en": "Select Method to Mark your Attendance",
@ -939,13 +937,13 @@
"en": "Your attendance is marked successfully.",
"ar": "تم تسجيل حضورك بنجاح"
},
"digital-id":{
"en":"Employee Digital ID",
"ar":"هوية الموظف الرقمية"
"digital-id": {
"en": "Employee Digital ID",
"ar": "هوية الموظف الرقمية"
},
"appreciate-service":{
"en":"We appreciate you for completing the service of",
"ar":"نحن نقدر لك استكمال خدمة"
"appreciate-service": {
"en": "We appreciate you for completing the service of",
"ar": "نحن نقدر لك استكمال خدمة"
}
},
"home": {
@ -977,9 +975,9 @@
"en": "Penading Request",
"ar": "طلبات قيد الانتظار"
},
"missing-swipes":{
"en":"Missing Swipes",
"ar":"فقدان البصمة"
"missing-swipes": {
"en": "Missing Swipes",
"ar": "فقدان البصمة"
},
"leave-balance": {
"en": "Leave Balance",
@ -1946,6 +1944,30 @@
"msgRFC": {
"en": "Select a person",
"ar": "اختيار شخص"
},
"searchbyusername": {
"en": "Search by username",
"ar": "البحث باسم المستخدم"
},
"searchbyname": {
"en": "Search by name",
"ar": "البحث عن طريق الإسم"
},
"searchbyemail": {
"en": "Search by email",
"ar": "البحث عن طريق البريد الإلكتروني"
},
"search-result": {
"en": "Search Results",
"ar": "نتائج البحث"
},
"related": {
"en": "Related",
"ar": "متعلق ب"
},
"favorite": {
"en": "Favorite",
"ar": "مفضل"
}
},
"worklist": {
@ -2059,6 +2081,10 @@
"en": "Request info",
"ar": "طلب معلومات"
},
"delegate": {
"en": "Delegate",
"ar": "مندوب"
},
"title": {
"en": "Details",
"ar": "التفاصيل"
@ -2451,25 +2477,25 @@
"en": "AMU (Last 3 months)",
"ar": "AMU (Last 3 months)"
},
"Tran_Succ":{
"Tran_Succ": {
"en": "Transaction Successful",
"ar":"عملية ناجحة"
"ar": "عملية ناجحة"
},
"req_detail":{
"req_detail": {
"en": "ٌRequest Details",
"ar":"تفاصيل الطلب"
"ar": "تفاصيل الطلب"
},
"job_cate":{
"job_cate": {
"en": "Job category",
"ar":"الفئة الوظيفية"
"ar": "الفئة الوظيفية"
},
"category":{
"category": {
"en": "Category",
"ar":"نوع العقد"
"ar": "نوع العقد"
},
"job-name":{
"job-name": {
"en": "Job Title",
"ar":"المسمى الوظيفي"
"ar": "المسمى الوظيفي"
},
"emp-email": {
"en": "Employee Email Address",
@ -2494,7 +2520,7 @@
"details-emp": {
"en": "Details",
"ar": "تفاصيل الموظف"
}
}
},
"payslip": {
"title": {
@ -2567,7 +2593,7 @@
},
"earnings": {
"en": "Earnings",
"ar":"مستحقات "
"ar": "مستحقات "
},
"deductions": {
"en": "Deductions",
@ -2602,6 +2628,12 @@
"ar": "المجموع "
}
},
"itemforsale": {
"title": {
"en": "Item for sale",
"ar": "سلعه للبيع"
}
},
"attendance-tracking": {
"title": {
"en": "Mark Attendance",
@ -2615,23 +2647,23 @@
"en": "Check Out",
"ar": "وقت الخروج"
},
"actual-check-in":{
"actual-check-in": {
"en": "Actual Check In",
"ar":"وقت الدخول"
"ar": "وقت الدخول"
},
"actual-check-out":{
"actual-check-out": {
"en": "Actual Check Out",
"ar":"وقت الخروج"
"ar": "وقت الخروج"
},
"approved-check-in":{
"approved-check-in": {
"en": "Approved Check In",
"ar":"اعتماد وقت الدخول"
"ar": "اعتماد وقت الدخول"
},
"approved-check-out":{
"approved-check-out": {
"en": "Approved Check Out",
"ar":"اعتماد وقت الخروج"
"ar": "اعتماد وقت الخروج"
},
"regular":{
"regular": {
"en": "Regular",
"ar": "المنتظم"
},
@ -2691,12 +2723,11 @@
"en": "Shift Time",
"ar": "وقت التناوب"
},
"shift-type":{
"en":"Shift Type",
"ar":"نوع المناوبة"
"shift-type": {
"en": "Shift Type",
"ar": "نوع المناوبة"
}
},
"sms": {
"title": {
"en": "SMS",

@ -1313,6 +1313,14 @@ border:0px
--width: 100% !important;
--border-radius: 0.4cm;
}
.replaceRoll-modal2 {
padding: 5% 1% !important;
--height: 100% !important;
--width: 100% !important;
--border-radius: 0.4cm;
}
.header-md:after {
height: 0px !important;
@ -1552,4 +1560,15 @@ table.monthview-datetable th small {
top: 3%;
position: absolute;
display: block;
}
}
.fav-employee-details{
font-size: 24px;
position: relative;
bottom: 30px;
font-weight: bold;
color: black !important;
}
.fav-profileImageDiv{
width: 100%;
text-align: start;
}

@ -6,7 +6,7 @@
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
@ -24,5 +24,4 @@
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
}
}
Loading…
Cancel
Save