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, 'categoryName'); this.categories = Object.keys(this.categoriesObj); this.filterOffers(this.categories[0]); } } groupBy(xs, key) { return xs.reduce((rv, x) => { (rv[x[key]] = rv[x[key]] || []).push(x); return rv; }, {}); }; filterOffers(key) { this.activeClass = key; this.offersData = this.categoriesObj[key]; 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; }); } }