import { AfterViewInit, Component, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { ModalController } from '@ionic/angular'; 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 { FilterComponent } from '../filter/filter.component'; 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 modalController: ModalController, public cs: CommonService, public offersService: OfferDiscountService, public route: ActivatedRoute) { this.route .params.subscribe(val => { setTimeout(() => { this.ionEnter(); }, 100); }); } ngAfterViewInit(): void { this.getOfferDiscount(); } ionEnter() { let activeClass = this.cs.sharedService.getSharedData(OfferDiscountService.selected_filters); if (activeClass) { this.filterOffers(activeClass); } } 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) { temp = this.stripHtml(temp); return temp.substring(0, 70) + " ..."; } stripHtml(html) { var temporalDivElement = document.createElement("div"); temporalDivElement.innerHTML = html; return temporalDivElement.textContent || temporalDivElement.innerText || ""; } search(t) { this.offersData = this.tempSearch.filter((post, index) => { if (post.Title.toLowerCase().indexOf(t.toLowerCase()) > -1) return true; }); } async openModel() { // const modal = await this.modalController.create({ // component: FilterComponent, // }); // modal.cssClass = "filter-modal" // modal.present(); this.cs.navigateForward('/offersdiscount/filter-page'); } }