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; direction: any; // categories:any = []; 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() { this.direction = TranslatorService.getCurrentDirection(); let activeClass = this.cs.sharedService.getSharedData(OfferDiscountService.selected_filters); if (activeClass) { this.filterOffers(activeClass); } this.getCategories(); } getCategories() { this.offersService.getCategories().subscribe((result) => { this.categories = result.result.data; this.cs.sharedService.setSharedData(this.categories, OfferDiscountService.categories); }); } 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.offersData = offers; // 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.categoryName_en; 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'); } }