Merge branch 'MOHEMM-Q2-DEV' into enad-Q1

# Conflicts:
#	Mohem/src/app/hmg-common/services/connector/connector.service.ts
MOHEMM-SFH-COLORS
enadhilal 5 years ago
commit da138859fb

@ -101,6 +101,7 @@
"date-fns": "^1.30.1",
"es6-promise-plugin": "^4.1.0",
"ionic2-calendar": "^0.5.8",
"ionic4-rating": "^1.0.9",
"ng-circle-progress": "^1.5.1",
"ng2-file-upload": "^1.3.0",
"ng2-pdf-viewer": "^5.3.2",
@ -221,4 +222,4 @@
"ios"
]
}
}
}

@ -1,39 +1,41 @@
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' },
{ path: 'itemforsale', loadChildren: './itemforsale/itemforsale.module#ItemforsalePageModule' },
{ path: 'offersdiscount', loadChildren: './offersdiscount/offersdiscount.module#OffersdiscountPageModule' }, { path: 'backend-integrations', loadChildren: './backend-integrations/backend-integrations.module#BackendIntegrationsPageModule' }
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' },
{ path: 'erm-channel', loadChildren: './erm-channel/erm-channel.module#ErmChannelPageModule' },
{ path: 'backend-integrations', loadChildren: './backend-integrations/backend-integrations.module#BackendIntegrationsPageModule' }
];
@NgModule({
imports: [
/*RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules}),*/
RouterModule.forRoot(routes),
],
exports: [RouterModule]
})
export class AppRoutingModule { }

@ -67,9 +67,9 @@ export class AppComponent implements OnInit {
private hideSplashScreen() {
setTimeout(() => {
this.splashScreen.hide();
this.splashScreen.hide();
}, 1000);
}
}
public initializeApp() {
this.cs.startLoading();
@ -106,9 +106,10 @@ export class AppComponent implements OnInit {
private startReceivingPushService() {
this.pushService.startReceiving();
setTimeout(() => {
console.log(' in setTimeout startReceiving');
this.getLastLoginInfo();
}, 4000);
console.log(' in setTimeout startReceiving');
this.getLastLoginInfo();
}, 4000);
}
public subscribeEvents() {
@ -119,23 +120,27 @@ export class AppComponent implements OnInit {
});
this.events.subscribe('setMenu', () => {
const user = this.authService.loadAuthenticatedUser().subscribe((user: AuthenticatedUser) => {
if (user) {
console.log(user);
localStorage.setItem("digitalIDUser", JSON.stringify(user));
this.digitalIDUser = user//JSON.stringify(user);
this.companyUrl = user.CompanyImageURL ? user.CompanyImageURL : '../assets/imgs/CSLogo.png';
this.companyDesc = user.CompanyImageDescription ? user.CompanyImageDescription : 'Powered By Cloud Solutions';
this.User_name_Emp = user.EMPLOYEE_DISPLAY_NAME;
if (this.cs.getUpdateImage().status) {
this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + this.cs.getUpdateImage().img);
} else {
this.user_image = user.EMPLOYEE_IMAGE ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE : '../assets/imgs/profile.png';
}
this.User_Job_name = user.JOB_NAME;
if (user) {
console.log(user);
localStorage.setItem("digitalIDUser", JSON.stringify(user));
this.digitalIDUser = user//JSON.stringify(user);
this.companyUrl = user.CompanyImageURL ? user.CompanyImageURL : '../assets/imgs/CSLogo.png';
this.companyDesc = user.CompanyImageDescription ? user.CompanyImageDescription : 'Powered By Cloud Solutions';
this.User_name_Emp = user.EMPLOYEE_DISPLAY_NAME;
if (this.cs.getUpdateImage().status) {
this.user_image = this.sanitizer.bypassSecurityTrustUrl('data:image/png;base64,' + this.cs.getUpdateImage().img);
} else {
console.log(user);
this.user_image = user.EMPLOYEE_IMAGE ? 'data:image/png;base64,' + user.EMPLOYEE_IMAGE : '../assets/imgs/profile.png';
}
});
this.User_Job_name = user.JOB_NAME;
//erm channel
if (!CommonService.SKIP)
this.cs.navigateForward('/erm-channel/survey');
} else {
console.log(user);
}
});
});
this.events.subscribe('getNotCount', badge => { this.notBadge = badge; });
this.events.subscribe('myTeamFlag', myTeamFlag => { this.TeamFlag = myTeamFlag; });
@ -200,14 +205,14 @@ export class AppComponent implements OnInit {
async openDigitalId() {
const modal = await this.modalController.create({
component: DigitalIdComponent,
cssClass: 'digital-id-modal-css',
componentProps: {
'userInfo':this.digitalIDUser//JSON.parse(this.digitalIDUser)
}
component: DigitalIdComponent,
cssClass: 'digital-id-modal-css',
componentProps: {
'userInfo': this.digitalIDUser//JSON.parse(this.digitalIDUser)
}
});
return await modal.present();
}
}
private changeImage() {
this.cs.openChangeImagePage();
@ -219,40 +224,40 @@ export class AppComponent implements OnInit {
}
public getLastLoginInfo() {
this.deviceToken = this.cs.getDeviceToken();
this.deviceToken = this.cs.getDeviceToken();
if (this.deviceToken) {
console.log('login enabled first time: ' + this.deviceToken);
console.log('login enabled first time: ' + this.deviceToken);
} else {
this.pushService.startReceiving();
setTimeout(() => {
this.deviceToken = localStorage.getItem('deviceToken');
this.deviceToken = localStorage.getItem('deviceToken');
}, 1000);
}
this.requestGetLoginInfo = {
DeviceType: this.cs.getDeviceType(),
DeviceToken: this.deviceToken
DeviceType: this.cs.getDeviceType(),
DeviceToken: this.deviceToken
};
this.authService.getLoginInfo(this.requestGetLoginInfo, () => {}, this.ts.trPK('general', 'ok')).subscribe(res => {
this.authService.getLoginInfo(this.requestGetLoginInfo, () => { }, this.ts.trPK('general', 'ok')).subscribe(res => {
if (this.cs.validResponse(res)) {
if (res.Mohemm_GetMobileLoginInfoList.length > 0) {
this.cs.sharedService.setSharedData(res.Mohemm_GetMobileLoginInfoList[0], AuthenticationService.IMEI_USER_DATA);
this.user = true;
this.events.publish('user', this.user);
if (res.Mohemm_GetMobileLoginInfoList.length > 0) {
this.cs.sharedService.setSharedData(res.Mohemm_GetMobileLoginInfoList[0], AuthenticationService.IMEI_USER_DATA);
this.user = true;
this.events.publish('user', this.user);
if (this.logoutFlage) {
this.cs.openLogin();
}
} else {
this.user = false;
this.events.publish('user', this.user);
if (this.logoutFlage) {
this.cs.openLogin();
}
} else {
this.user = false;
this.events.publish('user', this.user);
if (this.logoutFlage) {
this.cs.openLogin();
}
}
} else {}
if (this.logoutFlage) {
this.cs.openLogin();
}
}
} else { }
});
}
}

@ -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 { IonicRatingModule } from 'ionic4-rating';
import { ErmChannelPage } from './erm-channel.page';
import { HomeComponent } from './home/home.component';
import { SurveyComponent } from './survey/survey.component';
import { HmgCommonModule } from '../hmg-common/hmg-common.module';
const routes: Routes = [
{
path: '',
component: ErmChannelPage,
children: [
{
path: 'home',
component: HomeComponent
},
{
path: 'survey',
component: SurveyComponent
},
]
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
IonicRatingModule,
HmgCommonModule,
RouterModule.forChild(routes)
],
declarations: [ErmChannelPage, HomeComponent, SurveyComponent]
})
export class ErmChannelPageModule { }

