import { AfterViewInit, Component, OnInit } from '@angular/core'; import { connectableObservableDescriptor } from 'rxjs/internal/observable/ConnectableObservable'; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { OfferDiscountService } from '../services/service'; @Component({ selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.scss'], }) export class HomeComponent implements AfterViewInit { segment: any = '1'; categoriesObj: any; categories: any = []; offersData: any = []; activeClass: any; tempSearch: any = []; searchText: String; constructor(public ts: TranslatorService, public cs: CommonService, public offersService: OfferDiscountService) { } ngAfterViewInit(): void { this.getOfferDiscount(); } openDetails(offer) { this.cs.sharedService.setSharedData(offer, OfferDiscountService.selected_offers); var related = this.offersData.filter((res) => res.rowID != offer.rowID); this.cs.sharedService.setSharedData(related, OfferDiscountService.related_offers); this.cs.navigateForward('/offersdiscount/offer-details'); } getOfferDiscount() { this.cs.startLoading(); this.offersService.getOffers({}, () => { }, this.ts.trPK('general', 'retry')).subscribe((res) => { var data = JSON.parse(res['Mohemm_ITG_ResponseItem']); this.cs.stopLoading(); if (data['result']) this.displayOffers(data['result']); }); } displayOffers(data) { if (data['data']) { var parseJSON = data['data']; var offers = JSON.parse(parseJSON) this.categoriesObj = this.groupBy(offers, TranslatorService.getCurrentDirection() == 'ltr' ? 'categoryName_en' : 'categoryName_ar'); // = Object.keys(this.categoriesObj); for (var x in this.categoriesObj) { for (var y in offers) { if (x == offers[y].categoryName_en && this.categories.filter(item => item.name.includes(x)) == false) { this.categories.push({ name: x, icon: offers[y].icon }) } } } this.filterOffers(this.categories[0]); } } groupBy(xs, key) { return xs.reduce((rv, x) => { (rv[x[key.trim()]] = rv[x[key]] || []).push(x); return rv }, {}); }; filterOffers(key) { this.activeClass = key.name; this.offersData = this.categoriesObj[key.name]; this.tempSearch = JSON.parse(JSON.stringify(this.offersData)); } checkDate(date) { return new Date(date) >= new Date() } getDotted(temp) { return temp.substring(0, 60) + " ..."; } search(t) { this.offersData = this.tempSearch.filter((post, index) => { if (post.Title.toLowerCase().indexOf(t.toLowerCase()) > -1) return true; }); } }