Merge branch 'MOHEMM-Q2-DEV' into Fatima-Q2-June

# Conflicts:
#	Mohem/src/app/app-routing.module.ts
MOE_DEV_NEW_TEMPORARY_DESIGN
Fatimah Alshammari 5 years ago
commit 22afd6fb15

@ -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"
]
}
}
}

@ -23,8 +23,9 @@ const routes: Routes = [
{ 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: 'mowadhafi', loadChildren: './mowadhafi/mowadhafi/mowadhafi.module#MowadhafiPageModule' },
{ path: 'mowadhafi', loadChildren: './mowadhafi/mowadhafi.module#MowadhafiPageModule' }
{ path: 'mowadhafi', loadChildren: './mowadhafi/mowadhafi.module#MowadhafiPageModule' },
{ path: 'erm-channel', loadChildren: './erm-channel/erm-channel.module#ErmChannelPageModule' },
{ path: 'backend-integrations', loadChildren: './backend-integrations/backend-integrations.module#BackendIntegrationsPageModule' }

@ -164,7 +164,6 @@
<ion-badge class="start-badge main-badge" slot="end" color="danger">{{notBadge}}</ion-badge>
</ion-label>
</ion-item>
<!-- <ion-item (click)="profile()">
<ion-thumbnail slot="start" class="menu-thumb">

@ -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,58 @@
<app-generic-header
showBack="true"
[headerText]="'login,announcement' | translate">
</app-generic-header>
<ion-content style="--background:#F4F4F4;">
<ion-searchbar (ionInput)="filterList($event)" style="--background: white"></ion-searchbar>
<ion-list style="background: #f4f4f4;">
<div *ngFor="let item of arrList; let i = index"
[ngClass]="i>0 && !item.Open ? 'class-dev-close': 'class-dev-open'"
style="background: white; margin: 20px; padding: 0px;">
<ion-card *ngIf="i === 0 && !item.isOpen" (click)="toggleAnnouncement(item)" style="margin: 0px;">
<img [src]="item.img" class="image-center">
<ion-item>
<ion-label>
<h2 class="text-style">{{item.title}}</h2>
<p class="text-style">{{item.body}}</p>
<p class="text-style">{{item.date}}</p>
</ion-label>
</ion-item>
</ion-card>
<ion-card *ngIf="i === 0 && item.isOpen" (click)="toggleAnnouncement(item)" style="margin: 0px;">
<ion-card-header style="background: transparent;">
<ion-card-title style="font-size: 20px; margin: 5px;">{{item.title}} <br>
<p style="font-size: 12px; color: gray;">{{item.date}}</p>
</ion-card-title>
<img [src]="item.img" class="image-center">
</ion-card-header>
<ion-card-content>
<p>{{item.body}}</p>
</ion-card-content>
</ion-card>
<ion-item *ngIf="i > 0 && !item.isOpen" (click)="toggleAnnouncement(item)" lines='none'
style="border: 1px solid lightgray; border-radius: 30px; height: 100px;">
<img [src]="item.img" style="width: 30%;">
<ion-label style="margin: 5px;">
<h2>{{item.title}}</h2>
<p>{{item.body}}</p>
<p>{{item.date}}</p>
</ion-label>
</ion-item>
<ion-card *ngIf="i > 0 && item.isOpen" (click)="toggleAnnouncement(item)" style="margin: 0px;">
<ion-card-header style="background: transparent;">
<ion-card-title style="font-size: 20px; margin: 5px;">{{item.title}} <br>
<p style="font-size: 12px; color: gray;">{{item.date}}</p>
</ion-card-title>
<img [src]="item.img" class="image-center">
</ion-card-header>
<ion-card-content>
<p>{{item.body}}</p>
</ion-card-content>
</ion-card>
</div>
</ion-list>
</ion-content>

@ -0,0 +1,22 @@
.image-center{
width: 50%;
display: block;
margin-left: auto;
margin-right: auto;
}
.text-style{
margin: 5px;
}
.class-dev-close{
border: 1px solid lightgray;
border-radius: 30px;
}
.class-dev-open{}
.class-item-open{
border: 1px solid lightgray;
border-radius: 30px;
height: 100px;
}
.class-item-close{}

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

@ -0,0 +1,62 @@
import { Component, OnInit } from '@angular/core';
import { detachEmbeddedView } from '@angular/core/src/view';
@Component({
selector: 'app-announcement',
templateUrl: './announcement.component.html',
styleUrls: ['./announcement.component.scss'],
})
export class AnnouncementComponent implements OnInit {
dt = new Date().toJSON().slice(0,10).replace(/-/g,'/');
public arr =[
{
title:"Basic Microsoft Excel Cource",
body:" is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.",
img:"../assets/imgs/HMG.png",
date: this.dt,
isopen: true
},
{
title:"External Visit",
body:"It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).",
img:"../assets/imgs/M.png",
date: this.dt,
isopen: false
},
{
title:"Maintenance Activity",
body:"The standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from 'de Finibus Bonorum et Malorum' by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.",
img:"../assets/imgs/M.png",
date: this.dt,
isopen: false
},
];
public arrList = [];
constructor() { }
ngOnInit() {
this.arrList = this.arr;
}
filterList(event) {
const val = event.target.value;
if (val === '') {
this.arrList = this.arr;
}
this.arrList = this.arr.filter((item) => {
return (item.title.toLowerCase().indexOf(val.toLowerCase()) > -1);
});
}
toggleAnnouncement(item){
this.arrList.forEach(element => {
if(element.title === item.title){
element.isOpen = !element.isOpen;
}else{
element.isOpen = false;
}
});
}
}

@ -0,0 +1,36 @@
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 { HmgCommonModule } from '../hmg-common/hmg-common.module';
import { BackendIntegrationsPage } from './backend-integrations.page';
import { AnnouncementComponent } from './announcement/announcement.component';
const routes: Routes = [
{
path: '',
component: BackendIntegrationsPage,
children: [
{
path: 'announcement',
component: AnnouncementComponent
}
]
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
HmgCommonModule,
RouterModule.forChild(routes)
],
declarations: [BackendIntegrationsPage, AnnouncementComponent]
})
export class BackendIntegrationsPageModule {}

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

@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-backend-integrations',
templateUrl: './backend-integrations.page.html',
styleUrls: ['./backend-integrations.page.scss'],
})
export class BackendIntegrationsPage implements OnInit {
constructor() { }
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 { 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() {
@ -1133,10 +1133,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']);
@ -1187,7 +1187,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() {
@ -1236,9 +1236,12 @@ public getMonthNameAr(value: number): string {
public eitUpdate() {
this.nav.navigateForward(['/eit/eit-update-list']);
}
public openAnnouncement() {
this.nav.navigateForward(['/backend-integrations/announcement']);
}
public navigatePage(path) {
this.nav.navigateForward([path]);
}
@ -1265,7 +1268,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') {
@ -1386,7 +1389,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, '/');
@ -1411,34 +1414,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://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,15 +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>
</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,9 +783,12 @@ 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');
}
openAnnouncement(){
this.common.openAnnouncement();
}
}

@ -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": "لاحقاً"
@ -2131,121 +2143,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": {
@ -2820,6 +2832,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