@ -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 { ErmChannelPage } from './erm-channel.page';
describe('ErmChannelPage', () => {
let component: ErmChannelPage;
let fixture: ComponentFixture<ErmChannelPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ErmChannelPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ErmChannelPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

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

@ -0,0 +1,12 @@
<div class="full-ads" style="background-image: url(https://i.pinimg.com/564x/a8/b4/42/a8b442181f7c004f98d4eef842a76e76.jpg);">
<div class="skip-btn" (click)="skip()">Skip</div>
<div class="info-container">
<ion-icon name="thumbs-down" class="red"></ion-icon>
<ion-icon name="information" class="white"></ion-icon>
<ion-icon name="thumbs-up" class="green"></ion-icon>
</div>
</div>

@ -0,0 +1,44 @@
.full-ads{
position: absolute;
height: 100%;
width: 100%;
background-size: cover;
}
.skip-btn{
position: absolute;
background: black;
color: #fff;
margin: 10px;
right: 10px;
padding: 5px;
border-radius: 5px;
}
.info-container {
width: 100%;
text-align: center;
bottom: 10%;
position: absolute;
}
.info-container ion-icon{
margin: 10px;
font-size: 32px;
padding: 10px;
border-radius: 50%;
display: inline-block;
}
.red{
background: #ff5757;
color: #fff;
}
.green{
background: #23f172;
color: #fff;
}
.white{
background: #fff;
color: #000;
}

@ -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 { NavController } from '@ionic/angular';
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
})
export class HomeComponent implements OnInit {
constructor(public nav: NavController,) { }
ngOnInit() { }
skip() {
this.nav.pop();
CommonService.SKIP = true;
}
}

@ -0,0 +1,71 @@
<ion-content padding class="survey-content">
<div class="skip-btn" (click)="skip()">Skip</div>
<ion-grid class="ion-no-padding grid-parent">
<ion-row>
<ion-text class="title-text">
This is to get feedback about the user experience
</ion-text>
</ion-row>
<ion-row>
<ion-col [size]="12">
<p class="subheading">1. How would you like to rate </p>
</ion-col>
</ion-row>
<ion-row>
<ion-col [size]="12">
<rating id="surveyRatingNew" [(ngModel)]="rate" readonly="false" size="default"></rating>
</ion-col>
</ion-row>
</ion-grid>
<ion-grid>
<ion-row>
<ion-col>
<p class="subheading">2. How do you satisfied about this application </p>
</ion-col>
</ion-row>
<ion-row class="faces-row">
<ion-col [ngClass]="select2">
<img class="face" src="assets/icon/rate/bad.svg" (click)="select(1)">
</ion-col>
<ion-col [ngClass]="select2">
<img class="face" src="assets/icon/rate/poor.svg" (click)="select(2)">
</ion-col>
<ion-col [ngClass]="select3">
<img class="face" src="assets/icon/rate/normal.svg" (click)="select(3)">
</ion-col>
<ion-col [ngClass]="select4">
<img class="face" src="assets/icon/rate/good.svg" (click)="select(4)">
</ion-col>
<ion-col [ngClass]="select5">
<img class="face" src="assets/icon/rate/xcellent.svg" (click)="select(5)">
</ion-col>
</ion-row>
</ion-grid>
<ion-row>
<ion-col>
<p class="comments">Please give us a comments</p>
</ion-col>
</ion-row>
<ion-card class="doctor-card">
<ion-row class="input-field">
<ion-col [size]="12">
<ion-textarea rows="6" cols="20" [(ngModel)]="Note" placeholder="Enter any notes here..."></ion-textarea>
</ion-col>
</ion-row>
</ion-card>
</ion-content>
<ion-footer >
<div class="centerDiv">
<ion-button class="footer-button" ion-button (click)="submit()">
{{'general,submit' | translate}} </ion-button>
</div>
</ion-footer>

@ -0,0 +1,50 @@
.survey-content{
--background:#f5f5f5;
}
.title-text{ font-size: 28px; font-weight: bold;text-align: center; margin-top:20%}
.survey-content{
margin-top:50px;
}
.subheading{
margin:30px 30px 0px 30px;
font-size: 20px;
font-weight: bold;}
.bottom-line{
height: 150px;
}
.doctor-card{
background: #fff;
margin: 10px 20px 10px 20px;
border-radius: 10px;
}
.comments{
margin-left: 20px;
margin-bottom: 0;
font-weight: bold;
}
.faces-row{
margin-left: 20px;
margin-right:20px;
}
.faces-row ion-col{
background: #fff;
text-align: center;
border-radius: 7px;
margin: 5px;
}
ion-footer .footer-button{
--background: #259CB8;
width: 80%;
}
.skip-btn{
position: absolute;
background: black;
color: #fff;
margin: 10px;
right: 10px;
padding: 5px;
border-radius: 5px;
}

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

@ -0,0 +1,20 @@
import { Component, OnInit } from '@angular/core';
import { NavController } from '@ionic/angular';
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-survey',
templateUrl: './survey.component.html',
styleUrls: ['./survey.component.scss'],
})
export class SurveyComponent implements OnInit {
rate: any;
constructor(public ts: TranslatorService, public cs: CommonService, public nav: NavController) { }
ngOnInit() { }
skip() {
this.nav.pop();
CommonService.SKIP = true;
}
}

@ -35,7 +35,7 @@ export class CommonService {
public static MOHEMM_WIFI_SSID = "";
public static MOHEMM_WIFI_PASSWORD = "";
public static SKIP = false;
public static months_en_long = [
'January',
'February',
@ -81,8 +81,8 @@ export class CommonService {
private progressLoaders: any[] = [];
private loadingProgress: any;
public updateImage:boolean=false;
public setUpdateImg:any;
public updateImage: boolean = false;
public setUpdateImg: any;
DT: any;
activeType: any;
constructor(
@ -105,7 +105,7 @@ export class CommonService {
public diagnostic: Diagnostic,
public iab: InAppBrowser,
private menu: MenuController,
) {}
) { }
public back() {
// this.nav.pop();
@ -118,61 +118,61 @@ export class CommonService {
public getMonthName(value: number): string {
switch (value) {
case 1:
return 'January';
case 2:
return 'February';
case 3:
return 'March';
case 4:
return 'April';
case 5:
return 'May';
case 6:
return 'June';
case 7:
return 'July';
case 8:
return 'August';
case 9:
return 'September';
case 10:
return 'October';
case 11:
return 'November';
case 12:
return 'December';
case 1:
return 'January';
case 2:
return 'February';
case 3:
return 'March';
case 4:
return 'April';
case 5:
return 'May';
case 6:
return 'June';
case 7:
return 'July';
case 8:
return 'August';
case 9:
return 'September';
case 10:
return 'October';
case 11:
return 'November';
case 12:
return 'December';
}
}
}
public getMonthNameAr(value: number): string {
public getMonthNameAr(value: number): string {
switch (value) {
case 1:
return 'يناير';
case 2:
return ' فبراير';
case 3:
return 'مارس';
case 4:
return 'أبريل';
case 5:
return 'مايو';
case 6:
return 'يونيو';
case 7:
return 'يوليو';
case 8:
return 'أغسطس';
case 9:
return 'سبتمبر';
case 10:
return ' اكتوبر';
case 11:
return ' نوفمبر';
case 12:
return 'ديسمبر';
case 1:
return 'يناير';
case 2:
return ' فبراير';
case 3:
return 'مارس';
case 4:
return 'أبريل';
case 5:
return 'مايو';
case 6:
return 'يونيو';
case 7:
return 'يوليو';
case 8:
return 'أغسطس';
case 9:
return 'سبتمبر';
case 10:
return ' اكتوبر';
case 11:
return ' نوفمبر';
case 12:
return 'ديسمبر';
}
}
}
public round(value: number, decimal: number): string {
const valueStr = value.toString();
@ -290,7 +290,7 @@ public getMonthNameAr(value: number): string {
public confirmNotAllowedDialog() {
this.openHome();
this.alertDialog(
() => {},
() => { },
this.ts.trPK('general', 'ok'),
this.ts.trPK('general', 'info'),
this.ts.trPK('general', 'not-allowed')
@ -436,7 +436,7 @@ public getMonthNameAr(value: number): string {
message: message,
buttons: [
{
text:this.ts.trPK('general', 'ok'),
text: this.ts.trPK('general', 'ok'),
handler: () => {
if (onAccept) {
onAccept();
@ -587,8 +587,8 @@ public getMonthNameAr(value: number): string {
public getDeviceType(): string {
if (this.platform.is('mobile')) {
// return "Mobile " + (this.platform.is("ios") ? "Iphone" : "android");
return (this.platform.is('ios') ? 'Iphone' : 'android');
// return "Mobile " + (this.platform.is("ios") ? "Iphone" : "android");
return (this.platform.is('ios') ? 'Iphone' : 'android');
} else {
return 'Desktop';
@ -620,7 +620,7 @@ public getMonthNameAr(value: number): string {
private openBrowserHtml(url, onExit?, onFaild?, onSuccess?) {
const browser = window.open(url, '_blank', 'location=no');
browser.addEventListener('loadstart', () => {});
browser.addEventListener('loadstart', () => { });
browser.addEventListener('loaderror', () => {
if (onFaild) {
@ -696,7 +696,7 @@ public getMonthNameAr(value: number): string {
public openLocation(lat: number, lng: number) {
this.platform.ready().then(() => {
this.launchNavigation.navigate([lat, lng]).then(
() => {},
() => { },
err => {
// this.failedToOpenMap();
window.open('https://maps.google.com/?q=' + lat + ',' + lng);
@ -896,7 +896,7 @@ public getMonthNameAr(value: number): string {
return targetCode >= minDigit && targetCode <= maxDigit;
}
public enterPage() {}
public enterPage() { }
private smsAlertDialog = null;
public presentSMSPasswordDialog(
@ -928,7 +928,7 @@ public getMonthNameAr(value: number): string {
text: this.ts.trPK('general', 'cancel'),
role: 'cancel',
cssClass: 'cancel-button',
handler: () => {}
handler: () => { }
},
{
text: this.ts.trPK('general', 'ok'),
@ -1075,10 +1075,10 @@ public getMonthNameAr(value: number): string {
/*
open calls
*/
public openAttenTrackingpage(){
public openAttenTrackingpage() {
this.nav.navigateForward(['/attendance-tracking/home']);
}
public openAttendanceOptionsComponent(){
public openAttendanceOptionsComponent() {
this.nav.navigateForward(['/home/attendance-option']);
}
public openEitListPage() {
@ -1129,10 +1129,10 @@ public getMonthNameAr(value: number): string {
public openPage(link: string) {
this.nav.navigateForward([link]);
}
public static myTeamDetailUrl =['/my-team/details','/my-team/details-2']
public static myTeamDetailUrl = ['/my-team/details', '/my-team/details-2']
public openMyTeamDetails() {
this.alternateNavigate(CommonService.myTeamDetailUrl,'teamDetail-open',true);
// this.nav.navigateForward(["/my-team/details"]);
this.alternateNavigate(CommonService.myTeamDetailUrl, 'teamDetail-open', true);
// this.nav.navigateForward(["/my-team/details"]);
}
public openAbsencePage() {
this.nav.navigateForward(['/absence/home']);
@ -1183,7 +1183,7 @@ public getMonthNameAr(value: number): string {
this.nav.navigateForward(['/notification/item-history-PO']);
}
public openMOItemHistoryPage(){
public openMOItemHistoryPage() {
this.nav.navigateForward(['/notification/item-history-MO']);
}
public openQutationAnalysisPage() {
@ -1237,7 +1237,7 @@ public getMonthNameAr(value: number): string {
}
public navigatePage(path) {
this.nav.navigateForward([path]);
}
@ -1264,7 +1264,7 @@ public getMonthNameAr(value: number): string {
this.nav.navigateBack([url]);
}
private alternateNavigate(paths: string[], key: string, root = false) {
let url: string;
if (localStorage.getItem(key) === 'yes') {
@ -1385,7 +1385,7 @@ public getMonthNameAr(value: number): string {
public formatDate(date) {
let FormatedDate;
console.log(date);
if (date) {
date = date.slice(0, 10);
FormatedDate = date.replace(/-/g, '/');
@ -1410,34 +1410,34 @@ public getMonthNameAr(value: number): string {
return FormatedDate;
}
public setUpdateImage (image,status?){
public setUpdateImage(image, status?) {
console.log('setUpdateImage');
this.setUpdateImg=image;
this.updateImage=status;
this.setUpdateImg = image;
this.updateImage = status;
}
public getUpdateImage(){
public getUpdateImage() {
console.log('getUpdateImage');
const objImg={
img: this.setUpdateImg,
const objImg = {
img: this.setUpdateImg,
status: this.updateImage
}
return objImg;
}
setDeviceToken(deviceToken) {
this.DT = deviceToken;
}
setDeviceToken(deviceToken){
this.DT=deviceToken;
}
getDeviceToken(){
return this.DT;
}
getDeviceToken() {
return this.DT;
}
setActiveTypeLogin(activeType){
this.activeType=activeType;
}
setActiveTypeLogin(activeType) {
this.activeType = activeType;
}
getActiveTypeLogin(){
return this.activeType;
}
getActiveTypeLogin() {
return this.activeType;
}
}

@ -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();
});

@ -1,12 +1,12 @@
<div feedback class="custom-button">
<div class="iconBox">
<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 !='Items for sale' && title !='بضاعه للبع' && title !='العروض والخصومات' && 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" />
<img *ngIf="title =='Items for sale' || title=='بضاعه للبع'" src="/assets/icon/home/item_for_sale.png" class="icon" style="height:40px" />
<img *ngIf="title =='Offers & Discount' || title =='العروض والخصومات'" src="/assets/icon/home/offers_discount.png" class="icon" style="height:40px" />
</div>

@ -56,17 +56,27 @@
<img src="assets/icon/new-design/attendance_button_icon.png"/>
</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>
<app-services-button (click)="openAnnouncement()" title="Announcemnt" >
</app-services-button>
</ion-slide>
</ion-slides>
<ion-row>
<ion-col size="12">
<ion-label> {{'general,other-services' | translate}} </ion-label>
</ion-col>
<ion-slides [options]="slideOptsTwo" >
<ion-slide>
<app-services-button (click)="itemForSale()" [title]="'general,items-sales' | translate" >
</app-services-button>
</ion-slide>
<ion-slide>
<app-services-button (click)="offersDiscount()" [title]="'general,offers-discount' | translate" >
</app-services-button>
</ion-slide>
</ion-slides>
</ion-row>
</ion-grid>
</ion-content>

@ -783,7 +783,7 @@ export class HomePage implements OnInit {
return await modal.present();
}
itemForSale() {
this.common.navigateForward('/itemforsale/home');
this.common.navigateForward('/itemforsale/items');
}
offersDiscount() {
this.common.navigateForward('/offersdiscount/home');

@ -13,14 +13,14 @@
<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-title">{{ts.trPK('itemforsale','select-category')}}</div>
<div class="md-step-optional">{{ts.trPK('itemforsale','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-title">{{ts.trPK('itemforsale','add-details')}}</div>
<div class="md-step-optional">{{step >2 ? "Completed" : "Locked"}}</div>
<div class="md-step-bar-left"></div>
@ -28,7 +28,7 @@
</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-title">{{ts.trPK('itemforsale','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>

@ -10,6 +10,7 @@ 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';
import { HmgCommonModule } from '../hmg-common/hmg-common.module';
const routes: Routes = [
{
@ -41,6 +42,7 @@ const routes: Routes = [
CommonModule,
FormsModule,
IonicModule,
HmgCommonModule,
RouterModule.forChild(routes)
],
declarations: [ItemforsalePage, HomeComponent, ItemsComponent, ItemDetailsComponent, MyAdsComponent]

@ -8,31 +8,34 @@
</ion-toolbar>
</div>
<div class="segments-container">
<ion-segment (ionChange)="segmentChanged($event)" value="1">
<ion-segment (ionChange)="segmentChanged($event)" value="1" class="item-for-sale-indicator">
<ion-segment-button value="1" >
<ion-label>Item for sale</ion-label>
<ion-label>{{ts.trPK('itemforsale','title')}} </ion-label>
</ion-segment-button>
<ion-segment-button value="2">
<ion-label>My Posted Ads</ion-label>
<ion-label>{{ts.trPK('itemforsale','my-posted-ad')}}</ion-label>
</ion-segment-button>
</ion-segment>
</div>
<div class="header"></div>
<div class="bottom"></div>
<div class="sales-items" *ngIf="segment =='1'">
<div class="fab-button">
<ion-fab-button class="flaot-button" (click)="openSale()"><ion-icon name="add"></ion-icon></ion-fab-button>
</div>
<ion-grid>
<ion-row>
<ion-col size="12">
<ion-item lines="none" class="SearchtextBox">
<ion-input placeholder="Search Item"></ion-input>
<ion-input [placeholder]="'itemforsale,search-items'| translate"></ion-input>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="10">
<p class="filterText">Browse Category</p>
<p class="filterText"> {{ts.trPK('itemforsale','browse-categories')}} </p>
</ion-col>
<ion-col size="2">
<img src="assets/imgs/itemsforsale/filter.svg">
@ -149,6 +152,7 @@
</ion-card>
</ion-col>
</ion-row>
</div>
<div class="my-ads" *ngIf="segment =='2'">
@ -173,12 +177,13 @@
</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'">
<ion-footer *ngIf="segment=='2'" >
<div class="centerDiv">
<ion-button class="footer-button" ion-button>
{{ts.trPK('general','next')}} </ion-button>
<ion-button class="footer-button" ion-button (click)="openSale()">
{{ts.trPK('itemforsale','create-new-ad')}} </ion-button>
</div>
</ion-footer>

@ -75,6 +75,11 @@ ion-card-title{
.green{
color:#00AE4D;
}
ion-segment-button{
--background-checked: #000;
--indicator-color : transparent!important;
border: none;
}
ion-segment-button ion-label{
padding: 0;
font-size: 12px;
@ -105,4 +110,26 @@ margin: 5px;
}
.edit{
margin-left:20px !important;
}
.fab-button{
position: fixed;
bottom: 5%;
z-index: 2;
right: 10%;
}
.fab-button ion-fab-button{
--background: #259CB8;
}
ion-footer{
position: absolute;
bottom: 0;
}
ion-footer .footer-button{
--background: #259CB8;
width: 80%;
background: #259CB8;
border-radius: 10px;
}
ion-segment{
height:40px
}

@ -18,4 +18,8 @@ export class ItemsComponent implements OnInit {
segmentChanged(value) {
this.segment = value.detail.value;
}
openSale() {
this.cs.navigateForward('/itemforsale/home');
}
}

@ -474,7 +474,7 @@
<img [src]="action.image">
<ion-label style="font-size: 12px" *ngIf="action.name !== 'RequestInformation'">{{action.name}}</ion-label>
<ion-label style="font-size: 12px; white-space: nowrap;" *ngIf="action.name === 'RequestInformation'">Request Info</ion-label>
<ion-label style="font-size: 12px; white-space: nowrap;" *ngIf="action.name === 'RequestInformation'">{{'worklistMain, worklistMain' | translate}}</ion-label>
</ion-tab-button>

@ -58,7 +58,7 @@
<ion-item lines="none">
<ion-item lines="none" class="search-box">
<ion-input (ionInput)="onChangeInput()" [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="searchKey" [placeholder]='getPlaceHolder()' clearInput="true"></ion-input>
@ -108,7 +108,7 @@
<!-- <br>{{employee.USER_NAME}}<br>
{{employee.EMAIL_ADDRESS}} -->
</ion-label>
<div class='star-fav'>
<div [ngClass]="direction == 'en' ? 'star-fav' : 'star-fav-left'">
<img src="assets/imgs/fav.svg" />
</div>
</div>

@ -27,9 +27,13 @@
}
.star-fav{
float: right;
margin: 15px;
margin: 10px;
}
.star-fav-left{
float: right;
margin: 10px 5px;
}
.uk-margin{margin: 15px 0px 0px 15px;
.uk-margin{margin: 15px 15px 0px 15px;
font-weight: bold;
clear: both;
position: relative;
@ -57,4 +61,5 @@
}
.square{
clear: both;
}
}

@ -40,7 +40,7 @@
<ion-item lines="none">
<ion-item lines="none" class="search-box">
<ion-input (ionInput)="onChangeInput()" [ngClass]="direction == 'en'? 'filterInput':'filterInput-ar'" [(ngModel)]="inputSearch" [placeholder]='getPlaceHolder()' clearInput="true"></ion-input>
@ -75,7 +75,7 @@
<span>{{employee.NAME}}</span>
</ion-label>
<div class='star-fav'>
<div [ngClass]="direction == 'en' ? 'star-fav' : 'star-fav-left'">
<img src="assets/imgs/fav.svg" />
</div>
</div>
@ -100,7 +100,7 @@
<span>{{employee.EMPLOYEE_DISPLAY_NAME}}</span>
</ion-label>
<div class='star-fav'>
<div [ngClass]="direction == 'en' ? 'star-fav' : 'star-fav-left'">
<img src="assets/imgs/fav filled.svg" />
</div>
</div>
@ -128,7 +128,7 @@
<!-- <br>{{employee.USER_NAME}}<br>
{{employee.EMAIL_ADDRESS}} -->
</ion-label>
<div class='star-fav'>
<div [ngClass]="direction == 'en' ? 'star-fav' : 'star-fav-left'">
<img src="assets/imgs/fav.svg" />
</div>
</div>
@ -162,7 +162,7 @@
<!-- <ion-label class="boldTxtNav" padding>{{"replacementRoll, enterNote" | translate}}
</ion-label> -->
<ion-item>
<ion-textarea [(ngModel)]="userNote" placeholder="Enter a note"></ion-textarea>
<ion-textarea [(ngModel)]="userNote" [placeholder]="'replacementRoll, enterNote' | translate"></ion-textarea>
</ion-item>
</div>
<br/>

@ -81,16 +81,18 @@ button.item-button.button.button-md.button-clear.button-clear-md {
border-radius: 21px;
padding-left: 10px !important;
}
.filterInput-ar{
// border: solid var(--gray) 1px;
// border-radius: 21px;
// padding-left: 10px !important;
border: solid var(--gray) 1px;
border-radius: 21px;
// width:250px
// padding-left: 145px !important;
margin-left: 123px;
//margin-left: 123px;
// padding-right: 129px;
margin-right: -136px;
//margin-right: -136px;
}
.filterBtn{
@ -178,9 +180,9 @@ ion-radio{
}
.star-fav{
float: right;
margin: 15px;
margin: 15px 0px 0px 0px;
}
.uk-margin{margin: 15px 0px 0px 15px;
.uk-margin{margin: 15px 15px 0px 15px;
font-weight: bold;
clear: both;
position: relative;
@ -190,4 +192,8 @@ ion-radio{
bottom: 10px;
position: relative;}
.star-fav-left{
float: left;
margin: 10px 5px;
}

@ -78,6 +78,7 @@ export class WorkListReplacementRollComponent implements OnInit {
if (requestInfoDel != null) {
this.userSelected = true;
this.inputSearch = requestInfoDel.NAME;
this.selEmp = requestInfoDel;
}
}

@ -87,6 +87,7 @@
border-radius: 21px;
padding-left: 10px !important;
}
.filterBtn{
background: var(--newgreen);
--background: var (--newgreen);

@ -42,9 +42,9 @@
font-size: 10px;
}
.req_info{
width: 25px;
height: 25px;
width: 20px;
height: 20px;
display: inline-block;
margin: 5px;
margin:15px 10px 0px 0px;
}

@ -34,10 +34,10 @@
font-size: 10px;
}
.req_info{
width: 25px;
height: 25px;
width: 20px;
height: 20px;
display: inline-block;
margin: 5px;
margin: 15px 10px 0px 0px;
}
.name{
color:black !important ;font-weight: bold;

@ -42,9 +42,9 @@
font-size: 10px;
}
.req_info{
width: 25px;
height: 25px;
width: 20px;
height: 20px;
display: inline-block;
margin: 5px;
margin: 15px 10px 0px 0px;
}

@ -44,8 +44,8 @@
font-size: 10px;
}
.req_info{
width: 25px;
height: 25px;
width: 20px;
height: 20px;
display: inline-block;
margin: 5px;
margin:15px 10px 0px 0px;
}

@ -97,12 +97,13 @@
.dateActionHistory{
display: inline-block;
margin-left: 5px;
text-align: left;
}
.req_info{
width: 25px;
height: 25px;
width: 20px;
height: 20px;
display: inline-block;
margin: 5px;
margin: 15px 10px 0px 0px;
}

@ -4,7 +4,7 @@
<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-title color="light" >{{ts.trPK('itemforsale','offersdiscount')}}</ion-title>
</ion-toolbar>
</div>
<div class="header"></div>
@ -17,13 +17,13 @@
<ion-col size="12">
<ion-item lines="none" class="SearchtextBox">
<ion-input placeholder="Search Item"></ion-input>
<ion-input [placeholder]="'itemforsale,search-items'| translate"></ion-input>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="10">
<p class="filterText">Browse Category</p>
<p class="filterText"> {{ts.trPK('itemforsale','browse-categories')}}</p>
</ion-col>
<ion-col size="2">
<img src="assets/imgs/itemsforsale/filter.svg">

@ -4,7 +4,7 @@
<ion-buttons slot="start">
</ion-buttons>
<ion-title color="light" >{{ts.trPK('itemforsale','title')}}</ion-title>
<ion-title color="light" >{{ts.trPK('itemforsale','offersdiscount')}}</ion-title>
</ion-toolbar>
</div>
<div class="header"></div>

@ -8,6 +8,7 @@ import { IonicModule } from '@ionic/angular';
import { OffersdiscountPage } from './offersdiscount.page';
import { HomeComponent } from './home/home.component';
import { OfferDetailsComponent } from './offer-details/offer-details.component';
import { HmgCommonModule } from '../hmg-common/hmg-common.module';
const routes: Routes = [
@ -34,6 +35,7 @@ const routes: Routes = [
CommonModule,
FormsModule,
IonicModule,
HmgCommonModule,
RouterModule.forChild(routes)
],
declarations: [OffersdiscountPage, HomeComponent, OfferDetailsComponent]

@ -116,8 +116,8 @@ button.item-button.button.button-md.button-clear.button-clear-md {
.filterInput-ar{
border: solid var(--gray) 1px;
border-radius: 21px;
margin-left: 115px;
margin-right: -132px;
// margin-left: 115px;
// margin-right: -132px;
}
.filterBtn{

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32.742" height="32.742" viewBox="0 0 32.742 32.742">
<path id="Path_4587" data-name="Path 4587" d="M16.371,0A16.371,16.371,0,1,0,32.742,16.371,16.39,16.39,0,0,0,16.371,0ZM8.186,12.278a2.046,2.046,0,1,1,2.046,2.046A2.05,2.05,0,0,1,8.186,12.278Zm15.42,12.63a1.028,1.028,0,0,1-1.449,0,8.379,8.379,0,0,0-11.576,0,1.023,1.023,0,0,1-1.447-1.447,10.232,10.232,0,0,1,14.472,0A1.024,1.024,0,0,1,23.605,24.909ZM22.51,14.325a2.046,2.046,0,1,1,2.046-2.046A2.05,2.05,0,0,1,22.51,14.325Z" fill="#d56e6d"/>
</svg>

After

Width:  |  Height:  |  Size: 548 B

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26">
<g id="Group_7519" data-name="Group 7519" transform="translate(-332 -18)">
<rect id="Rectangle_17435" data-name="Rectangle 17435" width="26" height="26" rx="13" transform="translate(332 18)" fill="#fff"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 309 B

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="49" height="49" viewBox="0 0 49 49">
<g id="Group_7501" data-name="Group 7501" transform="translate(295 770) rotate(180)">
<circle id="Ellipse_159" data-name="Ellipse 159" cx="24.5" cy="24.5" r="24.5" transform="translate(246 721)" fill="#ca3332"/>
<g id="like_1_" data-name="like (1)" transform="translate(259 733.987)">
<path id="Path_4583" data-name="Path 4583" d="M20.077,8.855H14.791l1.157-2.892a2.267,2.267,0,0,0-.5-2.447,1.719,1.719,0,0,0-2.613.216L9.744,8.057A14.6,14.6,0,0,1,8.21,9.868l-.99.99a.484.484,0,0,0-.142.343v7.441a.487.487,0,0,0,.142.344L8.329,20.1a3.03,3.03,0,0,0,2.156.893h6.026a2.463,2.463,0,0,0,2.248-1.461l2.956-6.651A3.288,3.288,0,0,0,22,11.533v-.754a1.926,1.926,0,0,0-1.923-1.924Z" fill="#fff"/>
<path id="Path_4584" data-name="Path 4584" d="M3.747,10.207A1.747,1.747,0,0,0,2,11.954v6.569a1.747,1.747,0,0,0,3.494,0V11.954a1.747,1.747,0,0,0-1.747-1.747Z" fill="#fff"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 986 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32.742" height="32.742" viewBox="0 0 32.742 32.742">
<path id="Path_4589" data-name="Path 4589" d="M16.371,0A16.371,16.371,0,1,0,32.742,16.371,16.39,16.39,0,0,0,16.371,0ZM7.162,12.278a3.07,3.07,0,1,1,3.07,3.07A3.073,3.073,0,0,1,7.162,12.278ZM23.6,23.6a10.229,10.229,0,0,1-14.47,0,1.023,1.023,0,1,1,1.447-1.447,8.379,8.379,0,0,0,11.576,0A1.023,1.023,0,1,1,23.6,23.6ZM22.51,15.348a3.07,3.07,0,1,1,3.07-3.07A3.073,3.073,0,0,1,22.51,15.348Z" fill="#8ca742"/>
</svg>

After

Width:  |  Height:  |  Size: 511 B

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="49" height="49" viewBox="0 0 49 49">
<g id="Group_7502" data-name="Group 7502" transform="translate(295 770) rotate(180)">
<circle id="Ellipse_159" data-name="Ellipse 159" cx="24.5" cy="24.5" r="24.5" transform="translate(246 721)" fill="#fff"/>
<g id="info_2_" data-name="info (2)" transform="translate(306.825 757.238) rotate(180)">
<path id="Path_4585" data-name="Path 4585" d="M41.2,20.941l-.328,1.341q-1.476.583-2.355.887a6.213,6.213,0,0,1-2.042.305A4.077,4.077,0,0,1,33.7,22.6a2.821,2.821,0,0,1-.991-2.214,7.831,7.831,0,0,1,.074-1.065q.075-.545.24-1.23l1.23-4.353q.164-.625.277-1.185a5.15,5.15,0,0,0,.112-1.02,1.578,1.578,0,0,0-.344-1.163,1.944,1.944,0,0,0-1.315-.329,3.447,3.447,0,0,0-.978.149c-.335.1-.62.194-.86.283l.329-1.342q1.208-.492,2.312-.842a6.915,6.915,0,0,1,2.091-.351,3.978,3.978,0,0,1,2.737.858,2.846,2.846,0,0,1,.961,2.228c0,.189-.021.522-.066,1a6.68,6.68,0,0,1-.246,1.313l-1.224,4.335a11.515,11.515,0,0,0-.269,1.194,6.147,6.147,0,0,0-.12,1.013,1.46,1.46,0,0,0,.386,1.178,2.177,2.177,0,0,0,1.34.313,3.868,3.868,0,0,0,1.013-.157A5.664,5.664,0,0,0,41.2,20.941Zm.311-18.2a2.537,2.537,0,0,1-.857,1.931,2.916,2.916,0,0,1-2.062.8,2.949,2.949,0,0,1-2.073-.8,2.531,2.531,0,0,1-.865-1.931A2.556,2.556,0,0,1,36.519.8a3.06,3.06,0,0,1,4.136,0A2.561,2.561,0,0,1,41.511,2.741Z" transform="translate(0 0)"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="49" height="49" viewBox="0 0 49 49">
<g id="Group_7500" data-name="Group 7500" transform="translate(-246 -721)">
<circle id="Ellipse_159" data-name="Ellipse 159" cx="24.5" cy="24.5" r="24.5" transform="translate(246 721)" fill="#20a16a"/>
<g id="like_1_" data-name="like (1)" transform="translate(259 733.987)">
<path id="Path_4583" data-name="Path 4583" d="M20.077,8.855H14.791l1.157-2.892a2.267,2.267,0,0,0-.5-2.447,1.719,1.719,0,0,0-2.613.216L9.744,8.057A14.6,14.6,0,0,1,8.21,9.868l-.99.99a.484.484,0,0,0-.142.343v7.441a.487.487,0,0,0,.142.344L8.329,20.1a3.03,3.03,0,0,0,2.156.893h6.026a2.463,2.463,0,0,0,2.248-1.461l2.956-6.651A3.288,3.288,0,0,0,22,11.533v-.754a1.926,1.926,0,0,0-1.923-1.924Z" fill="#fff"/>
<path id="Path_4584" data-name="Path 4584" d="M3.747,10.207A1.747,1.747,0,0,0,2,11.954v6.569a1.747,1.747,0,0,0,3.494,0V11.954a1.747,1.747,0,0,0-1.747-1.747Z" fill="#fff"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 976 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32.742" height="32.742" viewBox="0 0 32.742 32.742">
<path id="Path_4588" data-name="Path 4588" d="M16.371,0A16.371,16.371,0,1,0,32.742,16.371,16.39,16.39,0,0,0,16.371,0ZM8.186,12.278a2.046,2.046,0,1,1,2.046,2.046A2.05,2.05,0,0,1,8.186,12.278Zm13.3,12.278H11.255a1.023,1.023,0,0,1,0-2.046H21.487a1.023,1.023,0,0,1,0,2.046ZM22.51,14.325a2.046,2.046,0,1,1,2.046-2.046A2.05,2.05,0,0,1,22.51,14.325Z" fill="#ca8432"/>
</svg>

After

Width:  |  Height:  |  Size: 470 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32.742" height="32.742" viewBox="0 0 32.742 32.742">
<path id="Path_4586" data-name="Path 4586" d="M16.371,0A16.371,16.371,0,1,0,32.742,16.371,16.39,16.39,0,0,0,16.371,0ZM8.186,15.348a3.065,3.065,0,0,1,1.471-2.609L7.543,11.028A1.023,1.023,0,1,1,8.828,9.436l4.355,3.524a3.069,3.069,0,1,1-5,2.388ZM22.228,26.286a1.024,1.024,0,0,1-1.447.035,6.4,6.4,0,0,0-8.822,0,1.023,1.023,0,1,1-1.41-1.484,8.437,8.437,0,0,1,11.642,0A1.023,1.023,0,0,1,22.228,26.286ZM25.2,11.028l-2.116,1.711a3.059,3.059,0,1,1-3.526.221l4.357-3.524A1.023,1.023,0,1,1,25.2,11.028Z" fill="#ca3332"/>
</svg>

After

Width:  |  Height:  |  Size: 619 B

@ -0,0 +1,4 @@
<svg id="star_5_" data-name="star (5)" xmlns="http://www.w3.org/2000/svg" width="34.608" height="33.317" viewBox="0 0 34.608 33.317">
<path id="Path_4581" data-name="Path 4581" d="M34.608,22.264l-12.572-.811L17.29,9.55l-4.745,11.9L0,22.264l9.625,8.192L6.462,42.867,17.29,36.013l10.828,6.854-3.163-12.41Z" transform="translate(0 -9.55)" fill="#ffd400"/>
<path id="Path_4582" data-name="Path 4582" d="M263.465,30.457l3.163,12.41L255.8,36.013V9.55l4.745,11.9,12.572.811Z" transform="translate(-238.51 -9.55)" fill="#cecece"/>
</svg>

After

Width:  |  Height:  |  Size: 534 B

@ -0,0 +1,4 @@
<svg id="star_5_" data-name="star (5)" xmlns="http://www.w3.org/2000/svg" width="34.608" height="33.317" viewBox="0 0 34.608 33.317">
<path id="Path_4581" data-name="Path 4581" d="M34.608,22.264l-12.572-.811L17.29,9.55l-4.745,11.9L0,22.264l9.625,8.192L6.462,42.867,17.29,36.013l10.828,6.854-3.163-12.41Z" transform="translate(0 -9.55)" fill="#cecece"/>
<path id="Path_4582" data-name="Path 4582" d="M263.465,30.457l3.163,12.41L255.8,36.013V9.55l4.745,11.9,12.572.811Z" transform="translate(-238.51 -9.55)" fill="#cecece"/>
</svg>

After

Width:  |  Height:  |  Size: 534 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="34.608" height="33.317" viewBox="0 0 34.608 33.317">
<path id="Path_4581" data-name="Path 4581" d="M34.608,22.264l-12.572-.811L17.29,9.55l-4.745,11.9L0,22.264l9.625,8.192L6.462,42.867,17.29,36.013l10.828,6.854-3.163-12.41Z" transform="translate(0 -9.55)" fill="#ffd400"/>
</svg>

After

Width:  |  Height:  |  Size: 328 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32.742" height="32.742" viewBox="0 0 32.742 32.742">
<path id="Path_4590" data-name="Path 4590" d="M16.371,0A16.371,16.371,0,1,0,32.742,16.371,16.39,16.39,0,0,0,16.371,0ZM22.51,10.232a2.046,2.046,0,1,1-2.046,2.046A2.05,2.05,0,0,1,22.51,10.232Zm-12.278,0a2.046,2.046,0,1,1-2.046,2.046A2.05,2.05,0,0,1,10.232,10.232Zm6.139,18.417a12.305,12.305,0,0,1-11.81-8.93,1.024,1.024,0,0,1,.984-1.3H27.2a1.02,1.02,0,0,1,.814.405,1.031,1.031,0,0,1,.17.9A12.305,12.305,0,0,1,16.371,28.649Z" fill="#20a16a"/>
</svg>

After

Width:  |  Height:  |  Size: 549 B

@ -213,6 +213,18 @@
"en": "Allow the Mohemm app to access your location for marking your attendance",
"ar": "اسمح لتطبيق مهم بالوصول إلى موقعك لتحديد حضورك"
},
"other-services": {
"en": "Other Services",
"ar": "خدمات أخرى"
},
"items-sales": {
"en": "Items for sale",
"ar": "بضاعه للبع"
},
"offers-discount": {
"en": "Offers & Discount",
"ar": "العروض والخصومات"
},
"not-now": {
"en": "not now",
"ar": "لاحقاً"
@ -2083,121 +2095,121 @@
"en": "you shoud add comment",
"ar": "يجب عليك اضافة تعليق"
},
"product-name":{
"en":"Product Name",
"ar":"اسم المنتج"
"product-name": {
"en": "Product Name",
"ar": "اسم المنتج"
},
"product-description":{
"en":"Product Description",
"ar":"وصف للمنتج"
"product-description": {
"en": "Product Description",
"ar": "وصف للمنتج"
},
"Unit-price":{
"en":"Unit Price",
"ar":"سعر الوحدة"
"Unit-price": {
"en": "Unit Price",
"ar": "سعر الوحدة"
},
"manufacturer-name":{
"en":"Manufacturer Name",
"ar":"اسم المصنع"
"manufacturer-name": {
"en": "Manufacturer Name",
"ar": "اسم المصنع"
},
"manufacturer-part-number":{
"en":"Manufacturer Part Number",
"ar":"رقم قطعة المصنع"
"manufacturer-part-number": {
"en": "Manufacturer Part Number",
"ar": "رقم قطعة المصنع"
},
"supplier-name":{
"en":"Supplier Name",
"ar":"اسم المورد"
"supplier-name": {
"en": "Supplier Name",
"ar": "اسم المورد"
},
"supplier-contact":{
"en":"Supplier Contact",
"ar":"عقد المورد"
"supplier-contact": {
"en": "Supplier Contact",
"ar": "عقد المورد"
},
"charge-to-patient":{
"en":"Charge to Patient",
"ar":"رسوم على المرضى"
"charge-to-patient": {
"en": "Charge to Patient",
"ar": "رسوم على المرضى"
},
"justification":{
"en":"Justification",
"ar":"تبرير"
"justification": {
"en": "Justification",
"ar": "تبرير"
},
"item-code":{
"en":"Item Code",
"ar":"رمز الصنف"
"item-code": {
"en": "Item Code",
"ar": "رمز الصنف"
},
"item-description":{
"en":"Item Description",
"ar":"وصف الصنف"
"item-description": {
"en": "Item Description",
"ar": "وصف الصنف"
},
"group-code":{
"en":"Group Code",
"ar":"رمز المجموعة"
"group-code": {
"en": "Group Code",
"ar": "رمز المجموعة"
},
"group-description":{
"en":"Group Description",
"ar":"وصف المجموعة"
"group-description": {
"en": "Group Description",
"ar": "وصف المجموعة"
},
"subgroup-code":{
"en":"Subgroup Code",
"ar":"رمز المجموعة الفرعية"
"subgroup-code": {
"en": "Subgroup Code",
"ar": "رمز المجموعة الفرعية"
},
"subgroup-description":{
"en":"Subgroup Description",
"ar":"وصف المجموعة الفرعية"
"subgroup-description": {
"en": "Subgroup Description",
"ar": "وصف المجموعة الفرعية"
},
"primary-uom":{
"en":"Primary UOM",
"ar":"Primary UOM"
"primary-uom": {
"en": "Primary UOM",
"ar": "Primary UOM"
},
"template-name":{
"en":"Template Name",
"ar":"اسم القالب"
"template-name": {
"en": "Template Name",
"ar": "اسم القالب"
},
"item-creation-status":{
"en":"Item Creation Status",
"ar":"حالة انشاء العنصر"
"item-creation-status": {
"en": "Item Creation Status",
"ar": "حالة انشاء العنصر"
},
"standardization-approval-status":{
"en":"Standardization Approval Status",
"ar":"حالةالموافقة على المعايرة"
"standardization-approval-status": {
"en": "Standardization Approval Status",
"ar": "حالةالموافقة على المعايرة"
},
"standardization-approval-rejection-reason":{
"en":"Standardization Approval Rejection Reason",
"ar":"سبب رفض الموافقة على المعايرة"
"standardization-approval-rejection-reason": {
"en": "Standardization Approval Rejection Reason",
"ar": "سبب رفض الموافقة على المعايرة"
},
"category":{
"en":"Category",
"ar":"فئة"
"category": {
"en": "Category",
"ar": "فئة"
},
"requester":{
"en":"Requester",
"ar":"مقدم الطلب"
"requester": {
"en": "Requester",
"ar": "مقدم الطلب"
},
"analyzed-by":{
"en":"Analyzed By",
"ar":"تحليل بواسطة"
"analyzed-by": {
"en": "Analyzed By",
"ar": "تحليل بواسطة"
},
"approved-date":{
"en":"Approved Date",
"ar":"تاريخ الموافقة"
"approved-date": {
"en": "Approved Date",
"ar": "تاريخ الموافقة"
},
"item-type":{
"en":"Item Type",
"ar":"نوع الصنف"
"item-type": {
"en": "Item Type",
"ar": "نوع الصنف"
},
"related-to":{
"en":"Related To",
"ar":""
"related-to": {
"en": "Related To",
"ar": ""
},
"request-date":{
"en":"Request Date",
"ar":"متعلق بـ"
"request-date": {
"en": "Request Date",
"ar": "متعلق بـ"
},
"analyzed-date":{
"en":"Analyzed Date",
"ar":"تاريخ التحليل"
"analyzed-date": {
"en": "Analyzed Date",
"ar": "تاريخ التحليل"
},
"urgent":{
"en":"Urgent",
"ar":"عاجل"
"urgent": {
"en": "Urgent",
"ar": "عاجل"
}
},
"worklistMain": {
@ -2772,6 +2784,42 @@
"title": {
"en": "Item for sale",
"ar": "سلعه للبيع"
},
"my-posted-ad": {
"en": "My Posted Ads",
"ar": "إعلاناتي المنشورة"
},
"browse-categories": {
"en": "Browse Categories",
"ar": "تصفح الفئات"
},
"create-new-ad": {
"en": "Create new ad",
"ar": "إنشاء إعلان جديد"
},
"select-category": {
"en": "Select Category",
"ar": "اختر الفئة"
},
"completed": {
"en": "Completed",
"ar": "مكتمل"
},
"add-details": {
"en": "Add Details",
"ar": "أضف التفاصيل"
},
"review-sell": {
"en": "Review & Sell",
"ar": "مراجعة وبيع"
},
"search-items": {
"en": "Search Items",
"ar": "عناصر البحث"
},
"offersdiscount": {
"en": "Offers & Discount",
"ar": "العروض والخصومات"
}
},
"attendance-tracking": {

@ -1571,4 +1571,17 @@ table.monthview-datetable th small {
.fav-profileImageDiv{
width: 100%;
text-align: start;
}
}
ion-segment-button {
--indicator-color: transparent !important;
--indicator-color-checked: transparent !important;
}
#surveyRatingNew ion-button{
background: #fff !important;
}
#surveyRatingNew ion-buttons{
border-radius: 12px;
background: #fff;
width: 75%;
margin: auto;
}

@ -475,7 +475,7 @@ left: 66px;
}
.dateActionHistory{
text-align: end;
text-align: start;
// margin-top: -25px;
}

Loading…
Cancel
Save