{"version":3,"file":"main.8f313433826762b0.js","mappings":"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","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/community/editorials/article-card/article-card.component.ts","./src/app/community/editorials/article-card/article-card.component.html","./src/app/community/editorials/box-card/box-card.component.ts","./src/app/community/editorials/box-card/box-card.component.html","./src/app/community/editorials/column-card/column-card.component.ts","./src/app/community/editorials/column-card/column-card.component.html","./src/app/community/editorials/content-card/content-card.component.ts","./src/app/community/editorials/content-card/content-card.component.html","./src/app/community/editorials/cta/cta.component.ts","./src/app/community/editorials/cta/cta.component.html","./src/app/community/editorials/image/image.component.ts","./src/app/community/editorials/image/image.component.html","./src/app/community/editorials/inline-video/inline-video.component.ts","./src/app/community/editorials/inline-video/inline-video.component.html","./src/app/community/editorials/page-header/page-header.component.ts","./src/app/community/editorials/page-header/page-header.component.html","./src/app/community/editorials/request-brochure-cta/request-brochure-cta.component.ts","./src/app/community/editorials/request-brochure-cta/request-brochure-cta.component.html","./src/app/community/editorials/special-offers-card/special-offers-card.component.ts","./src/app/community/editorials/special-offers-card/special-offers-card.component.html","./src/app/community/editorials/tile-card/tile-card.component.ts","./src/app/community/editorials/tile-card/tile-card.component.html","./src/app/community/editorials/tooltip/tooltip.component.ts","./src/app/community/editorials/tooltip/tooltip.component.html","./src/app/community/hers-score-graph/hers-score-graph.component.ts","./src/app/community/hers-score-graph/hers-score-graph.component.html","./src/app/community/products/community-amenity-details/community-amenity-details.component.ts","./src/app/community/products/community-amenity-details/community-amenity-details.component.html","./src/app/community/products/community-description/community-description.component.ts","./src/app/community/products/community-description/community-description.component.html","./src/app/community/products/community-gallery/community-gallery.component.html","./src/app/community/products/community-gallery/community-gallery.component.ts","./src/app/community/products/community-hero/community-hero.component.ts","./src/app/community/products/community-hero/community-hero.component.html","./src/app/community/products/community-homes-filter/community-homes-filter.component.ts","./src/app/community/products/community-homes-filter/community-homes-filter.component.html","./src/app/community/products/community-lot-map/community-lot-map.component.ts","./src/app/community/products/community-lot-map/community-lot-map.component.html","./src/app/community/products/community-poi-categories/community-poi-categories.component.ts","./src/app/community/products/community-poi-categories/community-poi-categories.component.html","./src/app/community/products/community-poi-marker/community-poi-marker.component.ts","./src/app/community/products/community-poi-marker/community-poi-marker.component.html","./src/app/community/products/community-summary/community-summary.component.ts","./src/app/community/products/community-summary/community-summary.component.html","./src/app/community/products/community-tour/community-tour.component.ts","./src/app/community/products/community-tour/community-tour.component.html","./src/app/community/products/horizontal-plan-card/horizontal-plan-card.component.ts","./src/app/community/products/horizontal-plan-card/horizontal-plan-card.component.html","./src/app/community/products/lmp-tooltip/lmp-tooltip.component.ts","./src/app/community/products/lmp-tooltip/lmp-tooltip.component.html","./src/app/community/products/nearby-communities/nearby-communities.component.ts","./src/app/community/products/nearby-communities/nearby-communities.component.html","./src/app/community/products/plan-card/plan-card.component.ts","./src/app/community/products/plan-card/plan-card.component.html","./src/app/community/products/plan-ctas/plan-ctas.component.ts","./src/app/community/products/plan-ctas/plan-ctas.component.html","./src/app/community/products/plan-features/plan-features.component.ts","./src/app/community/products/plan-features/plan-features.component.html","./src/app/community/products/plan-floor-plans/plan-floor-plans.component.ts","./src/app/community/products/plan-floor-plans/plan-floor-plans.component.html","./src/app/community/products/plan-gallery/plan-gallery.component.ts","./src/app/community/products/plan-gallery/plan-gallery.component.html","./src/app/community/products/plan-summary/plan-summary.component.ts","./src/app/community/products/plan-summary/plan-summary.component.html","./src/app/community/products/plan-tours/plan-tours.component.ts","./src/app/community/products/plan-tours/plan-tours.component.html","./src/app/community/products/product-overview/product-overview.component.ts","./src/app/community/products/product-overview/product-overview.component.html","./src/app/community/products/qmi-card/qmi-card.component.ts","./src/app/community/products/qmi-card/qmi-card.component.html","./src/app/community/products/qmi-description/qmi-description.component.ts","./src/app/community/products/qmi-description/qmi-description.component.html","./src/app/community/products/qmi-gallery/qmi-gallery.component.ts","./src/app/community/products/qmi-gallery/qmi-gallery.component.html","./src/app/community/products/qmi-location/qmi-location.component.ts","./src/app/community/products/qmi-location/qmi-location.component.html","./src/app/community/products/qmi-summary/qmi-summary.component.ts","./src/app/community/products/qmi-summary/qmi-summary.component.html","./src/app/community/products/qmi-tour/qmi-tour.component.ts","./src/app/community/products/qmi-tour/qmi-tour.component.html","./src/app/community/products/series-card/series-card.component.ts","./src/app/community/products/series-card/series-card.component.html","./src/app/community/products/vr-tour-plan/vr-tour-plan.component.ts","./src/app/community/products/vr-tour-plan/vr-tour-plan.component.html","./src/app/community/shared/base/base.component.ts","./src/app/community/shared/directives/digits-only.directive.ts","./src/app/community/shared/directives/email-validator.directive.ts","./src/app/community/shared/directives/gmaps-directions.directive.ts","./src/app/community/shared/directives/name-validator.directive.ts","./src/app/community/shared/directives/pause-sleep-state.directive.ts","./src/app/community/shared/directives/phone-mask.directive.ts","./src/app/community/shared/directives/phone-validator.directive.ts","./src/app/community/shared/interactions/back-button/back-button.component.ts","./src/app/community/shared/interactions/back-button/back-button.component.html","./src/app/community/shared/interactions/close-button/close-button.component.ts","./src/app/community/shared/interactions/close-button/close-button.component.html","./src/app/community/shared/interactions/date-time-picker/date-time-picker.component.ts","./src/app/community/shared/interactions/date-time-picker/date-time-picker.component.html","./src/app/community/shared/interactions/form-control-error/form-control-error.component.ts","./src/app/community/shared/interactions/form-control-error/form-control-error.component.html","./src/app/community/shared/interactions/form-keyboard/form-keyboard.component.ts","./src/app/community/shared/interactions/form-keyboard/form-keyboard.component.html","./src/app/community/shared/interactions/icon-cta/icon-cta.component.ts","./src/app/community/shared/interactions/icon-cta/icon-cta.component.html","./src/app/community/shared/interactions/loading-spinner/loading-spinner.component.ts","./src/app/community/shared/interactions/loading-spinner/loading-spinner.component.html","./src/app/community/shared/interactions/ratings/ratings/ratings.component.ts","./src/app/community/shared/interactions/ratings/ratings/ratings.component.html","./src/app/community/shared/maps/alphavision-map/alphavision-map.component.ts","./src/app/community/shared/maps/alphavision-map/alphavision-map.component.html","./src/app/community/shared/maps/lot-map-legend/lot-map-legend.component.ts","./src/app/community/shared/maps/lot-map-legend/lot-map-legend.component.html","./src/app/community/shared/maps/ng-google-map/ng-google-map/ng-google-map.component.ts","./src/app/community/shared/maps/ng-google-map/ng-google-map/ng-google-map.component.html","./src/app/community/shared/media/carousel/carousel.component.ts","./src/app/community/shared/media/carousel/carousel.component.html","./src/app/community/shared/media/gallery/gallery.component.ts","./src/app/community/shared/media/gallery/gallery.component.html","./src/app/community/shared/modals/filter-gallery-modal/filter-gallery-modal.component.ts","./src/app/community/shared/modals/filter-gallery-modal/filter-gallery-modal.component.html","./src/app/community/shared/modals/floor-plan-modal/floor-plan-modal.component.ts","./src/app/community/shared/modals/floor-plan-modal/floor-plan-modal.component.html","./src/app/community/shared/modals/gallery-modal/gallery-modal.component.ts","./src/app/community/shared/modals/gallery-modal/gallery-modal.component.html","./src/app/community/shared/modals/guest-registration-modal/guest-registration-modal.component.ts","./src/app/community/shared/modals/guest-registration-modal/guest-registration-modal.component.html","./src/app/community/shared/modals/hers-score-modal/hers-score-modal.component.ts","./src/app/community/shared/modals/hers-score-modal/hers-score-modal.component.html","./src/app/community/shared/modals/interactive-tool-modal/interactive-tool-modal.component.ts","./src/app/community/shared/modals/interactive-tool-modal/interactive-tool-modal.component.html","./src/app/community/shared/modals/map-commute-modal/map-commute-modal.component.ts","./src/app/community/shared/modals/map-commute-modal/map-commute-modal.component.html","./src/app/community/shared/modals/pdf-image-modal/pdf-image-modal.component.ts","./src/app/community/shared/modals/pdf-image-modal/pdf-image-modal.component.html","./src/app/community/shared/modals/plan-features-modal/plan-features-modal.component.ts","./src/app/community/shared/modals/plan-features-modal/plan-features-modal.component.html","./src/app/community/shared/modals/plan-qmi-listing-modal/plan-qmi-listing-modal.component.ts","./src/app/community/shared/modals/plan-qmi-listing-modal/plan-qmi-listing-modal.component.html","./src/app/community/shared/modals/plan-tools-modal/plan-tools-modal.component.ts","./src/app/community/shared/modals/plan-tools-modal/plan-tools-modal.component.html","./src/app/community/shared/modals/plan-virtual-tour-modal/plan-virtual-tour-modal.component.ts","./src/app/community/shared/modals/plan-virtual-tour-modal/plan-virtual-tour-modal.component.html","./src/app/community/shared/modals/request-brochure-modal/request-brochure-modal.component.ts","./src/app/community/shared/modals/request-brochure-modal/request-brochure-modal.component.html","./src/app/community/shared/modals/video-modal/video-modal.component.ts","./src/app/community/shared/modals/video-modal/video-modal.component.html","./src/app/community/shared/pipes/abbrev-currency.pipe.ts","./src/app/community/shared/pipes/alignment-style.pipe.ts","./src/app/community/shared/pipes/button-style.pipe.ts","./src/app/community/shared/pipes/group-by.pipe.ts","./src/app/community/shared/pipes/merge-field.pipe.ts","./src/app/community/shared/pipes/order-by.pipe.ts","./src/app/community/shared/pipes/orientation-style.pipe.ts","./src/app/community/shared/pipes/range-array.pipe.ts","./src/app/community/shared/pipes/range.pipe.ts","./src/app/community/shared/pipes/safe-url.pipe.ts","./src/app/core-services/adobe-launch.service.ts","./src/app/core-services/alphavision-map.service.ts","./src/app/core-services/app-insights.service.ts","./src/app/core-services/community.service.ts","./src/app/core-services/core-services.module.ts","./src/app/core-services/cross-brand.service.ts","./src/app/core-services/form-validation.service.ts","./src/app/core-services/global-error-handler.service.ts","./src/app/core-services/gmaps-directions.service.ts","./src/app/core-services/gmaps-marker.service.ts","./src/app/core-services/google-places.service.ts","./src/app/core-services/guest-registration.service.ts","./src/app/core-services/hers-score.service.ts","./src/app/core-services/interactive-tool.service.ts","./src/app/core-services/lmp.service.ts","./src/app/core-services/modal.service.ts","./src/app/core-services/navigation.service.ts","./src/app/core-services/pages.service.ts","./src/app/core-services/plan-brochure.service.ts","./src/app/core-services/product-filter.service.ts","./src/app/core-services/product-overview.service.ts","./src/app/core-services/request-brochure.service.ts","./src/app/core-services/script-injector.service.ts","./src/app/core-services/settings.service.ts","./src/app/core-services/sleep-state.service.ts","./src/app/models/analytics/adobe-launch-attribute-enum.ts","./src/app/models/analytics/adobe-launch-event-enum.ts","./src/app/models/analytics/adobe-launch-event.ts","./src/app/models/carousel-options.model.ts","./src/app/models/content/community/community-lot-map.model.ts","./src/app/models/content/community/product-filter-data.model.ts","./src/app/models/content/community/product-filter.model.ts","./src/app/models/content/editorial/guest-registration-contact.model.ts","./src/app/models/content/editorial/guest-registration-response.model.ts","./src/app/models/content/editorial/guest-registration.model.ts","./src/app/models/content/editorial/product-overview.model.ts","./src/app/models/content/editorial/request-brochure-params.model.ts","./src/app/models/content/editorial/request-brochure-response.model.ts","./src/app/models/content/media/gallery-modal.model.ts","./src/app/models/content/media/video-modal.model.ts","./src/app/models/content/plan/plan-card.model.ts","./src/app/models/content/plan/plan-features-modal.model.ts","./src/app/models/content/plan/plan-floor-plans.model.ts","./src/app/models/content/qmi/qmi-card.model.ts","./src/app/models/enums/brand-enum.ts","./src/app/models/enums/dropdown-enum.ts","./src/app/models/enums/google-maps-enum.ts","./src/app/models/enums/image-enum.ts","./src/app/models/enums/keyboard-enum.ts","./src/app/models/enums/qmi-discount-option-enum.ts","./src/app/models/enums/style-enum.ts","./src/app/models/maps/alphavision-map-data.model.ts","./src/app/models/maps/gmaps-marker.model.ts","./src/app/models/maps/gmaps-options.model.ts","./src/app/models/maps/google-directions-route-data.model.ts","./src/app/models/maps/google-places-search-params.ts","./src/app/models/product/community-poi-category.ts","./src/app/models/product/community-promotions.model.ts","./src/app/models/product/image.model.ts","./src/app/models/product/point-of-interest-details.model.ts","./src/app/models/product/point-of-interest.model.ts","./src/app/shared/dynamic-component-types.ts","./src/app/shared/modal-classes.ts","./src/environments/environment.ts","./src/helper-functions/brand-specific-configuration.ts","./src/helper-functions/geolocation-helper.ts","./src/helper-functions/http-helper.ts","./src/helper-functions/image-helper.ts","./src/helper-functions/keyboard-helper.ts","./src/helper-functions/local-resource-helper.ts","./src/helper-functions/plan-data-helper.ts","./src/helper-functions/sitecore-api-url-helper.ts","./src/main.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: '/community', pathMatch: 'full' },\r\n { path: 'community', loadChildren: () => import('./community/community.module').then(m => m.CommunityModule) }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { AppInsightsService } from './core-services/app-insights.service';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { AdobeLaunchService } from './core-services/adobe-launch.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n unsubscribe$ = new Subject();\r\n\r\n constructor(private appInsightsService: AppInsightsService, private router: Router, private adobeLaunchService: AdobeLaunchService) {\r\n // Adobe Launch Init\r\n this.adobeLaunchService.initAdobeLaunchDataLayer();\r\n this.adobeLaunchService.injectAdobeLaunchScript();\r\n }\r\n\r\n ngOnInit() {\r\n // Log page views to App Insights and Adobe Target Trigger\r\n this.router.events\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.appInsightsService.logPageView(event.urlAfterRedirects, event.urlAfterRedirects);\r\n this.adobeLaunchService.triggerView(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n}\r\n","\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { CoreServicesModule } from './core-services/core-services.module';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n AppRoutingModule,\r\n CoreServicesModule\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ArticleCardModel } from 'src/app/models/content/editorial/card.model';\r\n\r\n@Component({\r\n selector: 'app-article-card',\r\n templateUrl: './article-card.component.html',\r\n styleUrls: ['./article-card.component.scss']\r\n})\r\n\r\nexport class ArticleCardComponent implements OnInit {\r\n\r\n @Input() data: ArticleCardModel;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n

\r\n {{data.Header}}\r\n

\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { BoxCardModel } from 'src/app/models/content/editorial/card.model';\r\n\r\n@Component({\r\n selector: 'app-box-card',\r\n templateUrl: './box-card.component.html',\r\n styleUrls: ['./box-card.component.scss']\r\n})\r\n\r\nexport class BoxCardComponent implements OnInit {\r\n\r\n @Input() data: BoxCardModel;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n {{data.Header}}\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ColumnCardModel } from 'src/app/models/content/editorial/card.model';\r\n\r\n@Component({\r\n selector: 'app-column-card',\r\n templateUrl: './column-card.component.html',\r\n styleUrls: ['./column-card.component.scss']\r\n})\r\nexport class ColumnCardComponent implements OnInit {\r\n\r\n @Input() data: ColumnCardModel;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","
\r\n

{{data.Header}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ContentCardModel } from 'src/app/models/content/editorial/card.model';\r\nimport { CarouselOptionsModel } from 'src/app/models/carousel-options.model';\r\nimport { Image } from 'src/app/models/product/image.model';\r\nimport { VideoModalComponent } from '../../shared/modals/video-modal/video-modal.component';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { VideoModalModel } from 'src/app/models/content/media/video-modal.model';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\n\r\n@Component({\r\n selector: 'app-content-card',\r\n templateUrl: './content-card.component.html',\r\n styleUrls: ['./content-card.component.scss']\r\n})\r\nexport class ContentCardComponent implements OnInit {\r\n\r\n @Input() data: ContentCardModel;\r\n @Input() videoModalModel: VideoModalModel;\r\n carouselOptions: CarouselOptionsModel;\r\n carouselImages: Image[] = [];\r\n videoUrl: string = \"\";\r\n videoThumbnailUrl: string = \"\";\r\n videoId: string = \"\";\r\n videoButtonUrl: string = \"\";\r\n videoCaption: string = \"\";\r\n videoTitle: string = \"\";\r\n modalClass: string;\r\n\r\n constructor(private _modalService: NgbModal) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.videoId = this.data.YouTube_Id;\r\n this.setVideoUrl(this.videoId);\r\n this.setVideoThumbnailUrl(this.videoId);\r\n this.setVideoButtonUrl(this.videoId);\r\n\r\n\r\n if (this.data.Carousel_Images && this.data.Carousel_Images.length) {\r\n this.data.Carousel_Images.map(image => {\r\n const convertedImage: Image = new Image();\r\n convertedImage.Path = image.Src;\r\n convertedImage.AltText = image.Alt;\r\n this.carouselImages.push(convertedImage);\r\n });\r\n if (this.carouselImages.length) {\r\n this.carouselOptions = new CarouselOptionsModel(this.carouselImages);\r\n this.carouselOptions.ShowPips = true;\r\n this.carouselOptions.ShowImageIndex = false;\r\n this.carouselOptions.ShowImageCaption = false;\r\n if (this.data.Carousel_Flag) {\r\n this.carouselOptions.StatusOverlayText = [this.data.Carousel_Flag];\r\n }\r\n }\r\n }\r\n }\r\n\r\n openVideoModal(videoId: string, caption: string, modalTitle: string): void {\r\n if (videoId) {\r\n const modalRef: NgbModalRef = this._modalService.open(VideoModalComponent, {\r\n backdrop: false,\r\n windowClass: `${ModalClasses.Full} ${this.modalClass}`\r\n });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n videoModalModel.ModalHeader = modalTitle;\r\n videoModalModel.ModalDescription = caption;\r\n videoModalModel.VideoId = videoId;\r\n videoModalModel.EnableAutoplay = true;\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n }\r\n\r\n setVideoUrl(videoId: string): string {\r\n if (videoId) {\r\n this.videoUrl = `https://youtube.com/embed/${videoId}`;\r\n return this.videoUrl;\r\n }\r\n }\r\n\r\n setVideoThumbnailUrl(videoId: string): string {\r\n if (videoId) {\r\n this.videoThumbnailUrl = `https://img.youtube.com/vi/${videoId}/mqdefault.jpg`;\r\n return this.videoThumbnailUrl;\r\n }\r\n }\r\n\r\n setVideoButtonUrl(videoId: string): string {\r\n if (videoId) {\r\n this.videoButtonUrl = `https://i.ytimg.com/vi/${videoId}/hqdefault.jpg`;\r\n return this.videoButtonUrl;\r\n }\r\n }\r\n\r\n}\r\n\r\n","
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \"video\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n

\r\n {{data.Header}}\r\n

\r\n
\r\n\r\n\r\n \r\n
\r\n\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CtaModel } from 'src/app/models/content/editorial/cta.model';\r\nimport { Observable } from 'rxjs';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-cta',\r\n templateUrl: './cta.component.html',\r\n styleUrls: ['./cta.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800, delay: 750 })\r\n ]\r\n})\r\nexport class CtaComponent implements OnInit {\r\n\r\n @Input() data: CtaModel;\r\n\r\n community$: Observable;\r\n planCountClass: string;\r\n\r\n constructor(private communityService: CommunityService) { }\r\n\r\n ngOnInit() {\r\n this.community$ = this.communityService.community;\r\n this.planCountClass = this.setPlanCountClass(this.data.CTA_Style);\r\n }\r\n\r\n setPlanCountClass(buttonType: string): string {\r\n let planCountClass: string = '';\r\n\r\n switch (buttonType) {\r\n case 'Default':\r\n planCountClass = 'Cta__plan-count--default';\r\n break;\r\n case 'Link':\r\n planCountClass = 'Cta__plan-count--link';\r\n break;\r\n default:\r\n planCountClass = 'Cta__plan-count--primary';\r\n }\r\n\r\n return planCountClass;\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n
\r\n {{community.PlanCount}}\r\n
\r\n \r\n \r\n \r\n {{data.CTA_Text}}\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ImageModel } from 'src/app/models/content/editorial/image.model';\r\n\r\n@Component({\r\n selector: 'app-image',\r\n templateUrl: './image.component.html',\r\n styleUrls: ['./image.component.scss']\r\n})\r\nexport class ImageComponent implements OnInit {\r\n\r\n @Input() data: ImageModel;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","
\r\n \r\n \r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { SettingsService } from 'src/app/core-services/settings.service';\r\nimport { InlineVideoModel } from 'src/app/models/content/editorial/inline-video.model';\r\nimport { hostnameContainsPreviewPrefix } from 'src/helper-functions/sitecore-api-url-helper';\r\n\r\n@Component({\r\n selector: 'app-inline-video',\r\n templateUrl: './inline-video.component.html',\r\n styleUrls: ['./inline-video.component.scss']\r\n})\r\nexport class InlineVideoComponent implements OnInit {\r\n\r\n @Input() data: InlineVideoModel;\r\n videoUrl: string;\r\n remoteFolder: string;\r\n videoFilePath: string;\r\n\r\n constructor(private settingsService: SettingsService) { }\r\n\r\n ngOnInit() {\r\n if (this.data) {\r\n if (this.data.YouTube_Video_Key || this.data.Vimeo_Video_Key) {\r\n this.setVideoUrl();\r\n } else if (this.data.Video) {\r\n this.setVideoFilePath();\r\n }\r\n }\r\n }\r\n\r\n setVideoUrl() {\r\n if (this.data.Vimeo_Video_Key) {\r\n this.videoUrl = `https://player.vimeo.com/video/${this.data.Vimeo_Video_Key}`;\r\n } else if (this.data.YouTube_Video_Key) {\r\n this.videoUrl = `https://youtube.com/embed/${this.data.YouTube_Video_Key}`;\r\n }\r\n\r\n if (this.data.Enable_Autoplay) {\r\n this.videoUrl += '?autoplay=1';\r\n if (this.data.Vimeo_Video_Key) {\r\n this.videoUrl += `&muted=1`;\r\n } else if (this.data.YouTube_Video_Key) {\r\n this.videoUrl += `&mute=1`;\r\n }\r\n }\r\n }\r\n\r\n setVideoFilePath() {\r\n if (hostnameContainsPreviewPrefix()) {\r\n this.remoteFolder = this.settingsService.previewCloudinaryVideoRemoteFolder;\r\n } else {\r\n this.remoteFolder = this.settingsService.cloudinaryVideoRemoteFolder;\r\n }\r\n this.videoFilePath = this.remoteFolder + this.data.Video.Src.replace(/([.][a][s][h][x])$/, '');\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
{{data.Header}}
\r\n
{{data.Description}}
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { PageHeaderModel } from 'src/app/models/content/editorial/page-header.model';\r\nimport { Location } from '@angular/common';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-page-header',\r\n templateUrl: './page-header.component.html',\r\n styleUrls: ['./page-header.component.scss']\r\n})\r\nexport class PageHeaderComponent implements OnInit {\r\n\r\n @Input() data: PageHeaderModel;\r\n\r\n constructor(private location: Location,\r\n private modalService: NgbModal) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n closeButton(): void {\r\n this.modalService.hasOpenModals() ? this.modalService.dismissAll() : this.location.back();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

\r\n {{data.Header_Text}}\r\n

\r\n
\r\n {{data.Subheader_Text}}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { RequestBrochureCTAModel } from 'src/app/models/content/editorial/request-brochure.model';\r\nimport { NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { RequestBrochureModalComponent } from '../../shared/modals/request-brochure-modal/request-brochure-modal.component';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\n\r\n@Component({\r\n selector: 'app-request-brochure-cta',\r\n templateUrl: './request-brochure-cta.component.html',\r\n styleUrls: ['./request-brochure-cta.component.scss']\r\n})\r\nexport class RequestBrochureCTAComponent implements OnInit {\r\n\r\n @Input() ctaData: RequestBrochureCTAModel;\r\n @Input() currentPlanData: Plan;\r\n @Input() currentQmiData: QMI;\r\n\r\n modalClass: string;\r\n\r\n constructor(private modalService: NgbModal) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n openBrochureModal() {\r\n const modalRef: NgbModalRef = this.modalService.open(RequestBrochureModalComponent,\r\n { windowClass: `${ModalClasses.Full} ${ModalClasses.Right} `, backdrop: true, backdropClass: ` ${ModalClasses.BackDrop}` });\r\n modalRef.componentInstance.currentPlanData = this.currentPlanData;\r\n modalRef.componentInstance.currentQmiData = this.currentQmiData;\r\n }\r\n}\r\n","
\r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityPromotion, Promotions } from 'src/app/models/product/community-promotions.model';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { SpecialOffersCardModel } from 'src/app/models/content/editorial/card.model';\r\nimport { NavigationService } from 'src/app/core-services/navigation.service';\r\nimport { NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { PdfImageModalComponent } from '../../shared/modals/pdf-image-modal/pdf-image-modal.component';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-special-offers-card',\r\n templateUrl: './special-offers-card.component.html',\r\n styleUrls: ['./special-offers-card.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation()\r\n ]\r\n})\r\nexport class SpecialOffersCardComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: SpecialOffersCardModel;\r\n communityPromotions: CommunityPromotion[] = [];\r\n noPromotions: boolean = false;\r\n constructor(private communityService: CommunityService,\r\n private navigationService: NavigationService,\r\n private modalService: NgbModal) { super(); }\r\n\r\n ngOnInit() {\r\n this.communityService.promotions.pipe(\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((promotions: CommunityPromotion[]) => {\r\n if (promotions) {\r\n this.communityPromotions = promotions.filter((promotionItem) => {\r\n if (promotionItem.Category === Promotions.Offers && promotionItem.StartDate && promotionItem.EndDate) {\r\n const date = Date.parse(new Intl.DateTimeFormat('en-US').format(new Date()));\r\n const startDate = Date.parse(promotionItem.StartDate);\r\n const endDate = Date.parse(promotionItem.EndDate);\r\n if ((startDate < date) && (endDate + 1 > date)) {\r\n return promotionItem;\r\n }\r\n }\r\n });\r\n } else {\r\n this.noPromotions = true;\r\n }\r\n\r\n if (!this.communityPromotions.length) {\r\n this.noPromotions = true;\r\n }\r\n });\r\n }\r\n\r\n openSpecialOffers(promotion: CommunityPromotion): void {\r\n //The toggles in CMS (Link or Image/PDF) control DocumentFlag\r\n //If True (Image/PDF) show the modal If False Open Link in a new Tab\r\n if(promotion.DocumentFlag) {\r\n const modalRef: NgbModalRef = this.modalService.open(PdfImageModalComponent,\r\n { windowClass: `${ModalClasses.Full}`, backdrop: false });\r\n modalRef.componentInstance.Url = promotion.CallToActionImage;\r\n } else if(!promotion.DocumentFlag) {\r\n if (this.navigationService.validateUrl) {\r\n promotion.URL = this.navigationService.prependExternalUrls(promotion.URL);\r\n window.open(promotion.URL);\r\n }\r\n }\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n {{promotion.Title}}\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n

{{data.No_Special_Offers_Message}}

\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { TileCardModel } from 'src/app/models/content/editorial/card.model';\r\n\r\n@Component({\r\n selector: 'app-tile-card',\r\n templateUrl: './tile-card.component.html',\r\n styleUrls: ['./tile-card.component.scss']\r\n})\r\nexport class TileCardComponent implements OnInit {\r\n\r\n @Input() data: TileCardModel;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrls: ['./tooltip.component.scss']\r\n})\r\nexport class TooltipComponent implements OnInit {\r\n\r\n @Input() description: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n i\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-hers-score',\r\n templateUrl: './hers-score-graph.component.html',\r\n styleUrls: ['./hers-score-graph.component.scss']\r\n})\r\nexport class HersScoreComponent implements OnInit {\r\n\r\n @Input() HersScore: number;\r\n pinText: number;\r\n pinPosition: number;\r\n\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (this.HersScore > 0) {\r\n this.pinText = this.HersScore;\r\n this.pinPosition = 300 - this.pinText * 2.163846153846154;\r\n }\r\n\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{pinText}} \r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { Observable } from 'rxjs';\r\nimport { CommunityAmenitiesModel } from 'src/app/models/product/community-amenities.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\n\r\n@Component({\r\n selector: 'app-community-amenity-details',\r\n templateUrl: './community-amenity-details.component.html',\r\n styleUrls: ['./community-amenity-details.component.scss']\r\n})\r\nexport class CommunityAmenityDetailComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: string;\r\n communityAmenity$: Observable;\r\n\r\n constructor(private communityService: CommunityService) { super(); }\r\n\r\n ngOnInit() {\r\n this.communityAmenity$ = this.communityService.amenities;\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n

{{amenity.Header}}

\r\n
\r\n
\r\n
\r\n\r\n

{{data.No_Amenity_Message}}

\r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { Observable } from 'rxjs';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { CommunityDescriptionModel } from 'src/app/models/content/community/community-description.model';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-community-description',\r\n templateUrl: './community-description.component.html',\r\n styleUrls: ['./community-description.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800 })\r\n ]\r\n})\r\nexport class CommunityDescriptionComponent implements OnInit {\r\n\r\n @Input() data: CommunityDescriptionModel;\r\n\r\n community$: Observable;\r\n\r\n constructor(private communityService: CommunityService) { }\r\n\r\n ngOnInit() {\r\n this.community$ = this.communityService.community;\r\n }\r\n}\r\n","
\r\n
\r\n

{{data.Header_Text}}

\r\n

{{community.AboutTheCommunityDescription}}

\r\n
\r\n
\r\n","\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { Observable } from 'rxjs';\r\nimport { Community } from 'src/app/models/product/community.model';\r\n\r\n@Component({\r\n selector: 'app-community-gallery',\r\n templateUrl: './community-gallery.component.html',\r\n styleUrls: ['./community-gallery.component.scss']\r\n})\r\nexport class CommunityGalleryComponent implements OnInit {\r\n\r\n @Input() data: any;\r\n\r\n community$: Observable;\r\n\r\n constructor(private communityService: CommunityService) { }\r\n\r\n ngOnInit() {\r\n this.community$ = this.communityService.community;\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-community-hero',\r\n templateUrl: './community-hero.component.html',\r\n styleUrls: ['./community-hero.component.scss']\r\n})\r\nexport class CommunityHeroComponent implements OnInit {\r\n\r\n @Input() data: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n}\r\n","

\r\n {{data.Community_Hero_Name}}\r\n

\r\n
\r\n \r\n
\r\n","import { Component, OnInit, ViewChild, Input, OnChanges, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\nimport { NgForm, NgModel } from '@angular/forms';\r\nimport { Series } from 'src/app/models/product/series.model';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { ProductFilterDataModel } from 'src/app/models/content/community/product-filter-data.model';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { ProductFilterService } from 'src/app/core-services/product-filter.service';\r\nimport { fadeInAnimation, fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-community-homes-filter',\r\n templateUrl: './community-homes-filter.component.html',\r\n styleUrls: ['./community-homes-filter.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation(),\r\n fadeInAnimation({ duration: 200 })\r\n ]\r\n})\r\nexport class CommunityHomesFilterComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() homes: any[];\r\n @Input() series?: Series;\r\n @Input() data: any;\r\n\r\n checkboxes: any[] = [];\r\n showFilters: boolean = false;\r\n formFilterCount: number = 0;\r\n\r\n private community: Community;\r\n\r\n private exactFilteredHomes: any[];\r\n private closeFilteredHomes: any[];\r\n private filteredHomesLabel: string;\r\n private exactResultsCount: number = 0;\r\n private closeResultsCount: number = 0;\r\n private modelExists: boolean = false;\r\n private qmiExists: boolean = false;\r\n\r\n @ViewChild('homeFiltersForm', { static: true }) private homeFiltersForm: NgForm;\r\n\r\n private focusedInput: NgModel;\r\n private minPrice: number;\r\n private maxPrice: number;\r\n private minSquareFoot: number;\r\n private maxSquareFoot: number;\r\n private minBedrooms: number;\r\n private maxBedrooms: number;\r\n private minBathrooms: number;\r\n private maxBathrooms: number;\r\n\r\n private minPriceFilterValue: number;\r\n private maxPriceFilterValue: number;\r\n private minSquareFootFilterValue: number;\r\n private maxSquareFootFilterValue: number;\r\n private minBedroomsFilterValue: number;\r\n private maxBedroomsFilterValue: number;\r\n private minBathroomsFilterValue: number;\r\n private maxBathroomsFilterValue: number;\r\n private modelAvailableOnlyFilterValue: any = {value: false};\r\n private qmiAvailableOnlyFilterValue: any = {value: false};\r\n private availableFilterValue: any = {value: false};\r\n private soldFilterValue: any = {value: false};\r\n private notReleasedFilterValue: any = {value: false};\r\n\r\n constructor(private communityService: CommunityService, private cdr: ChangeDetectorRef,\r\n private productFilterService: ProductFilterService, private adobeLaunchService: AdobeLaunchService) { super(); }\r\n\r\n ngOnInit() {\r\n this.communityService.community\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((community: Community) => {\r\n if (community) {\r\n this.community = community;\r\n this.setMinMaxFilterLimits();\r\n }\r\n });\r\n this.plansAndQMIExist(this.homes);\r\n this.setCheckboxes();\r\n }\r\n\r\n ngOnChanges() {\r\n this.updateFilterHomesComponent();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.productFilterService.updateFilterData(null);\r\n this.adobeLaunchService.updateCurrentFilterData(null);\r\n }\r\n\r\n toggleShowFilters() {\r\n this.showFilters = !this.showFilters;\r\n }\r\n\r\n clearAdditionalFilters() {\r\n this.plansAndQMIExist(this.homes);\r\n this.minPriceFilterValue = null;\r\n this.maxPriceFilterValue = null;\r\n this.minSquareFootFilterValue = null;\r\n this.maxSquareFootFilterValue = null;\r\n this.minBedroomsFilterValue = null;\r\n this.maxBedroomsFilterValue = null;\r\n this.minBathroomsFilterValue = null;\r\n this.maxBathroomsFilterValue = null;\r\n this.modelAvailableOnlyFilterValue.value = false;\r\n this.qmiAvailableOnlyFilterValue.value = false;\r\n this.availableFilterValue.value = false;\r\n this.soldFilterValue.value = false;\r\n this.notReleasedFilterValue.value = false;\r\n this.focusedInput = null;\r\n this.setMinMaxFilterLimits();\r\n this.updateFilterHomesComponent();\r\n }\r\n\r\n // Count for label of filter component\r\n getFiltersCount() {\r\n let count = 0;\r\n if (this.minPriceFilterValue || this.maxPriceFilterValue) {\r\n count++;\r\n }\r\n if (this.minSquareFootFilterValue || this.maxSquareFootFilterValue) {\r\n count++;\r\n }\r\n if (this.minBedroomsFilterValue || this.maxBedroomsFilterValue) {\r\n count++;\r\n }\r\n if (this.minBathroomsFilterValue || this.maxBathroomsFilterValue) {\r\n count++;\r\n }\r\n if (this.modelAvailableOnlyFilterValue.value) {\r\n count++;\r\n }\r\n if (this.qmiAvailableOnlyFilterValue.value) {\r\n count++;\r\n }\r\n if (this.availableFilterValue.value) {\r\n count++;\r\n }\r\n if (this.soldFilterValue.value) {\r\n count++;\r\n }\r\n if (this.notReleasedFilterValue.value) {\r\n count++;\r\n }\r\n return count > 0 ? count : null;\r\n }\r\n\r\n // Create and set (in services), the filter criteria model\r\n setProductFilterModel() {\r\n if (this.formFilterCount > 0) {\r\n const filterData = new ProductFilterDataModel();\r\n filterData.minPrice = this.minPriceFilterValue;\r\n filterData.maxPrice = this.maxPriceFilterValue;\r\n filterData.minSquareFoot = this.minSquareFootFilterValue;\r\n filterData.maxSquareFoot = this.maxSquareFootFilterValue;\r\n filterData.minBedrooms = this.minBedroomsFilterValue;\r\n filterData.maxBedrooms = this.maxBedroomsFilterValue;\r\n filterData.minBathrooms = this.minBathroomsFilterValue;\r\n filterData.maxBathrooms = this.maxBathroomsFilterValue;\r\n filterData.modelAvailableOnly = this.modelAvailableOnlyFilterValue.value;\r\n filterData.qmiAvailableOnly = this.qmiAvailableOnlyFilterValue.value;\r\n filterData.notReleased = this.notReleasedFilterValue.value;\r\n filterData.sold = this.soldFilterValue.value;\r\n\r\n this.productFilterService.updateFilterData(filterData);\r\n this.adobeLaunchService.updateCurrentFilterData(filterData);\r\n } else {\r\n this.productFilterService.updateFilterData(null);\r\n this.adobeLaunchService.updateCurrentFilterData(null);\r\n }\r\n }\r\n\r\n setCurrentFocusedInput(control): void {\r\n if (control) {\r\n this.focusedInput = control;\r\n }\r\n }\r\n\r\n clearInputValue(control): void {\r\n if (control) {\r\n control.reset();\r\n this.focusedInput = null;\r\n }\r\n this.updateFilterHomesComponent();\r\n }\r\n\r\n // Filter based on component filter properties set. If not set, use max/min integer values to filter.\r\n updateFilterHomesComponent() {\r\n // Module Data\r\n this.focusedInput = null;\r\n this.setMinMaxFilterLimits();\r\n this.formFilterCount = this.getFiltersCount();\r\n\r\n // Service Data\r\n this.setProductFilterModel();\r\n\r\n // Outputted filter data\r\n this.filterHomes(this.homes);\r\n\r\n // Removed this for now as we evaluate if we want to hide/show checkboxes during filtering\r\n // this.plansAndQMIExist(this.exactResultsCount > 0 ? this.exactFilteredHomes : this.homes);\r\n }\r\n\r\n plansAndQMIExist(homes) {\r\n if (homes && homes.length) {\r\n homes.forEach(home => {\r\n if (home.ModelExists) {\r\n this.modelExists = true;\r\n }\r\n if (home.InventoryCount) {\r\n this.qmiExists = true;\r\n }\r\n });\r\n } else {\r\n this.modelExists = false;\r\n this.qmiExists = false;\r\n }\r\n this.updateCheckboxes();\r\n }\r\n\r\n private filterHomes(homes) {\r\n if (homes && this.formFilterCount > 0) {\r\n this.exactFilteredHomes = []; // reset filtered homes\r\n this.closeFilteredHomes = []; // reset filered homes\r\n homes.forEach(home => {\r\n if (this.filterBySeries(home)) {\r\n if (this.homeMeetsFilterCriteria(home)) {\r\n this.exactFilteredHomes.push(home);\r\n } else {\r\n this.closeFilteredHomes.push(home); // \"Close\" matches are just anything didn't match perfectly with filter criteria.\r\n }\r\n }\r\n });\r\n } else {\r\n // Return null if no home data given or no filters applied\r\n this.exactFilteredHomes = null;\r\n this.closeFilteredHomes = null;\r\n }\r\n this.exactResultsCount = this.exactFilteredHomes && this.exactFilteredHomes.length || 0;\r\n this.closeResultsCount = this.closeFilteredHomes && this.closeFilteredHomes.length || 0;\r\n this.sendFilteredResults();\r\n }\r\n\r\n private homeMeetsFilterCriteria(home): boolean {\r\n return this.filterByPrice(home) &&\r\n this.filterBySquareFeet(home) &&\r\n this.filterByBedrooms(home) &&\r\n this.filterByBathrooms(home) &&\r\n this.filterByStatus(home);\r\n }\r\n\r\n private filterByStatus(home): boolean {\r\n return this.filterByModelAvailableOnly(home) ||\r\n this.filterByQMIAvailableOnly(home) ||\r\n this.filterByAvailable(home) ||\r\n this.filterBySold(home) ||\r\n this.filterByNotReleased(home);\r\n }\r\n\r\n private filterByPrice(home): boolean {\r\n if (home) {\r\n if ((this.minPriceFilterValue && home.Price < this.minPriceFilterValue) ||\r\n (this.maxPriceFilterValue && home.Price > this.maxPriceFilterValue)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private filterBySquareFeet(home): boolean {\r\n if (home) {\r\n if ((this.minSquareFootFilterValue && home.SquareFeet < this.minSquareFootFilterValue) ||\r\n (this.maxSquareFootFilterValue && home.SquareFeet > this.maxSquareFootFilterValue)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private filterByBedrooms(home): boolean {\r\n if (home) {\r\n if ((this.minBedroomsFilterValue && home.Bedrooms < this.minBedroomsFilterValue) ||\r\n (this.maxBedroomsFilterValue && home.Bedrooms > this.maxBedroomsFilterValue)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private filterByBathrooms(home): boolean {\r\n if (home) {\r\n if ((this.minBathroomsFilterValue && home.Bathrooms < this.minBathroomsFilterValue) ||\r\n (this.maxBathroomsFilterValue && home.Bathrooms > this.maxBathroomsFilterValue)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private filterBySeries(home): boolean {\r\n if (home) {\r\n if (this.series) {\r\n if ((home.Plan && home.Plan.SeriesName === this.series.SeriesName) ||\r\n (home.SeriesName === this.series.SeriesName)) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private filterByModelAvailableOnly(home): boolean {\r\n if (home) {\r\n if (this.modelAvailableOnlyFilterValue.value) {\r\n if ((home.Plan && home.Plan.ModelExists !== this.modelAvailableOnlyFilterValue.value) ||\r\n (home.ModelExists !== this.modelAvailableOnlyFilterValue.value)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private filterByQMIAvailableOnly(home): boolean {\r\n if (home) {\r\n if (this.qmiAvailableOnlyFilterValue.value) {\r\n if ((!home.InventoryCount && home.Id) || (!home.InventoryCount && !home.InventoryHomeID)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private filterByAvailable(home): boolean {\r\n if (home) {\r\n if (this.availableFilterValue.value) {\r\n if ((home.Plan && (home.Plan.NumAvailable > 0) !== this.availableFilterValue.value) ||\r\n ((home.NumAvailable > 0) !== this.availableFilterValue.value)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private filterBySold(home): boolean {\r\n if (home) {\r\n if (this.soldFilterValue.value) {\r\n if (home.Plan && (home.Plan.IsSold !== this.soldFilterValue.value) ||\r\n (home.IsSold !== this.soldFilterValue.value)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private filterByNotReleased(home): boolean {\r\n if (home) {\r\n if (this.notReleasedFilterValue.value) {\r\n if (home.Plan && (home.Plan.IsFutureRelease !== this.notReleasedFilterValue.value) ||\r\n (home.IsFutureRelease !== this.notReleasedFilterValue.value)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private sendFilteredResults() {\r\n // Sort by price before emmitting if collections exist and are greater than 1 length.\r\n if (this.exactFilteredHomes && this.exactFilteredHomes.length > 1) {\r\n this.exactFilteredHomes = this.exactFilteredHomes.sort((a, b) => a.Price - b.Price);\r\n }\r\n if (this.closeFilteredHomes && this.closeFilteredHomes.length > 1) {\r\n this.closeFilteredHomes = this.closeFilteredHomes.sort((a, b) => a.Price - b.Price);\r\n }\r\n this.productFilterService.updateExactHomes(this.exactFilteredHomes);\r\n this.productFilterService.updateCloseHomes(this.closeFilteredHomes);\r\n }\r\n\r\n private setMinMaxFilterLimits() {\r\n if (this.community) {\r\n this.minPrice = Math.floor(this.community.StartingFromPrice / 50000) * 50000; // round limits low\r\n this.maxPrice = Math.ceil(this.community.MaxBasePrice / 50000) * 50000; // round limits high\r\n this.minBedrooms = this.community.MinBedrooms;\r\n this.maxBedrooms = this.community.MaxBedrooms;\r\n this.minBathrooms = this.community.MinBathrooms;\r\n this.maxBathrooms = this.community.MaxBathrooms;\r\n }\r\n if (this.homes && this.homes.length) {\r\n // Setting limits for highest/lowest squarefeet from home data. Not available on community model.\r\n this.minSquareFoot = Math.floor(Math.min.apply(Math, this.homes.map(h => h.SquareFeet)) / 10) * 10;\r\n this.maxSquareFoot = Math.ceil(Math.max.apply(Math, this.homes.map(h => h.SquareFeet)) / 10) * 10;\r\n }\r\n }\r\n\r\n private setCheckboxes() {\r\n if (this.data && (!this.checkboxes || !this.checkboxes.length)) {\r\n if (this.data.Filter_Available) {\r\n this.checkboxes.push({\r\n label: this.data.Filter_Available,\r\n name: 'availableFilterValue',\r\n checked: this.availableFilterValue});\r\n }\r\n\r\n if (this.data.Filter_Model_Availability && this.community && this.community.PlanCount !== 0 && this.modelExists) {\r\n this.checkboxes.push({\r\n label: this.data.Filter_Model_Availability,\r\n name: 'modelAvailableOnlyFilterValue',\r\n checked: this.modelAvailableOnlyFilterValue});\r\n }\r\n\r\n if (this.data.Filter_QMI_Availability && this.community && this.community.InventoryCount !== 0 && this.qmiExists) {\r\n this.checkboxes.push({\r\n label: this.data.Filter_QMI_Availability,\r\n name: 'qmiAvailableOnlyFilterValue',\r\n checked: this.qmiAvailableOnlyFilterValue});\r\n }\r\n\r\n if (this.data.Filter_Sold) {\r\n this.checkboxes.push({\r\n label: this.data.Filter_Sold,\r\n name: 'soldFilterValue',\r\n checked: this.soldFilterValue});\r\n }\r\n\r\n if (this.data.Filter_Not_Released) {\r\n this.checkboxes.push({\r\n label: this.data.Filter_Not_Released,\r\n name: 'notReleasedFilterValue',\r\n checked: this.notReleasedFilterValue});\r\n }\r\n }\r\n }\r\n\r\n private updateCheckboxes() {\r\n if (this.checkboxes && this.checkboxes.length) {\r\n const modelCheckbox = this.checkboxes.find(x => x.name === 'modelAvailableOnlyFilterValue');\r\n if (modelCheckbox) {\r\n modelCheckbox.hideCheckbox = !this.modelExists;\r\n if (modelCheckbox.checked.value && !this.modelExists) {\r\n modelCheckbox.checked.value = false;\r\n }\r\n }\r\n const qmiCheckbox = this.checkboxes.find(x => x.name === 'qmiAvailableOnlyFilterValue');\r\n if (qmiCheckbox) {\r\n qmiCheckbox.hideCheckbox = !this.qmiExists;\r\n if (qmiCheckbox.checked.value && !this.qmiExists) {\r\n qmiCheckbox.checked.value = false;\r\n }\r\n }\r\n }\r\n // Force re-render of DOM after ngModel changes for checkboxes\r\n // https://stackoverflow.com/a/35106069\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","
3}\"\r\n #homeFiltersForm=\"ngForm\"\r\n id=\"homeFiltersForm\"\r\n name=\"homeFiltersForm\"\r\n [@fadeIn]='showFilters'>\r\n
\r\n \r\n \r\n \r\n {{ showFilters ? \"Hide\" : \"\" }} {{data?.Filter_Name}}\r\n {{ formFilterCount }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {{data?.Filter_Price}}\r\n
\r\n
\r\n \r\n
\r\n X\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{value | abbrevCurrency: 0:'USD':'symbol':'en-US'}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n to\r\n
\r\n
\r\n
\r\n \r\n
\r\n X\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{value | abbrevCurrency: 0:'USD':'symbol':'en-US'}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{data?.Filter_Livable_Space}}\r\n
\r\n
\r\n \r\n
\r\n X\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{value}} sq.ft.\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n to\r\n
\r\n
\r\n
\r\n \r\n
\r\n X\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{value}} sq.ft.\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{data?.Filter_Bedroom_Count}}\r\n
\r\n
\r\n \r\n
\r\n X\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{value}}BR\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n to\r\n
\r\n
\r\n
\r\n \r\n
\r\n X\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{value}}BR\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{data?.Filter_Bathroom_Count}}\r\n
\r\n
\r\n \r\n
\r\n X\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{value}}BA\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n to\r\n
\r\n
\r\n
\r\n \r\n
\r\n X\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{value}}BA\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
3,\r\n 'd-none' : checkbox.hideCheckbox}\">\r\n
\r\n \r\n
\r\n {{checkbox.label}}\r\n
\r\n
\r\n\r\n
0\" class=\"CommunityHomesFilter__filter-row px-4 pt-4 pb-2\">\r\n \r\n {{ data.Filter_Exact_Matches_Count | mergeField: '{count}': exactResultsCount }}\r\n \r\n
\r\n\r\n
0\" class=\"CommunityHomesFilter__filter-row px-4 pt-3 pb-2\">\r\n \r\n {{ data.Filter_Close_Matches_Count | mergeField: '{count}': closeResultsCount }}\r\n \r\n
\r\n\r\n
\r\n \r\n {{ data.Filter_View_Results }}\r\n \r\n
\r\n\r\n
\r\n \r\n {{data.Clear_Filters_CTA}}\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { combineLatest } from 'rxjs';\r\nimport { CommunityLotMapModel } from 'src/app/models/content/community/community-lot-map.model';\r\nimport { PlanCardModel } from 'src/app/models/content/plan/plan-card.model';\r\nimport { HersScoreService } from 'src/app/core-services/hers-score.service';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { PagesService } from 'src/app/core-services/pages.service';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { checkForImages, sortImagesByImageRank, isImageUrl } from 'src/helper-functions/image-helper';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AlphaVisionMapService } from 'src/app/core-services/alphavision-map.service';\r\nimport { AlphaVisionLot, AlphaVisionAmenity, AlphaVisionLotCounts } from 'src/app/models/maps/alphavision-map-data.model';\r\nimport { Image } from 'src/app/models/product/image.model';\r\nimport { CarouselOptionsModel } from 'src/app/models/carousel-options.model';\r\nimport { LmpService } from 'src/app/core-services/lmp.service';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { fadeInAnimation, fadeInOnEnterAnimation, fadeInRightOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-community-lot-map',\r\n templateUrl: './community-lot-map.component.html',\r\n styleUrls: ['./community-lot-map.component.scss'],\r\n animations: [\r\n fadeInAnimation(),\r\n fadeInOnEnterAnimation(),\r\n fadeInRightOnEnterAnimation({ duration: 800, translate: '300px' })\r\n ]\r\n})\r\nexport class CommunityLotMapComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: CommunityLotMapModel;\r\n\r\n public planCardModel: PlanCardModel;\r\n public hasFixedHeader: boolean;\r\n\r\n public community: Community;\r\n public plans: Plan[];\r\n public filteredPlans: Plan[];\r\n public closeFilteredPlans: Plan[];\r\n\r\n public mapLoaded: boolean = false;\r\n public selectedPlan: Plan;\r\n public selectedLot: AlphaVisionLot;\r\n public selectedLotPlanCount: number = 0;\r\n public selectedLotId: string;\r\n public numberOfAvailableLotsForSelectedPlan: number;\r\n\r\n public selectedAmenity: AlphaVisionAmenity;\r\n public selectedAmenityImages: Image[] = [];\r\n public amenityCarouselOptions: CarouselOptionsModel;\r\n\r\n private selectedPlanIsFromRoute: boolean = false;\r\n\r\n constructor(private communityService: CommunityService,\r\n private hersService: HersScoreService,\r\n private lmpService: LmpService,\r\n private pageService: PagesService,\r\n private route: ActivatedRoute,\r\n private alphaVisionMapService: AlphaVisionMapService,\r\n private adobeLaunchService: AdobeLaunchService) { super(); }\r\n\r\n ngOnInit() {\r\n combineLatest([this.communityService.community,\r\n this.communityService.plans,\r\n this.hersService.HersScoreitem,\r\n this.pageService.hasFixedHeader,\r\n this.route.queryParams,\r\n this.lmpService.LmpConfiguration])\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([community, plans, hers, hasFixedHeader, routeParams, lmp]: any) => {\r\n this.community = community;\r\n\r\n if (plans) {\r\n this.plans = plans;\r\n this.plans.map(plan => {\r\n if (checkForImages(plan.Images)) {\r\n plan.Images = sortImagesByImageRank(plan.Images);\r\n }\r\n });\r\n\r\n this.filteredPlans = this.plans;\r\n this.planCardModel = this.mapSitecoreLabelsToPlanCard(this.data);\r\n this.pushAdobeLaunchPlanListingEvent();\r\n\r\n if (routeParams) {\r\n if (routeParams.planId) {\r\n this.setSelectedPlan(+routeParams.planId, true);\r\n }\r\n if (routeParams.lotId) {\r\n // Sends lot ID to AV Map component for selecting specific Lot. If the API/Map can't\r\n // find that specific Lot for the SitePlan loaded, it defaults to just showing the Selected Plan.\r\n this.selectedLotId = routeParams.lotId;\r\n }\r\n }\r\n }\r\n\r\n if (hers) {\r\n this.planCardModel.HersScore = hers;\r\n }\r\n\r\n if (hasFixedHeader) {\r\n this.hasFixedHeader = hasFixedHeader;\r\n }\r\n\r\n if (lmp) {\r\n this.planCardModel.LmpConfiguration = lmp;\r\n }\r\n });\r\n\r\n this.alphaVisionMapService.mapPlanIds\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((planIds) => {\r\n // If we have plan IDs and no selected currently set, filter by them.\r\n if (planIds && planIds.length) {\r\n if (!this.selectedPlan) {\r\n this.filteredPlans = this.plans.filter(p => planIds.includes(p.Id.toString()));\r\n this.closeFilteredPlans = this.plans.filter(p => !planIds.includes(p.Id.toString()));\r\n } else {\r\n this.initPlanListsFromSelection(this.selectedPlan, planIds);\r\n }\r\n } else if (this.selectedPlanIsFromRoute) { // If we have a selected Plan from route, set flag false for next plan ID filter\r\n this.selectedPlanIsFromRoute = false;\r\n } else { // If no plan IDs return, filter cards back to default.\r\n this.selectedPlan = null;\r\n this.filteredPlans = this.plans;\r\n this.closeFilteredPlans = [];\r\n }\r\n this.resetCardColumnScroll();\r\n });\r\n\r\n this.alphaVisionMapService.selectedLot\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((selectedLot: AlphaVisionLot) => {\r\n this.selectedLot = selectedLot;\r\n if (this.selectedLot) {\r\n this.resetCardColumnScroll();\r\n this.filterPlansForCount();\r\n } else if (this.selectedPlan) {\r\n this.initPlanListsFromSelection(this.selectedPlan);\r\n }\r\n });\r\n\r\n this.alphaVisionMapService.selectedAmenity\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((selectedAmenity: AlphaVisionAmenity) => {\r\n this.selectedAmenity = selectedAmenity;\r\n\r\n if (this.selectedAmenity) {\r\n this.selectedAmenity.medias.map(media => {\r\n // AV can sometimes return back YouTube URLs which our carousel does not currently support.\r\n if (media.url && isImageUrl(media.url)) {\r\n const image: Image = new Image();\r\n image.Path = media.url;\r\n image.AltText = media.name;\r\n this.selectedAmenityImages.push(image);\r\n }\r\n });\r\n\r\n if (this.selectedAmenityImages && this.selectedAmenityImages.length) {\r\n this.amenityCarouselOptions = new CarouselOptionsModel(this.selectedAmenityImages);\r\n this.amenityCarouselOptions.ShowImageIndex = false;\r\n this.amenityCarouselOptions.ShowImageCaption = false;\r\n }\r\n\r\n } else {\r\n this.amenityCarouselOptions = null;\r\n this.selectedAmenityImages = [];\r\n }\r\n });\r\n }\r\n\r\n public filterPlansForCount() {\r\n if (this.selectedLot) {\r\n this.selectedLotPlanCount = this.plans.reduce((count, plan) => {\r\n return this.selectedLot.plans.some(lotPlan => lotPlan.id === plan.Id.toString()) ? ++count : count;\r\n }, 0);\r\n }\r\n }\r\n\r\n public setSelectedPlan(selectedPlanId: number, isFromRoute: boolean) {\r\n if (selectedPlanId) {\r\n this.selectedPlan = this.plans.find(plan => plan.Id === selectedPlanId);\r\n if (this.selectedPlan) {\r\n this.selectedPlanIsFromRoute = isFromRoute;\r\n this.initPlanListsFromSelection(this.selectedPlan);\r\n this.alphaVisionMapService.updateSelectedPlan(this.selectedPlan);\r\n }\r\n }\r\n }\r\n\r\n public setLotsCount(lotCounts: AlphaVisionLotCounts) {\r\n this.numberOfAvailableLotsForSelectedPlan = lotCounts.AvailableHomesiteLotsCount;\r\n }\r\n\r\n public setMapLoaded(mapLoaded: boolean) {\r\n this.mapLoaded = mapLoaded;\r\n }\r\n\r\n public initPlanListsFromSelection(selectedPlan: Plan, selectedPlanIds?: string[]) {\r\n if (selectedPlan && selectedPlanIds && selectedPlanIds.length) {\r\n this.filteredPlans = this.plans.filter(plan => plan.Id !== selectedPlan.Id && selectedPlanIds.includes(plan.Id.toString()));\r\n this.closeFilteredPlans = this.plans.filter(plan => plan.Id !== selectedPlan.Id && !selectedPlanIds.includes(plan.Id.toString()));\r\n } else {\r\n this.filteredPlans = [];\r\n this.closeFilteredPlans = this.plans.filter(plan => plan.Id !== selectedPlan.Id);\r\n }\r\n this.resetCardColumnScroll();\r\n }\r\n\r\n private resetCardColumnScroll() {\r\n // Scroll back to the top of list where the selected plan card is sitting.\r\n // TODO: Clean up using ViewChild instead in the future.\r\n const cardColumn = document.getElementById('lotMapCardColumn');\r\n if (cardColumn) {\r\n cardColumn.scrollTop = 0;\r\n }\r\n }\r\n\r\n private mapSitecoreLabelsToPlanCard(sitecoreLabels: CommunityLotMapModel): PlanCardModel {\r\n const planCardModel = new PlanCardModel();\r\n if (sitecoreLabels) {\r\n planCardModel.Series_Name = sitecoreLabels.Series_Label;\r\n planCardModel.Price = sitecoreLabels.Price;\r\n planCardModel.Bedrooms = sitecoreLabels.Bedrooms;\r\n planCardModel.Bathrooms = sitecoreLabels.Bathrooms;\r\n planCardModel.Garage = sitecoreLabels.Garage;\r\n planCardModel.Square_Feet = sitecoreLabels.Square_Feet;\r\n planCardModel.LMP_Starting_From = sitecoreLabels.LMP_Starting_From;\r\n planCardModel.PITI_Price_Label = sitecoreLabels.PitiPriceLabel;\r\n planCardModel.See_Lots_CTA_Detail = sitecoreLabels.See_Lots_CTA_Text;\r\n planCardModel.View_Home_CTA_Detail = sitecoreLabels.View_Home_CTA_Text;\r\n planCardModel.CTA_Page_Item_Ref = sitecoreLabels.CTA_Page_Item_Ref;\r\n planCardModel.QMI_Only = sitecoreLabels.Plan_QMI_Only;\r\n planCardModel.Almost_Sold_Out = sitecoreLabels.Plan_Almost_Sold_Out;\r\n planCardModel.Future_Release = sitecoreLabels.Plan_Future_Release;\r\n planCardModel.Last_Chance = sitecoreLabels.Plan_Last_Chance;\r\n planCardModel.Last_Home_Design = sitecoreLabels.Plan_Last_Home_Design;\r\n planCardModel.Model_For_Sale = sitecoreLabels.Plan_Model_For_Sale;\r\n planCardModel.Model_Open = sitecoreLabels.Plan_Model_Open;\r\n planCardModel.New_Model = sitecoreLabels.Plan_New_Model;\r\n planCardModel.New_Plan = sitecoreLabels.Plan_New_Plan;\r\n planCardModel.Sold_Out = sitecoreLabels.Plan_Sold_Out;\r\n planCardModel.Homesites_Label = sitecoreLabels.Homesites_Label;\r\n planCardModel.Quick_Move_Ins_Label = sitecoreLabels.Quick_Move_Ins_Label;\r\n }\r\n return planCardModel;\r\n }\r\n\r\n // Adobe Launch Listing Analytics\r\n private pushAdobeLaunchPlanListingEvent() {\r\n const plans = [this.selectedPlan].concat(this.filteredPlans).concat(this.closeFilteredPlans);\r\n if (plans && plans.length) {\r\n this.adobeLaunchService.pushPlanListingDisplayedEvent(plans);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n {{ data.Filter_Close_Matches }}\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { CommunityPoiCategoriesModel } from 'src/app/models/content/community/community-poi-categories.model';\r\nimport { combineLatest } from 'rxjs';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { CommunityPOICategoryModel } from 'src/app/models/product/community-poi-category';\r\nimport { takeUntil, take } from 'rxjs/operators';\r\nimport { GMapsOptionsModel } from 'src/app/models/maps/gmaps-options.model';\r\nimport { PointOfInterest } from 'src/app/models/product/point-of-interest.model';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { GMapsMarker } from 'src/app/models/maps/gmaps-marker.model';\r\nimport { getDistanceFromCommunity } from 'src/helper-functions/geolocation-helper';\r\nimport { GooglePlacesService } from 'src/app/core-services/google-places.service';\r\nimport { GMapsMarkerService } from 'src/app/core-services/gmaps-marker.service';\r\nimport { GooglePlacesSearchParams } from 'src/app/models/maps/google-places-search-params';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { PointOfInterestDetails } from 'src/app/models/product/point-of-interest-details.model';\r\nimport { GoogleMapsConfiguration } from 'src/app/models/maps/google-maps-configuration.model';\r\nimport { MapCommuteModalComponent } from '../../shared/modals/map-commute-modal/map-commute-modal.component';\r\nimport { NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\nimport { TravelTimeOption } from 'src/app/models/enums/google-maps-enum';\r\nimport { GmapsDirectionsService } from 'src/app/core-services/gmaps-directions.service';\r\n\r\n@Component({\r\n selector: 'app-community-poi-categories',\r\n templateUrl: './community-poi-categories.component.html',\r\n styleUrls: ['./community-poi-categories.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation()\r\n ]\r\n})\r\nexport class CommunityPoiCategoriesComponent extends BaseComponent implements OnInit, OnDestroy {\r\n\r\n @Input() data: CommunityPoiCategoriesModel;\r\n\r\n community: Community;\r\n communityCategories: CommunityPOICategoryModel[] = [];\r\n selectedCategory: CommunityPOICategoryModel;\r\n communityPOIs: PointOfInterest[] = [];\r\n categoryPOIs: PointOfInterest[] = [];\r\n selectedCategoryPOI: PointOfInterest;\r\n selectedPOIDetails: PointOfInterestDetails;\r\n isDirectionsMode: boolean = false;\r\n directionsRoute: google.maps.DirectionsRoute;\r\n leaveNow: TravelTimeOption = TravelTimeOption.LeaveNow;\r\n departAt: TravelTimeOption = TravelTimeOption.DepartAt;\r\n departureOption: TravelTimeOption = this.leaveNow;\r\n\r\n googleMapsConfiguration: GoogleMapsConfiguration;\r\n mapOptions: GMapsOptionsModel = new GMapsOptionsModel();\r\n mapMarkers: GMapsMarker[] = [];\r\n mapMarkersForService: GMapsMarker[] = [];\r\n filteredMarkers: GMapsMarker[] = [];\r\n selectedMarker: GMapsMarker;\r\n\r\n loading: boolean = false;\r\n radiusInMeters = 40233; // TODO: Make radius value (20 miles currently) sitecore configurable or a constant somewhere.\r\n radiusInMiles = 25;\r\n\r\n constructor(private communityService: CommunityService,\r\n private googlePlacesService: GooglePlacesService,\r\n private gmapsMarkerService: GMapsMarkerService,\r\n private gmapsDirectionsService: GmapsDirectionsService,\r\n private modalService: NgbModal) { super(); }\r\n\r\n ngOnInit() {\r\n const observables = [this.communityService.community,\r\n this.communityService.communityPOICategories,\r\n this.communityService.communityPOILocations,\r\n this.gmapsMarkerService.mapConfiguration];\r\n combineLatest(observables)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([community, categories, pois, googleMapsConfiguration]: any[]) => {\r\n if (community) {\r\n // Set current community, used for map origin and Home Center map marker\r\n this.community = community;\r\n // Set initial Google Map location\r\n this.mapOptions.InitialLatitude = this.community.Latitude;\r\n this.mapOptions.InitialLongitude = this.community.Longitude;\r\n }\r\n if (categories && categories.length) {\r\n // Create Category model objects for display and filtering\r\n const communityCategories = categories.map((communityPoi, index) => {\r\n return new CommunityPOICategoryModel(communityPoi, index);\r\n });\r\n this.communityCategories = communityCategories;\r\n this.setSelectedCategory(0);\r\n }\r\n if (pois) {\r\n // Get initial Google Map Markers and filter by current Category (first one)\r\n this.communityPOIs = pois;\r\n }\r\n if (googleMapsConfiguration) {\r\n this.googleMapsConfiguration = googleMapsConfiguration;\r\n }\r\n this.setCategoryPOIsBySelectedCategory();\r\n this.setMapMarkersForDisplay();\r\n });\r\n\r\n this.googlePlacesService.places\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(places => {\r\n if (places && places.results && places.results.length) {\r\n const googlePOIs = [];\r\n for (const place of places.results) {\r\n const distance = getDistanceFromCommunity(this.community, place.geometry.location.lat, place.geometry.location.lng);\r\n const withinSearchRadius = distance <= this.radiusInMiles;\r\n if (place && this.selectedCategory && this.selectedCategory.item && withinSearchRadius) {\r\n const googlePOI = new PointOfInterest(googlePOIs.length.toString(), this.selectedCategory.item.PointOfInterestID);\r\n googlePOI.GooglePlaceID = place.place_id;\r\n googlePOI.POIName = place.name;\r\n googlePOI.POIAddress = place.formatted_address;\r\n googlePOI.POILatitude = place.geometry.location.lat;\r\n googlePOI.POILongitude = place.geometry.location.lng;\r\n googlePOI.Distance = distance;\r\n googlePOIs.push(googlePOI);\r\n }\r\n }\r\n this.loading = false;\r\n this.categoryPOIs = googlePOIs.sort((a, b) => parseFloat(a.Distance) - parseFloat(b.Distance));\r\n this.setMapMarkersForDisplay();\r\n }\r\n });\r\n\r\n this.googlePlacesService.details\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(details => {\r\n if (this.loading && details && details.result) {\r\n this.selectedPOIDetails = new PointOfInterestDetails();\r\n this.selectedPOIDetails.Name = details.result.name;\r\n this.selectedPOIDetails.Address = details.result.formatted_address;\r\n if (details.result.rating && details.result.rating > 0) {\r\n this.selectedPOIDetails.Rating = details.result.rating;\r\n this.selectedPOIDetails.RatingsCount = details.result.user_ratings_total;\r\n }\r\n if (details.result.price_level) {\r\n // Repeat '$' depending on price level given back from Google.\r\n this.selectedPOIDetails.Price = '$'.repeat(details.result.price_level);\r\n }\r\n if (details.result.reviews && details.result.reviews.length) {\r\n // Sort reviews by highest number rating and get text for highest-rated review.\r\n // TODO: Removed for now pending description design discussions.\r\n // this.selectedPOIDetails.Description = details.result.reviews.sort((a, b) => b.rating - a.rating)[0].text;\r\n }\r\n if (details.result.types && details.result.types.length) {\r\n // Concatenate, capitalize, and format all 'types' for selected Google Place returned back from Google.\r\n const subDescriptions = [];\r\n details.result.types.forEach(type => {\r\n if (!type.toLowerCase().includes('point_of_interest')) {\r\n subDescriptions.push(type.split('_').map(c => c.slice(0, 1).toUpperCase() + c.slice(1)).join(' '));\r\n }\r\n });\r\n if (subDescriptions.length) {\r\n this.selectedPOIDetails.SubDescription = subDescriptions.join(' - ');\r\n this.selectedPOIDetails.TypeDescriptor = subDescriptions[0];\r\n }\r\n } else if (this.selectedCategory) {\r\n // If no sub-descriptions/place types in response...just use the selected category name.\r\n this.selectedPOIDetails.TypeDescriptor = this.selectedCategory.item.PointOfInterestName;\r\n }\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this.gmapsDirectionsService.directionsRoute$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(directionsRoute => {\r\n if (directionsRoute && directionsRoute.legs && directionsRoute.legs.length) {\r\n this.setDirectionsRouteData(directionsRoute);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.setSelectedCategory(0);\r\n this.categoryPOIs = [];\r\n this.googlePlacesService.clearGooglePlacesData();\r\n super.ngOnDestroy();\r\n }\r\n\r\n setSelectedCategory(categoryIndex: number) {\r\n if (this.communityCategories && this.communityCategories.length) {\r\n if (this.communityCategories[categoryIndex]) {\r\n this.communityCategories[categoryIndex].isSelected = true;\r\n this.selectedCategory = this.communityCategories[categoryIndex];\r\n }\r\n }\r\n }\r\n\r\n // Set Selected Category then filter POIs based off of Category\r\n toggleCategory(categoryIndex: number): void {\r\n if (this.communityCategories && this.communityCategories.length) {\r\n this.deselectAllCategories();\r\n this.setSelectedCategory(categoryIndex);\r\n this.setCategoryPOIsBySelectedCategory();\r\n }\r\n }\r\n\r\n deselectAllCategories() {\r\n if (this.communityCategories && this.communityCategories.length) {\r\n this.communityCategories.map((item) => { item.isSelected = false; });\r\n }\r\n }\r\n\r\n setCategoryPOIsBySelectedCategory() {\r\n // Filter POIs for display in Local Area Map component\r\n this.selectedCategoryPOI = null;\r\n this.isDirectionsMode = false;\r\n this.clearDirectionsData();\r\n\r\n if (this.selectedCategory && this.selectedCategory.item) {\r\n if (this.selectedCategory.item.SourceType === 'G') {\r\n this.setCategoryPOIsFromGoogle();\r\n } else {\r\n this.setCategoryPOIsFromCommunity();\r\n }\r\n }\r\n }\r\n\r\n setMapMarkersForDisplay() {\r\n this.mapMarkersForService = [];\r\n if (this.community) {\r\n this.gmapsMarkerService.setCommunityMapMarkerForDisplay(this.community.BrandName, this.community.Latitude, this.community.Longitude,\r\n this.googleMapsConfiguration, this.mapMarkersForService);\r\n }\r\n this.createPOIMapMarkersForDisplay(this.categoryPOIs);\r\n\r\n this.mapMarkers = this.mapMarkersForService;\r\n this.gmapsMarkerService.updateGMapsMarkers(this.mapMarkersForService);\r\n }\r\n\r\n // Get initial Google Map Markers based off POIs\r\n createPOIMapMarkersForDisplay(pois: PointOfInterest[]) {\r\n if (this.community && pois && pois.length) {\r\n for (const poi of pois) {\r\n if (poi) {\r\n const marker = new GMapsMarker(poi.POILocationID, poi.POILatitude, poi.POILongitude, this.googleMapsConfiguration);\r\n marker.LabelText = (pois.findIndex(p => p === poi) + 1).toString();\r\n this.mapMarkersForService.push(marker);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Used for setting label of POI Icon\r\n getPOILocationIndexFromID(poiLocationID) {\r\n return this.mapMarkers.findIndex(m => m.MarkerID === poiLocationID);\r\n }\r\n\r\n setCategoryPOIsFromCommunity() {\r\n this.loading = false;\r\n this.categoryPOIs = [];\r\n if (this.selectedCategory && this.communityPOIs) {\r\n const poisFromCommunity = [];\r\n for (const poi of this.communityPOIs) {\r\n if (poi && poi.PointOfInterestID === this.selectedCategory.item.PointOfInterestID) {\r\n poisFromCommunity.push(poi);\r\n }\r\n }\r\n this.categoryPOIs = poisFromCommunity.sort((a, b) => parseFloat(a.Distance) - parseFloat(b.Distance));\r\n this.setMapMarkersForDisplay();\r\n }\r\n }\r\n\r\n setCategoryPOIsFromGoogle() {\r\n this.categoryPOIs = [];\r\n if (this.selectedCategory) {\r\n this.loading = true;\r\n const googlePlacesParams = new GooglePlacesSearchParams();\r\n googlePlacesParams.Query = this.selectedCategory.item.PointOfInterestName;\r\n googlePlacesParams.Latitude = this.community.Latitude;\r\n googlePlacesParams.Longitude = this.community.Longitude;\r\n googlePlacesParams.Radius = this.radiusInMeters;\r\n this.googlePlacesService.googlePlacesTextSearch(googlePlacesParams);\r\n }\r\n }\r\n\r\n setSelectedCategoryPOIByLocationID(poiLocationID) {\r\n if (this.categoryPOIs) {\r\n const newSelectedCategory = this.categoryPOIs.find(poi => {\r\n return poi.POILocationID === poiLocationID;\r\n });\r\n if (newSelectedCategory && newSelectedCategory !== this.selectedCategoryPOI) {\r\n this.selectedCategoryPOI = newSelectedCategory;\r\n this.loading = true;\r\n this.selectedPOIDetails = null;\r\n this.gmapsMarkerService.setSelectedMarker(this.selectedCategoryPOI.POILocationID, this.mapMarkersForService);\r\n this.googlePlacesService.getGooglePlacesDetailsById(this.selectedCategoryPOI.GooglePlaceID);\r\n }\r\n }\r\n }\r\n\r\n clearSelectedPOIData() {\r\n if (this.isDirectionsMode) {\r\n this.isDirectionsMode = false;\r\n this.clearDirectionsData();\r\n\r\n // check if Directions Destination POI is from a POI Category or not\r\n if (this.selectedCategoryPOI && this.selectedCategoryPOI.PointOfInterestID) {\r\n this.setMapMarkersForDisplay();\r\n this.gmapsMarkerService.setSelectedMarker(this.selectedCategoryPOI.POILocationID, this.mapMarkersForService);\r\n return;\r\n }\r\n\r\n if (this.selectedCategory) {\r\n this.toggleCategory(this.selectedCategory.index);\r\n }\r\n }\r\n\r\n this.selectedCategoryPOI = null;\r\n this.setMapMarkersForDisplay();\r\n this.gmapsMarkerService.deselectAllMarkers(this.mapMarkersForService);\r\n }\r\n\r\n setMarkersForDirections(destinationPOI: PointOfInterest) {\r\n if (destinationPOI && this.community) {\r\n this.loading = true;\r\n this.isDirectionsMode = true;\r\n this.gmapsDirectionsService.updateShowDirection(true);\r\n this.mapMarkersForService = [];\r\n\r\n // Origin/Community Marker\r\n this.gmapsMarkerService.setCommunityMapMarkerForDisplay(this.community.BrandName, this.community.Latitude, this.community.Longitude,\r\n this.googleMapsConfiguration, this.mapMarkersForService);\r\n\r\n // Destination/POI Marker\r\n const destinationMarker = new GMapsMarker(destinationPOI.POILocationID, destinationPOI.POILatitude, destinationPOI.POILongitude,\r\n this.googleMapsConfiguration, this.community.BrandName);\r\n destinationMarker.IsDestination = true;\r\n destinationMarker.IsSelected = true;\r\n destinationMarker.LabelText = destinationPOI.POIName;\r\n destinationMarker.setLabelAdjacentMarkerOptions();\r\n this.mapMarkersForService.push(destinationMarker);\r\n\r\n this.gmapsMarkerService.updateGMapsMarkers(this.mapMarkersForService);\r\n }\r\n }\r\n\r\n // Filter pois based off of currently selected marker\r\n markerClicked(marker: GMapsMarker) {\r\n if (marker) {\r\n if (marker.IsOrigin) {\r\n this.clearSelectedPOIData();\r\n } else {\r\n this.setSelectedCategoryPOIByLocationID(marker.MarkerID);\r\n }\r\n }\r\n }\r\n\r\n // If map clicked, reset filtered options on POIs\r\n mapClicked() {\r\n this.clearSelectedPOIData();\r\n }\r\n\r\n setDirectionsRouteData(route: google.maps.DirectionsRoute) {\r\n if (route && route.legs && route.legs.length) {\r\n this.directionsRoute = route;\r\n this.loading = false;\r\n } else {\r\n this.clearSelectedPOIData();\r\n this.openMapMyCommuteModal();\r\n }\r\n }\r\n\r\n openMapMyCommuteModal() {\r\n const modalRef: NgbModalRef = this.modalService.open(MapCommuteModalComponent,\r\n { windowClass: `${ModalClasses.Full} ${ModalClasses.Left} `, backdrop: true, backdropClass: ` ${ModalClasses.BackDrop}` });\r\n modalRef.componentInstance.data = this.data;\r\n\r\n // Subscribe for any submitted POI/Destinations submitted from the Modal\r\n modalRef.componentInstance.poiSubmitted\r\n .pipe(take(1))\r\n .subscribe((poi: PointOfInterest) => {\r\n if (poi) {\r\n this.directionsRoute = null;\r\n this.departureOption = this.leaveNow;\r\n this.deselectAllCategories();\r\n this.selectedCategoryPOI = poi;\r\n this.setMarkersForDirections(poi);\r\n }\r\n });\r\n }\r\n\r\n clearDirectionsData() {\r\n this.directionsRoute = null;\r\n this.departureOption = this.leaveNow;\r\n this.gmapsDirectionsService.updateDirectionsRoute(null);\r\n this.setTravelTime(null);\r\n }\r\n\r\n updateDepartureOptions(departureOption: TravelTimeOption) {\r\n this.departureOption = departureOption;\r\n\r\n if (departureOption === this.leaveNow) {\r\n this.setTravelTime(new Date());\r\n }\r\n }\r\n\r\n setTravelTime(selectedDate: Date) {\r\n this.gmapsDirectionsService.updateTravelTime(selectedDate);\r\n }\r\n}\r\n","
\r\n
\r\n

\r\n {{ data.Header }}\r\n

\r\n
\r\n
\r\n {{ cat?.item?.PointOfInterestName | uppercase }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n\r\n\r\n
\r\n \r\n {{data.Commute_Header_Label}}\r\n \r\n \r\n {{directionsRoute.legs[0].duration.text}}\r\n ({{directionsRoute.legs[0].distance.text}})\r\n \r\n \r\n via {{directionsRoute.summary}}\r\n \r\n
\r\n
\r\n
\r\n from\r\n {{community.Name || community.Address.Street1}}\r\n
\r\n {{community.Address.Street1}}, {{community.Address.City}}, {{community.Address.State}} {{community.Address.ZipCode}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n {{step.duration.text}} ({{step.distance.text}})\r\n
\r\n
\r\n
\r\n
\r\n to\r\n {{selectedCategoryPOI.POIName || selectedCategoryPOI.POIAddress}}\r\n
\r\n {{selectedCategoryPOI.POIAddress}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n {{ selectedCategory?.item?.PointOfInterestName }}\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {{ poi?.POIName }}\r\n
\r\n \r\n {{ poi?.Distance }} miles\r\n \r\n \r\n {{ poi?.POIAddress }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n There are currently no points of interest to display for this community.\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n {{ selectedPOIDetails?.Name || selectedCategoryPOI?.POIName || \"\"}}\r\n
\r\n
\r\n
\r\n
\r\n {{ selectedPOIDetails.Rating }}\r\n \r\n ({{ selectedPOIDetails.RatingsCount }})\r\n
\r\n \r\n ∙ {{ selectedPOIDetails.Price }}\r\n \r\n
\r\n \r\n {{ selectedPOIDetails.TypeDescriptor }}\r\n \r\n
\r\n
\r\n
\r\n \r\n \"{{ selectedPOIDetails.Description }}\"\r\n \r\n \r\n {{ selectedPOIDetails.SubDescription }}\r\n \r\n
\r\n
\r\n \r\n {{ selectedPOIDetails.Address }}\r\n \r\n
\r\n
\r\n
\r\n There is currently no information to display for this point of interest.\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-community-poi-marker',\r\n templateUrl: './community-poi-marker.component.html',\r\n styleUrls: ['./community-poi-marker.component.scss']\r\n})\r\nexport class CommunityPoiMarkerComponent implements OnInit {\r\n\r\n @Input() public label: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n {{label}}\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Observable } from 'rxjs';\r\nimport { Location } from '@angular/common';\r\nimport { CommunitySummaryModel } from 'src/app/models/content/community/community-summary.model';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { fadeInOnEnterAnimation, fadeInUpOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-community-summary',\r\n templateUrl: './community-summary.component.html',\r\n styleUrls: ['./community-summary.component.scss'],\r\n animations: [\r\n fadeInUpOnEnterAnimation(),\r\n fadeInOnEnterAnimation({ duration: 600, delay: 1000 })\r\n ]\r\n})\r\nexport class CommunitySummaryComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: CommunitySummaryModel;\r\n\r\n community$: Observable;\r\n\r\n constructor(private communityService: CommunityService,\r\n private modalService: NgbModal,\r\n private location: Location) { super(); }\r\n\r\n ngOnInit() {\r\n this.community$ = this.communityService.community;\r\n }\r\n\r\n backButton() {\r\n // Close any active modals on the screen and if there are none, go back.\r\n this.modalService.hasOpenModals() ? this.modalService.dismissAll() : this.location.back();\r\n }\r\n\r\n}\r\n","
\r\n
25 ? 'col-4' : 'col-2'\">\r\n
{{community.Name}}
\r\n
\r\n
\r\n
{{community.Address.Street1}}
\r\n
{{community.Address.City}}, {{community.Address.State}} {{community.Address.ZipCode}}
\r\n
\r\n
\r\n
\r\n
{{community.StartingFromPrice | currency: 'USD':'symbol':'1.0-0'}}
\r\n
{{data.Price}}
\r\n
\r\n
\r\n
{{community.MinBedrooms | range : community.MaxBedrooms}}
\r\n
{{data.Bedrooms}}
\r\n
\r\n
\r\n
{{community.MinBathrooms | range : community.MaxBathrooms}}
\r\n
{{data.Bathrooms}}
\r\n
\r\n
\r\n
{{community.MinGarages | range : community.MaxGarages}}
\r\n
{{data.Garage}}
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { combineLatest } from 'rxjs';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { CommunityTourModel } from 'src/app/models/content/community/community-tour.model';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { VideoModalComponent } from '../../shared/modals/video-modal/video-modal.component';\r\nimport { VideoModalModel } from 'src/app/models/content/media/video-modal.model';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { PagesService } from 'src/app/core-services/pages.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { PlanVirtualTourModalComponent } from '../../shared/modals/plan-virtual-tour-modal/plan-virtual-tour-modal.component';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-community-tour',\r\n templateUrl: './community-tour.component.html',\r\n styleUrls: ['./community-tour.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800, delay: 400 })\r\n ]\r\n})\r\nexport class CommunityTourComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: CommunityTourModel;\r\n\r\n community: Community;\r\n modalClass: string;\r\n hasVideos: boolean;\r\n\r\n constructor(private communityService: CommunityService,\r\n private modalService: NgbModal,\r\n private pageService: PagesService) { super(); }\r\n\r\n ngOnInit() {\r\n combineLatest([this.communityService.community, this.pageService.hasSummary])\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([community, hasSummary]) => {\r\n this.community = community;\r\n this.modalClass = hasSummary ? ModalClasses.Summary : '';\r\n\r\n this.hasVideos = this.setHasVideos(this.community);\r\n });\r\n }\r\n\r\n openVideoModal(videoId: string, caption: string, modalTitle: string): void {\r\n if (videoId) {\r\n const modalRef: NgbModalRef = this.modalService.open(VideoModalComponent, { backdrop: false,\r\n windowClass: `${ModalClasses.Full} ${this.modalClass}` });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n videoModalModel.ModalHeader = modalTitle;\r\n videoModalModel.ModalDescription = caption;\r\n videoModalModel.VideoId = videoId;\r\n videoModalModel.EnableAutoplay = true;\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n }\r\n\r\n openVirtualTourModal(modalTitle: string) {\r\n const modalRef: NgbModalRef = this.modalService.open(PlanVirtualTourModalComponent, { backdrop: false,\r\n windowClass: `${ModalClasses.Full} ${this.modalClass}` });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n videoModalModel.ModalHeader = modalTitle;\r\n videoModalModel.VirtualTourUrl = this.community.VirtualTour;\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n\r\n setHasVideos(community: Community): boolean {\r\n return !!(community && community.Videos && community.Videos.length && community.Videos[0] && community.Videos[0].VideoPath);\r\n }\r\n}\r\n","
\r\n
\r\n

{{data.Header_Text}}

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { HersScoreModalComponent } from '../../shared/modals/hers-score-modal/hers-score-modal.component';\r\nimport { NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { PlanCardModel } from 'src/app/models/content/plan/plan-card.model';\r\nimport { createStatusOverlayText } from 'src/helper-functions/plan-data-helper';\r\nimport { Router } from '@angular/router';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\n\r\n@Component({\r\n selector: 'app-horizontal-plan-card',\r\n templateUrl: './horizontal-plan-card.component.html',\r\n styleUrls: ['./horizontal-plan-card.component.scss']\r\n})\r\nexport class HorizontalPlanCardComponent implements OnInit {\r\n\r\n @Input() data: PlanCardModel;\r\n @Input() plan: Plan;\r\n @Input() large?: boolean;\r\n @Input() statusOverlayText: string[];\r\n @Input() selectedPlanId: number = 0;\r\n @Input() numberOfLotsAvailableForSelectedPlan: number;\r\n\r\n @Output() setSelectPlanId = new EventEmitter();\r\n\r\n hasHersScore: boolean;\r\n hasAvailability: boolean;\r\n\r\n constructor(private modalService: NgbModal, public router: Router, private adobeLaunchService: AdobeLaunchService) { }\r\n\r\n ngOnInit() {\r\n if (!this.statusOverlayText) {\r\n this.statusOverlayText = createStatusOverlayText(this.plan, this.data);\r\n }\r\n\r\n if (this.plan && this.plan.HERSScore && this.data && this.data.HersScore &&\r\n this.data.HersScore.Hers_Score_CTA_ToolTip && this.data.HersScore.Hers_Score_CTA_Label) {\r\n this.hasHersScore = true;\r\n }\r\n }\r\n\r\n openHersModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(HersScoreModalComponent,\r\n { windowClass: `${ModalClasses.Full}`, backdrop: false });\r\n modalRef.componentInstance.HersScore = this.data.HersScore;\r\n modalRef.componentInstance.plan = this.plan;\r\n }\r\n\r\n setSelectedPlanId(planId: number) {\r\n this.setSelectPlanId.emit(planId);\r\n }\r\n\r\n handlePlanClicked(plan: Plan) {\r\n if (plan) {\r\n this.adobeLaunchService.pushPlanListingClickedEvent(plan, plan.Price);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
0\"\r\n class=\"image__status-overlay position-absolute text-light bg-dark p-1\">\r\n
\r\n {{ overlayLabel }}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
{{numberOfLotsAvailableForSelectedPlan}}
\r\n
{{data.Homesites_Label}}
\r\n
\r\n
\r\n
\r\n
{{plan.InventoryCount}}
\r\n
{{data.Quick_Move_Ins_Label}}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ plan.PlanName }}
\r\n
\r\n {{ data.Series_Name | mergeField: \"{series}\":plan.SeriesName }}\r\n
\r\n
\r\n
\r\n
\r\n {{ plan.Price | currency: \"USD\":\"symbol\":\"1.0-0\" }}\r\n
\r\n
\r\n {{ data.Price }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ plan.Bedrooms | range: plan.MaxBedrooms }}\r\n
\r\n
{{ data.Bedrooms }}
\r\n
\r\n
\r\n
\r\n {{ plan.MinTotalBaths | range: plan.MaxTotalBaths }}\r\n
\r\n
{{ data.Bathrooms }}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ plan.Garages | range: plan.MaxGarages }}\r\n
\r\n
{{ data.Garage }}
\r\n
\r\n
\r\n
{{ plan.SquareFeet }}+
\r\n
{{ data.Square_Feet }}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ plan.HERSScore }}\r\n \r\n
\r\n
\r\n {{ data.HersScore.Hers_Score_CTA_Label }}\r\n
\r\n
\r\n
\r\n
\r\n {{ plan.MortgagePayment.TotalMonthlyPayment | currency: \"USD\":\"symbol\":\"1.0-0\" }}\r\n /mo\r\n \r\n
\r\n
\r\n {{ data.LMP_Starting_From }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { LmpConfigurationModel } from 'src/app/models/lmp-configuration.model';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { MortgagePayment } from 'src/app/models/product/mortgage-payment.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\n\r\n@Component({\r\n selector: 'app-lmp-tooltip',\r\n templateUrl: './lmp-tooltip.component.html',\r\n styleUrls: ['./lmp-tooltip.component.scss']\r\n})\r\nexport class LmpTooltipComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: LmpConfigurationModel;\r\n @Input() mortgagePayment: MortgagePayment;\r\n\r\n community: Community;\r\n displayPIOnly: boolean = false;\r\n\r\n constructor(private communityService: CommunityService ) { super(); }\r\n\r\n ngOnInit() {\r\n this.communityService.community\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((community) => {\r\n if (community) {\r\n this.community = community;\r\n }\r\n });\r\n\r\n if (this.data && this.mortgagePayment && this.community) {\r\n this.displayPIOnly =\r\n !!((this.data.Display_PI_Only && !this.community.OverrideBrandDisplayPIOnlyFlag) ||\r\n (this.community.OverrideBrandDisplayPIOnlyFlag && this.community.DisplayPIOnlyFlag));\r\n }\r\n }\r\n\r\n}\r\n","
\r\n
\r\n i\r\n
\r\n \r\n
\r\n
\r\n
{{data.PI_Only_Tooltip_Header}}
\r\n
\r\n
\r\n
\r\n
\r\n
{{data.PITI_Tooltip_Header}}
\r\n
×
\r\n
\r\n
\r\n
{{data.Total_Monthly_Principal_And_Interest}}
\r\n
{{mortgagePayment.TotalMonthlyPrincipalAndInterest | currency: \"USD\":\"symbol\"}}
\r\n
\r\n
\r\n
{{data.Monthly_Taxes}}
\r\n
{{mortgagePayment.MonthlyTaxes | currency: \"USD\":\"symbol\"}}
\r\n
\r\n
\r\n
{{data.Monthly_Insurance}}
\r\n
{{mortgagePayment.MonthlyInsurance | currency: \"USD\":\"symbol\"}}
\r\n
\r\n
\r\n
\r\n
{{data.Total_Monthly_Payment}}
\r\n
{{mortgagePayment.TotalMonthlyPayment | currency: \"USD\":\"symbol\"}}
\r\n
\r\n
\r\n
{{data.Accordion_Headline}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NearbyCommunitiesModel } from 'src/app/models/content/community/nearby-communities.model';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { combineLatest } from 'rxjs';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Image } from 'src/app/models/product/image.model';\r\nimport { CarouselOptionsModel } from 'src/app/models/carousel-options.model';\r\nimport { GMapsOptionsModel } from 'src/app/models/maps/gmaps-options.model';\r\nimport { GMapsMarker } from 'src/app/models/maps/gmaps-marker.model';\r\nimport { GMapsMarkerService } from 'src/app/core-services/gmaps-marker.service';\r\nimport { checkForImages, checkForSingleImage, sortImagesByKioskRank } from 'src/helper-functions/image-helper';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { GoogleMapsConfiguration } from 'src/app/models/maps/google-maps-configuration.model';\r\nimport { CrossBrandService } from 'src/app/core-services/cross-brand.service';\r\nimport { CrossBrandConfiguration } from 'src/app/models/cross-brand-configuration.model';\r\nimport { setBrandFieldFromSitecore } from 'src/helper-functions/brand-specific-configuration';\r\nimport { fadeInLeftOnEnterAnimation, fadeInOnEnterAnimation, fadeOutOnLeaveAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-nearby-communities',\r\n templateUrl: './nearby-communities.component.html',\r\n styleUrls: ['./nearby-communities.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation(),\r\n fadeOutOnLeaveAnimation({duration: 500})\r\n ]\r\n})\r\nexport class NearbyCommunitiesComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: NearbyCommunitiesModel;\r\n\r\n community: Community;\r\n nearbyCommunities: Community[];\r\n carouselOptions: CarouselOptionsModel;\r\n sortedImages: Image[];\r\n selectedCommunity: Community;\r\n showLegend: boolean = true;\r\n crossBrandConfig: CrossBrandConfiguration;\r\n\r\n googleMapsConfiguration: GoogleMapsConfiguration;\r\n mapOptions: GMapsOptionsModel = new GMapsOptionsModel();\r\n mapMarkers: GMapsMarker[] = [];\r\n filteredMarkers: GMapsMarker[] = [];\r\n legendMarkers: GMapsMarker[] = [];\r\n\r\n constructor(private communityService: CommunityService,\r\n private gmapsMarkerService: GMapsMarkerService,\r\n private crossBrandService: CrossBrandService) { super(); }\r\n\r\n ngOnInit() {\r\n const observables = [\r\n this.communityService.community,\r\n this.communityService.nearbyCommunities,\r\n this.gmapsMarkerService.mapConfiguration,\r\n this.crossBrandService.crossBrandConfig\r\n ];\r\n combineLatest(observables)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([community, nearbyCommunities, googleMapsConfiguration, crossBrandConfig]: any[]) => {\r\n if (community) {\r\n this.community = this.selectedCommunity = community;\r\n this.mapOptions.InitialLatitude = this.community.Latitude;\r\n this.mapOptions.InitialLongitude = this.community.Longitude;\r\n }\r\n\r\n if (googleMapsConfiguration) {\r\n this.googleMapsConfiguration = googleMapsConfiguration;\r\n }\r\n\r\n if (nearbyCommunities && nearbyCommunities.length) {\r\n this.nearbyCommunities = nearbyCommunities.filter(nearbyCommunity =>\r\n nearbyCommunity.Id !== this.community.Id && nearbyCommunity.Latitude && nearbyCommunity.Longitude);\r\n this.setMapMarkersForDisplay();\r\n this.setMapLegendMarkers();\r\n }\r\n\r\n if (crossBrandConfig) {\r\n this.crossBrandConfig = crossBrandConfig;\r\n }\r\n\r\n if (this.community && checkForImages(this.community.Images)) {\r\n this.sortedImages = sortImagesByKioskRank(this.community.Images);\r\n }\r\n });\r\n\r\n if (this.sortedImages && this.sortedImages.length) {\r\n this.carouselOptions = new CarouselOptionsModel(this.sortedImages);\r\n this.carouselOptions.ShowImageIndex = false;\r\n this.carouselOptions.ShowImageCaption = false;\r\n this.carouselOptions.UseSmallArrows = true;\r\n }\r\n }\r\n\r\n setMapMarkersForDisplay() {\r\n this.mapMarkers = [];\r\n if (this.community) {\r\n this.gmapsMarkerService.setCommunityMapMarkerForDisplay(\r\n this.community.BrandName, this.community.Latitude, this.community.Longitude, this.googleMapsConfiguration, this.mapMarkers);\r\n }\r\n this.createMapMarkersForDisplay(this.nearbyCommunities);\r\n this.gmapsMarkerService.updateGMapsMarkers(this.mapMarkers);\r\n }\r\n\r\n createMapMarkersForDisplay(nearbyCommunities: Community[]) {\r\n if (nearbyCommunities && nearbyCommunities.length) {\r\n nearbyCommunities.map(nearbyCommunity => {\r\n if (nearbyCommunity && nearbyCommunity.Latitude && nearbyCommunity.Longitude) {\r\n const marker = new GMapsMarker(\r\n nearbyCommunity.Id,\r\n nearbyCommunity.Latitude,\r\n nearbyCommunity.Longitude,\r\n this.googleMapsConfiguration,\r\n nearbyCommunity.BrandName);\r\n if (this.googleMapsConfiguration && this.googleMapsConfiguration.Use_Default_Pin_Label) {\r\n marker.LabelText = nearbyCommunity.BrandName[0];\r\n }\r\n this.mapMarkers.push(marker);\r\n }\r\n });\r\n }\r\n }\r\n\r\n setSelectedCommunityByID(selectedCommunityId: string | number) {\r\n if (this.nearbyCommunities) {\r\n this.selectedCommunity = this.nearbyCommunities.find(community => community.Id === selectedCommunityId);\r\n if (this.selectedCommunity) {\r\n this.setCarouselImagesForSelectedCommunity();\r\n this.gmapsMarkerService.setSelectedMarker(this.selectedCommunity.Id, this.mapMarkers);\r\n }\r\n }\r\n }\r\n\r\n clearSelectedCommunity() {\r\n this.selectedCommunity = null;\r\n this.gmapsMarkerService.deselectAllMarkers(this.mapMarkers);\r\n this.gmapsMarkerService.updateGMapsMarkers(this.mapMarkers);\r\n }\r\n\r\n markerClicked(marker: GMapsMarker) {\r\n if (marker) {\r\n if (marker.IsOrigin) {\r\n this.clearSelectedCommunity();\r\n this.selectedCommunity = this.community;\r\n this.setCarouselImagesForSelectedCommunity();\r\n } else {\r\n this.setSelectedCommunityByID(marker.MarkerID);\r\n }\r\n }\r\n }\r\n\r\n mapClicked() {\r\n this.clearSelectedCommunity();\r\n this.selectedCommunity = this.community;\r\n this.setCarouselImagesForSelectedCommunity();\r\n }\r\n\r\n setCarouselImagesForSelectedCommunity(): void {\r\n if (this.selectedCommunity) {\r\n this.carouselOptions.HasImages = checkForImages(this.selectedCommunity.Images);\r\n\r\n if (this.carouselOptions.HasImages) {\r\n this.carouselOptions.Images = sortImagesByKioskRank(this.selectedCommunity.Images);\r\n this.carouselOptions.HasSingleImage = checkForSingleImage(this.carouselOptions.Images);\r\n this.carouselOptions.CarouselBanner = this.setBannerImageByBrand(this.selectedCommunity.BrandName);\r\n }\r\n }\r\n }\r\n\r\n setMapLegendMarkers(): void {\r\n let currentBrands: string[] = [];\r\n if (this.nearbyCommunities) {\r\n this.nearbyCommunities.map(community => {\r\n if (!currentBrands.find(brand => brand === community.BrandName)) {\r\n currentBrands.push(community.BrandName);\r\n }});\r\n }\r\n if (currentBrands.length) {\r\n if (this.community) {\r\n currentBrands = currentBrands.filter(brandName => brandName !== this.community.BrandName);\r\n currentBrands.sort((a, b) => a.localeCompare(b));\r\n currentBrands.unshift(this.community.BrandName);\r\n }\r\n currentBrands.map(brandName => {\r\n const brandMarker = new GMapsMarker(\r\n this.setBrandLabelForLegendMarkers(brandName),\r\n 0,\r\n 0,\r\n this.googleMapsConfiguration,\r\n brandName\r\n );\r\n this.legendMarkers.push(brandMarker);\r\n });\r\n }\r\n }\r\n\r\n setBannerImageByBrand(brandName: string): any {\r\n let bannerImage;\r\n if (brandName && this.crossBrandConfig && this.community && this.community.BrandName !== brandName) {\r\n bannerImage = setBrandFieldFromSitecore(brandName,\r\n this.crossBrandConfig.Pulte_Cross_Brand_Banner_Image,\r\n this.crossBrandConfig.Centex_Cross_Brand_Banner_Image,\r\n this.crossBrandConfig.Del_Webb_Cross_Brand_Banner_Image,\r\n this.crossBrandConfig.DiVosta_Cross_Brand_Banner_Image,\r\n this.crossBrandConfig.John_Wieland_Cross_Brand_Banner_Image,\r\n this.crossBrandConfig.American_West_Cross_Brand_Banner_Image);\r\n }\r\n return bannerImage;\r\n }\r\n\r\n setBrandLabelForLegendMarkers(brandName: string): string {\r\n let brandLabel: string = '';\r\n if (this.data) {\r\n brandLabel = setBrandFieldFromSitecore(brandName,\r\n this.data.Pulte_Label,\r\n this.data.Centex_Label,\r\n this.data.Del_Webb_Label,\r\n this.data.DiVosta_Label,\r\n this.data.John_Wieland_Label,\r\n this.data.American_West_Label);\r\n }\r\n return brandLabel || brandName;\r\n }\r\n\r\n toggleLegend(): void {\r\n this.showLegend = !this.showLegend;\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
{{selectedCommunity.Name}}
\r\n
\r\n
\r\n
\r\n
{{selectedCommunity.Address.Street1}}
\r\n
{{selectedCommunity.Address.City}}, {{selectedCommunity.Address.State}} {{selectedCommunity.Address.ZipCode}}
\r\n
{{selectedCommunity.SalesPhoneNumber}}
\r\n
\r\n
\r\n
{{selectedCommunity.PlanCount}} {{data.Home_Design_Availability}}
\r\n
{{selectedCommunity.InventoryCount}} {{data.QMI_Availability}}
\r\n
{{selectedCommunity.MetaDescription}}
\r\n
\r\n
\r\n
{{selectedCommunity.StartingFromPrice | currency: 'USD':'symbol':'1.0-0'}}
\r\n
{{data.Price}}
\r\n
\r\n
\r\n
{{selectedCommunity.MinBedrooms | range: selectedCommunity.MaxBedrooms}}
\r\n
{{data.Bedrooms}}
\r\n
\r\n
\r\n
\r\n
\r\n
{{selectedCommunity.MinBathrooms | range: selectedCommunity.MaxBathrooms}}
\r\n
{{data.Bathrooms}}
\r\n
\r\n
\r\n
{{selectedCommunity.MinGarages | range: selectedCommunity.MaxGarages}}
\r\n
{{data.Garage}}
\r\n
\r\n
\r\n
\r\n
\r\n {{nearbyCommunities.length}} {{data.Nearby_Community_Count}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{data.Legend_Title}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{marker.MarkerID}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { PlanCardModel } from 'src/app/models/content/plan/plan-card.model';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { HersScoreModalComponent } from '../../shared/modals/hers-score-modal/hers-score-modal.component';\r\nimport { VideoModalModel } from 'src/app/models/content/media/video-modal.model';\r\nimport { PlanVirtualTourModalComponent } from '../../shared/modals/plan-virtual-tour-modal/plan-virtual-tour-modal.component';\r\nimport { VideoModalComponent } from '../../shared/modals/video-modal/video-modal.component';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\n\r\n@Component({\r\n selector: 'app-plan-card',\r\n templateUrl: './plan-card.component.html',\r\n styleUrls: ['./plan-card.component.scss']\r\n})\r\nexport class PlanCardComponent implements OnInit {\r\n\r\n @Input() data: PlanCardModel;\r\n @Input() plan: Plan;\r\n @Input() statusOverlayText: string[];\r\n @Input() isTourCard: boolean;\r\n\r\n hasVideos: boolean;\r\n\r\n constructor(private modalService: NgbModal, private adobeLaunchService: AdobeLaunchService) { }\r\n\r\n ngOnInit() {\r\n if (!this.statusOverlayText) {\r\n this.statusOverlayText = this.createStatusOverlayText();\r\n }\r\n if (this.plan && this.plan.Videos && this.plan.Videos.length && this.plan.Videos[0].VideoPath) {\r\n this.hasVideos = true;\r\n }\r\n }\r\n\r\n openHersModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(HersScoreModalComponent,\r\n { windowClass: `${ModalClasses.Full}`, backdrop: false });\r\n modalRef.componentInstance.HersScore = this.data.HersScore;\r\n modalRef.componentInstance.plan = this.plan;\r\n }\r\n\r\n private createStatusOverlayText() {\r\n if (this.plan && this.data) {\r\n const overlayLabels = [];\r\n if (this.plan.InventoryCount > 0 && this.data.QMI_Availability) {\r\n overlayLabels.push(this.data.QMI_Availability);\r\n }\r\n if (this.plan.ModelExists && this.data.Model_Open) {\r\n overlayLabels.push(this.data.Model_Open);\r\n }\r\n if (this.plan.IsNewPlan && this.data.New_Plan && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.New_Plan);\r\n }\r\n if (this.plan.IsFutureRelease && this.data.Future_Release && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Future_Release);\r\n }\r\n if (this.plan.QuickMoveInOnlyFlag && this.data.QMI_Only && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.QMI_Only);\r\n }\r\n if (this.plan.NewModelFlag && this.data.New_Model && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.New_Model);\r\n }\r\n if (this.plan.IsSoldOut && this.data.Sold_Out && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Sold_Out);\r\n }\r\n if (this.plan.LastHomeDesignFlag && this.data.Last_Home_Design && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Last_Home_Design);\r\n }\r\n if (this.plan.LastChanceFlag && this.data.Last_Chance && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Last_Chance);\r\n }\r\n if (this.plan.ModelForSaleFlag && this.data.Model_For_Sale && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Model_For_Sale);\r\n }\r\n if (this.plan.AlmostSoldOutFlag && this.data.Almost_Sold_Out && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Almost_Sold_Out);\r\n }\r\n return overlayLabels.length > 0 ? overlayLabels : undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n openVirtualTourModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(PlanVirtualTourModalComponent, { backdrop: false, windowClass: 'modal--full' });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n videoModalModel.ModalHeader = this.data.Virtual_Tour_Modal_Header_Text;\r\n videoModalModel.VirtualTourUrl = this.plan.VirtualTour;\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n\r\n openVideoTourModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(VideoModalComponent, { backdrop: false, windowClass: 'modal--full' });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n if (this.hasVideos) {\r\n videoModalModel.ModalHeader = this.data.Video_Tour_Modal_Header_Text;\r\n videoModalModel.ModalDescriptionPlacement = this.data.Video_Tour_Modal_Caption_Placement;\r\n videoModalModel.VideoId = this.plan.Videos[0].VideoPath;\r\n if (this.plan.Videos[0].Caption) {\r\n videoModalModel.ModalDescription = this.plan.Videos[0].Caption;\r\n }\r\n }\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n\r\n handlePlanClicked(plan: Plan) {\r\n if (plan) {\r\n this.adobeLaunchService.pushPlanListingClickedEvent(plan, plan.Price);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
0\" class=\"image__status-overlay position-absolute text-light bg-dark p-1\">\r\n
\r\n {{overlayLabel}}\r\n
\r\n
\r\n \r\n
\r\n

{{plan.PlanName}}

\r\n
\r\n
\r\n {{data.Series_Name | mergeField: '{series}':plan.SeriesName}}\r\n
\r\n
\r\n
\r\n
{{plan.Price | currency: 'USD':'symbol':'1.0-0'}}
\r\n
{{data.Price}}
\r\n
\r\n
\r\n

{{data.Call_For_Pricing_Text}}

\r\n
\r\n
\r\n
\r\n
\r\n
{{plan.Bedrooms | range : plan.MaxBedrooms}}
\r\n
{{data.Bedrooms}}
\r\n
\r\n
\r\n
{{plan.MinTotalBaths | range : plan.MaxTotalBaths}}
\r\n
{{data.Bathrooms}}
\r\n
\r\n
\r\n
{{plan.Garages | range : plan.MaxGarages}}
\r\n
{{data.Garage}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{plan.SquareFeet}}+\r\n
\r\n
\r\n
{{data.Square_Feet}}
\r\n
\r\n
\r\n
\r\n {{plan.HERSScore}}\r\n \r\n
\r\n
\r\n
{{data.HersScore.Hers_Score_CTA_Label}}
\r\n
\r\n
\r\n
\r\n {{plan.MortgagePayment.TotalMonthlyPrincipalAndInterest | currency: 'USD':'symbol':'1.0-0'}} /mo\r\n \r\n
\r\n
\r\n
{{data.LMP_Starting_From}}
\r\n
\r\n \r\n
\r\n
\r\n {{plan.MortgagePayment.TotalMonthlyPayment | currency: 'USD':'symbol':'1.0-0'}} /mo\r\n \r\n
\r\n
\r\n
{{data.PITI_Price_Label}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { PlanCtasModel } from 'src/app/models/content/plan/plan-ctas.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { PlanQmiListingModalComponent } from '../../shared/modals/plan-qmi-listing-modal/plan-qmi-listing-modal.component';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-plan-ctas',\r\n templateUrl: './plan-ctas.component.html',\r\n styleUrls: ['./plan-ctas.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800, delay: 750 })\r\n ]\r\n})\r\nexport class PlanCtasComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: PlanCtasModel;\r\n\r\n plan$: Observable;\r\n qmiCountClass: string;\r\n\r\n constructor(private communityService: CommunityService,\r\n private route: ActivatedRoute,\r\n private modalService: NgbModal) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((planId: string) => {\r\n this.plan$ = this.communityService.getPlanById(planId);\r\n this.qmiCountClass = this.setQmiCountClass(this.data.QMI_CTA_Style);\r\n });\r\n }\r\n\r\n setQmiCountClass(buttonType: string): string {\r\n let qmiCountClass: string = '';\r\n\r\n switch (buttonType) {\r\n case 'Default':\r\n qmiCountClass = 'planCtas__qmiCountDefault';\r\n break;\r\n default:\r\n qmiCountClass = 'planCtas__qmiCountPrimary';\r\n }\r\n\r\n return qmiCountClass;\r\n }\r\n\r\n openQmiListModal(plan: Plan): void {\r\n const modalRef: NgbModalRef = this.modalService.open(PlanQmiListingModalComponent, { backdrop: false,\r\n windowClass: `${ModalClasses.Full}`});\r\n if (this.data) {\r\n modalRef.componentInstance.data = this.data;\r\n modalRef.componentInstance.plan = plan;\r\n }\r\n }\r\n\r\n}\r\n\r\n","
\r\n \r\n
\r\n \r\n {{data.Homesite_CTA_Text}}\r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, takeUntil, concatMap, takeWhile } from 'rxjs/operators';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { PlanFeaturesModel } from 'src/app/models/content/plan/plan-features.model';\r\nimport { InteractiveToolsModel } from 'src/app/models/interactive-tools-configuration.model';\r\nimport { PlanToolsModalComponent } from '../../shared/modals/plan-tools-modal/plan-tools-modal.component';\r\nimport { Image } from 'src/app/models/product/image.model';\r\nimport { PlanFeaturesModalModel } from 'src/app/models/content/plan/plan-features-modal.model';\r\nimport { PlanFeaturesModalComponent } from '../../shared/modals/plan-features-modal/plan-features-modal.component';\r\nimport { forkJoin } from 'rxjs';\r\nimport { ModalClasses } from '../../../shared/modal-classes';\r\nimport { PagesService } from 'src/app/core-services/pages.service';\r\nimport { InteractiveToolsService } from 'src/app/core-services/interactive-tool.service';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-plan-features',\r\n templateUrl: './plan-features.component.html',\r\n styleUrls: ['./plan-features.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800 })\r\n ]\r\n})\r\nexport class PlanFeaturesComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: PlanFeaturesModel;\r\n\r\n interactiveTools: InteractiveToolsModel;\r\n plan: Plan;\r\n modalClass: string;\r\n hasInteractiveTool: boolean = false;\r\n hasFeatures: boolean = false;\r\n\r\n planFeaturesModal: PlanFeaturesModalModel = new PlanFeaturesModalModel();\r\n\r\n constructor(private communityService: CommunityService, private route: ActivatedRoute,\r\n private modalService: NgbModal, private pageService: PagesService,\r\n private interactiveToolsService: InteractiveToolsService) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n concatMap((planId: string) => {\r\n const observables = [ this.communityService.getPlanInfoById(planId),\r\n this.pageService.hasSummary,\r\n this.interactiveToolsService.InteractiveToolsItem\r\n ];\r\n return forkJoin(observables);\r\n }),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((response: any[]) => {\r\n this.plan = response[0];\r\n const hasSummary = response[1];\r\n this.interactiveTools = response[2];\r\n if (this.plan != null) {\r\n if (this.interactiveTools != null && (this.plan.InteractiveFloorPlanUrl || this.plan.ExteriorDesignUrl ||\r\n this.plan.DesignCenterUrl || this.plan.RoomDesignerUrl || this.plan.EnvisionUrl)) {\r\n if (this.plan.InteractiveFloorPlanUrl) {\r\n this.interactiveTools.Floor_Plan_Url = this.plan.InteractiveFloorPlanUrl;\r\n }\r\n\r\n if (this.plan.ExteriorDesignUrl) {\r\n this.interactiveTools.Exterior_Options_Url = this.plan.ExteriorDesignUrl;\r\n }\r\n\r\n if (this.plan.DesignCenterUrl) {\r\n this.interactiveTools.Furniture_Planner_Url = this.plan.DesignCenterUrl;\r\n }\r\n\r\n if (this.plan.RoomDesignerUrl) {\r\n this.interactiveTools.Room_Designer_Url = this.plan.RoomDesignerUrl;\r\n }\r\n\r\n if (this.plan.EnvisionUrl) {\r\n this.interactiveTools.Finishing_Options_Url = this.plan.EnvisionUrl;\r\n }\r\n this.hasInteractiveTool = true;\r\n }\r\n\r\n this.planFeaturesModal.Features = this.plan.Features;\r\n this.planFeaturesModal.MetaDescription = this.plan.MetaDescription;\r\n this.planFeaturesModal.hasSummary = hasSummary;\r\n\r\n if (this.planFeaturesModal && this.planFeaturesModal.Features && this.planFeaturesModal.Features.length) {\r\n this.hasFeatures = true;\r\n if (this.plan.Images && this.plan.Images.length) {\r\n this.getPlanFeatureImages(this.plan.Images);\r\n }\r\n }\r\n }\r\n\r\n this.modalClass = hasSummary ? ModalClasses.Summary : '';\r\n });\r\n }\r\n\r\n openPlanTools(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(PlanToolsModalComponent,\r\n { windowClass: `${ModalClasses.Full} ${this.modalClass}`, backdrop: false });\r\n modalRef.componentInstance.interactiveTools = this.interactiveTools;\r\n }\r\n\r\n openPlanFeaturesModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(PlanFeaturesModalComponent, {\r\n windowClass: `${ModalClasses.Full} ${ModalClasses.WhiteBackground} ${this.modalClass}`, backdrop: false });\r\n modalRef.componentInstance.planFeaturesModal = this.planFeaturesModal;\r\n }\r\n\r\n private getPlanFeatureImages(images: Image[]): void {\r\n const featureImages = images.filter(image => image.EmbraceYourSpaceRank > 0)\r\n .sort((a, b) => a.EmbraceYourSpaceRank - b.EmbraceYourSpaceRank);\r\n if (featureImages && featureImages.length === 3) {\r\n this.planFeaturesModal.EmbraceYourSpaceImages = featureImages;\r\n } else {\r\n this.planFeaturesModal.PlanGalleryImage = images.sort((a, b) => a.ImageRank - b.ImageRank).find(image => image.ImageRank);\r\n }\r\n }\r\n}\r\n","
\r\n

{{data.Plan_Features_Header}}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input, ViewChildren, QueryList, AfterViewInit } from '@angular/core';\r\nimport { forkJoin } from 'rxjs';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, concatMap, takeUntil, takeWhile } from 'rxjs/operators';\r\nimport { PlanFloorPlansModel, FloorPlansConfigurationModel } from 'src/app/models/content/plan/plan-floor-plans.model';\r\nimport { FloorPlanImage } from 'src/app/models/product/floor-plan-image.model';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FloorPlanModalComponent } from 'src/app/community/shared/modals/floor-plan-modal/floor-plan-modal.component';\r\nimport { CarouselOptionsModel } from 'src/app/models/carousel-options.model';\r\nimport { PagesService } from 'src/app/core-services/pages.service';\r\nimport { ModalClasses } from '../../../shared/modal-classes';\r\nimport { GroupByPipe } from 'src/app/community/shared/pipes/group-by.pipe';\r\nimport { CarouselComponent } from 'src/app/community/shared/media/carousel/carousel.component';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-plan-floor-plans',\r\n templateUrl: './plan-floor-plans.component.html',\r\n styleUrls: ['./plan-floor-plans.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800, delay: 600 })\r\n ]\r\n})\r\nexport class PlanFloorPlansComponent extends BaseComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() data: PlanFloorPlansModel;\r\n @ViewChildren(CarouselComponent) carousels !: QueryList;\r\n\r\n floorPlanImages: FloorPlanImage[] = [];\r\n floorPlanConfigs: FloorPlansConfigurationModel[] = [];\r\n floorPlanCarousels: CarouselComponent[] = [];\r\n totalCarousels: number = 0;\r\n hasSummary: boolean;\r\n planId: string;\r\n\r\n constructor(private communityService: CommunityService, private route: ActivatedRoute, private modalService: NgbModal,\r\n private groupByPipe: GroupByPipe, private pageService: PagesService) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n concatMap((planId: string) => {\r\n this.planId = planId;\r\n const observables = [ this.communityService.getFloorPlanImagesByPlanId(planId),\r\n this.pageService.hasSummary];\r\n return forkJoin(observables);\r\n }),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((response: any[]) => {\r\n this.floorPlanImages = response[0];\r\n if (this.floorPlanImages && this.floorPlanImages.length) {\r\n this.floorPlanImages = this.sortFloorPlanImages(this.floorPlanImages);\r\n\r\n const groupedFloorPlanImages = this.groupByPipe.transform(this.floorPlanImages, 'PlanConfiguration');\r\n\r\n this.floorPlanConfigs = this.setFloorPlanConfigurationData(groupedFloorPlanImages);\r\n\r\n if (this.floorPlanConfigs && this.floorPlanConfigs.length) {\r\n this.floorPlanConfigs[0].IsSelected = true;\r\n }\r\n }\r\n this.hasSummary = response[1];\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.carousels.changes\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((carousels: QueryList) => {\r\n this.floorPlanCarousels = carousels.toArray();\r\n });\r\n }\r\n\r\n sortFloorPlanImages(floorPlanImages: FloorPlanImage[]): FloorPlanImage[] {\r\n const sortedFloorPlanImages: FloorPlanImage[] =\r\n floorPlanImages.sort((a, b) => a.PlanConfiguration.localeCompare(b.PlanConfiguration));\r\n\r\n return sortedFloorPlanImages;\r\n }\r\n\r\n setFloorPlanConfigurationData(groupedFloorPlanImages: any[]): FloorPlansConfigurationModel[] {\r\n const floorPlanConfigs = groupedFloorPlanImages\r\n .filter(imageGroup => !imageGroup.key.includes('Options'))\r\n .map((floorPlanImageGroup, index) => {\r\n const floorPlanConfig = new FloorPlansConfigurationModel();\r\n\r\n floorPlanConfig.ConfigurationName = `CONFIGURATION ${index + 1}`;\r\n\r\n if (floorPlanImageGroup.value) {\r\n floorPlanConfig.CarouselOptions = this.setCarouselOptionsForConfig(floorPlanImageGroup.value);\r\n }\r\n\r\n if (floorPlanConfig.CarouselOptions && floorPlanConfig.CarouselOptions.Images\r\n && floorPlanConfig.CarouselOptions.Images.length === 1) {\r\n this.validateSingleImage(floorPlanConfig);\r\n }\r\n\r\n floorPlanConfig.Index = index;\r\n\r\n return floorPlanConfig;\r\n });\r\n\r\n const totalFloorPlanConfigs = floorPlanConfigs.length;\r\n\r\n const optionConfig = this.setFloorPlanOptionsData(groupedFloorPlanImages, totalFloorPlanConfigs);\r\n if (optionConfig) {\r\n floorPlanConfigs.push(optionConfig);\r\n }\r\n\r\n floorPlanConfigs.map(config => this.setCarouselIndex(config));\r\n\r\n return floorPlanConfigs;\r\n }\r\n\r\n setFloorPlanOptionsData(groupedFloorPlanImages: any[], optionConfigIndex: number): FloorPlansConfigurationModel {\r\n let optionImages: FloorPlanImage[] = [];\r\n const floorPlanOptions = groupedFloorPlanImages.filter(imageGroup => imageGroup.key.includes('Options'));\r\n\r\n if (floorPlanOptions && floorPlanOptions.length) {\r\n optionImages = floorPlanOptions.map(optionGroup => {\r\n if (optionGroup && optionGroup.value && optionGroup.value[0] && optionGroup.value[0].PlanConfiguration) {\r\n if (optionGroup.value[0].PlanConfiguration === 'Options2') {\r\n optionGroup.value[0].FloorPlanType = 'Options 2';\r\n } else {\r\n optionGroup.value[0].FloorPlanType = optionGroup.value[0].PlanConfiguration;\r\n }\r\n return optionGroup.value[0];\r\n }\r\n });\r\n\r\n if (optionImages && optionImages.length) {\r\n const optionConfig = new FloorPlansConfigurationModel();\r\n\r\n optionConfig.ConfigurationName = 'OPTIONS';\r\n\r\n optionConfig.CarouselOptions = this.setCarouselOptionsForConfig(optionImages);\r\n\r\n if (optionConfig.CarouselOptions.Images && optionConfig.CarouselOptions.Images.length === 1) {\r\n this.validateSingleImage(optionConfig);\r\n }\r\n\r\n optionConfig.Index = optionConfigIndex;\r\n\r\n return optionConfig;\r\n }\r\n }\r\n }\r\n\r\n selectConfiguration(index: number): void {\r\n if (this.floorPlanConfigs && this.floorPlanConfigs[index]) {\r\n this.floorPlanConfigs.map(config => config.IsSelected = false);\r\n this.floorPlanConfigs[index].IsSelected = true;\r\n }\r\n }\r\n\r\n setCarouselOptionsForConfig(floorPlanImages: FloorPlanImage[]): CarouselOptionsModel {\r\n const carouselOptions = new CarouselOptionsModel(floorPlanImages);\r\n carouselOptions.ShowImageIndex = false;\r\n carouselOptions.ShowModalCta = true;\r\n carouselOptions.ShowImageCaption = false;\r\n carouselOptions.IsFloorPlan = true;\r\n carouselOptions.AspectRatio = 1;\r\n return carouselOptions;\r\n }\r\n\r\n validateSingleImage(floorPlanConfig: FloorPlansConfigurationModel): void {\r\n if (floorPlanConfig.CarouselOptions && floorPlanConfig.CarouselOptions.Images\r\n && floorPlanConfig.CarouselOptions.Images[0] && floorPlanConfig.CarouselOptions.Images[0].Path) {\r\n floorPlanConfig.ValidSingleImage = true;\r\n }\r\n }\r\n\r\n selectFloorPlanImage(activeConfigIndex: number, carouselIndex: number, imageIndex: number): void {\r\n if (this.floorPlanConfigs && this.floorPlanConfigs[activeConfigIndex]\r\n && this.floorPlanCarousels && this.floorPlanCarousels[carouselIndex]) {\r\n this.floorPlanConfigs[activeConfigIndex].ActiveImageIndex = imageIndex;\r\n this.floorPlanCarousels[carouselIndex].selectSlide(imageIndex);\r\n }\r\n }\r\n\r\n setActiveImageSelection(activeSlideId: number): void {\r\n const activeConfig = this.getActiveConfig();\r\n if (activeConfig) {\r\n activeConfig.ActiveImageIndex = activeSlideId;\r\n }\r\n }\r\n\r\n setCarouselIndex(floorPlanConfig: FloorPlansConfigurationModel): void {\r\n floorPlanConfig.CarouselIndex = this.totalCarousels;\r\n this.totalCarousels ++;\r\n }\r\n\r\n getActiveConfig(): FloorPlansConfigurationModel {\r\n const activeConfig: FloorPlansConfigurationModel = this.floorPlanConfigs.find(config => config.IsSelected === true);\r\n return activeConfig;\r\n }\r\n\r\n openFloorPlanModal(activeImageIndex: number): void {\r\n const modalClass = this.hasSummary ? ModalClasses.Summary : '';\r\n const modalRef: NgbModalRef = this.modalService.open(FloorPlanModalComponent,\r\n { windowClass: `${ModalClasses.Full} ${modalClass}`, backdrop: false });\r\n const activeConfig = this.getActiveConfig();\r\n if (activeConfig && activeConfig.CarouselOptions && activeConfig.CarouselOptions.Images[activeImageIndex]) {\r\n modalRef.componentInstance.data = this.data;\r\n modalRef.componentInstance.planId = this.planId;\r\n modalRef.componentInstance.floorPlanConfigs = this.floorPlanConfigs;\r\n modalRef.componentInstance.floorPlanCarousels = this.floorPlanCarousels;\r\n }\r\n }\r\n}\r\n","
\r\n

{{data.Header_Text}}

\r\n
1\" class=\"row d-flex justify-content-start\">\r\n
\r\n
\r\n {{floorPlanConfig.ConfigurationName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{floorPlanImage.FloorPlanType | uppercase}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, takeUntil, concatMap } from 'rxjs/operators';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { PlanGalleryModel } from 'src/app/models/content/plan/plan-gallery.model';\r\nimport { GalleryModalModel } from 'src/app/models/content/media/gallery-modal.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\n\r\n@Component({\r\n selector: 'app-plan-gallery',\r\n templateUrl: './plan-gallery.component.html',\r\n styleUrls: ['./plan-gallery.component.scss']\r\n})\r\nexport class PlanGalleryComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: PlanGalleryModel;\r\n @Input() statusOverlayText: string[];\r\n\r\n plan: Plan;\r\n hasActiveQmi: boolean = false;\r\n galleryModalModel: GalleryModalModel;\r\n\r\n constructor(private communityService: CommunityService,\r\n private route: ActivatedRoute) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n concatMap((planId: string) => {\r\n return this.communityService.getPlanById(planId);\r\n }),\r\n takeUntil(this.unsubscribe$))\r\n .subscribe((plan: Plan) => {\r\n this.plan = plan;\r\n this.statusOverlayText = this.createStatusOverlayText();\r\n });\r\n\r\n this.galleryModalModel = new GalleryModalModel();\r\n this.galleryModalModel.ModalTitle = this.data.Modal_Title;\r\n this.galleryModalModel.ExteriorLabel = this.data.Exterior_Label;\r\n this.galleryModalModel.InteriorLabel = this.data.Interior_Label;\r\n this.galleryModalModel.IsFilterGallery = true;\r\n }\r\n\r\n private createStatusOverlayText() {\r\n if (this.plan && this.data) {\r\n const overlayLabels = [];\r\n if (this.plan.InventoryCount > 0 && this.data.QMI_Availability) {\r\n overlayLabels.push(this.data.QMI_Availability);\r\n }\r\n if (this.plan.ModelExists && this.data.Plan_Model_Open) {\r\n overlayLabels.push(this.data.Plan_Model_Open);\r\n }\r\n if (this.plan.IsNewPlan && this.data.Plan_New_Plan && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_New_Plan);\r\n }\r\n if (this.plan.IsFutureRelease && this.data.Plan_Future_Release && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_Future_Release);\r\n }\r\n if (this.plan.QuickMoveInOnlyFlag && this.data.Plan_QMI_Only && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_QMI_Only);\r\n }\r\n if (this.plan.NewModelFlag && this.data.Plan_New_Model && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_New_Model);\r\n }\r\n if (this.plan.IsSoldOut && this.data.Plan_Sold_Out && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_Sold_Out);\r\n }\r\n if (this.plan.LastHomeDesignFlag && this.data.Plan_Last_Home_Design && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_Last_Home_Design);\r\n }\r\n if (this.plan.LastChanceFlag && this.data.Plan_Last_Chance && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_Last_Chance);\r\n }\r\n if (this.plan.ModelForSaleFlag && this.data.Plan_Model_For_Sale && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_Model_For_Sale);\r\n }\r\n if (this.plan.AlmostSoldOutFlag && this.data.Plan_Almost_Sold_Out && overlayLabels.length < 2) {\r\n overlayLabels.push(this.data.Plan_Almost_Sold_Out);\r\n }\r\n return overlayLabels.length > 0 ? overlayLabels : undefined;\r\n }\r\n return undefined;\r\n }\r\n}\r\n","\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, takeUntil, concatMap } from 'rxjs/operators';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { forkJoin } from 'rxjs';\r\nimport { PlanSummaryModel } from 'src/app/models/content/plan/plan-summary.model';\r\nimport { Location } from '@angular/common';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { HersScoreModalComponent } from '../../shared/modals/hers-score-modal/hers-score-modal.component';\r\nimport { HersScoreService } from 'src/app/core-services/hers-score.service';\r\nimport { HersScoreModel } from 'src/app/models/hers-score-configuration.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { LmpService } from 'src/app/core-services/lmp.service';\r\nimport { LmpConfigurationModel } from 'src/app/models/lmp-configuration.model';\r\nimport { PlanBrochureService } from 'src/app/core-services/plan-brochure.service';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { fadeInOnEnterAnimation, fadeInUpOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-plan-summary',\r\n templateUrl: './plan-summary.component.html',\r\n styleUrls: ['./plan-summary.component.scss'],\r\n animations: [\r\n fadeInUpOnEnterAnimation(),\r\n fadeInOnEnterAnimation({ duration: 600, delay: 1000 })\r\n ]\r\n})\r\nexport class PlanSummaryComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: PlanSummaryModel;\r\n\r\n plan: Plan;\r\n community: Community;\r\n HersScore: HersScoreModel;\r\n lmpConfiguration: LmpConfigurationModel;\r\n\r\n constructor(private communityService: CommunityService,\r\n private modalService: NgbModal,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private hersScoreService: HersScoreService,\r\n private lmpService: LmpService) { super(); }\r\n\r\n ngOnInit() {\r\n\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n concatMap((planId: string) => {\r\n const observables = [this.communityService.getPlanInfoById(planId),\r\n this.hersScoreService.HersScoreitem,\r\n this.lmpService.LmpConfiguration,\r\n this.communityService.community\r\n ];\r\n return forkJoin(observables);\r\n }),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe(([plan, hers, lmp, community]: any[]) => {\r\n var cmsPIOnlyFlag: boolean = false;\r\n var overrideBrandPIOnlyFlag: boolean = false;\r\n var sitecorePIOnlyFlag: boolean = true;\r\n if (community) {\r\n this.community = community;\r\n overrideBrandPIOnlyFlag = community.OverrideBrandDisplayPIOnlyFlag;\r\n cmsPIOnlyFlag = community.DisplayPIOnlyFlag;\r\n }\r\n if (lmp) {\r\n this.lmpConfiguration = lmp;\r\n sitecorePIOnlyFlag = lmp.Display_PI_Only;\r\n }\r\n if (plan) {\r\n this.plan = plan;\r\n this.plan.DisplayPIOnly = overrideBrandPIOnlyFlag ? cmsPIOnlyFlag : sitecorePIOnlyFlag;\r\n }\r\n\r\n if (hers) {\r\n this.HersScore = hers;\r\n }\r\n });\r\n }\r\n\r\n openHersModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(HersScoreModalComponent,\r\n { windowClass: `${ModalClasses.Full} ${ModalClasses.Summary}`, backdrop: false });\r\n modalRef.componentInstance.HersScore = this.HersScore;\r\n modalRef.componentInstance.plan = this.plan;\r\n }\r\n\r\n backButton() {\r\n // Close any active modals on the screen and if there are none, go back.\r\n this.modalService.hasOpenModals() ? this.modalService.dismissAll() : this.location.back();\r\n }\r\n}\r\n","
\r\n
14 ? 'col-auto' : 'col-2'\">\r\n
{{plan.PlanName}}
\r\n
{{data.Series_Name | mergeField: '{series}':plan.SeriesName}}
\r\n
\r\n
\r\n
\r\n
\r\n
{{plan.Price | currency: 'USD':'symbol':'1.0-0'}}
\r\n
{{data.Price}}
\r\n
\r\n
\r\n
{{data.Call_For_Pricing_Text}}
\r\n
\r\n
\r\n
\r\n
{{plan.Bedrooms | range : plan.MaxBedrooms}}
\r\n
{{data.Bedrooms}}
\r\n
\r\n
\r\n
{{plan.MinTotalBaths | range : plan.MaxTotalBaths}}
\r\n
{{data.Bathrooms}}
\r\n
\r\n
\r\n
{{plan.SquareFeet}}+
\r\n
{{data.Square_Feet}}
\r\n
\r\n
\r\n
{{plan.Garages | range : plan.MaxGarages}}
\r\n
{{data.Garage}}
\r\n
\r\n
\r\n
\r\n {{plan.HERSScore}}\r\n \r\n
\r\n
{{HersScore.Hers_Score_CTA_Label}}
\r\n
\r\n
\r\n
\r\n {{plan.MortgagePayment.TotalMonthlyPrincipalAndInterest | currency: 'USD':'symbol':'1.0-0'}} /mo\r\n \r\n
\r\n
{{data.LMP_Starting_From}}
\r\n
\r\n \r\n
\r\n
\r\n {{plan.MortgagePayment.TotalMonthlyPayment | currency: 'USD':'symbol':'1.0-0'}} /mo\r\n \r\n
\r\n
{{data.PitiPriceLabel}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { forkJoin } from 'rxjs';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, takeUntil, concatMap } from 'rxjs/operators';\r\nimport { PlanToursModel } from 'src/app/models/content/plan/plan-tours.model';\r\nimport { NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { PlanVirtualTourModalComponent } from '../../shared/modals/plan-virtual-tour-modal/plan-virtual-tour-modal.component';\r\nimport { VideoModalModel } from 'src/app/models/content/media/video-modal.model';\r\nimport { VideoModalComponent } from '../../shared/modals/video-modal/video-modal.component';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { PagesService } from 'src/app/core-services/pages.service';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-plan-tours',\r\n templateUrl: './plan-tours.component.html',\r\n styleUrls: ['./plan-tours.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800, delay: 400 })\r\n ]\r\n})\r\nexport class PlanToursComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: PlanToursModel;\r\n\r\n plan: Plan;\r\n hasVideos: boolean;\r\n modalClass: string;\r\n hasSummary: boolean;\r\n\r\n constructor(private communityService: CommunityService,\r\n private route: ActivatedRoute,\r\n private modalService: NgbModal,\r\n private pageService: PagesService) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n concatMap((planId: string) => {\r\n const observables = [ this.communityService.getPlanInfoById(planId),\r\n this.pageService.hasSummary ];\r\n return forkJoin(observables);\r\n }),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe(([plan, hasSummary]: any[]) => {\r\n this.plan = plan;\r\n this.hasSummary = hasSummary;\r\n this.modalClass = hasSummary ? ModalClasses.Summary : '';\r\n this.hasVideos = plan && plan.Videos && plan.Videos.length && plan.Videos[0].VideoPath ? true : false;\r\n });\r\n }\r\n\r\n openVirtualTourModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(PlanVirtualTourModalComponent, { backdrop: false,\r\n windowClass: `${ModalClasses.Full} ${this.modalClass}` });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n videoModalModel.ModalHeader = this.data.Virtual_Tour_Modal_Header_Text;\r\n videoModalModel.VirtualTourUrl = this.plan.VirtualTour;\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n\r\n openVideoTourModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(VideoModalComponent, { backdrop: false,\r\n windowClass: `${ModalClasses.Full} ${this.modalClass}` });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n videoModalModel.ModalHeader = this.data.Video_Tour_Modal_Header_Text;\r\n videoModalModel.ModalDescription = this.plan.Videos[0].Caption;\r\n videoModalModel.ModalDescriptionPlacement = this.data.Video_Tour_Modal_Caption_Placement;\r\n videoModalModel.VideoId = this.plan.Videos[0].VideoPath;\r\n videoModalModel.HasSummary = this.hasSummary;\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

{{data.Header_Text}}

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, OnDestroy, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { combineLatest } from 'rxjs';\r\nimport { Series } from 'src/app/models/product/series.model';\r\nimport { NgbNavChangeEvent } from '@ng-bootstrap/ng-bootstrap';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { ProductOverviewHometype, ProductOverviewModel } from 'src/app/models/content/editorial/product-overview.model';\r\nimport { PlanCardModel } from 'src/app/models/content/plan/plan-card.model';\r\nimport { QmiCardModel } from 'src/app/models/content/qmi/qmi-card.model';\r\nimport { takeUntil, withLatestFrom } from 'rxjs/operators';\r\nimport { HersScoreService } from 'src/app/core-services/hers-score.service';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { LmpService } from 'src/app/core-services/lmp.service';\r\nimport { ProductOverviewService } from 'src/app/core-services/product-overview.service';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { ProductFilterService } from 'src/app/core-services/product-filter.service';\r\nimport { fadeInDownOnEnterAnimation, fadeInUpOnEnterAnimation, fadeOutDownOnLeaveAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-product-overview',\r\n templateUrl: './product-overview.component.html',\r\n styleUrls: ['./product-overview.component.scss'],\r\n animations: [\r\n fadeInUpOnEnterAnimation(),\r\n fadeInDownOnEnterAnimation(),\r\n fadeOutDownOnLeaveAnimation()\r\n ]\r\n})\r\nexport class ProductOverviewComponent extends BaseComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n @Input() data: ProductOverviewModel;\r\n\r\n plans: Plan[] = [];\r\n series: Series[] = [];\r\n qmis: QMI[] = [];\r\n\r\n planCardModel: PlanCardModel;\r\n qmiCardModel: QmiCardModel;\r\n\r\n showSeriesOverview: boolean = true;\r\n activeSeriesNav: string;\r\n filteredPlans: Plan[] = [];\r\n filteredQmis: QMI[] = [];\r\n closeFilteredPlans: Plan[] = [];\r\n closeFilteredQmis: QMI[] = [];\r\n selectedSeries: Series;\r\n selectedHomeType: string = ProductOverviewHometype.Homes; // 'Homes'\r\n\r\n private showAdditionalFilters: boolean = false;\r\n\r\n constructor(private communityService: CommunityService,\r\n private productOverviewService: ProductOverviewService,\r\n private hersScoreService: HersScoreService,\r\n private lmpService: LmpService,\r\n private productFilterService: ProductFilterService,\r\n private adobeLaunchService: AdobeLaunchService,\r\n private cdr: ChangeDetectorRef) { super(); }\r\n\r\n ngOnInit() {\r\n var cmsPIOnlyFlag: boolean = false;\r\n var overrideBrandPIOnlyFlag: boolean = false;\r\n var sitecorePIOnlyFlag: boolean = false;\r\n\r\n const observables = [this.communityService.plans,\r\n this.communityService.community,\r\n this.communityService.series,\r\n this.communityService.qmis,\r\n this.hersScoreService.HersScoreitem,\r\n this.lmpService.LmpConfiguration];\r\n\r\n combineLatest(observables)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([plans, community, series, qmis, hers, lmp]: any[]) => {\r\n overrideBrandPIOnlyFlag = community?.OverrideBrandDisplayPIOnlyFlag;\r\n cmsPIOnlyFlag = community?.DisplayPIOnlyFlag;\r\n // Plans\r\n if (plans && plans.length) {\r\n this.planCardModel = this.mapSitecoreLabelsToPlanCard(this.data);\r\n if (lmp) {\r\n this.planCardModel.LmpConfiguration = lmp;\r\n sitecorePIOnlyFlag = lmp.Display_PI_Only;\r\n }\r\n this.plans = this.filteredPlans = plans;\r\n this.plans.map(plan => {\r\n if (plan.Images && plan.Images.length) {\r\n plan.Images = plan.Images.filter(image => image.ImageRank > 0).sort((a, b) => a.ImageRank - b.ImageRank);\r\n }\r\n plan.DisplayPIOnly = overrideBrandPIOnlyFlag ? cmsPIOnlyFlag : sitecorePIOnlyFlag;\r\n });\r\n if (hers) {\r\n this.planCardModel.HersScore = hers;\r\n }\r\n } else {\r\n this.selectedHomeType = ProductOverviewHometype.Qmis;\r\n }\r\n // QMIs\r\n if (qmis && qmis.length) {\r\n this.qmiCardModel = this.mapSitecoreLabelsToQmiCard(this.data);\r\n if (lmp) {\r\n this.qmiCardModel.LmpConfiguration = lmp;\r\n sitecorePIOnlyFlag = lmp.Display_PI_Only;\r\n }\r\n this.qmis = this.filteredQmis = qmis;\r\n this.qmis.map(qmi => {\r\n if (qmi.Images && qmi.Images.length) {\r\n qmi.Images = qmi.Images.filter(image => image.ImageRank > 0).sort((a, b) => a.ImageRank - b.ImageRank);\r\n }\r\n qmi.DisplayPIOnly = overrideBrandPIOnlyFlag ? cmsPIOnlyFlag : sitecorePIOnlyFlag;\r\n });\r\n }\r\n // Component Data\r\n if (this.data.QMI_Default_Toggle) {\r\n this.activeSeriesNav = 'All';\r\n this.selectedHomeType = ProductOverviewHometype.Qmis;\r\n this.showSeriesOverview = false;\r\n }\r\n // Series\r\n if (series) {\r\n this.series = series;\r\n if (!this.series || !this.series.length) {\r\n this.showSeriesOverview = false;\r\n this.activeSeriesNav = 'All';\r\n this.setOverviewParams();\r\n }\r\n }\r\n });\r\n\r\n // Product Overview Service Data Subjects\r\n const productOverviewObs = [this.productOverviewService.selectedHomeType,\r\n this.productOverviewService.seriesID];\r\n combineLatest(productOverviewObs)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([homeType, seriesID]: any[]) => {\r\n if (homeType) {\r\n this.selectedHomeType = homeType;\r\n }\r\n if (seriesID) {\r\n this.goToSeriesDetails(seriesID);\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Product Filter Service Data Subjects\r\n this.productFilterService.closeHomes\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .pipe(withLatestFrom(this.productFilterService.exactHomes))\r\n .subscribe(([closeHomes, exactHomes]: any[]) => {\r\n if (exactHomes) {\r\n if (this.isHomesTypeSelected()) {\r\n this.filteredPlans = exactHomes;\r\n } else {\r\n this.filteredQmis = exactHomes;\r\n }\r\n } else {\r\n this.goToSeriesDetails(this.activeSeriesNav);\r\n this.setOverviewParams();\r\n }\r\n if (closeHomes) {\r\n if (this.isHomesTypeSelected()) {\r\n this.closeFilteredPlans = closeHomes;\r\n } else {\r\n this.closeFilteredQmis = closeHomes;\r\n }\r\n } else {\r\n this.closeFilteredPlans = null;\r\n this.closeFilteredQmis = null;\r\n }\r\n this.pushAdobeLaunchPlanListingEvent();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n filterHomesBySeriesId(seriesId: string): void {\r\n if (seriesId) {\r\n this.activeSeriesNav = seriesId;\r\n if (this.activeSeriesNav === 'All') {\r\n this.selectedSeries = null;\r\n this.filteredPlans = this.plans;\r\n this.filteredQmis = this.qmis;\r\n } else {\r\n this.selectedSeries = this.series.find(x => x.SeriesID === this.activeSeriesNav);\r\n this.filteredPlans = this.plans.filter(x => x.SeriesName === this.selectedSeries.SeriesName);\r\n this.filteredQmis = this.qmis.filter(x => x.Plan.SeriesName === this.selectedSeries.SeriesName);\r\n }\r\n } else {\r\n this.filteredPlans = [];\r\n this.filteredQmis = [];\r\n }\r\n }\r\n\r\n toggleHomeTypeFromNav(event: NgbNavChangeEvent): void {\r\n const selectedHomeType: string = event.nextId;\r\n this.selectedHomeType = selectedHomeType;\r\n }\r\n\r\n toggleHomeTypeFromSwitch(): void {\r\n if (this.isHomesTypeSelected()) {\r\n this.selectedHomeType = ProductOverviewHometype.Qmis;\r\n } else {\r\n this.selectedHomeType = ProductOverviewHometype.Homes;\r\n }\r\n this.setOverviewParams();\r\n }\r\n\r\n isHomesTypeSelected() {\r\n return this.selectedHomeType === ProductOverviewHometype.Homes;\r\n }\r\n\r\n get toggledHomeType(): string {\r\n if (this.isHomesTypeSelected()) {\r\n return ProductOverviewHometype.Qmis;\r\n }\r\n return ProductOverviewHometype.Homes;\r\n }\r\n\r\n goToSeriesDetails(seriesId: string) {\r\n this.showSeriesOverview = false;\r\n this.filterHomesBySeriesId(seriesId);\r\n }\r\n\r\n // Trackby function for Plan and QMI cards rendered within ngFor loops in the template\r\n // to allow Angular to track which cards specifically are being added or removed from\r\n // both \"exact\" and \"close\" matched filter arrays. Was needed to allow the cards to hook into\r\n // their OnChange methods for analytics purposes. This also has the added benefit of\r\n // being a performance enhancement for the various ngFor loops we're doing in the DOM.\r\n // https://jinalshah999.medium.com/trackby-with-ngfor-directives-in-angular-application-bd4d0db288eb\r\n cardTrackBy(item) {\r\n return item.id;\r\n }\r\n\r\n private mapSitecoreLabelsToPlanCard(sitecoreLabels: ProductOverviewModel): PlanCardModel {\r\n const planCardModel = new PlanCardModel();\r\n if (sitecoreLabels) {\r\n planCardModel.Series_Name = sitecoreLabels.Series_Name;\r\n planCardModel.Price = sitecoreLabels.Plan_Price;\r\n planCardModel.Bedrooms = sitecoreLabels.Plan_Bedrooms;\r\n planCardModel.Bathrooms = sitecoreLabels.Plan_Bathrooms;\r\n planCardModel.Garage = sitecoreLabels.Plan_Garage;\r\n planCardModel.Square_Feet = sitecoreLabels.Plan_Square_Feet;\r\n planCardModel.CTA_Page_Item_Ref = sitecoreLabels.Plan_CTA_Page_Item_Ref;\r\n planCardModel.CTA_Detail = sitecoreLabels.Plan_CTA_Detail;\r\n planCardModel.LMP_Starting_From = sitecoreLabels.Plan_LMP_Starting_From;\r\n planCardModel.PITI_Price_Label = sitecoreLabels.PlanPitiPriceLabel;\r\n planCardModel.QMI_Availability = sitecoreLabels.QMI_Availability;\r\n planCardModel.QMI_Only = sitecoreLabels.Plan_QMI_Only;\r\n planCardModel.Almost_Sold_Out = sitecoreLabels.Plan_Almost_Sold_Out;\r\n planCardModel.Future_Release = sitecoreLabels.Plan_Future_Release;\r\n planCardModel.Last_Chance = sitecoreLabels.Plan_Last_Chance;\r\n planCardModel.Last_Home_Design = sitecoreLabels.Plan_Last_Home_Design;\r\n planCardModel.Model_For_Sale = sitecoreLabels.Plan_Model_For_Sale;\r\n planCardModel.Model_Open = sitecoreLabels.Plan_Model_Open;\r\n planCardModel.New_Model = sitecoreLabels.Plan_New_Model;\r\n planCardModel.New_Plan = sitecoreLabels.Plan_New_Plan;\r\n planCardModel.Sold_Out = sitecoreLabels.Plan_Sold_Out;\r\n planCardModel.Call_For_Pricing_Text = sitecoreLabels.Call_For_Pricing_Text;\r\n }\r\n return planCardModel;\r\n }\r\n\r\n private mapSitecoreLabelsToQmiCard(sitecoreLabels: ProductOverviewModel): QmiCardModel {\r\n const qmiCardModel = new QmiCardModel();\r\n if (sitecoreLabels) {\r\n qmiCardModel.Series_Name = sitecoreLabels.Series_Name;\r\n qmiCardModel.Price = sitecoreLabels.QMI_Price;\r\n qmiCardModel.Bedrooms = sitecoreLabels.QMI_Bedrooms;\r\n qmiCardModel.Bathrooms = sitecoreLabels.QMI_Bathrooms;\r\n qmiCardModel.Garage = sitecoreLabels.QMI_Garage;\r\n qmiCardModel.Square_Feet = sitecoreLabels.QMI_Square_Feet;\r\n qmiCardModel.Lot = sitecoreLabels.QMI_Lot;\r\n qmiCardModel.QMI_CTA_Page_Item_Ref = sitecoreLabels.QMI_CTA_Page_Item_Ref;\r\n qmiCardModel.QMI_CTA_Text = sitecoreLabels.QMI_CTA_Detail;\r\n qmiCardModel.Price_Discount = sitecoreLabels.QMI_Price_Discount;\r\n qmiCardModel.Availability_Date = sitecoreLabels.QMI_Availability_Date;\r\n qmiCardModel.Call_For_Pricing_Text = sitecoreLabels.Call_For_Pricing_Text;\r\n qmiCardModel.LMPStartingFrom = sitecoreLabels.QMILMPStartingFrom;\r\n qmiCardModel.PITIPriceLabel = sitecoreLabels.QMIPitiPriceLabel;\r\n }\r\n\r\n return qmiCardModel;\r\n }\r\n\r\n private setOverviewParams() {\r\n this.productOverviewService.updateSelectedHomeType(this.selectedHomeType);\r\n this.productOverviewService.updateSeriesID(this.activeSeriesNav);\r\n }\r\n\r\n // Adobe Launch Listing Analytics\r\n private pushAdobeLaunchPlanListingEvent() {\r\n if (this.isHomesTypeSelected()) {\r\n const plans = this.filteredPlans.concat(this.closeFilteredPlans);\r\n if (plans && plans.length) {\r\n this.adobeLaunchService.pushPlanListingDisplayedEvent(plans);\r\n }\r\n } else {\r\n const qmis = this.filteredQmis.concat(this.closeFilteredQmis);\r\n if (qmis && qmis.length) {\r\n this.adobeLaunchService.pushQMIListingDisplayedEvent(qmis);\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n

{{data.No_Plans_Available}}

\r\n
\r\n
\r\n

{{data.No_QMIs_Available}}

\r\n
\r\n\r\n
0\"\r\n class=\"ProductOverview__card row mb-3\">\r\n \r\n \r\n
\r\n\r\n
0 && data.Filter_Close_Matches\"\r\n class=\"ProductOverview__card row mb-3\"\r\n [ngClass]=\"{'d-none': !isHomesTypeSelected()}\">\r\n
\r\n
\r\n \r\n {{ data.Filter_Close_Matches }}\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
0\"\r\n class=\"ProductOverview__card row mb-3\">\r\n \r\n \r\n
\r\n\r\n
0 && data.Filter_Close_Matches\"\r\n class=\"ProductOverview__card row mb-3\"\r\n [ngClass]=\"{'d-none': isHomesTypeSelected()}\">\r\n
\r\n
\r\n \r\n {{ data.Filter_Close_Matches }}\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, OnChanges } from '@angular/core';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { QmiCardModel } from 'src/app/models/content/qmi/qmi-card.model';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { setTrimUrl } from 'src/helper-functions/sitecore-api-url-helper';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { QMIDiscountOption } from 'src/app/models/enums/qmi-discount-option-enum';\r\n\r\n@Component({\r\n selector: 'app-qmi-card',\r\n templateUrl: './qmi-card.component.html',\r\n styleUrls: ['./qmi-card.component.scss']\r\n})\r\nexport class QmiCardComponent implements OnInit, OnChanges {\r\n\r\n @Input() data: QmiCardModel;\r\n @Input() qmi: QMI;\r\n\r\n trimmedUrl: string = setTrimUrl(this.router);\r\n\r\n showSavingsFlag: boolean;\r\n showWasPrice: boolean;\r\n priceHasColor: boolean;\r\n price: number;\r\n\r\n constructor(private router: Router, private modalService: NgbModal, private adobeLaunchService: AdobeLaunchService) { }\r\n\r\n ngOnInit() {\r\n if (this.qmi) {\r\n this.showSavingsFlag = \r\n this.showWasPrice = \r\n this.priceHasColor = this.qmi.PriceDiscount && this.qmi.DisplayDiscountOption == QMIDiscountOption.ApplyDiscountAndShowDetails;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n this.price = this.qmi.PriceDiscount && this.qmi.DisplayDiscountOption != QMIDiscountOption.DoNotApplyDiscount ? this.qmi.FinalPrice : this.qmi.Price;\r\n }\r\n\r\n closeModals(): void {\r\n if (this.modalService.hasOpenModals) {\r\n this.modalService.dismissAll();\r\n }\r\n }\r\n\r\n handleQmiClicked(qmi: QMI) {\r\n if (qmi) {\r\n this.closeModals();\r\n this.adobeLaunchService.pushQMIListingClickedEvent(qmi);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n {{data.Price_Discount | mergeField: '{pricediscount}': [qmi.PriceDiscount | currency: 'USD':'symbol':'1.0-0']}}\r\n
\r\n \r\n
\r\n\r\n

{{qmi.Plan.PlanName}}

\r\n
\r\n
\r\n {{data.Series | mergeField: '{series}': qmi.Plan.SeriesName}}\r\n
\r\n
\r\n {{qmi.Address.Street1}}\r\n
\r\n , {{data.Lot | mergeField: '{lot}': qmi.LotBlock}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{qmi.Price | currency: 'USD':'symbol':'1.0-0'}}
\r\n
{{price | currency:\r\n 'USD':'symbol':'1.0-0'}}\r\n
\r\n
\r\n
{{data.Price}}
\r\n
\r\n
\r\n

{{data.Call_For_Pricing_Text}}

\r\n
\r\n
\r\n
\r\n
\r\n
{{qmi.DateAvailable}}
\r\n
{{data.Availability_Date}}
\r\n
\r\n
\r\n
{{qmi.Bedrooms}}
\r\n
{{data.Bedrooms}}
\r\n
\r\n
\r\n
{{qmi.Bathrooms}}
\r\n
{{data.Bathrooms}}
\r\n
\r\n
\r\n
\r\n
\r\n
{{qmi.Garages}}
\r\n
{{data.Garage}}
\r\n
\r\n
\r\n
{{qmi.SquareFeet}}
\r\n
{{data.Square_Feet}}
\r\n
\r\n
\r\n
\r\n {{qmi.MortgagePayment.TotalMonthlyPrincipalAndInterest | currency: 'USD':'symbol':'1.0-0'}} /mo\r\n \r\n
\r\n
\r\n
{{data.LMPStartingFrom}}
\r\n
\r\n \r\n
\r\n
\r\n {{qmi.MortgagePayment.TotalMonthlyPayment | currency: 'USD':'symbol':'1.0-0'}} /mo\r\n \r\n
\r\n
\r\n
{{data.PITIPriceLabel}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { QmiDescriptionModel } from 'src/app/models/content/qmi/qmi-description.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-qmi-description',\r\n templateUrl: './qmi-description.component.html',\r\n styleUrls: ['./qmi-description.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800 })\r\n ]\r\n})\r\nexport class QmiDescriptionComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: QmiDescriptionModel;\r\n\r\n qmi$: Observable;\r\n\r\n constructor(private communityService: CommunityService,\r\n private route: ActivatedRoute) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((inventoryHomeId: string) => {\r\n this.qmi$ = this.communityService.getQmiById(inventoryHomeId);\r\n });\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
{{data.Header_Text}}
\r\n
\r\n {{data.Series_Label | mergeField: '{series}':qmi.Plan.SeriesName}}\r\n
\r\n
\r\n {{qmi.InventoryDescription ? qmi.InventoryDescription : qmi.PlanDescription}}\r\n
\r\n
\r\n
\r\n
\r\n {{sellingPoint}}\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { Observable } from 'rxjs';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { QmiGalleryModel } from 'src/app/models/content/qmi/qmi-gallery.model';\r\nimport { GalleryModalModel } from 'src/app/models/content/media/gallery-modal.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\n\r\n@Component({\r\n selector: 'app-qmi-gallery',\r\n templateUrl: './qmi-gallery.component.html',\r\n styleUrls: ['./qmi-gallery.component.scss']\r\n})\r\nexport class QmiGalleryComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: QmiGalleryModel;\r\n\r\n qmi$: Observable;\r\n galleryModalModel: GalleryModalModel;\r\n\r\n constructor(private communityService: CommunityService,\r\n private route: ActivatedRoute) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((inventoryHomeId: string) => {\r\n this.qmi$ = this.communityService.getQmiById(inventoryHomeId);\r\n });\r\n\r\n this.galleryModalModel = new GalleryModalModel();\r\n this.galleryModalModel.ModalTitle = this.data.Modal_Title;\r\n this.galleryModalModel.ExteriorLabel = this.data.Exterior_Label;\r\n this.galleryModalModel.InteriorLabel = this.data.Interior_Label;\r\n this.galleryModalModel.IsFilterGallery = true;\r\n }\r\n\r\n}\r\n","\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { QmiLocationModel } from 'src/app/models/content/qmi/qmi-location.model';\r\nimport { Observable } from 'rxjs';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-qmi-location',\r\n templateUrl: './qmi-location.component.html',\r\n styleUrls: ['./qmi-location.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800, delay: 750 })\r\n ]\r\n})\r\nexport class QmiLocationComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: QmiLocationModel;\r\n qmi$: Observable;\r\n\r\n constructor(private communityService: CommunityService, private route: ActivatedRoute) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((qmiId: string) => {\r\n this.qmi$ = this.communityService.getQmiById(qmiId);\r\n });\r\n }\r\n}\r\n","
\r\n

{{data.Header_Text}}

\r\n
\r\n {{qmi.Address.Street1}} {{qmi.Address.Street2}}\r\n
\r\n {{qmi.Address.City}}, {{qmi.Address.State}} {{qmi.Address.ZipCode}}\r\n
\r\n \r\n {{data.Homesite_CTA_Text}}\r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { Observable } from 'rxjs';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { QmiSummaryModel } from 'src/app/models/content/qmi/qmi-summary.model';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Location } from '@angular/common';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { fadeInUpOnEnterAnimation, fadeInOnEnterAnimation } from 'angular-animations';\r\nimport { LmpService } from 'src/app/core-services/lmp.service';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { LmpConfigurationModel } from 'src/app/models/lmp-configuration.model';\r\n\r\n@Component({\r\n selector: 'app-qmi-summary',\r\n templateUrl: './qmi-summary.component.html',\r\n styleUrls: ['./qmi-summary.component.scss'],\r\n animations: [\r\n fadeInUpOnEnterAnimation(),\r\n fadeInOnEnterAnimation({ duration: 600, delay: 1000 })\r\n ]\r\n})\r\nexport class QmiSummaryComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: QmiSummaryModel;\r\n\r\n qmi$: Observable;\r\n community: Community;\r\n lmpConfiguration: LmpConfigurationModel;\r\n\r\n constructor(private communityService: CommunityService,\r\n private modalService: NgbModal,\r\n private route: ActivatedRoute,\r\n private location: Location,\r\n private lmpService: LmpService) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((inventoryHomeId: string) => {\r\n this.qmi$ = this.communityService.getQmiById(inventoryHomeId);\r\n });\r\n\r\n var cmsPIOnlyFlag: boolean = false;\r\n var overrideBrandPIOnlyFlag: boolean = false;\r\n var sitecorePIOnlyFlag: boolean = false;\r\n\r\n this.communityService.community.subscribe((community: Community) => {\r\n overrideBrandPIOnlyFlag = community.OverrideBrandDisplayPIOnlyFlag;\r\n cmsPIOnlyFlag = community.DisplayPIOnlyFlag;\r\n });\r\n\r\n this.lmpService.LmpConfiguration.subscribe((lmp: LmpConfigurationModel) => {\r\n sitecorePIOnlyFlag = lmp.Display_PI_Only;\r\n this.lmpConfiguration = lmp;\r\n });\r\n\r\n this.qmi$.subscribe((qmi: QMI) => {\r\n qmi.DisplayPIOnly = overrideBrandPIOnlyFlag ? cmsPIOnlyFlag : sitecorePIOnlyFlag;\r\n })\r\n }\r\n\r\n backButton() {\r\n // Close any active modals on the screen and if there are none, go back.\r\n this.modalService.hasOpenModals() ? this.modalService.dismissAll() : this.location.back();\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
10 ? 'QmiSummary__small-plan-name': 'QmiSummary__planName'\">\r\n {{qmi.PlanName}}\r\n
\r\n
{{data.Series_Name | mergeField:\r\n '{series}':qmi.Plan.SeriesName}}
\r\n
\r\n
\r\n
{{qmi.Address.Street1}}
\r\n
Lot {{qmi.LotBlock}}
\r\n
\r\n
\r\n
\r\n
{{qmi.DateAvailable}}
\r\n
{{data.Availability}}
\r\n
\r\n
\r\n
\r\n
\r\n {{(qmi.PriceDiscount ? qmi.FinalPrice : qmi.Price) | currency: 'USD':'symbol':'1.0-0'}}\r\n
\r\n
{{data.Price}}
\r\n
\r\n
\r\n
{{data.Call_For_Pricing_Text}}
\r\n
\r\n
\r\n
\r\n
{{qmi.Bedrooms}}
\r\n
{{data.Bedrooms}}
\r\n
\r\n
\r\n
{{qmi.TotalBaths}}
\r\n
{{data.Bathrooms}}
\r\n
\r\n
\r\n
{{qmi.SquareFeet}}
\r\n
{{data.Square_Feet}}
\r\n
\r\n
\r\n
{{qmi.Garages}}
\r\n
{{data.Garage}}
\r\n
\r\n \r\n
\r\n {{qmi.MortgagePayment.TotalMonthlyPrincipalAndInterest | currency: 'USD':'symbol':'1.0-0'}} /mo\r\n \r\n
\r\n
{{data.LMPStartingFrom}}
\r\n
\r\n \r\n \r\n
\r\n {{qmi.MortgagePayment.TotalMonthlyPayment | currency: 'USD':'symbol':'1.0-0'}} /mo\r\n \r\n
\r\n
{{data.PitiPriceLabel}}
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { QmiTourModel } from 'src/app/models/content/qmi/qmi-tour.model';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { combineLatest } from 'rxjs';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { map, concatMap, takeUntil } from 'rxjs/operators';\r\nimport { VideoModalModel } from 'src/app/models/content/media/video-modal.model';\r\nimport { PlanVirtualTourModalComponent } from '../../shared/modals/plan-virtual-tour-modal/plan-virtual-tour-modal.component';\r\nimport { VideoModalComponent } from '../../shared/modals/video-modal/video-modal.component';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { PagesService } from 'src/app/core-services/pages.service';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-qmi-tour',\r\n templateUrl: './qmi-tour.component.html',\r\n styleUrls: ['./qmi-tour.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation({ duration: 800, delay: 400 })\r\n ]\r\n})\r\nexport class QmiTourComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: QmiTourModel;\r\n\r\n qmi: QMI;\r\n hasVideos: boolean;\r\n modalClass: string;\r\n hasSummary: boolean;\r\n\r\n constructor(private communityService: CommunityService,\r\n private route: ActivatedRoute,\r\n private modalService: NgbModal,\r\n private pageService: PagesService) { super(); }\r\n\r\n ngOnInit() {\r\n this.route.params.pipe(\r\n map(routeParam => routeParam.id),\r\n concatMap((qmiId: string) => {\r\n const observables = [ this.communityService.getQmiById(qmiId),\r\n this.pageService.hasSummary ];\r\n return combineLatest(observables);\r\n }),\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe(([qmi, hasSummary]: any[]) => {\r\n this.qmi = qmi;\r\n this.hasSummary = hasSummary;\r\n this.modalClass = hasSummary ? ModalClasses.Summary : '';\r\n this.hasVideos = !!(qmi && qmi.Videos && qmi.Videos.length && qmi.Videos[0].VideoPath);\r\n });\r\n }\r\n\r\n openVirtualTourModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(PlanVirtualTourModalComponent, { backdrop: false,\r\n windowClass: `${ModalClasses.Full} ${this.modalClass}` });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n if (this.data.Virtual_Tour_Modal_Header_Text) {\r\n videoModalModel.ModalHeader = this.data.Virtual_Tour_Modal_Header_Text;\r\n }\r\n if (this.qmi.VirtualTour) {\r\n videoModalModel.VirtualTourUrl = this.qmi.VirtualTour;\r\n }\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n\r\n openVideoTourModal(): void {\r\n const modalRef: NgbModalRef = this.modalService.open(VideoModalComponent, { backdrop: false,\r\n windowClass: `${ModalClasses.Full} ${this.modalClass}` });\r\n const videoModalModel: VideoModalModel = new VideoModalModel();\r\n if (this.data.Video_Tour_Modal_Header_Text) {\r\n videoModalModel.ModalHeader = this.data.Video_Tour_Modal_Header_Text;\r\n }\r\n if (this.hasVideos) {\r\n videoModalModel.VideoId = this.qmi.Videos[0].VideoPath;\r\n\r\n if (this.qmi.Videos[0].Caption) {\r\n videoModalModel.ModalDescription = this.qmi.Videos[0].Caption;\r\n }\r\n }\r\n if (this.hasSummary) {\r\n videoModalModel.HasSummary = this.hasSummary;\r\n }\r\n if (this.data.Video_Tour_Modal_Caption_Placement) {\r\n videoModalModel.ModalDescriptionPlacement = this.data.Video_Tour_Modal_Caption_Placement;\r\n }\r\n modalRef.componentInstance.videoModalModel = videoModalModel;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

{{data.Header_Text}}

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Series } from 'src/app/models/product/series.model';\r\nimport { ProductOverviewModel } from 'src/app/models/content/editorial/product-overview.model';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-plan-card-series',\r\n templateUrl: './series-card.component.html',\r\n styleUrls: ['./series-card.component.scss']\r\n})\r\nexport class SeriesCardComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() series: Series;\r\n @Input() data: ProductOverviewModel;\r\n @Output() seriesSelected: EventEmitter = new EventEmitter();\r\n\r\n private plans: Plan[];\r\n public startingPrice: number;\r\n\r\n constructor(private communityService: CommunityService) { super(); }\r\n\r\n ngOnInit() {\r\n this.communityService.plans\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((plans: Plan[]) => {\r\n if (plans && plans.length) {\r\n this.plans = plans.filter(p => p.SeriesName === this.series.SeriesName);\r\n this.startingPrice = this.getStartingPrice(this.plans);\r\n }\r\n });\r\n }\r\n\r\n onButtonClick(seriesId: number): void {\r\n this.seriesSelected.next(seriesId);\r\n }\r\n\r\n // Getting lowest home price from plans data since we don't explitcly set a Series starting price yet.\r\n getStartingPrice(plans: Plan[]): number {\r\n if (plans && plans.length) {\r\n const cheapestPlan: Plan = plans.reduce((prev, curr) => prev.Price < curr.Price ? prev : curr);\r\n if (cheapestPlan) {\r\n return cheapestPlan.Price;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n

{{data.Series_Name | mergeField: '{series}':series.SeriesName}}

\r\n
\r\n
\r\n {{series.SeriesDescription}}\r\n
\r\n
\r\n
\r\n {{startingPrice | currency: \"USD\":\"symbol\":\"1.0-0\" }}\r\n
\r\n
\r\n
{{data.Series_Price}}
\r\n
\r\n
\r\n
{{series.MinBedrooms | range: series.MaxBedrooms}}
\r\n
{{data.Series_Bedrooms}}
\r\n
\r\n
\r\n
{{series.MinBathrooms | range: series.MaxBathrooms}}
\r\n
{{data.Series_Bathrooms}}
\r\n
\r\n
\r\n
{{series.MinGarages | range: series.MaxGarages}}
\r\n
{{data.Series_Garage}}
\r\n
\r\n
\r\n
{{series.MinSquareFeet | range: series.MaxSquareFeet}}
\r\n
{{data.Series_Square_Feet}}
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { VRTourPlanModel } from 'src/app/models/content/editorial/vr-tour-plan.model';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { PlanCardModel } from 'src/app/models/content/plan/plan-card.model';\r\nimport { combineLatest } from 'rxjs';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { HersScoreService } from 'src/app/core-services/hers-score.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../shared/base/base.component';\r\nimport { LmpService } from 'src/app/core-services/lmp.service';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { fadeInUpOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-vr-tour-plan',\r\n templateUrl: './vr-tour-plan.component.html',\r\n styleUrls: ['./vr-tour-plan.component.scss'],\r\n animations: [\r\n fadeInUpOnEnterAnimation()\r\n ]\r\n})\r\nexport class VRTourPlanComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: VRTourPlanModel;\r\n\r\n plans: Plan[] = [];\r\n\r\n planCardModel: PlanCardModel;\r\n\r\n constructor(private communityService: CommunityService,\r\n private hersScoreService: HersScoreService,\r\n private lmpService: LmpService,\r\n private adobeLaunchService: AdobeLaunchService) { super(); }\r\n\r\n ngOnInit() {\r\n const observables = [this.communityService.plans,\r\n this.hersScoreService.HersScoreitem,\r\n this.lmpService.LmpConfiguration];\r\n combineLatest(observables)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([plans, hers, lmp]: any[]) => {\r\n if (plans) {\r\n this.plans = plans.filter(plan => plan.VirtualTour || (plan.Videos && plan.Videos.length && plan.Videos[0].VideoPath));\r\n this.plans.map(plan => {\r\n if (plan.Images && plan.Images.length) {\r\n plan.Images = plan.Images.filter(image => image.ImageRank > 0).sort((a, b) => a.ImageRank - b.ImageRank);\r\n }\r\n });\r\n this.planCardModel = this.mapSitecoreLabelsToPlanCard(this.data);\r\n if (hers) {\r\n this.planCardModel.HersScore = hers;\r\n }\r\n if (lmp) {\r\n this.planCardModel.LmpConfiguration = lmp;\r\n }\r\n this.pushAdobeLaunchPlanListingEvent();\r\n }\r\n });\r\n }\r\n\r\n private mapSitecoreLabelsToPlanCard(sitecoreLabels: VRTourPlanModel): PlanCardModel {\r\n const planCardModel = new PlanCardModel();\r\n if (sitecoreLabels) {\r\n planCardModel.Series_Name = sitecoreLabels.Series_Label;\r\n planCardModel.Price = sitecoreLabels.Price;\r\n planCardModel.Bedrooms = sitecoreLabels.Bedrooms;\r\n planCardModel.Bathrooms = sitecoreLabels.Bathrooms;\r\n planCardModel.Garage = sitecoreLabels.Garage;\r\n planCardModel.Square_Feet = sitecoreLabels.Square_Feet;\r\n planCardModel.CTA_Page_Item_Ref = sitecoreLabels.CTA_Page_Item_Ref;\r\n planCardModel.CTA_Detail = sitecoreLabels.View_Home_Label;\r\n planCardModel.LMP_Starting_From = sitecoreLabels.LMP_Starting_From;\r\n planCardModel.Virtual_Tour_CTA_Text = sitecoreLabels.Virtual_Tour_CTA_Text;\r\n planCardModel.Virtual_Tour_CTA_Icon = sitecoreLabels.Virtual_Tour_CTA_Icon;\r\n planCardModel.Virtual_Tour_CTA_Style = sitecoreLabels.Virtual_Tour_CTA_Style;\r\n planCardModel.Virtual_Tour_Modal_Header_Text = sitecoreLabels.Virtual_Tour_Modal_Header_Text;\r\n planCardModel.Video_Tour_CTA_Text = sitecoreLabels.Video_Tour_CTA_Text;\r\n planCardModel.Video_Tour_CTA_Icon = sitecoreLabels.Video_Tour_CTA_Icon;\r\n planCardModel.Video_Tour_CTA_Style = sitecoreLabels.Video_Tour_CTA_Style;\r\n planCardModel.Video_Tour_Modal_Header_Text = sitecoreLabels.Video_Tour_Modal_Header_Text;\r\n planCardModel.Video_Tour_Modal_Caption_Placement = sitecoreLabels.Video_Tour_Modal_Caption_Placement;\r\n }\r\n return planCardModel;\r\n }\r\n\r\n // Adobe Launch Listing Analytics\r\n private pushAdobeLaunchPlanListingEvent() {\r\n if (this.plans && this.plans.length) {\r\n this.adobeLaunchService.pushPlanListingDisplayedEvent(this.plans);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { OnInit, OnDestroy, Directive } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive()\r\nexport class BaseComponent implements OnDestroy {\r\n\r\n constructor() { }\r\n\r\n unsubscribe$ = new Subject();\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDigitsOnly]',\r\n})\r\nexport class DigitsOnlyDirective implements OnChanges {\r\n private hasDecimalPoint = false;\r\n private navigationKeys = [\r\n 'Backspace',\r\n 'Delete',\r\n 'Tab',\r\n 'Escape',\r\n 'Enter',\r\n 'Home',\r\n 'End',\r\n 'ArrowLeft',\r\n 'ArrowRight',\r\n 'Clear',\r\n 'Copy',\r\n 'Paste',\r\n ];\r\n\r\n @Input() decimal = false;\r\n @Input() decimalSeparator = '.';\r\n @Input() min = -Infinity;\r\n @Input() max = Infinity;\r\n @Input() pattern?: string | RegExp;\r\n private regex: RegExp;\r\n inputElement: HTMLInputElement;\r\n\r\n constructor(public el: ElementRef) {\r\n this.inputElement = el.nativeElement;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.pattern) {\r\n this.regex = this.pattern ? RegExp(this.pattern) : null;\r\n }\r\n\r\n if (changes.min) {\r\n const maybeMin = Number(this.min);\r\n this.min = isNaN(maybeMin) ? -Infinity : maybeMin;\r\n }\r\n\r\n if (changes.max) {\r\n const maybeMax = Number(this.max);\r\n this.max = isNaN(maybeMax) ? Infinity : maybeMax;\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(e: KeyboardEvent): any {\r\n if (\r\n this.navigationKeys.indexOf(e.key) > -1 || // Allow: navigation keys: backspace, delete, arrows etc.\r\n ((e.key === 'a' || e.code === 'KeyA') && e.ctrlKey === true) || // Allow: Ctrl+A\r\n ((e.key === 'c' || e.code === 'KeyC') && e.ctrlKey === true) || // Allow: Ctrl+C\r\n ((e.key === 'v' || e.code === 'KeyV') && e.ctrlKey === true) || // Allow: Ctrl+V\r\n ((e.key === 'x' || e.code === 'KeyX') && e.ctrlKey === true) || // Allow: Ctrl+X\r\n ((e.key === 'a' || e.code === 'KeyA') && e.metaKey === true) || // Allow: Cmd+A (Mac)\r\n ((e.key === 'c' || e.code === 'KeyC') && e.metaKey === true) || // Allow: Cmd+C (Mac)\r\n ((e.key === 'v' || e.code === 'KeyV') && e.metaKey === true) || // Allow: Cmd+V (Mac)\r\n ((e.key === 'x' || e.code === 'KeyX') && e.metaKey === true) // Allow: Cmd+X (Mac)\r\n ) {\r\n // let it happen, don't do anything\r\n return;\r\n }\r\n\r\n let newValue = '';\r\n\r\n if (this.decimal && e.key === this.decimalSeparator) {\r\n newValue = this.forecastValue(e.key);\r\n if (newValue.split(this.decimalSeparator).length > 2) {\r\n // has two or more decimal points\r\n e.preventDefault();\r\n return;\r\n } else {\r\n this.hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\r\n return; // Allow: only one decimal point\r\n }\r\n }\r\n\r\n // Ensure that it is a number and stop the keypress\r\n if (e.key === ' ' || isNaN(Number(e.key))) {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n newValue = newValue || this.forecastValue(e.key);\r\n // check the input pattern RegExp\r\n if (this.regex) {\r\n if (!this.regex.test(newValue)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n const newNumber = Number(newValue);\r\n if (newNumber > this.max || newNumber < this.min) {\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: any): void {\r\n let pastedInput: string;\r\n // tslint:disable-next-line: no-string-literal\r\n if (window['clipboardData']) {\r\n // Browser is IE\r\n // tslint:disable-next-line: no-string-literal\r\n pastedInput = window['clipboardData'].getData('text');\r\n } else if (event.clipboardData && event.clipboardData.getData) {\r\n // Other browsers\r\n pastedInput = event.clipboardData.getData('text/plain');\r\n }\r\n\r\n this.pasteData(pastedInput);\r\n event.preventDefault();\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n onDrop(event: DragEvent): void {\r\n const textData = event.dataTransfer.getData('text');\r\n this.inputElement.focus();\r\n this.pasteData(textData);\r\n event.preventDefault();\r\n }\r\n\r\n private pasteData(pastedContent: string): void {\r\n const sanitizedContent = this.sanitizeInput(pastedContent);\r\n const pasted = document.execCommand('insertText', false, sanitizedContent);\r\n if (!pasted) {\r\n if (this.inputElement.setRangeText) {\r\n const { selectionStart: start, selectionEnd: end } = this.inputElement;\r\n this.inputElement.setRangeText(sanitizedContent, start, end, 'end');\r\n } else {\r\n // Browser does not support setRangeText, e.g. IE\r\n this.insertAtCursor(this.inputElement, sanitizedContent);\r\n }\r\n }\r\n if (this.decimal) {\r\n this.hasDecimalPoint =\r\n this.inputElement.value.indexOf(this.decimalSeparator) > -1;\r\n }\r\n }\r\n\r\n // The following 2 methods were added from the below article for browsers that do not support setRangeText\r\n // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\r\n private insertAtCursor(myField: HTMLInputElement, myValue: string): void {\r\n const startPos = myField.selectionStart;\r\n const endPos = myField.selectionEnd;\r\n\r\n myField.value =\r\n myField.value.substring(0, startPos) +\r\n myValue +\r\n myField.value.substring(endPos, myField.value.length);\r\n\r\n const pos = startPos + myValue.length;\r\n myField.focus();\r\n myField.setSelectionRange(pos, pos);\r\n\r\n this.triggerEvent(myField, 'input');\r\n }\r\n\r\n private triggerEvent(el: HTMLInputElement, type: string): void {\r\n if ('createEvent' in document) {\r\n // modern browsers, IE9+\r\n const e = document.createEvent('HTMLEvents');\r\n e.initEvent(type, false, true);\r\n el.dispatchEvent(e);\r\n }\r\n }\r\n // end stack overflow code\r\n\r\n private sanitizeInput(input: string): string {\r\n let result = '';\r\n if (this.decimal && this.isValidDecimal(input)) {\r\n const regex = new RegExp(`[^0-9${this.decimalSeparator}]`, 'g');\r\n result = input.replace(regex, '');\r\n } else {\r\n result = input.replace(/[^0-9]/g, '');\r\n }\r\n\r\n const maxLength = this.inputElement.maxLength;\r\n if (maxLength > 0) {\r\n // the input element has maxLength limit\r\n const allowedLength = maxLength - this.inputElement.value.length;\r\n result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\r\n }\r\n return result;\r\n }\r\n\r\n private isValidDecimal(stringValue: string): boolean {\r\n if (!this.hasDecimalPoint) {\r\n return stringValue.split(this.decimalSeparator).length <= 2;\r\n } else {\r\n // the input element already has a decimal separator\r\n const selectedText = this.getSelection();\r\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\r\n return stringValue.split(this.decimalSeparator).length <= 2;\r\n } else {\r\n return stringValue.indexOf(this.decimalSeparator) < 0;\r\n }\r\n }\r\n }\r\n\r\n private getSelection(): string {\r\n return this.inputElement.value.substring(\r\n this.inputElement.selectionStart,\r\n this.inputElement.selectionEnd\r\n );\r\n }\r\n\r\n private forecastValue(key: string): string {\r\n const selectionStart = this.inputElement.selectionStart;\r\n const selectionEnd = this.inputElement.selectionEnd;\r\n const oldValue = this.inputElement.value;\r\n const selection = oldValue.substring(selectionStart, selectionEnd);\r\n return selection\r\n ? oldValue.replace(selection, key)\r\n : oldValue.substring(0, selectionStart) +\r\n key +\r\n oldValue.substring(selectionStart);\r\n }\r\n}\r\n","import { Validator, NG_VALIDATORS, FormControl } from '@angular/forms';\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appEmailValid]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: EmailValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class EmailValidatorDirective implements Validator {\r\n\r\n constructor() { }\r\n\r\n validate(control: FormControl) {\r\n\r\n const value = control.value;\r\n let emailMatch: string;\r\n\r\n if (value) {\r\n // email Regex pattern enforces standard email format (@ and domain)\r\n // while only allowing hyphen, period, and underscore - . _ as special characters\r\n // tslint:disable-next-line: max-line-length\r\n const emailPattern = /^[^<>()[\\]{}\\\\,;:\\%#^*\\s@\\\"$&+=|/?'`~!@]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n emailMatch = value.match(emailPattern);\r\n }\r\n return emailMatch || !value ? null : { invalidemail: value };\r\n }\r\n}\r\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\r\nimport { GoogleMapsAPIWrapper } from '@agm/core';\r\nimport { GoogleDirectionsRouteData } from 'src/app/models/maps/google-directions-route-data.model';\r\nimport { AppInsightsService } from 'src/app/core-services/app-insights.service';\r\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { GmapsDirectionsService } from 'src/app/core-services/gmaps-directions.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n// This will keep typescript from throwing errors with respect to the google object\r\ndeclare var google: any;\r\n\r\n@Directive({\r\n selector: '[appDirectionsMap]'\r\n})\r\nexport class GMapsDirectionsDirective implements OnInit, OnDestroy {\r\n\r\n unsubscribe$ = new Subject();\r\n\r\n origin: google.maps.LatLng;\r\n destination: google.maps.LatLng;\r\n showDirection: boolean;\r\n travelTime: Date = new Date();\r\n directionsRouteData: GoogleDirectionsRouteData;\r\n\r\n // We'll keep a single google maps directions renderer instance so we get to reuse it.\r\n // using a new renderer instance every time will leave the previous one still active and visible on the page\r\n private directionsRenderer: any;\r\n\r\n // We inject AGM's google maps api wrapper that handles the communication with the Google Maps Javascript\r\n constructor(private gmapsAPI: GoogleMapsAPIWrapper,\r\n private appInsightsService: AppInsightsService,\r\n private gmapsDirectionsService: GmapsDirectionsService) { }\r\n\r\n ngOnInit() {\r\n this.gmapsDirectionsService.origin$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(origin => {\r\n this.origin = origin;\r\n });\r\n\r\n this.gmapsDirectionsService.destination$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(destination => {\r\n this.redrawRouteWithDestination(destination);\r\n });\r\n\r\n this.gmapsDirectionsService.showDirection$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(showDirection => {\r\n this.showDirection = showDirection;\r\n if (!this.showDirection) {\r\n this.clearRoute();\r\n }\r\n });\r\n\r\n this.gmapsDirectionsService.travelTime$\r\n .pipe(\r\n debounceTime(600),\r\n distinctUntilChanged(),\r\n takeUntil(this.unsubscribe$))\r\n .subscribe(travelTime => {\r\n if (travelTime) {\r\n this.setTravelTime(travelTime);\r\n this.clearRoute();\r\n this.drawDirectionsRoute();\r\n } else {\r\n this.travelTime = null;\r\n }\r\n });\r\n\r\n this.drawDirectionsRoute();\r\n }\r\n\r\n drawDirectionsRoute() {\r\n this.gmapsAPI.getNativeMap().then(map => {\r\n\r\n // Init directions route renderer\r\n if (!this.directionsRenderer) {\r\n this.directionsRenderer = this.getNewDirectionsRenderer();\r\n }\r\n\r\n if (this.showDirection && this.destination) {\r\n const directionsService = new google.maps.DirectionsService();\r\n this.directionsRenderer.setMap(map);\r\n\r\n // Get Route Options, Data, Origin, and Destination and pass to the directions service API.\r\n directionsService.route(this.getDirectionsRouteOptions(), (response, status) => {\r\n if (response && status === 'OK') {\r\n\r\n this.directionsRenderer.setDirections(response);\r\n\r\n // Parse route data from successful response and emits back out of directive.\r\n if (response.routes && response.routes.length) {\r\n const midwayPointLatLng = this.getMidWayLatLngFromRoute(response.routes[0]); // Used for Info Window position\r\n const responseRouteData = new GoogleDirectionsRouteData(response.routes[0], midwayPointLatLng);\r\n this.gmapsDirectionsService.updateDirectionsRouteData(responseRouteData);\r\n }\r\n } else {\r\n this.appInsightsService.logException(\r\n new Error(`An error occurred for Google Places Service request: ${status}`), false);\r\n this.gmapsDirectionsService.updateDirectionsRouteData(null);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n redrawRouteWithDestination(newDestination: google.maps.LatLng) {\r\n if (newDestination && newDestination !== this.destination && this.showDirection) {\r\n this.destination = newDestination;\r\n this.drawDirectionsRoute();\r\n } else {\r\n this.clearRoute();\r\n }\r\n }\r\n\r\n clearRoute() {\r\n if (this.directionsRenderer) {\r\n this.directionsRenderer.setDirections({ routes: [] });\r\n return;\r\n }\r\n }\r\n\r\n getNewDirectionsRenderer() {\r\n return new google.maps.DirectionsRenderer({\r\n suppressMarkers: true,\r\n draggable: false,\r\n polylineOptions: {\r\n strokeColor: '#679DF6',\r\n strokeWeight: 7,\r\n zIndex: 9999999\r\n }\r\n });\r\n }\r\n\r\n getDirectionsRouteOptions() {\r\n return {\r\n origin: { lat: this.origin.lat(), lng: this.origin.lng() },\r\n destination: { lat: this.destination.lat(), lng: this.destination.lng() },\r\n waypoints: [],\r\n provideRouteAlternatives: false,\r\n travelMode: 'DRIVING',\r\n unitSystem: google.maps.UnitSystem.IMPERIAL,\r\n drivingOptions: {\r\n departureTime: this.travelTime || new Date(), // TODO: Pass in a departure time for future story.\r\n trafficModel: 'bestguess'\r\n }\r\n };\r\n }\r\n\r\n getMidWayLatLngFromRoute(route: google.maps.DirectionsRoute) {\r\n const midwayPoint = route.overview_path.length / 2;\r\n // tslint:disable-next-line: no-bitwise\r\n return route.overview_path[midwayPoint | 0];\r\n }\r\n\r\n setTravelTime(travelTime: Date) {\r\n this.travelTime = travelTime;\r\n const currentTime = new Date();\r\n if (this.travelTime && this.travelTime.getTime() < currentTime.getTime()) {\r\n this.travelTime = new Date(this.travelTime);\r\n this.travelTime.setDate(this.travelTime.getDate() + 7);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n}\r\n","import { Validator, NG_VALIDATORS, FormControl } from '@angular/forms';\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appNameValid]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: NameValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class NameValidatorDirective implements Validator {\r\n\r\n constructor() { }\r\n\r\n validate(control: FormControl) {\r\n\r\n const value = control.value;\r\n let nameMatch: string;\r\n\r\n if (value) {\r\n // Name Regex enforces that only letters, apostrophes, hyphens, and spaces are allowed in the name fields\r\n // Lookaheads are used to prevent a non-letter character to end a string in these fields (i.e. 'John-' and 'John ' are not valid)\r\n // tslint:disable-next-line: max-line-length\r\n const namePattern = /^((?=[A-Za-zÀ-ÖØ-öø-ÿ]))(([A-Za-zÀ-ÖØ-öø-ÿ])|([A-Za-zÀ-ÖØ-öø-ÿ]['-](?=[A-Za-zÀ-ÖØ-öø-ÿ]))|( (?=[A-Za-zÀ-ÖØ-öø-ÿ])))*$/;\r\n\r\n nameMatch = value.match(namePattern);\r\n }\r\n return nameMatch || !value ? null : { invalidname: value };\r\n }\r\n}\r\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\r\nimport { UserIdleService } from 'angular-user-idle';\r\n\r\n@Directive({\r\n selector: '[appPauseSleepState]'\r\n})\r\nexport class PauseSleepStateDirective implements OnInit, OnDestroy {\r\n\r\n constructor(private userIdleService: UserIdleService) {}\r\n\r\n ngOnInit(): void {\r\n this.userIdleService.stopWatching();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.userIdleService.startWatching();\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { NgControl, NgModel } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[ngModel][appPhoneMask]',\r\n providers: [NgModel],\r\n // tslint:disable-next-line: no-host-metadata-property\r\n host: {\r\n '(ngModelChange)': 'onInputChange($event)'\r\n }\r\n})\r\nexport class PhoneMaskDirective {\r\n\r\n constructor(public model: NgControl) { }\r\n\r\n onInputChange(value) {\r\n let formattedNumber: string = '';\r\n let rawValue: string;\r\n let areaCode: string;\r\n let phoneNumber: string;\r\n let extension: string;\r\n\r\n if (value) {\r\n // remove special characters added by pipe formatting and invalid inputs\r\n rawValue = value.replace(/[^0-9\\+]/g, '');\r\n\r\n // only apply the pipe to domestic numbers. a '+' in the beginning is how we are detecting the number is international\r\n if (!rawValue.startsWith('+')) {\r\n switch (rawValue.length) {\r\n case 1:\r\n case 2:\r\n case 3:\r\n areaCode = rawValue;\r\n break;\r\n case 4:\r\n case 5:\r\n case 6:\r\n case 7:\r\n case 8:\r\n case 9:\r\n case 10:\r\n areaCode = rawValue.slice(0, 3);\r\n phoneNumber = rawValue.slice(3);\r\n break;\r\n default:\r\n areaCode = rawValue.slice(0, 3);\r\n phoneNumber = rawValue.slice(3, 10);\r\n extension = rawValue.slice(10);\r\n }\r\n\r\n if (phoneNumber) {\r\n if (phoneNumber.length > 3) {\r\n phoneNumber = phoneNumber.slice(0, 3) + '-' + phoneNumber.slice(3, 7);\r\n } else {\r\n phoneNumber = phoneNumber;\r\n }\r\n\r\n formattedNumber = '(' + areaCode + ') ' + phoneNumber;\r\n\r\n if (extension) {\r\n formattedNumber += ' #' + extension;\r\n }\r\n } else {\r\n formattedNumber = '(' + areaCode;\r\n }\r\n } else {\r\n // return the number, as is, but removing anything except, + - ( ) and numbers.\r\n formattedNumber = value.replace(/[^0-9\\+\\-() ]/g, '');\r\n }\r\n }\r\n\r\n this.model.valueAccessor.writeValue(formattedNumber);\r\n }\r\n}\r\n","import { Validator, NG_VALIDATORS, FormControl } from '@angular/forms';\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appPhoneValid]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: PhoneValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class PhoneValidatorDirective implements Validator {\r\n\r\n constructor() { }\r\n\r\n validate(control: FormControl) {\r\n\r\n const value = control.value;\r\n let phoneNumberMatch: string;\r\n\r\n if (value) {\r\n // return as valid if the input starts with a '+'\r\n if (value.startsWith('+')) {\r\n // TODO: If ever needed, validate the international number\r\n return value.length >= 5 ? null : { minlength: { requiredLength: 5}};\r\n }\r\n\r\n // tslint:disable-next-line: max-line-length\r\n const phoneNumberPattern = /^[\\\\(]{0,1}([0-9]){3}[\\\\)]{0,1}[ ]?([^0-1]){1}([0-9]){2}[ ]?[-]?[ ]?([0-9]){4}[ ]*((#){0,1}([0-9]){1,5}){0,1}$/g;\r\n\r\n phoneNumberMatch = value.match(phoneNumberPattern);\r\n }\r\n return phoneNumberMatch || !value ? null : { invalidphone: value };\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-back-button',\r\n templateUrl: './back-button.component.html',\r\n styleUrls: ['./back-button.component.scss']\r\n})\r\nexport class BackButtonComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n

BACK

\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-close-button',\r\n templateUrl: './close-button.component.html',\r\n styleUrls: ['./close-button.component.scss']\r\n})\r\nexport class CloseButtonComponent implements OnInit {\r\n\r\n @Input() isWhiteIcon: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

CLOSE

\r\n
\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-date-time-picker',\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrls: ['./date-time-picker.component.scss']\r\n})\r\nexport class DateTimePickerComponent implements OnInit {\r\n\r\n @Input() date: Date = new Date();\r\n @Input() minuteStep: number = 30;\r\n @Input() allowPastDates?: boolean = false;\r\n\r\n @Output() submitSelectedDate = new EventEmitter(true);\r\n\r\n currentDate: Date = new Date();\r\n timeList: Date[] = [];\r\n disablePreviousTime: boolean = false;\r\n disablePreviousDate: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.populateTimeDropdown();\r\n this.disableOrEnablePreviousArrows();\r\n }\r\n\r\n populateTimeDropdown() {\r\n const startTime = new Date();\r\n startTime.setHours(0, 0);\r\n this.timeList.push(startTime);\r\n const timeStep = new Date(startTime);\r\n\r\n for (let i = 0; i < 47; i++) {\r\n timeStep.setMinutes(timeStep.getMinutes() + 30);\r\n const nextTime = new Date(timeStep);\r\n this.timeList.push(nextTime);\r\n }\r\n }\r\n\r\n disableOrEnablePreviousArrows() {\r\n if (!this.allowPastDates &&\r\n this.date.getFullYear() === this.currentDate.getFullYear() &&\r\n this.date.getMonth() === this.currentDate.getMonth() &&\r\n this.date.getDate() === this.currentDate.getDate()) {\r\n\r\n this.disablePreviousDate = true;\r\n\r\n this.disablePreviousTime = !!(this.date.getHours() === 0 && this.date.getMinutes() < this.minuteStep);\r\n } else {\r\n this.disablePreviousDate = false;\r\n this.disablePreviousTime = false;\r\n }\r\n }\r\n\r\n incrementTime() {\r\n this.date = new Date(this.date.getFullYear(),\r\n this.date.getMonth(),\r\n this.date.getDate(),\r\n this.date.getHours(),\r\n this.date.getMinutes() + this.minuteStep);\r\n this.emitSelectedDate();\r\n this.disableOrEnablePreviousArrows();\r\n }\r\n\r\n decrementTime() {\r\n if (!this.disablePreviousTime) {\r\n this.date = new Date(this.date.getFullYear(),\r\n this.date.getMonth(),\r\n this.date.getDate(),\r\n this.date.getHours(),\r\n this.date.getMinutes() - this.minuteStep);\r\n this.emitSelectedDate();\r\n this.disableOrEnablePreviousArrows();\r\n }\r\n }\r\n\r\n incrementDate() {\r\n this.date = new Date(this.date.getFullYear(),\r\n this.date.getMonth(),\r\n this.date.getDate() + 1,\r\n this.date.getHours(),\r\n this.date.getMinutes());\r\n this.emitSelectedDate();\r\n this.disableOrEnablePreviousArrows();\r\n }\r\n\r\n decrementDate() {\r\n if (!this.disablePreviousDate) {\r\n this.date = new Date(this.date.getFullYear(),\r\n this.date.getMonth(),\r\n this.date.getDate() - 1,\r\n this.date.getHours(),\r\n this.date.getMinutes());\r\n this.emitSelectedDate();\r\n this.disableOrEnablePreviousArrows();\r\n }\r\n }\r\n\r\n setTimeFromDropdown(selectedTime: Date) {\r\n this.date = new Date(this.date.getFullYear(),\r\n this.date.getMonth(),\r\n this.date.getDate(),\r\n selectedTime.getHours(),\r\n selectedTime.getMinutes());\r\n this.emitSelectedDate();\r\n this.disableOrEnablePreviousArrows();\r\n }\r\n\r\n emitSelectedDate() {\r\n this.submitSelectedDate.emit(this.date);\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n {{date | date: 'shortTime'}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{date | date: 'EEE, MMM d'}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnDestroy, OnInit, Optional } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { FormValidationService } from 'src/app/core-services/form-validation.service';\r\nimport { FormValidationConfigurationModel } from 'src/app/models/form-validation-configuration';\r\nimport { BaseComponent } from '../../base/base.component';\r\n\r\n@Component({\r\n selector: 'app-form-control-error',\r\n templateUrl: './form-control-error.component.html',\r\n styleUrls: ['./form-control-error.component.scss']\r\n})\r\nexport class FormControlErrorComponent extends BaseComponent implements OnInit, OnDestroy {\r\n\r\n @Input() input: FormControl;\r\n @Input() displayError?: boolean = false;\r\n @Input() type?: string;\r\n\r\n public data: FormValidationConfigurationModel;\r\n\r\n constructor(private formValidationService: FormValidationService) { super(); }\r\n\r\n ngOnInit() {\r\n this.formValidationService.formValidationConfiguration\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((config: FormValidationConfigurationModel) => {\r\n if (config) {\r\n this.data = config;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","
\r\n\r\n \r\n {{type ? (data.Field_Required_Error | mergeField: '{field}': type)\r\n : data.Default_Required_Error}}\r\n \r\n\r\n \r\n {{data.Default_Min_Length_Error | mergeField: '{minLength}': input.errors.minlength.requiredLength}}\r\n \r\n\r\n \r\n {{data.Phone_Invalid_Error}}\r\n \r\n\r\n \r\n {{data.Name_Invalid_Error}}\r\n \r\n\r\n \r\n {{data.Email_Invalid_Error}}\r\n \r\n\r\n \r\n \r\n \r\n {{data.Email_Invalid_Error}}\r\n \r\n \r\n {{data.Default_Invalid_Error}}\r\n \r\n \r\n \r\n\r\n
\r\n","import { Component, OnInit, Input, AfterViewInit, Output, EventEmitter } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport Keyboard from 'simple-keyboard';\r\nimport { KeyboardButtonTheme } from 'src/app/models/enums/keyboard-enum';\r\n\r\n@Component({\r\n selector: 'app-form-keyboard',\r\n templateUrl: './form-keyboard.component.html',\r\n styleUrls: ['./form-keyboard.component.scss']\r\n})\r\nexport class FormKeyboardComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() theme: string;\r\n @Input() layout;\r\n @Input() suggestions ?: string[] = [];\r\n @Input() form ?: NgForm;\r\n @Output() keyPress ? = new EventEmitter(true);\r\n @Output() formSubmitted = new EventEmitter(true);\r\n\r\n suggestionButtonRow: string = '';\r\n keyboard: Keyboard;\r\n selectedInput: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n // Make sure keyboard layout has three suggestion buttons, these buttons should show up even when empty\r\n this.suggestionButtonRow = `${this.suggestions[0] || ''} ${this.suggestions[1] || ''} ${this.suggestions[2] || ''}`;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.keyboard = new Keyboard({\r\n onChange: input => this.onChange(input),\r\n onKeyPress: button => this.onKeyPress(button),\r\n preventMouseDownDefault: true,\r\n theme: this.theme ? this.theme : 'hg-theme-ios',\r\n layout: this.layout ? this.layout : {\r\n default: [\r\n this.suggestionButtonRow,\r\n 'q w e r t y u i o p',\r\n 'a s d f g h j k l',\r\n '{shift} z x c v b n m {bksp}',\r\n '{alt} .com {space} @ . {send}'\r\n ],\r\n shift: [\r\n this.suggestionButtonRow,\r\n 'Q W E R T Y U I O P',\r\n 'A S D F G H J K L',\r\n '{shiftactivated} Z X C V B N M {bksp}',\r\n '{alt} .com {space} @ . {send}'\r\n ],\r\n alt: [\r\n this.suggestionButtonRow,\r\n '1 2 3 4 5 6 7 8 9 0',\r\n `# $ & % * ( ) ' -`,\r\n '{shift} + = / ; : ! ? {bksp}',\r\n '{default} .com {space} @ . {send}'\r\n ]\r\n },\r\n display: {\r\n '{alt}': '123',\r\n '{shift}': '⇧',\r\n '{shiftactivated}': '⇧',\r\n '{bksp}': '⌫',\r\n '{send}': 'Send',\r\n '{space}': 'Space',\r\n '{default}': 'ABC'\r\n }\r\n });\r\n\r\n this.keyboard.addButtonTheme('{bksp} {shift} {shiftactivated} {alt} {default} .com @ .', KeyboardButtonTheme.Medium);\r\n this.keyboard.addButtonTheme('{bksp} {shift} {shiftactivated} {alt} {default} .com @ . {send}', KeyboardButtonTheme.Dark);\r\n this.keyboard.addButtonTheme(this.suggestionButtonRow, KeyboardButtonTheme.Suggestion);\r\n\r\n document.querySelectorAll('.input').forEach(input => {\r\n input.addEventListener('focus', this.onInputFocus);\r\n input.addEventListener('input', this.onInputChange);\r\n });\r\n }\r\n\r\n onChange(input) {\r\n (document.querySelector('#' + this.selectedInput || '.input') as HTMLInputElement).value = input;\r\n\r\n // Sometimes we can pass a form into the keyboard component to do an additional FormControl value setting.\r\n // This does actual input value updating and validation that an ordinary input Element value update would not.\r\n // This also assumes the form control's name AND id are the same value in the original form template\r\n if (this.form) {\r\n const formInput = this.form.controls[this.selectedInput];\r\n if (formInput) {\r\n formInput.setValue(input);\r\n }\r\n }\r\n }\r\n\r\n onInputFocus = (event) => {\r\n this.selectedInput = `${event.target.id}`;\r\n\r\n this.keyboard.setOptions({\r\n inputName: event.target.id\r\n });\r\n }\r\n\r\n onInputChange = (event) => {\r\n this.keyboard.setInput(event.target.value, event.target.id);\r\n }\r\n\r\n onKeyPress(button) {\r\n this.keyPress.emit(button);\r\n if (button.includes('{') && button.includes('}')) {\r\n this.handleLayoutChange(button);\r\n }\r\n }\r\n\r\n submitForm() {\r\n this.formSubmitted.emit(true);\r\n }\r\n\r\n handleLayoutChange(button) {\r\n const currentLayout = this.keyboard.options.layoutName;\r\n let layoutName;\r\n\r\n switch (button) {\r\n case '{shift}':\r\n case '{shiftactivated}':\r\n case '{default}':\r\n layoutName = currentLayout === 'default' ? 'shift' : 'default';\r\n break;\r\n\r\n case '{alt}':\r\n layoutName = currentLayout === 'alt' ? 'default' : 'alt';\r\n break;\r\n case '{send}':\r\n this.submitForm();\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n if (layoutName) {\r\n this.keyboard.setOptions({\r\n layoutName\r\n });\r\n }\r\n }\r\n}\r\n","
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { KioskImage } from 'src/app/models/content/media/kiosk-image.model';\r\n\r\n@Component({\r\n selector: 'app-icon-cta',\r\n templateUrl: './icon-cta.component.html',\r\n styleUrls: ['./icon-cta.component.scss']\r\n})\r\nexport class IconCtaComponent implements OnInit {\r\n\r\n @Input() public icon: KioskImage;\r\n @Input() public label: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n \r\n {{label}}\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loading-spinner',\r\n templateUrl: './loading-spinner.component.html',\r\n styleUrls: ['./loading-spinner.component.scss']\r\n})\r\nexport class LoadingSpinnerComponent implements OnInit {\r\n\r\n @Input() loading: boolean;\r\n @Input() scale: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-ratings',\r\n templateUrl: './ratings.component.html',\r\n styleUrls: ['./ratings.component.scss']\r\n})\r\nexport class RatingsComponent implements OnInit {\r\n\r\n @Input() rate: number;\r\n @Input() fontSize?: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n}\r\n","
\r\n \r\n\r\n \r\n \r\n ★\r\n \r\n \r\n
\r\n","import { Component, OnInit, Input, AfterViewInit, ViewChild, ElementRef, OnDestroy, Output } from '@angular/core';\r\nimport { CommunityLotMapModel } from 'src/app/models/content/community/community-lot-map.model';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { AlphaVisionMapService } from 'src/app/core-services/alphavision-map.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../base/base.component';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { AlphaVisionClickResponse, AlphaVisionLot, AlphaVisionDataType,\r\n AlphaVisionEventType, AlphaVisionFilterLotsResponse, AlphaVisionLotStatusType,\r\n AlphaVisionSitePlan, AlphaVisionAmenity, AlphaVisionGeneralResponse,\r\n AlphaVisionFilterLotsResponseData, AlphaVisionLotCounts, AlphaVisionSelectLotResponse,\r\n AlphaVisionSelectMapResponse,\r\n AlphaVisionAttributes,\r\n AlphaVisionLotFilterAttributes} from 'src/app/models/maps/alphavision-map-data.model';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\nimport { SettingsService } from 'src/app/core-services/settings.service';\r\ndeclare let AVSiteplan: any;\r\n\r\n@Component({\r\n selector: 'app-alphavision-map',\r\n templateUrl: './alphavision-map.component.html',\r\n styleUrls: ['./alphavision-map.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation()\r\n ]\r\n})\r\nexport class AlphaVisionMapComponent extends BaseComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @Input() data: CommunityLotMapModel;\r\n @Input() community: Community;\r\n @Input() selectedLotId: string;\r\n\r\n @Output() setLotCount = new EventEmitter(true);\r\n @Output() mapLoaded ? = new EventEmitter(true);\r\n\r\n @ViewChild('divSitePlan', { static: true }) divSitePlan: ElementRef;\r\n\r\n public mapInitialized: boolean = false;\r\n public mapLotsReady: boolean = false;\r\n public masterMapName: string;\r\n\r\n public loading: boolean = true;\r\n public hasError: boolean = false;\r\n public fullscreenEnabled: boolean = false;\r\n\r\n public selectedPlan: Plan;\r\n public selectedLot: AlphaVisionLot;\r\n public lotAttributes: AlphaVisionAttributes;\r\n public selectedAmenity: AlphaVisionAmenity;\r\n public initialLots: AlphaVisionLot[] = [];\r\n public lotsCount: AlphaVisionLotCounts = new AlphaVisionLotCounts();\r\n\r\n private mapAPI = null;\r\n private sitePlanMapName: string;\r\n private planIds: string[] = [];\r\n private statuses: string[] = [];\r\n private filterLotAttributes: AlphaVisionLotFilterAttributes;\r\n private allStatuses: string[];\r\n private displayLotNumberLayer: boolean = true;\r\n\r\n constructor(private alphaVisionMapService: AlphaVisionMapService,\r\n private settingsService: SettingsService) { super(); }\r\n\r\n ngOnInit() {\r\n this.alphaVisionMapService.statuses\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((statuses: string[]) => {\r\n if (statuses) {\r\n this.statuses = statuses.length ? statuses : ['']; // AV's API interprets [''] as to show no lots.\r\n this.filterLots();\r\n }\r\n });\r\n\r\n this.alphaVisionMapService.lotAttributes\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((lotAttributes: AlphaVisionLotFilterAttributes) => {\r\n if (lotAttributes) {\r\n this.filterLotAttributes = lotAttributes;\r\n this.filterLots();\r\n }\r\n });\r\n\r\n this.alphaVisionMapService.selectedPlan\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((selectedPlan: Plan) => {\r\n this.selectedPlan = selectedPlan;\r\n // If we have a selected Plan, clear out any selected Lot for filtering.\r\n if (this.selectedPlan && this.selectedLot) {\r\n this.selectedLot = null;\r\n this.selectedLotId = null;\r\n this.alphaVisionMapService.selectedLot.next();\r\n }\r\n this.filterLots();\r\n });\r\n\r\n this.allStatuses = Object.keys(AlphaVisionLotStatusType).map(status => AlphaVisionLotStatusType[status]);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initializeAlphaVisionSiteplan();\r\n }\r\n\r\n ngOnDestroy() {\r\n // Clear out saved service data such as selected lots, plans, and statuses if User navigates away.\r\n this.alphaVisionMapService.resetAllMapServiceData();\r\n super.ngOnDestroy();\r\n }\r\n\r\n private initializeAlphaVisionSiteplan() {\r\n // On Map Init, if we loaded with a selected plan, init only with that Plan ID, otherwise show all plans.\r\n const mapInitStatuses = this.statuses && this.statuses.length ? this.statuses : this.allStatuses;\r\n const mapInitPlanIds = this.selectedPlan ? this.selectedPlan.Id.toString() : this.planIds;\r\n\r\n if (this.settingsService.pulteAVID && this.community && this.divSitePlan) {\r\n this.mapAPI = new AVSiteplan(this.settingsService.pulteAVID, // Builder GUID\r\n this.community.Id, // Comunity ID\r\n this.divSitePlan.nativeElement, // Parent DOM Element\r\n res => this.mapGeneralCallback(res), // Generic Map Callback\r\n res => this.mapClickEventCallback(res), // Event Map Callback (lot click/ amenity click)\r\n mapInitStatuses, // Status\r\n mapInitPlanIds, // Plans\r\n this.displayLotNumberLayer); // Display Lot Number Layer\r\n } else {\r\n this.setMapFinishedLoading();\r\n }\r\n }\r\n\r\n private setMapFinishedLoading() {\r\n this.loading = false;\r\n this.mapLoaded.emit(true);\r\n }\r\n\r\n private mapGeneralCallback(res: AlphaVisionGeneralResponse) {\r\n if (res && res.datatype) {\r\n switch (res.datatype) {\r\n case (AlphaVisionDataType.MasterMap):\r\n const masterMap = res.data as AlphaVisionSitePlan;\r\n\r\n if (res.eventtype === AlphaVisionEventType.Init && !this.mapInitialized) {\r\n if (masterMap && masterMap.mapName) {\r\n this.masterMapName = masterMap.mapName;\r\n // If we have a saved off Map Name to init to (selected from a Master Map), show/select that map during init.\r\n if (this.sitePlanMapName) {\r\n this.mapAPI.selectMap(this.sitePlanMapName, selectedMapResponse => this.selectMapCallback(selectedMapResponse));\r\n this.mapLotsReady = true;\r\n }\r\n }\r\n }\r\n this.mapInitialized = true;\r\n this.setMapFinishedLoading();\r\n break;\r\n\r\n case (AlphaVisionDataType.SitePlan):\r\n const sitePlan = res.data as AlphaVisionSitePlan;\r\n\r\n if (res.eventtype === AlphaVisionEventType.Init && !this.mapInitialized) {\r\n if (sitePlan && sitePlan.mapName) {\r\n this.sitePlanMapName = sitePlan.mapName;\r\n this.mapLotsReady = true;\r\n this.setInitialLots(sitePlan.lots);\r\n\r\n // Set Homesite and QMI counts if we initialized map with a Selected Plan.\r\n if (this.selectedPlan && this.selectedPlan.Id) {\r\n const filteredInitLots = this.getLotsFilteredByStatus(sitePlan.lots);\r\n this.setLotAndQMICountsFromLots(filteredInitLots);\r\n }\r\n // Select Specific Lot on SitePlan Map Click to show and filter if we initialized with a Selected Lot Block\r\n if (this.selectedLotId && sitePlan.lots && sitePlan.lots.some(lot => lot.lot === this.selectedLotId)) {\r\n this.mapAPI.selectLot(this.selectedLotId, selectedLotResponse => this.selectLotCallback(selectedLotResponse));\r\n }\r\n }\r\n }\r\n\r\n this.mapInitialized = true;\r\n this.setMapFinishedLoading();\r\n break;\r\n\r\n case (AlphaVisionDataType.Error):\r\n // If we tried to init the Map and got an error response, set error flag.\r\n if (res.eventtype === AlphaVisionEventType.Init && !this.mapInitialized) {\r\n this.hasError = true;\r\n }\r\n this.setMapFinishedLoading();\r\n break;\r\n\r\n case (AlphaVisionDataType.ZoomLevel):\r\n case (AlphaVisionDataType.Lot):\r\n case (AlphaVisionDataType.Plan):\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private mapClickEventCallback(res: AlphaVisionClickResponse) {\r\n if (res.eventtype === AlphaVisionEventType.Click && res.datatype && res.data) {\r\n // Click callback can return 3 different types of click data responses,\r\n // (Lot, Amenity, or Map), depending on map element clicked.\r\n switch (res.datatype) {\r\n case AlphaVisionDataType.Lot:\r\n this.selectedLot = res.data as AlphaVisionLot;\r\n this.selectedLotId = this.selectedLot.lot;\r\n this.updateSelectedLotData(this.selectedLot);\r\n break;\r\n\r\n case AlphaVisionDataType.Amenity:\r\n this.selectedAmenity = res.data as AlphaVisionAmenity;\r\n this.alphaVisionMapService.updateSelectedAmenity(this.selectedAmenity);\r\n this.mapLotsReady = true;\r\n break;\r\n\r\n case AlphaVisionDataType.SitePlan:\r\n const sitePlan = res.data as AlphaVisionSitePlan;\r\n this.sitePlanMapName = sitePlan.mapName;\r\n this.mapLotsReady = true;\r\n this.setInitialLots(sitePlan.lots);\r\n\r\n // Select Specific Lot on SitePlan Map Click to show and filter if we have a Specific Lot Block\r\n if (this.selectedLotId && sitePlan.lots && sitePlan.lots.some(lot => lot.lot === this.selectedLotId)) {\r\n this.mapAPI.selectLot(this.selectedLotId, selectedLotResponse => this.selectLotCallback(selectedLotResponse));\r\n }\r\n // need to reset filter criteria when selecting new submap in master maps\r\n this.resetMapFilters();\r\n this.filterLots();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private filterLots() {\r\n if (this.mapAPI && this.mapInitialized) {\r\n // If we don't have statuses currently stored from the Map Service, use all statuses from AV Lot Status enum.\r\n const filterLotsStatuses = this.statuses && this.statuses.length ?\r\n this.statuses :\r\n this.allStatuses;\r\n // If we currently have a selected plan, filter Lots by selected plan ID, otherwise show currently set plan IDs.\r\n const filterLotsPlanIds = (this.selectedPlan && this.selectedPlan.Id) ?\r\n this.selectedPlan.Id.toString() :\r\n this.planIds;\r\n // If we currently have any Lot Attributes for filtering, filter by those.\r\n const filterLotAttributes = this.getAttributesArrayFromFilterLotAttributes(this.filterLotAttributes);\r\n this.mapAPI.filterLots(filterLotsStatuses, filterLotsPlanIds, filterLotAttributes, res => this.filterLotsCallback(res));\r\n }\r\n }\r\n\r\n private filterLotsCallback(res: AlphaVisionFilterLotsResponse) {\r\n if (res && res.datatype === AlphaVisionDataType.Lot) {\r\n const responseData = res.data as AlphaVisionFilterLotsResponseData;\r\n if (this.selectedPlan && responseData.lots) {\r\n // Set Homesite and QMI lots counts for Legend labels, if filtered with a selected Plan.\r\n this.setLotAndQMICountsFromLots(responseData.lots);\r\n this.mapAPI.reset();\r\n } else if (responseData.plans) {\r\n const planIds = responseData.plans.map(p => p.id);\r\n this.alphaVisionMapService.updateMapPlanIds(planIds);\r\n }\r\n }\r\n }\r\n\r\n private selectMapCallback(res: AlphaVisionSelectMapResponse) {\r\n if (res && res.datatype === AlphaVisionDataType.SitePlan) {\r\n const sitePlan = res.data as AlphaVisionSitePlan;\r\n // Select Specific Lot if we're selecting a Map (most likely because we went fullscreen) and had a Lot already Selected\r\n if (sitePlan && this.selectedLotId && sitePlan.lots && sitePlan.lots.some(lot => lot.lot === this.selectedLotId)) {\r\n this.mapAPI.selectLot(this.selectedLotId, selectedLotResponse => this.selectLotCallback(selectedLotResponse));\r\n }\r\n }\r\n }\r\n\r\n private selectLotCallback(res: AlphaVisionSelectLotResponse) {\r\n if (res && res.datatype === AlphaVisionDataType.Lot) {\r\n this.selectedLot = res.data as AlphaVisionLot;\r\n this.updateSelectedLotData(this.selectedLot);\r\n }\r\n }\r\n\r\n private getAttributesArrayFromFilterLotAttributes(filterLotAttributes: AlphaVisionLotFilterAttributes) {\r\n let attributesArray = null;\r\n if (filterLotAttributes !== null) {\r\n if (filterLotAttributes.LotFacings && filterLotAttributes.LotFacings.length === 0) {\r\n attributesArray = filterLotAttributes ? [{ LOTTYPE: filterLotAttributes.LotTypes }] : null;\r\n } else if (filterLotAttributes.LotTypes && filterLotAttributes.LotTypes.length === 0) {\r\n attributesArray = this.filterLotAttributes ? [{ LOTFACING: filterLotAttributes.LotFacings }] : null;\r\n } else {\r\n attributesArray = filterLotAttributes ? [{ LOTFACING: filterLotAttributes.LotFacings },\r\n { LOTTYPE: filterLotAttributes.LotTypes }] : null;\r\n }\r\n }\r\n return attributesArray;\r\n }\r\n\r\n private updateSelectedLotData(selectedLot: AlphaVisionLot) {\r\n this.alphaVisionMapService.updateSelectedLot(selectedLot);\r\n if (selectedLot.lotAttributes.length > 0) {\r\n this.lotAttributes = new AlphaVisionAttributes(selectedLot.lotAttributes);\r\n }\r\n\r\n if (selectedLot.plans) {\r\n const lotPlanIds = selectedLot.plans.map(p => p.id);\r\n this.alphaVisionMapService.updateMapPlanIds(lotPlanIds);\r\n }\r\n }\r\n\r\n private setLotAndQMICountsFromLots(lots: AlphaVisionLot[]) {\r\n if (lots && this.selectedPlan && this.selectedPlan.Id) {\r\n this.lotsCount.HomesiteLotsCount = lots.filter(l => l.plans && l.plans.some(p => p.id === this.selectedPlan.Id.toString())).length;\r\n this.lotsCount.QmiLotsCount = lots.filter(l => l.status === AlphaVisionLotStatusType.QuickMoveIn &&\r\n l.plans &&\r\n l.plans.some(p => p.id === this.selectedPlan.Id.toString())).length;\r\n if (this.initialLots.length) {\r\n this.lotsCount.AvailableHomesiteLotsCount = this.initialLots.filter(l =>\r\n l.status === AlphaVisionLotStatusType.Available &&\r\n l.plans &&\r\n l.plans.some(p => p.id === this.selectedPlan.Id.toString())).length;\r\n }\r\n this.setLotCount.emit(this.lotsCount);\r\n }\r\n }\r\n\r\n private setInitialLots(lots: AlphaVisionLot[]) {\r\n if (lots) {\r\n this.initialLots = lots;\r\n this.alphaVisionMapService.updateInitialLots(lots);\r\n }\r\n }\r\n\r\n private showPlans() {\r\n if (this.mapAPI) {\r\n this.mapAPI.showPlans(this.planIds);\r\n }\r\n }\r\n\r\n private getLotsFilteredByStatus(lots: AlphaVisionLot[]) {\r\n const filterLotsStatuses = this.statuses && this.statuses.length ?\r\n this.statuses :\r\n this.allStatuses;\r\n return lots.filter(lot => filterLotsStatuses.includes(lot.status));\r\n }\r\n\r\n public resetMapFilters() {\r\n this.statuses = this.allStatuses;\r\n this.planIds = [];\r\n this.filterLotAttributes = null;\r\n }\r\n\r\n public resetMapData() {\r\n // If viewing a selected amenity, clear then set mapLotsReady (show legend and nav controls)\r\n // for if we have a map with lots or not.\r\n if (this.selectedAmenity) {\r\n this.resetHomesData();\r\n this.mapLotsReady = this.sitePlanMapName != null;\r\n this.filterLots();\r\n } else if (this.selectedLot) {\r\n // If viewing a selected Lot or Plan, clear that out and reset Map.\r\n this.selectedLot = null;\r\n this.selectedLotId = null;\r\n this.alphaVisionMapService.selectedLot.next();\r\n this.filterLots();\r\n } else if (this.selectedPlan) {\r\n this.resetHomesData();\r\n } else {\r\n // Otherwise, let the back button function navigate back to the Master Map.\r\n this.alphaVisionMapService.resetAllMapServiceData();\r\n this.navigateToMasterMap();\r\n }\r\n this.mapAPI.reset();\r\n }\r\n\r\n private resetHomesData() {\r\n this.selectedLot = null;\r\n this.selectedLotId = null;\r\n this.selectedPlan = null;\r\n this.selectedAmenity = null;\r\n this.alphaVisionMapService.resetHomesMapServiceData();\r\n }\r\n\r\n private navigateToMasterMap() {\r\n if (this.masterMapName) {\r\n this.mapAPI.selectMap(this.masterMapName);\r\n this.sitePlanMapName = null;\r\n this.mapLotsReady = false;\r\n }\r\n }\r\n\r\n public mapZoomIn() {\r\n this.mapAPI.zoomIn();\r\n }\r\n\r\n public mapZoomOut() {\r\n this.mapAPI.zoomOut();\r\n }\r\n\r\n public mapFullscreen() {\r\n this.fullscreenEnabled = !this.fullscreenEnabled;\r\n // Due to nature of AV's Map not being responseive to re-sizing,\r\n // we need to reset the Map DOM and re-init on re-size/fullscreen change\r\n this.divSitePlan.nativeElement.innerHTML = null;\r\n this.mapInitialized = false;\r\n this.initializeAlphaVisionSiteplan();\r\n }\r\n}\r\n","
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n {{data.Homesites_Map_Error_Label}}\r\n \r\n\r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { LotMapLegendFormModel, LotMapLegendModel, LegendItem } from 'src/app/models/content/community/community-lot-map.model';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { AlphaVisionMapService } from 'src/app/core-services/alphavision-map.service';\r\nimport { AlphaVisionLot, AlphaVisionLotStatusType, AlphaVisionAmenity,\r\n AlphaVisionLotCounts,\r\n AlphaVisionAttributes,\r\n AlphaVisionLotFacing,\r\n AlphaVisionLotType,\r\n AlphVisionLotStatusClass,\r\n AlphaVisionLotFilterAttributes} from 'src/app/models/maps/alphavision-map-data.model';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-lot-map-legend',\r\n templateUrl: './lot-map-legend.component.html',\r\n styleUrls: ['./lot-map-legend.component.scss']\r\n})\r\nexport class LotMapLegendComponent implements OnInit {\r\n\r\n @Input() legendData: LotMapLegendModel;\r\n @Input() community: Community;\r\n @Input() selectedLot: AlphaVisionLot;\r\n @Input() lotAttributes: AlphaVisionAttributes;\r\n @Input() selectedPlan: Plan;\r\n @Input() selectedAmenity: AlphaVisionAmenity;\r\n @Input() lotsCount: AlphaVisionLotCounts;\r\n @Input() initialLots: AlphaVisionLot[];\r\n @Input() showBackButton: boolean;\r\n\r\n @Output() backButtonClicked = new EventEmitter();\r\n @Output() showLots = new EventEmitter();\r\n\r\n private lotMapLegendForm: LotMapLegendFormModel = new LotMapLegendFormModel();\r\n\r\n lotFilterStatuses: LegendItem[] = [];\r\n lotFilterFacings: LegendItem[] = [];\r\n lotFilterTypes: LegendItem[] = [];\r\n lotDisplayTypes: string[] = [];\r\n lotDisplayFacings: string[] = [];\r\n\r\n isCollapsedStatus: boolean = true;\r\n isCollapsedFacing: boolean = true;\r\n isCollapsedType: boolean = true;\r\n\r\n get isEmptyFacingFilters(): boolean {\r\n return !this.lotFilterFacings || this.lotFilterFacings.length === 0 || (this.lotFilterFacings.length === 1\r\n && this.lotMapLegendForm.blackListedFacingValues.includes(this.lotFilterFacings[0].label));\r\n }\r\n\r\n get isEmptyTypeFilters(): boolean {\r\n return !this.lotFilterTypes || this.lotFilterTypes.length === 0 || (this.lotFilterTypes.length === 1\r\n && this.lotMapLegendForm.blackListedTypeValues.includes(this.lotFilterTypes[0].label));\r\n }\r\n\r\n constructor(private alphaVisionMapService: AlphaVisionMapService) { }\r\n\r\n ngOnInit() {\r\n this.alphaVisionMapService.statuses\r\n .pipe(take(1))\r\n .subscribe((statuses) => {\r\n if (statuses) {\r\n this.setValuesFromStatus(statuses);\r\n }\r\n });\r\n\r\n this.alphaVisionMapService.lotAttributes\r\n .pipe(take(1))\r\n .subscribe((lotAttributes) => {\r\n if (lotAttributes) {\r\n this.lotDisplayFacings = lotAttributes.LotFacings;\r\n this.setCheckboxValuesFromFacing(lotAttributes.LotFacings);\r\n\r\n this.lotDisplayTypes = lotAttributes.LotTypes;\r\n this.setCheckboxValuesFromType(lotAttributes.LotTypes);\r\n }\r\n });\r\n this.setCheckboxValuesFromStatus();\r\n }\r\n\r\n private setCheckboxValuesFromStatus() {\r\n if (this.legendData) {\r\n if (this.legendData.Available) {\r\n this.lotFilterStatuses.push(new LegendItem(this.legendData.Available,\r\n this.lotMapLegendForm.availableValue, AlphVisionLotStatusClass.AvailableClass));\r\n }\r\n\r\n if (this.legendData.Model_Available) {\r\n this.lotFilterStatuses.push(new LegendItem(this.legendData.Model_Available,\r\n this.lotMapLegendForm.modelAvailableValue, AlphVisionLotStatusClass.ModelClass));\r\n }\r\n\r\n if (this.legendData.Quick_Move_In) {\r\n this.lotFilterStatuses.push(new LegendItem(this.legendData.Quick_Move_In,\r\n this.lotMapLegendForm.qmiAvailableValue, AlphVisionLotStatusClass.QuickMoveInClass));\r\n }\r\n\r\n if (this.legendData.Sold) {\r\n this.lotFilterStatuses.push(new LegendItem(this.legendData.Sold,\r\n this.lotMapLegendForm.soldValue, AlphVisionLotStatusClass.SoldClass));\r\n }\r\n\r\n if (this.legendData.Not_Released) {\r\n this.lotFilterStatuses.push( new LegendItem(this.legendData.Not_Released,\r\n this.lotMapLegendForm.notReleasedValue, AlphVisionLotStatusClass.UnreleasedClass));\r\n }\r\n }\r\n }\r\n\r\n private setValuesFromStatus(statuses: AlphaVisionLotStatusType[]) {\r\n if (statuses) {\r\n this.lotMapLegendForm.availableValue.value = statuses.includes(AlphaVisionLotStatusType.Available);\r\n this.lotMapLegendForm.modelAvailableValue.value = statuses.includes(AlphaVisionLotStatusType.Model);\r\n this.lotMapLegendForm.qmiAvailableValue.value = statuses.includes(AlphaVisionLotStatusType.QuickMoveIn);\r\n this.lotMapLegendForm.soldValue.value = statuses.includes(AlphaVisionLotStatusType.Sold);\r\n this.lotMapLegendForm.notReleasedValue.value = statuses.includes(AlphaVisionLotStatusType.Unreleased);\r\n }\r\n }\r\n\r\n private setCheckboxValuesFromFacing(facings: AlphaVisionLotFacing[]) {\r\n facings.forEach(facing => {\r\n if (!this.lotMapLegendForm.blackListedFacingValues.includes(facing)) {\r\n this.lotFilterFacings.push(new LegendItem(facing, facing));\r\n }\r\n });\r\n }\r\n\r\n private setCheckboxValuesFromType(types: AlphaVisionLotType[]) {\r\n types.forEach(type => {\r\n if (!this.lotMapLegendForm.blackListedTypeValues.includes(type)) {\r\n this.lotFilterTypes.push(new LegendItem(type, type));\r\n }\r\n });\r\n }\r\n\r\n updateMapStatus() {\r\n const statusList = [];\r\n if (this.lotMapLegendForm.modelAvailableValue.value) {\r\n statusList.push(AlphaVisionLotStatusType.Model);\r\n }\r\n if (this.lotMapLegendForm.qmiAvailableValue.value) {\r\n statusList.push(AlphaVisionLotStatusType.QuickMoveIn);\r\n }\r\n if (this.lotMapLegendForm.availableValue.value) {\r\n statusList.push(AlphaVisionLotStatusType.Available);\r\n }\r\n if (this.lotMapLegendForm.soldValue.value) {\r\n statusList.push(AlphaVisionLotStatusType.Sold);\r\n }\r\n if (this.lotMapLegendForm.notReleasedValue.value) {\r\n statusList.push(AlphaVisionLotStatusType.Unreleased);\r\n }\r\n this.alphaVisionMapService.updateStatuses(statusList);\r\n }\r\n\r\n updateMapLotAttributes() {\r\n // Get selected Types\r\n const filteredTypeLabels = [];\r\n if (this.lotFilterTypes && this.lotFilterTypes.length) {\r\n this.lotFilterTypes.forEach(type => {\r\n if (type.checked) {\r\n filteredTypeLabels.push(type.label);\r\n }\r\n });\r\n // ReAdding blacklisted type values for total filtering\r\n this.lotMapLegendForm.blackListedTypeValues.forEach(r => {\r\n if (this.lotDisplayTypes.includes(r)) {\r\n filteredTypeLabels.push(r);\r\n }\r\n });\r\n }\r\n\r\n // Get selected Facings\r\n const filteredFacingLabels = [];\r\n\r\n if (this.lotFilterFacings && this.lotFilterFacings.length) {\r\n this.lotFilterFacings.forEach(facing => {\r\n if (facing.checked) {\r\n filteredFacingLabels.push(facing.label);\r\n }\r\n });\r\n\r\n // ReAdding blacklisted facing values for total filtering\r\n this.lotMapLegendForm.blackListedFacingValues.forEach(r => {\r\n if (this.lotDisplayFacings.includes(r)) {\r\n filteredFacingLabels.push(r);\r\n }\r\n });\r\n }\r\n\r\n const lotFilterAttributes = new AlphaVisionLotFilterAttributes(filteredTypeLabels, filteredFacingLabels);\r\n this.alphaVisionMapService.updateLotAttributes(lotFilterAttributes.LotTypes, lotFilterAttributes.LotFacings);\r\n }\r\n\r\n backButton() {\r\n this.collapseAllLists();\r\n this.backButtonClicked.emit();\r\n }\r\n\r\n toggleStatus(): void {\r\n this.isCollapsedStatus = !this.isCollapsedStatus;\r\n this.isCollapsedType = true;\r\n this.isCollapsedFacing = true;\r\n }\r\n\r\n toggleFacing(): void {\r\n this.isCollapsedFacing = !this.isCollapsedFacing;\r\n this.isCollapsedStatus = true;\r\n this.isCollapsedType = true;\r\n }\r\n\r\n toggleType(): void {\r\n this.isCollapsedType = !this.isCollapsedType;\r\n this.isCollapsedStatus = true;\r\n this.isCollapsedFacing = true;\r\n }\r\n\r\n collapseAllLists(): void {\r\n this.isCollapsedType = true;\r\n this.isCollapsedFacing = true;\r\n this.isCollapsedStatus = true;\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
{{legendData.Home_Status_Filter}}
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{item.label}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
{{legendData.Lot_Direction_Filter}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{facing.label}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
{{legendData.Lot_Type_Filter}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{type.label}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n {{selectedPlan.PlanName}}\r\n = 0 && legendData.Homesites_Count\"\r\n class=\"lotMapLegend__legend-info-text w-100 text-left pl-3 pr-1\"\r\n [innerHTML]=\"legendData.Homesites_Count | mergeField: '{count}':lotsCount.HomesiteLotsCount:{boldValue:true}\">\r\n \r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { GMapsOptionsModel } from 'src/app/models/maps/gmaps-options.model';\r\nimport { GMapsMarker } from 'src/app/models/maps/gmaps-marker.model';\r\nimport { AgmMap } from '@agm/core';\r\nimport { GMapsMarkerService } from 'src/app/core-services/gmaps-marker.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../../base/base.component';\r\nimport { GoogleDirectionsRouteData } from 'src/app/models/maps/google-directions-route-data.model';\r\nimport { GmapsDirectionsService } from 'src/app/core-services/gmaps-directions.service';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\n\r\n@Component({\r\n selector: 'app-ng-google-map',\r\n templateUrl: './ng-google-map.component.html',\r\n styleUrls: ['./ng-google-map.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation()\r\n ]\r\n})\r\nexport class NgGoogleMapComponent extends BaseComponent implements OnInit {\r\n\r\n @ViewChild(AgmMap) private agmMap;\r\n\r\n @Input() mapOptions?: GMapsOptionsModel;\r\n @Output() markerClicked: EventEmitter = new EventEmitter();\r\n @Output() mapClicked: EventEmitter = new EventEmitter();\r\n\r\n fullscreenEnabled: boolean;\r\n\r\n markers: GMapsMarker[];\r\n mapLatitude: number = 33.7490; // Default initial Latitude if none passed in.\r\n mapLongitude: number = 84.3880; // Default initial Longitude if none passed in.\r\n\r\n showDirectionsEnabled: boolean = false;\r\n directionsRoute: google.maps.DirectionsRoute;\r\n travelTime: Date;\r\n\r\n directionsRouteData: GoogleDirectionsRouteData;\r\n directionsMidwayLatitude: number;\r\n directionsMidwayLongitude: number;\r\n\r\n googleMapTypes = google.maps.MapTypeId;\r\n\r\n constructor(private gmapsMarkerService: GMapsMarkerService,\r\n private gmapsDirectionsService: GmapsDirectionsService) { super(); }\r\n\r\n ngOnInit() {\r\n // Set initial map longitude & longitude\r\n if (this.mapOptions) {\r\n this.mapLatitude = this.mapOptions.InitialLatitude;\r\n this.mapLongitude = this.mapOptions.InitialLongitude;\r\n }\r\n\r\n this.gmapsMarkerService.markers\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((markers: GMapsMarker[]) => {\r\n if (markers) {\r\n this.markers = markers;\r\n this.setMarkersForDisplay();\r\n if (this.markers.every(mkr => !mkr.IsSelected)) {\r\n this.resetMapBounds();\r\n }\r\n }\r\n });\r\n\r\n this.gmapsDirectionsService.showDirection$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(showDirection => {\r\n this.showDirectionsEnabled = showDirection;\r\n });\r\n\r\n this.gmapsDirectionsService.travelTime$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(travelTime => {\r\n this.travelTime = travelTime;\r\n });\r\n\r\n this.gmapsDirectionsService.directionsRouteData$\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(directionsRouteData => {\r\n this.setDirectionsRouteData(directionsRouteData);\r\n });\r\n }\r\n\r\n public mapZoomIn() {\r\n this.mapOptions.Zoom = this.agmMap.zoom + 1;\r\n }\r\n\r\n public mapZoomOut() {\r\n this.mapOptions.Zoom = this.agmMap.zoom - 1;\r\n }\r\n\r\n public mapFullscreen() {\r\n this.fullscreenEnabled = !this.fullscreenEnabled;\r\n }\r\n\r\n // Set new map active coordinates then set clicked marker as selected.\r\n // Optionally, send map object data if we need as an output to parent components.\r\n public markerClick(marker: GMapsMarker) {\r\n this.mapLatitude = marker.Latitude;\r\n this.mapLongitude = marker.Longitude;\r\n\r\n this.setMarkersForDisplay();\r\n this.markerClicked.next(marker);\r\n }\r\n\r\n // Reset the currently selected marker and marker(s) appearance on map click\r\n public mapClick() {\r\n this.resetMapBounds();\r\n this.mapClicked.next(this.agmMap);\r\n }\r\n\r\n public mapLoaded() {\r\n // Do something here when map fully loaded?\r\n // console.log(this.agmMap);\r\n }\r\n\r\n public setDirectionsRouteData(routeData: GoogleDirectionsRouteData) {\r\n this.directionsRouteData = routeData;\r\n if (routeData) {\r\n this.gmapsDirectionsService.updateShowDirection(true);\r\n\r\n if (routeData.Route && routeData.Route.legs && routeData.Route.legs.length) {\r\n this.directionsRoute = routeData.Route;\r\n this.gmapsDirectionsService.updateDirectionsRoute(this.directionsRoute);\r\n }\r\n\r\n if (routeData.MidwayLatLng) {\r\n this.directionsMidwayLatitude = routeData.MidwayLatLng.lat();\r\n this.directionsMidwayLongitude = routeData.MidwayLatLng.lng();\r\n }\r\n } else {\r\n this.gmapsDirectionsService.updateDirectionsRoute(null);\r\n }\r\n }\r\n\r\n // Reset marker appearance based on selection and origin state\r\n private setMarkersForDisplay() {\r\n this.resetDirections();\r\n\r\n if (this.markers) {\r\n this.markers.map((mkr) => {\r\n\r\n if (mkr.IsOrigin) { // set Origin LatLng\r\n this.gmapsDirectionsService.updateOrigin(new google.maps.LatLng(mkr.Latitude, mkr.Longitude));\r\n return;\r\n }\r\n\r\n if (mkr.IsDestination) { // set Destination LatLng\r\n this.gmapsDirectionsService.updateDestination(new google.maps.LatLng(mkr.Latitude, mkr.Longitude));\r\n return;\r\n }\r\n\r\n if (mkr.IsSelected) {\r\n this.mapLatitude = mkr.Latitude;\r\n this.mapLongitude = mkr.Longitude;\r\n mkr.zIndex = 10000;\r\n mkr.setScale(1.3); // Set Marker Scale and zIndex depending on if a particular marker is selected or not.\r\n\r\n } else {\r\n mkr.zIndex = null;\r\n mkr.setScale(1);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private resetMapBounds() {\r\n if (this.markers && this.agmMap) {\r\n const bounds = new google.maps.LatLngBounds();\r\n this.markers.forEach(marker => {\r\n bounds.extend(new google.maps.LatLng(marker.Latitude, marker.Longitude));\r\n });\r\n this.agmMap._mapsWrapper.fitBounds(bounds);\r\n this.mapLatitude = this.mapOptions.InitialLatitude;\r\n this.mapLongitude = this.mapOptions.InitialLongitude;\r\n }\r\n }\r\n\r\n private resetDirections() {\r\n this.gmapsDirectionsService.clearDirectionsData();\r\n }\r\n}\r\n","
\r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n {{directionsRoute?.legs[0]?.duration?.text}}\r\n
\r\n {{directionsRoute?.legs[0]?.distance?.text}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, AfterViewInit, ElementRef } from '@angular/core';\r\nimport { NgbSlideEvent, NgbCarousel } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { AdobeLaunchCtaAttribute } from 'src/app/models/analytics/adobe-launch-attribute-enum';\r\nimport { CarouselOptionsModel } from 'src/app/models/carousel-options.model';\r\n\r\n@Component({\r\n selector: 'app-carousel',\r\n templateUrl: './carousel.component.html',\r\n styleUrls: ['./carousel.component.scss']\r\n})\r\nexport class CarouselComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() carouselOptions: CarouselOptionsModel;\r\n\r\n @Output() slideClickEvent: EventEmitter = new EventEmitter();\r\n @Output() activeSlideChange: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(NgbCarousel) ngbCarousel: NgbCarousel;\r\n\r\n activeSlideId: number;\r\n imagesLoading: boolean = true;\r\n\r\n constructor(private elemRef: ElementRef, private adobeLaunchService: AdobeLaunchService) { }\r\n\r\n ngOnInit() {\r\n if (this.carouselOptions) {\r\n this.activeSlideId = parseInt(this.carouselOptions.InitialSlideId, 10);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Analytics CTA Attributes for Bootstrap Carousel Prev/Next Arrow elements\r\n const leftScroll = this.elemRef.nativeElement.querySelectorAll('.carousel-control-prev')[0];\r\n if (leftScroll) {\r\n this.adobeLaunchService.setAnalyticsCtaAttributeOnElem(leftScroll, AdobeLaunchCtaAttribute.PhotoScroll);\r\n }\r\n\r\n const rightScroll = this.elemRef.nativeElement.querySelectorAll('.carousel-control-next')[0];\r\n if (rightScroll) {\r\n this.adobeLaunchService.setAnalyticsCtaAttributeOnElem(rightScroll, AdobeLaunchCtaAttribute.PhotoScroll);\r\n }\r\n }\r\n\r\n onSlideClick(slideId: number): void {\r\n this.slideClickEvent.next(slideId);\r\n }\r\n\r\n onSlideChange(slideEvent: NgbSlideEvent): void {\r\n this.activeSlideId = parseInt(slideEvent.current, 10);\r\n this.activeSlideChange.next(this.activeSlideId);\r\n }\r\n\r\n selectSlide(slideId: number): void {\r\n this.ngbCarousel.select(slideId.toString());\r\n }\r\n\r\n imageLoaded(index?: number) {\r\n if ((this.carouselOptions && this.carouselOptions.HasSingleImage) || (index === 0)) {\r\n this.imagesLoading = false;\r\n }\r\n }\r\n\r\n imageError(index?: number) {\r\n if ((this.carouselOptions && !this.carouselOptions.HasSingleImage) || (index === 0)) {\r\n this.carouselOptions.Images = this.carouselOptions.Images.splice(index, 1);\r\n this.imagesLoading = false;\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {{i + 1}} / {{carouselOptions.Images.length}}\r\n {{image.Caption}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n \r\n {{carouselOptions.Images[0].Caption}}\r\n
\r\n
\r\n
\r\n
0\"\r\n class=\"Carousel__status-overlay position-absolute text-light bg-dark p-1\">\r\n
\r\n {{overlayLabel}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GalleryModalComponent } from '../../modals/gallery-modal/gallery-modal.component';\r\nimport { Image } from 'src/app/models/product/image.model';\r\nimport { CarouselOptionsModel } from 'src/app/models/carousel-options.model';\r\nimport { ModalClasses } from '../../../../shared/modal-classes';\r\nimport { FilterGalleryModalComponent } from '../../modals/filter-gallery-modal/filter-gallery-modal.component';\r\nimport { GalleryModalModel } from 'src/app/models/content/media/gallery-modal.model';\r\nimport { PagesService } from 'src/app/core-services/pages.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../base/base.component';\r\nimport { sortImagesByImageRank, sortImagesByKioskRank } from 'src/helper-functions/image-helper';\r\n\r\n@Component({\r\n selector: 'app-gallery',\r\n templateUrl: './gallery.component.html',\r\n styleUrls: ['./gallery.component.scss']\r\n})\r\nexport class GalleryComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() public images: Image[];\r\n @Input() public statusOverlayText: string[];\r\n @Input() public galleryModalModel: GalleryModalModel;\r\n @Input() public showModalCTA: boolean;\r\n @Input() public useKioskRank: boolean;\r\n carouselOptions: CarouselOptionsModel;\r\n hasSummary: boolean;\r\n\r\n constructor(private modalService: NgbModal,\r\n private pageService: PagesService) { super(); }\r\n\r\n ngOnInit() {\r\n // Filter and Sort images\r\n const sortedImages: Image[] = this.filterAndSortImages(this.images);\r\n\r\n // Set Carousel Options\r\n this.carouselOptions = new CarouselOptionsModel(sortedImages);\r\n this.carouselOptions.StatusOverlayText = this.statusOverlayText;\r\n this.carouselOptions.ShowModalCta = this.showModalCTA;\r\n\r\n this.pageService.hasSummary.pipe(\r\n takeUntil(this.unsubscribe$)).subscribe((response: any) => {\r\n this.hasSummary = response;\r\n });\r\n }\r\n\r\n openGallery(slideId: number): void {\r\n const modalClass = this.hasSummary ? ModalClasses.Summary : '';\r\n this.carouselOptions.InitialSlideId = slideId.toString();\r\n\r\n const modalType = this.setModalType();\r\n\r\n const modalRef: NgbModalRef =\r\n this.modalService.open(modalType,\r\n { windowClass: `${ModalClasses.Full} ${modalClass}`, backdrop: false });\r\n\r\n this.setModalInputs(modalType, modalRef);\r\n }\r\n\r\n setModalType(): any {\r\n return this.galleryModalModel && this.galleryModalModel.IsFilterGallery ? FilterGalleryModalComponent : GalleryModalComponent;\r\n }\r\n\r\n setModalInputs(modalType: any, modalRef: NgbModalRef): void {\r\n if (modalType === FilterGalleryModalComponent) {\r\n modalRef.componentInstance.allImages = this.carouselOptions.Images;\r\n } else {\r\n modalRef.componentInstance.carouselOptions = this.carouselOptions;\r\n }\r\n\r\n if (this.galleryModalModel) {\r\n modalRef.componentInstance.galleryModalModel = this.galleryModalModel;\r\n }\r\n }\r\n\r\n filterAndSortImages(images: Image[]): Image[] {\r\n let sortedImages: Image[] = [];\r\n\r\n if (this.useKioskRank) {\r\n sortedImages = sortImagesByKioskRank(images);\r\n } else {\r\n sortedImages = sortImagesByImageRank(images);\r\n }\r\n\r\n return sortedImages;\r\n }\r\n}\r\n","\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { CarouselOptionsModel } from 'src/app/models/carousel-options.model';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Image } from 'src/app/models/product/image.model';\r\nimport { GalleryModalModel } from 'src/app/models/content/media/gallery-modal.model';\r\n\r\n@Component({\r\n selector: 'app-filter-gallery-modal',\r\n templateUrl: './filter-gallery-modal.component.html',\r\n styleUrls: ['./filter-gallery-modal.component.scss']\r\n})\r\nexport class FilterGalleryModalComponent implements OnInit {\r\n\r\n @Input() galleryModalModel: GalleryModalModel;\r\n @Input() allImages: Image[];\r\n\r\n exteriorCarouselOptions: CarouselOptionsModel;\r\n interiorCarouselOptions: CarouselOptionsModel;\r\n selectedImageType: string = 'Exterior';\r\n displayControls: boolean = true;\r\n\r\n constructor(public activeModal: NgbActiveModal) { }\r\n\r\n ngOnInit() {\r\n if (this.allImages && this.allImages.length) {\r\n const exteriorImages = this.allImages.filter(image =>\r\n image.ImageType.toLowerCase().includes('exterior') || image.ImageType.toLowerCase().includes('elevation'));\r\n this.exteriorCarouselOptions = new CarouselOptionsModel(exteriorImages);\r\n\r\n const interiorImages = this.allImages.filter(image => image.ImageType.toLowerCase().includes('interior'));\r\n this.interiorCarouselOptions = new CarouselOptionsModel(interiorImages);\r\n\r\n this.setDisplayControls(exteriorImages, interiorImages);\r\n } else {\r\n this.displayControls = false;\r\n }\r\n }\r\n\r\n selectImageType(imageType: string): void {\r\n this.selectedImageType = imageType;\r\n }\r\n\r\n setDisplayControls(exteriorImages: Image[], interiorImages: Image[]): void {\r\n if (exteriorImages.length === 0) {\r\n this.displayControls = false;\r\n this.selectedImageType = 'Interior';\r\n } else if (interiorImages.length === 0) {\r\n this.displayControls = false;\r\n }\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

{{galleryModalModel.ModalTitle}}

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {{galleryModalModel.ExteriorLabel | uppercase}}\r\n \r\n
\r\n
\r\n \r\n \r\n {{galleryModalModel.InteriorLabel | uppercase}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input, QueryList, ViewChildren, AfterViewInit } from '@angular/core';\r\nimport { NgbActiveModal, NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { PagesService } from 'src/app/core-services/pages.service';\r\nimport { combineLatest } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { InteractiveToolsModel } from 'src/app/models/interactive-tools-configuration.model';\r\nimport { PlanToolsModalComponent } from '../plan-tools-modal/plan-tools-modal.component';\r\nimport { InteractiveToolsService } from 'src/app/core-services/interactive-tool.service';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { PlanFloorPlansModel, FloorPlansConfigurationModel } from 'src/app/models/content/plan/plan-floor-plans.model';\r\nimport { CarouselComponent } from '../../media/carousel/carousel.component';\r\nimport { BaseComponent } from '../../base/base.component';\r\n\r\n@Component({\r\n selector: 'app-floor-plan-modal',\r\n templateUrl: './floor-plan-modal.component.html',\r\n styleUrls: ['./floor-plan-modal.component.scss']\r\n})\r\nexport class FloorPlanModalComponent extends BaseComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() public data: PlanFloorPlansModel;\r\n @Input() public planId: string;\r\n @Input() public floorPlanConfigs: FloorPlansConfigurationModel[] = [];\r\n @Input() public floorPlanCarousels: CarouselComponent[] = [];\r\n\r\n @ViewChildren(CarouselComponent) carousels !: QueryList;\r\n\r\n interactiveTools: InteractiveToolsModel;\r\n hasSummary: boolean;\r\n modalClass: string;\r\n hasInteractiveTool: boolean = false;\r\n plan: Plan;\r\n modalConfigOptions: FloorPlansConfigurationModel[] = [];\r\n\r\n constructor(private communityService: CommunityService,\r\n public activeModal: NgbActiveModal,\r\n private modalService: NgbModal,\r\n private pageService: PagesService,\r\n private interactiveToolsService: InteractiveToolsService) { super(); }\r\n\r\n ngOnInit() {\r\n combineLatest([ this.communityService.getPlanInfoById(this.planId),\r\n this.pageService.hasSummary,\r\n this.interactiveToolsService.InteractiveToolsItem])\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((response: any[]) => {\r\n this.plan = response[0];\r\n this.hasSummary = response[1];\r\n this.interactiveTools = response[2];\r\n\r\n if (this.plan != null && this.interactiveTools != null) {\r\n if (this.plan.InteractiveFloorPlanUrl || this.plan.ExteriorDesignUrl || this.plan.DesignCenterUrl ||\r\n this.plan.RoomDesignerUrl || this.plan.EnvisionUrl) {\r\n this.interactiveTools.Floor_Plan_Url = this.plan.InteractiveFloorPlanUrl;\r\n this.interactiveTools.Exterior_Options_Url = this.plan.ExteriorDesignUrl;\r\n this.interactiveTools.Furniture_Planner_Url = this.plan.DesignCenterUrl;\r\n this.interactiveTools.Room_Designer_Url = this.plan.RoomDesignerUrl;\r\n this.interactiveTools.Finishing_Options_Url = this.plan.EnvisionUrl;\r\n\r\n this.hasInteractiveTool = true;\r\n }\r\n }\r\n });\r\n // create a deep copy of Config options to avoid altering the previous carousel\r\n this.modalConfigOptions = JSON.parse(JSON.stringify(this.floorPlanConfigs));\r\n this.modalConfigOptions.map(config => {\r\n config.CarouselOptions.InitialSlideId = config.ActiveImageIndex.toString();\r\n config.ActiveImageIndex = config.ActiveImageIndex;\r\n config.CarouselOptions.ShowModalCta = false;\r\n config.CarouselOptions.IsFloorPlan = true;\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.carousels.changes\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((carousels: QueryList) => {\r\n this.floorPlanCarousels = carousels.toArray();\r\n });\r\n // this triggers the change event for the carousels so that the first click is not hijacked.\r\n this.carousels.setDirty();\r\n }\r\n\r\n setActiveImageSelection(activeSlideId: number): void {\r\n const activeConfig: FloorPlansConfigurationModel = this.modalConfigOptions.find(config => config.IsSelected === true);\r\n if (activeConfig) {\r\n activeConfig.ActiveImageIndex = activeSlideId;\r\n }\r\n }\r\n\r\n selectConfiguration(index: number): void {\r\n if (this.modalConfigOptions && this.modalConfigOptions[index]) {\r\n this.modalConfigOptions.map(config => config.IsSelected = false);\r\n this.modalConfigOptions[index].IsSelected = true;\r\n }\r\n }\r\n\r\n selectFloorPlanImage(activeConfigIndex: number, carouselIndex: number, imageIndex: number): void {\r\n if (this.modalConfigOptions && this.modalConfigOptions[activeConfigIndex]\r\n && this.floorPlanCarousels && this.floorPlanCarousels[carouselIndex]) {\r\n this.modalConfigOptions[activeConfigIndex].ActiveImageIndex = imageIndex;\r\n this.floorPlanCarousels[carouselIndex].selectSlide(imageIndex);\r\n }\r\n }\r\n\r\n openPlanTools(): void {\r\n const modalClass = this.hasSummary ? ModalClasses.Summary : '';\r\n const modalRef: NgbModalRef = this.modalService.open(PlanToolsModalComponent,\r\n { windowClass: `${ModalClasses.Full} ${modalClass}`, backdrop: false });\r\n modalRef.componentInstance.interactiveTools = this.interactiveTools;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

Floor Plan

\r\n \r\n
\r\n
\r\n
\r\n
1\" class=\"row d-flex justify-content-start\">\r\n
\r\n
\r\n {{floorPlanConfig.ConfigurationName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{floorPlanImage.FloorPlanType | uppercase}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CarouselOptionsModel } from 'src/app/models/carousel-options.model';\r\nimport { GalleryModalModel } from 'src/app/models/content/media/gallery-modal.model';\r\n\r\n@Component({\r\n selector: 'app-gallery-modal',\r\n templateUrl: './gallery-modal.component.html',\r\n styleUrls: ['./gallery-modal.component.scss']\r\n})\r\nexport class GalleryModalComponent implements OnInit {\r\n\r\n @Input() public carouselOptions: CarouselOptionsModel;\r\n @Input() public galleryModalModel: GalleryModalModel;\r\n modalCarouselOptions: CarouselOptionsModel;\r\n\r\n constructor(public activeModal: NgbActiveModal) { }\r\n\r\n ngOnInit() {\r\n // create a deep copy of carousel options to avoid altering the previous carousel\r\n this.modalCarouselOptions = JSON.parse(JSON.stringify(this.carouselOptions));\r\n this.modalCarouselOptions.ShowModalCta = false;\r\n }\r\n\r\n}\r\n","
\r\n

Gallery

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit, Input, ViewChild, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GuestRegistrationModel } from 'src/app/models/content/editorial/guest-registration.model';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../base/base.component';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { combineLatest } from 'rxjs';\r\nimport { setSuggestionText } from 'src/helper-functions/keyboard-helper';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { GuestRegistrationService } from 'src/app/core-services/guest-registration.service';\r\nimport { NgForm } from '@angular/forms';\r\nimport { GuestRegistrationResponseModel } from 'src/app/models/content/editorial/guest-registration-response.model';\r\nimport { GuestRegistrationModalModel } from 'src/app/models/content/editorial/guest-registration-modal.model';\r\nimport { fadeInRightOnEnterAnimation, fadeInOnEnterAnimation, fadeOutOnLeaveAnimation } from 'angular-animations';\r\nimport { GuestRegistrationContactModel } from 'src/app/models/content/editorial/guest-registration-contact.model';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { AdobeLaunchFormName, AdobeLaunchFormType } from 'src/app/models/analytics/adobe-launch-event-enum';\r\n\r\n@Component({\r\n selector: 'app-guest-registration-modal',\r\n templateUrl: './guest-registration-modal.component.html',\r\n styleUrls: ['./guest-registration-modal.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation(),\r\n fadeInRightOnEnterAnimation(),\r\n fadeOutOnLeaveAnimation()\r\n ]\r\n})\r\nexport class GuestRegistrationModalComponent extends BaseComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() data: GuestRegistrationModalModel;\r\n\r\n @ViewChild('guestRegistrationForm') guestRegistrationForm: NgForm;\r\n\r\n public community: Community;\r\n\r\n public guestRegistrationModel: GuestRegistrationModel = new GuestRegistrationModel();\r\n public maxAmountOfContacts = 3;\r\n public get atMaxContactsLimit(): boolean {\r\n return this.guestRegistrationModel.Contacts && this.guestRegistrationModel.Contacts.length >= this.maxAmountOfContacts;\r\n }\r\n\r\n public formSubmitted: boolean = false;\r\n public registrationResponse: GuestRegistrationResponseModel;\r\n\r\n public emailDomains: string[] = [];\r\n public loading: boolean = false;\r\n\r\n constructor(public activeModal: NgbActiveModal,\r\n private communityService: CommunityService,\r\n private guestRegistrationService: GuestRegistrationService,\r\n private cdr: ChangeDetectorRef,\r\n private adobeLaunchService: AdobeLaunchService) { super(); }\r\n\r\n ngOnInit() {\r\n const observables = [this.communityService.community];\r\n combineLatest(observables)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([community]: [Community]) => {\r\n if (community) {\r\n this.community = community;\r\n this.guestRegistrationModel.CommunityId = community.Id;\r\n }\r\n });\r\n\r\n if (this.data) {\r\n this.emailDomains = setSuggestionText(this.data.Domain_1, this.data.Domain_2, this.data.Domain_3);\r\n }\r\n\r\n this.addContactToForm();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n public addContactToForm() {\r\n if (this.guestRegistrationModel && this.guestRegistrationModel.Contacts) {\r\n this.guestRegistrationModel.Contacts.push(new GuestRegistrationContactModel());\r\n }\r\n }\r\n\r\n public removeContactFromForm(index) {\r\n if (this.guestRegistrationModel && this.guestRegistrationModel.Contacts && this.guestRegistrationModel.Contacts[index]) {\r\n if (index > -1) {\r\n this.guestRegistrationModel.Contacts.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n public async submitGuestRegistrationForm() {\r\n this.formSubmitted = true;\r\n if (this.guestRegistrationForm && this.guestRegistrationForm.valid && this.guestRegistrationModel) {\r\n this.loading = true;\r\n const resp: GuestRegistrationResponseModel = await this.guestRegistrationService.registerContact(this.guestRegistrationModel);\r\n this.registrationResponse = resp || new GuestRegistrationResponseModel();\r\n\r\n // on successful submission, push form analytics event\r\n if (this.registrationResponse.IsSuccessful) {\r\n this.adobeLaunchService.pushFormSubmittedEvent(AdobeLaunchFormName.GuestRegistration, AdobeLaunchFormType.Modal);\r\n }\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n

\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n\r\n \r\n\r\n\r\n\r\n
\r\n\r\n \r\n

\r\n {{data.Title_Label}}\r\n

\r\n
\r\n {{data.Subtitle_Label}}\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
0\" class=\"GuestRegistrationModal__label text-white mb-2\">\r\n
\r\n
\r\n {{data.Additional_Contact_Label}} {{i}}\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n
{{data.Real_Estate_Agent_Checkbox_Label}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n {{data.Agent_Information_Label}}\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n {{data.Contact_Disclaimer_Label}}\r\n \r\n
\r\n \r\n {{data.Communication_Disclaimer_Label}}\r\n \r\n\r\n
\r\n\r\n \r\n \r\n {{data.Complete_Registration_Button_Label}}\r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n {{registrationResponse.IsSuccessful ? data.Successful_Registration_Label : data.Failed_Registration_Label}}\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { HersScoreModel } from 'src/app/models/hers-score-configuration.model';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../base/base.component';\r\n\r\n@Component({\r\n selector: 'app-hers-score-modal',\r\n templateUrl: './hers-score-modal.component.html',\r\n styleUrls: ['./hers-score-modal.component.scss']\r\n})\r\nexport class HersScoreModalComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() HersScore: HersScoreModel;\r\n @Input() plan: Plan;\r\n community: Community;\r\n\r\n constructor(public activeModal: NgbActiveModal,\r\n private communityService: CommunityService) { super(); }\r\n\r\n ngOnInit() {\r\n this.HersScore = this.hersPropertySetup(this.HersScore, this.plan);\r\n this.communityService.community\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((community: Community) => {\r\n this.community = community;\r\n });\r\n }\r\n\r\n private hersPropertySetup(hersScore: HersScoreModel, plan: Plan) {\r\n if (plan && hersScore && this.checkHERSCost()) {\r\n hersScore.HasSavings = true;\r\n this.setHERSScoreDataFromPlan();\r\n } else {\r\n hersScore.HasSavings = false;\r\n }\r\n return hersScore;\r\n }\r\n\r\n private setHERSScoreDataFromPlan() {\r\n this.HersScore.Hers_Savings_1 = this.plan.HERSEstimatedAnnualCostsRowOne;\r\n this.HersScore.Hers_Savings_2 = this.plan.HERSEstimatedAnnualCostsRowTwo;\r\n this.HersScore.Hers_Savings_3 = this.plan.HERSEstimatedAnnualCostsRowThree;\r\n this.HersScore.Hers_Savings_4 = this.plan.HERSEstimatedAnnualCostsRowFour;\r\n this.HersScore.Hers_Savings_5 = this.plan.HERSEstimatedAnnualCostsRowFive;\r\n\r\n this.HersScore.Hers_Difference_2 = this.plan.HERSEstimatedAnnualCostsRowTwo - this.plan.HERSEstimatedAnnualCostsRowOne;\r\n this.HersScore.Hers_Difference_3 = this.plan.HERSEstimatedAnnualCostsRowThree - this.plan.HERSEstimatedAnnualCostsRowOne;\r\n this.HersScore.Hers_Difference_4 = this.plan.HERSEstimatedAnnualCostsRowFour - this.plan.HERSEstimatedAnnualCostsRowOne;\r\n this.HersScore.Hers_Difference_5 = this.plan.HERSEstimatedAnnualCostsRowFive - this.plan.HERSEstimatedAnnualCostsRowOne;\r\n }\r\n\r\n private checkHERSCost(): boolean {\r\n if (this.plan.HERSEstimatedAnnualCostsRowOne > 0 &&\r\n this.plan.HERSEstimatedAnnualCostsRowTwo > 0 &&\r\n this.plan.HERSEstimatedAnnualCostsRowThree > 0 &&\r\n this.plan.HERSEstimatedAnnualCostsRowFour > 0 &&\r\n this.plan.HERSEstimatedAnnualCostsRowFive > 0) {\r\n return true;\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n

{{HersScore.Modal_Title}}

\r\n
\r\n
\r\n
{{HersScore.Plan_Name | mergeField: '{plan}':plan.PlanName}}
\r\n
\r\n {{community.Name}} | {{community.Address.City}}, {{community.Address.StateAbbreviation}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{HersScore.Header_1}}
\r\n
{{HersScore.Hers_Difference_5 | currency}}
*
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{HersScore.Column_1}}{{HersScore.Column_2}}
\r\n {{HersScore.Row_1}}\r\n {{HersScore.Hers_Savings_1 | currency}}
{{HersScore.Row_2}}{{HersScore.Hers_Savings_2 | currency}}{{HersScore.Hers_Difference_2 | currency}}
{{HersScore.Row_3}}{{HersScore.Hers_Savings_3 | currency}}{{HersScore.Hers_Difference_3 | currency}}
{{HersScore.Row_4}}{{HersScore.Hers_Savings_4 | currency}}{{HersScore.Hers_Difference_4 | currency}}
{{HersScore.Row_5}}{{HersScore.Hers_Savings_5 | currency}}{{HersScore.Hers_Difference_5 | currency}}
\r\n
{{HersScore.Table_Details}}
\r\n
\r\n
{{HersScore.Header_2}}
\r\n
{{HersScore.Header_2_Description}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
{{HersScore.Lite_Header}}
\r\n
{{HersScore.Lite_Header_Description}}
\r\n
{{HersScore.Header_2_Description}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-interactive-tool-modal',\r\n templateUrl: './interactive-tool-modal.component.html',\r\n styleUrls: ['./interactive-tool-modal.component.scss']\r\n})\r\nexport class InteractiveToolModalComponent implements OnInit {\r\n\r\n @Input() public url: string;\r\n @Input() public title: string;\r\n @Input() public isFinishingOptions: boolean;\r\n\r\n constructor(public activeModal: NgbActiveModal) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { BaseComponent } from '../../base/base.component';\r\nimport { PointOfInterest } from 'src/app/models/product/point-of-interest.model';\r\nimport { Result } from 'src/app/models/maps/google-places-result.model';\r\nimport { getDistanceFromCommunity } from 'src/helper-functions/geolocation-helper';\r\nimport { MapCommuteModalModel } from 'src/app/models/maps/map-commute-modal.model';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { AdobeLaunchFormName, AdobeLaunchFormType } from 'src/app/models/analytics/adobe-launch-event-enum';\r\n\r\n@Component({\r\n selector: 'app-map-commute-modal',\r\n templateUrl: './map-commute-modal.component.html',\r\n styleUrls: ['./map-commute-modal.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation()\r\n ]\r\n})\r\nexport class MapCommuteModalComponent extends BaseComponent implements OnInit, AfterViewInit {\r\n\r\n constructor(public activeModal: NgbActiveModal, private adobeLaunchService: AdobeLaunchService) { super(); }\r\n\r\n @Input() data: MapCommuteModalModel;\r\n @Output() poiSubmitted = new EventEmitter(true);\r\n\r\n @ViewChild('destinationAddressInput') destinationAddressInput: ElementRef;\r\n\r\n public destinationPOI: PointOfInterest = null;\r\n public allowSubmit: boolean = false;\r\n\r\n ngOnInit() {}\r\n\r\n ngAfterViewInit() {\r\n this.focusAddressInput();\r\n }\r\n\r\n focusAddressInput() {\r\n if (this.destinationAddressInput && this.destinationAddressInput.nativeElement) {\r\n this.destinationAddressInput.nativeElement.focus();\r\n google.maps.event.trigger(this.destinationAddressInput.nativeElement, 'focus', {});\r\n }\r\n }\r\n\r\n handleAddressChange(placesResult: google.maps.places.PlaceResult) {\r\n if (placesResult) {\r\n const destinationPOI = new PointOfInterest(placesResult.place_id, null);\r\n destinationPOI.GooglePlaceID = placesResult.place_id;\r\n destinationPOI.POIName = placesResult.name;\r\n destinationPOI.POIAddress = placesResult.formatted_address;\r\n destinationPOI.POILatitude = placesResult.geometry.location.lat();\r\n destinationPOI.POILongitude = placesResult.geometry.location.lng();\r\n this.destinationPOI = destinationPOI;\r\n this.allowSubmit = true;\r\n }\r\n }\r\n\r\n submitDestinationPOI() {\r\n if (this.allowSubmit && this.destinationPOI && this.destinationPOI.POILatitude && this.destinationPOI.POILongitude) {\r\n this.poiSubmitted.emit(this.destinationPOI);\r\n\r\n // push analytics form event\r\n this.adobeLaunchService.pushFormSubmittedEvent(AdobeLaunchFormName.MayMyCommute, AdobeLaunchFormType.Modal);\r\n\r\n if (this.activeModal) {\r\n this.activeModal.close();\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{data.Commute_Modal_Title_Label}}\r\n {{data.Commute_Modal_Subtitle_Label}}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-pdf-image-modal',\r\n templateUrl: './pdf-image-modal.component.html',\r\n styleUrls: ['./pdf-image-modal.component.scss']\r\n})\r\nexport class PdfImageModalComponent implements OnInit {\r\n\r\n @Input() Url: string;\r\n\r\n constructor( public activeModal: NgbActiveModal) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n ","import { Component, OnInit, Input } from '@angular/core';\r\nimport { PlanFeaturesModalModel } from 'src/app/models/content/plan/plan-features-modal.model';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-plan-features-modal',\r\n templateUrl: './plan-features-modal.component.html',\r\n styleUrls: ['./plan-features-modal.component.scss']\r\n})\r\nexport class PlanFeaturesModalComponent implements OnInit {\r\n\r\n @Input() public planFeaturesModal: PlanFeaturesModalModel;\r\n\r\n constructor(public activeModal: NgbActiveModal) { }\r\n\r\n ngOnInit() {\r\n // ensure features sorted by rank\r\n this.planFeaturesModal.Features.sort((a, b) => {\r\n if (a.Rank === b.Rank) {\r\n if (a.FeatureName > b.FeatureName) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n return a.Rank - b.Rank;\r\n });\r\n }\r\n}\r\n","
\r\n

All Features

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {{planFeaturesModal.EmbraceYourSpaceImages[2].Caption}}\r\n
\r\n \r\n {{planFeaturesModal.EmbraceYourSpaceImages[0].Caption}}\r\n
\r\n
\r\n
\r\n \r\n {{planFeaturesModal.EmbraceYourSpaceImages[1].Caption}}\r\n
\r\n
\r\n
\r\n \r\n {{planFeaturesModal.PlanGalleryImage.Caption}}\r\n
\r\n
\r\n
\r\n {{planFeaturesModal.MetaDescription}}\r\n
\r\n
\r\n
\r\n
{{groupedFeature?.key}}
\r\n
    \r\n
  • {{feature.FeatureName}}
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { PlanQmiListingModel } from 'src/app/models/content/plan/plan-qmi-listing.model';\r\nimport { QmiCardModel } from 'src/app/models/content/qmi/qmi-card.model';\r\nimport { BaseComponent } from 'src/app/community/shared/base/base.component';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Router } from '@angular/router';\r\nimport { setTrimUrl } from 'src/helper-functions/sitecore-api-url-helper';\r\nimport { sortImagesByImageRank } from 'src/helper-functions/image-helper';\r\n\r\n@Component({\r\n selector: 'app-plan-qmi-listing-modal',\r\n templateUrl: './plan-qmi-listing-modal.component.html',\r\n styleUrls: ['./plan-qmi-listing-modal.component.scss']\r\n})\r\nexport class PlanQmiListingModalComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() data: PlanQmiListingModel;\r\n @Input() plan: Plan;\r\n\r\n qmis: QMI[];\r\n qmiCardModel: QmiCardModel;\r\n planName: string;\r\n trimmedUrl: string = setTrimUrl(this.router);\r\n\r\n constructor(private communityService: CommunityService,\r\n public activeModal: NgbActiveModal,\r\n private router: Router) { super(); }\r\n\r\n ngOnInit() {\r\n this.communityService.qmis.pipe(\r\n takeUntil(this.unsubscribe$)\r\n ).subscribe((qmis: QMI[]) => {\r\n if (this.plan && this.plan.Id) {\r\n this.qmis = qmis.filter(qmi => qmi.PlanId === this.plan.Id);\r\n this.planName = this.plan.PlanName;\r\n }\r\n\r\n this.qmis.map(qmi => {\r\n if (qmi.Images && qmi.Images.length) {\r\n qmi.Images = sortImagesByImageRank(qmi.Images);\r\n }\r\n return qmi;\r\n });\r\n\r\n this.qmiCardModel = this.mapSitecoreLabelsToQmiCard(this.data);\r\n });\r\n }\r\n\r\n closeModal() {\r\n if (this.activeModal) {\r\n this.activeModal.close();\r\n }\r\n }\r\n\r\n private mapSitecoreLabelsToQmiCard(sitecoreLabels: PlanQmiListingModel): QmiCardModel {\r\n const qmiCardModel = new QmiCardModel();\r\n qmiCardModel.Series_Name = sitecoreLabels.Series_Name;\r\n qmiCardModel.Price = sitecoreLabels.Price;\r\n qmiCardModel.Bedrooms = sitecoreLabels.Bedrooms;\r\n qmiCardModel.Bathrooms = sitecoreLabels.Bathrooms;\r\n qmiCardModel.Garage = sitecoreLabels.Garage;\r\n qmiCardModel.Square_Feet = sitecoreLabels.Square_Feet;\r\n qmiCardModel.Price_Discount = sitecoreLabels.Price_Discount;\r\n qmiCardModel.QMI_CTA_Text = sitecoreLabels.View_Home_CTA_Text;\r\n qmiCardModel.View_All_Button_Text = sitecoreLabels.View_All_Button_Text;\r\n qmiCardModel.QMI_CTA_Page_Item_Ref = sitecoreLabels.View_Home_CTA_Page_Item_Ref;\r\n\r\n return qmiCardModel;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

{{data.Modal_Header_Text | mergeField: '{plan}': planName}}

\r\n \r\n
\r\n
\r\n
4}\">\r\n \r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbActiveModal, NgbModalRef, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { InteractiveToolsModel } from 'src/app/models/interactive-tools-configuration.model';\r\nimport { InteractiveToolModalComponent } from '../interactive-tool-modal/interactive-tool-modal.component';\r\nimport { ModalClasses } from 'src/app/shared/modal-classes';\r\nimport { BaseComponent } from '../../base/base.component';\r\n\r\n@Component({\r\n selector: 'app-plan-tools-modal',\r\n templateUrl: './plan-tools-modal.component.html',\r\n styleUrls: ['./plan-tools-modal.component.scss']\r\n})\r\nexport class PlanToolsModalComponent extends BaseComponent implements OnInit {\r\n\r\n @Input() public interactiveTools: InteractiveToolsModel;\r\n private isFinshingOptions: boolean = false;\r\n\r\n constructor(public activeModal: NgbActiveModal,\r\n private modalService: NgbModal) { super(); }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n openInteractiveToolModal(url: string, title: string, isFinishingOptions?: boolean): void {\r\n const modalRef: NgbModalRef = this.modalService.open(InteractiveToolModalComponent,\r\n { windowClass: `${ModalClasses.Full}`, backdrop: false });\r\n\r\n modalRef.componentInstance.url = url;\r\n modalRef.componentInstance.title = title;\r\n modalRef.componentInstance.isFinishingOptions = isFinishingOptions;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n

Interactive Tools

\r\n \r\n
\r\n
\r\n
Sorry, there are no interactive tools available at this time.
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{interactiveTools.Floor_Plan_Label}}\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{interactiveTools.Exterior_Options_Label}}\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{interactiveTools.Furniture_Planner_Label}}\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{interactiveTools.Room_Designer_Label}}\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n {{interactiveTools.Finishing_Options_Label}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { VideoModalModel } from 'src/app/models/content/media/video-modal.model';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-plan-virtual-tour-modal',\r\n templateUrl: './plan-virtual-tour-modal.component.html',\r\n styleUrls: ['./plan-virtual-tour-modal.component.scss']\r\n})\r\nexport class PlanVirtualTourModalComponent implements OnInit {\r\n\r\n @Input() videoModalModel: VideoModalModel;\r\n\r\n constructor(public activeModal: NgbActiveModal) { }\r\n\r\n ngOnInit() { }\r\n\r\n}\r\n","
\r\n
\r\n

{{videoModalModel.ModalHeader}}

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, Input, ElementRef, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { RequestBrochureModel } from 'src/app/models/content/editorial/request-brochure.model';\r\nimport { RequestBrochureService } from 'src/app/core-services/request-brochure.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../base/base.component';\r\nimport { CommunityService } from 'src/app/core-services/community.service';\r\nimport { combineLatest } from 'rxjs';\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\nimport { Series } from 'src/app/models/product/series.model';\r\nimport { setSuggestionText } from 'src/helper-functions/keyboard-helper';\r\nimport { PlanBrochureService } from 'src/app/core-services/plan-brochure.service';\r\nimport { Community } from 'src/app/models/product/community.model';\r\nimport { RequestBrochureResponse } from 'src/app/models/content/editorial/request-brochure-response.model';\r\nimport { FormControl, NgForm } from '@angular/forms';\r\nimport { QMI } from 'src/app/models/product/qmi.model';\r\nimport { fadeInOnEnterAnimation } from 'angular-animations';\r\nimport { AdobeLaunchService } from 'src/app/core-services/adobe-launch.service';\r\nimport { AdobeLaunchFormName, AdobeLaunchFormType } from 'src/app/models/analytics/adobe-launch-event-enum';\r\n\r\n@Component({\r\n selector: 'app-request-brochure-modal',\r\n templateUrl: './request-brochure-modal.component.html',\r\n styleUrls: ['./request-brochure-modal.component.scss'],\r\n animations: [\r\n fadeInOnEnterAnimation()\r\n ]\r\n})\r\nexport class RequestBrochureModalComponent extends BaseComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @Input() currentPlanData: Plan;\r\n @Input() currentQmiData: QMI;\r\n selectedPlans: Plan[] = [];\r\n selectedQmis: QMI[] = [];\r\n\r\n @ViewChild('requestBrochureForm') requestBrochureForm: NgForm;\r\n @ViewChild('brochureEmail') brochureEmailInput: ElementRef;\r\n\r\n requestBrochureModal: RequestBrochureModel;\r\n plans: Plan[] = [];\r\n plansWithoutSeries: Plan[] = [];\r\n qmis: QMI[] = [];\r\n qmisWithoutSeries: QMI[] = [];\r\n series: Series[] = [];\r\n community: Community;\r\n\r\n emailDomains: string[] = [];\r\n emailAddress: string = '';\r\n\r\n loading: boolean = false;\r\n formSubmitted: boolean;\r\n formSubmittedResponse: RequestBrochureResponse;\r\n\r\n constructor(public activeModal: NgbActiveModal,\r\n private requestBrochureService: RequestBrochureService,\r\n private communityService: CommunityService,\r\n private planBrochureService: PlanBrochureService,\r\n private adobeLaunchService: AdobeLaunchService) { super(); }\r\n\r\n ngOnInit() {\r\n const observables = [this.communityService.plans,\r\n this.communityService.community,\r\n this.communityService.series,\r\n this.communityService.qmis,\r\n this.requestBrochureService.RequestBrochureItem];\r\n\r\n combineLatest(observables)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(([plans, community, series, qmis, requestBrochureItem]: any[]) => {\r\n this.requestBrochureModal = requestBrochureItem;\r\n if (plans && plans.length) {\r\n this.plans = plans;\r\n if (series && series.length) {\r\n this.series = series;\r\n }\r\n if (qmis && qmis.length) {\r\n this.qmis = qmis;\r\n }\r\n if (community) {\r\n this.community = community;\r\n }\r\n if (this.community && this.community.PlanRankType && this.community.PlanRankType.toLowerCase().includes('series')) {\r\n this.plansWithoutSeries = this.plans.filter(plan => !plan.SeriesName);\r\n this.qmisWithoutSeries = this.qmis.filter(qmi => !qmi.Plan.SeriesName);\r\n } else {\r\n this.plansWithoutSeries = this.plans;\r\n this.qmisWithoutSeries = this.qmis;\r\n }\r\n }\r\n });\r\n\r\n if (this.requestBrochureModal) {\r\n this.emailDomains = setSuggestionText(this.requestBrochureModal.Domain_1,\r\n this.requestBrochureModal.Domain_2,\r\n this.requestBrochureModal.Domain_3);\r\n }\r\n\r\n if (this.currentPlanData && this.selectedPlans) {\r\n this.selectedPlans.push(this.currentPlanData);\r\n }\r\n\r\n if (this.currentQmiData && this.selectedQmis) {\r\n this.selectedQmis.push(this.currentQmiData);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.formSubmitted = false;\r\n this.formSubmittedResponse = null;\r\n super.ngOnDestroy();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.focusEmailInput();\r\n }\r\n\r\n planChecked(event, plan: Plan) {\r\n if (event && event.target && plan) {\r\n if (event.target.checked) {\r\n this.selectedPlans.push(plan);\r\n } else {\r\n this.selectedPlans = this.selectedPlans.filter(p => p.Id !== plan.Id);\r\n }\r\n }\r\n this.focusEmailInput();\r\n }\r\n\r\n qmiChecked(event, qmi: QMI) {\r\n if (event && event.target && qmi) {\r\n if (event.target.checked) {\r\n this.selectedQmis.push(qmi);\r\n } else {\r\n this.selectedQmis = this.selectedQmis.filter(q => q.InventoryHomeID !== qmi.InventoryHomeID);\r\n }\r\n }\r\n this.focusEmailInput();\r\n }\r\n\r\n async submitForm() {\r\n if (this.formIsValid()) {\r\n this.formSubmitted = true;\r\n this.loading = true;\r\n const uniqueSelectedPlans = [...new Set(this.selectedPlans)];\r\n const uniqueSelectedQmis = [...new Set(this.selectedQmis)];\r\n const resp: RequestBrochureResponse = await this.planBrochureService.requestPlanBrochure(this.community,\r\n uniqueSelectedPlans,\r\n uniqueSelectedQmis,\r\n this.emailAddress);\r\n this.formSubmittedResponse = resp;\r\n\r\n // on successful form submission, push analytics form event\r\n if (this.formSubmittedResponse.isSuccessful &&\r\n ((uniqueSelectedPlans && uniqueSelectedPlans.length) ||\r\n (uniqueSelectedQmis && uniqueSelectedQmis.length))) {\r\n this.adobeLaunchService.pushFormSubmittedEvent(AdobeLaunchFormName.RequestBrochure,\r\n AdobeLaunchFormType.Modal,\r\n uniqueSelectedPlans,\r\n uniqueSelectedQmis);\r\n }\r\n }\r\n this.loading = false;\r\n this.defocusEmailInput();\r\n }\r\n\r\n focusEmailInput() {\r\n if (this.brochureEmailInput && this.brochureEmailInput.nativeElement) {\r\n this.brochureEmailInput.nativeElement.focus();\r\n }\r\n }\r\n\r\n defocusEmailInput() {\r\n if (this.brochureEmailInput && this.brochureEmailInput.nativeElement) {\r\n this.brochureEmailInput.nativeElement.blur();\r\n }\r\n }\r\n\r\n formIsValid(): boolean {\r\n let isValid: boolean;\r\n\r\n if (this.requestBrochureForm && this.requestBrochureForm.valid &&\r\n this.community && this.emailAddress &&\r\n ((this.selectedPlans && this.selectedPlans.length) || (this.selectedQmis && this.selectedQmis.length))\r\n ) {\r\n isValid = true;\r\n } else {\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n}\r\n","
\r\n\r\n
\r\n

\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n\r\n
\r\n\r\n

\r\n {{requestBrochureModal.Get_Brochure_Header}}\r\n

\r\n
\r\n {{requestBrochureModal.Get_Brochure_Description}}\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n

{{seriesItem.SeriesName}}

\r\n
\r\n
\r\n
{{requestBrochureModal.Plans_Subheader}}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{requestBrochureModal.Quick_Move_Ins_Subheader}}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{requestBrochureModal.Plans_Subheader}}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{requestBrochureModal.Quick_Move_Ins_Subheader}}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n {{plan.PlanName}}\r\n
\r\n {{requestBrochureModal.Current_Plan_Indicator}}\r\n
\r\n
\r\n
\r\n {{requestBrochureModal.Starting_From_Price}} {{plan.Price | currency: 'USD':'symbol':'1.0-0'}}\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n {{qmi.PlanName}} (Lot #{{qmi.LotBlock}})\r\n
\r\n {{requestBrochureModal.Current_Plan_Indicator}}\r\n
\r\n
\r\n
\r\n {{requestBrochureModal.Starting_From_Price}} {{(qmi.PriceDiscount ? qmi.FinalPrice : qmi.Price) | currency: 'USD':'symbol':'1.0-0'}}\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n

\r\n {{formSubmittedResponse?.isSuccessful ? requestBrochureModal.Submission_Header : requestBrochureModal.Exception_Header}}\r\n

\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { VideoModalModel } from 'src/app/models/content/media/video-modal.model';\r\n\r\n@Component({\r\n selector: 'app-video-modal',\r\n templateUrl: './video-modal.component.html',\r\n styleUrls: ['./video-modal.component.scss']\r\n})\r\nexport class VideoModalComponent implements OnInit {\r\n\r\n @Input() videoModalModel: VideoModalModel;\r\n videoUrl: string;\r\n captionPlacement: string;\r\n\r\n\r\n constructor(public activeModal: NgbActiveModal) { }\r\n\r\n ngOnInit() {\r\n if (this.videoModalModel && this.videoModalModel.VideoId) {\r\n this.setVideoUrl();\r\n this.setCaptionPlacement();\r\n }\r\n }\r\n\r\n setVideoUrl() {\r\n this.videoUrl = `https://youtube.com/embed/${this.videoModalModel.VideoId}`;\r\n\r\n if (this.videoModalModel.EnableAutoplay) {\r\n this.videoUrl += '?autoplay=1&mute=1';\r\n }\r\n }\r\n\r\n setCaptionPlacement() {\r\n switch (this.videoModalModel.ModalDescriptionPlacement) {\r\n case 'Center':\r\n this.captionPlacement = 'justify-content-center';\r\n break;\r\n case 'Right':\r\n this.captionPlacement = 'justify-content-end';\r\n break;\r\n default:\r\n this.captionPlacement = 'justify-content-start';\r\n }\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n

{{videoModalModel.ModalHeader}}

\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n\r\n
\r\n {{videoModalModel.ModalDescription}}\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { getCurrencySymbol, CurrencyPipe } from '@angular/common';\r\nimport { pipeFromArray } from 'rxjs/internal/util/pipe';\r\n\r\n// Provides currnecy piping functionality while also abbreviating number value inputs of 1000 or more.\r\n@Pipe({ name: 'abbrevCurrency' })\r\nexport class AbbrevCurrencyPipe implements PipeTransform {\r\n transform(num, fixed, currency, format, locale) {\r\n if (num === null) { \r\n return null; \r\n }\r\n\r\n if (num === 0) { \r\n return '0'; \r\n }\r\n\r\n // number of decimal places to show\r\n fixed = (!fixed || fixed < 0) ? 0 : fixed;\r\n\r\n // get power\r\n const b = parseFloat(num).toPrecision(2).split('e'); \r\n\r\n // floor at decimals, ceiling at trillions\r\n const k = b.length === 1 ? 0 : Math.floor(Math.min(parseFloat(b[1].slice(1)), 14) / 3);\r\n\r\n // divide by power\r\n const c = k < 1 ? num.toFixed(+ fixed) : (num / Math.pow(10, k * 3)).toFixed(1 + fixed);\r\n const d = c < 0 ? c : Math.abs(c); // enforce -0 is 0\r\n const e = new CurrencyPipe(locale, currency).transform(d, currency, format, `1.${fixed}-${fixed}`, locale);\r\n\r\n return e + ['', 'K', 'M', 'B', 'T'][k]; // append power\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HorizontalAlignment } from 'src/app/models/enums/dropdown-enum';\r\n\r\n@Pipe({\r\n name: 'alignmentClass'\r\n})\r\nexport class AlignmentStylePipe implements PipeTransform {\r\n\r\n transform(sitecorePosition: string): string {\r\n let alignmentClass: string;\r\n switch (sitecorePosition) {\r\n case HorizontalAlignment.Center:\r\n alignmentClass = 'justify-content-center text-center';\r\n break;\r\n case HorizontalAlignment.Right:\r\n alignmentClass = 'justify-content-end text-right';\r\n break;\r\n default:\r\n alignmentClass = 'justify-content-start text-left';\r\n }\r\n return alignmentClass;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ButtonStyle } from 'src/app/models/enums/dropdown-enum';\r\nimport { ButtonClass } from 'src/app/models/enums/style-enum';\r\n\r\n@Pipe({\r\n name: 'buttonStyle'\r\n})\r\nexport class ButtonStylePipe implements PipeTransform {\r\n\r\n transform(buttonType: string): string {\r\n let buttonStyle: string;\r\n\r\n switch (buttonType) {\r\n case ButtonStyle.Default:\r\n buttonStyle = ButtonClass.Default;\r\n break;\r\n case ButtonStyle.Link:\r\n buttonStyle = ButtonClass.Link;\r\n break;\r\n default:\r\n buttonStyle = ButtonClass.Primary;\r\n }\r\n\r\n return buttonStyle;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'groupBy'})\r\nexport class GroupByPipe implements PipeTransform {\r\n transform(collection: any[], property: string): any[] {\r\n // prevents the application from breaking if the array of objects doesn't exist yet\r\n if (!collection) {\r\n return null;\r\n }\r\n\r\n const groupedCollection = collection.reduce((previous, current) => {\r\n if (!previous[current[property]]) {\r\n previous[current[property]] = [current];\r\n } else {\r\n previous[current[property]].push(current);\r\n }\r\n\r\n return previous;\r\n }, {});\r\n\r\n // this will return an array of objects, each object containing a group of objects\r\n return Object.keys(groupedCollection).map(key => ({ key, value: groupedCollection[key] }));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n// This pipe accepts 2 strings. First string is the merge key and second string is the merge value\r\n// The merge value will replace the merge string\r\n@Pipe({\r\n name: 'mergeField'\r\n})\r\nexport class MergeFieldPipe implements PipeTransform {\r\n\r\n transform(value: string, mergeKey: string, mergeValue: any, boldValue?: boolean): string {\r\n let mergedString = value;\r\n\r\n if (value && mergeKey && (mergeValue || mergeValue >= 0)) {\r\n if (boldValue) {\r\n mergedString = mergedString.replace(mergeKey, '' + mergeValue + '');\r\n } else {\r\n mergedString = mergedString.replace(mergeKey, mergeValue);\r\n }\r\n }\r\n\r\n return mergedString;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'orderBy'\r\n})\r\nexport class OrderByPipe implements PipeTransform {\r\n transform(array: any, field: string): any[] {\r\n if (!Array.isArray(array)) {\r\n return;\r\n }\r\n array.sort((a: any, b: any) => {\r\n if (a[field] < b[field]) {\r\n return -1;\r\n } else if (a[field] > b[field]) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n return array;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HorizontalAlignment } from 'src/app/models/enums/dropdown-enum';\r\n\r\n@Pipe({\r\n name: 'orientationClass'\r\n})\r\nexport class OrientationStylePipe implements PipeTransform {\r\n\r\n transform(sitecoreOrientation: string): string {\r\n let orientationClass: string;\r\n switch (sitecoreOrientation) {\r\n case HorizontalAlignment.Left:\r\n orientationClass = 'flex-row';\r\n break;\r\n default:\r\n orientationClass = 'flex-row-reverse';\r\n }\r\n return orientationClass;\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { range } from 'rxjs';\r\n\r\n// Provides an array of numeral values between two ranges, iterated by an optional input as well.\r\n@Pipe({\r\n name: 'rangeArray'\r\n})\r\nexport class RangeArrayPipe implements PipeTransform {\r\n\r\n transform(min, max, minInclusive, maxInclusive, iteration?): number[] {\r\n if (min && max) {\r\n const rangeArray: number[] = [];\r\n let minValue = parseInt(min, 0);\r\n const maxValue = parseInt(max, 0);\r\n const i = iteration ? iteration : 1;\r\n\r\n if (!minInclusive) {\r\n minValue += i;\r\n }\r\n\r\n for (minValue; minValue <= maxValue; minValue += i) {\r\n if (minValue < maxValue) {\r\n rangeArray.push(minValue);\r\n }\r\n }\r\n\r\n if ((!rangeArray.includes(maxValue) && maxInclusive) || !rangeArray.length) {\r\n rangeArray.push(maxValue);\r\n }\r\n\r\n return rangeArray;\r\n }\r\n return [];\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n// this pipe takes in two numbers and returns the range as a string, given that the values are valid\r\n@Pipe({\r\n name: 'range'\r\n})\r\nexport class RangePipe implements PipeTransform {\r\n\r\n transform(minValue: number, maxValue: number): string {\r\n let range: string;\r\n\r\n if (minValue >= 0) {\r\n range = minValue.toString();\r\n\r\n if (maxValue && maxValue > minValue) {\r\n range = `${minValue} - ${maxValue}`;\r\n }\r\n\r\n return range;\r\n }\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n// takes in a trusted resource URL after handling URL provided by users to bypass Angular's sanitation\r\n// NOTE: THIS DOES NOT CHANGE OR VALIDATE THE VALUE PASSED IN\r\n// Suggested for handling resource URLs:\r\n// before using this pipe, only take the parameters from user input and append those parameters to a trusted URL\r\n@Pipe({\r\n name: 'safeUrl'\r\n})\r\nexport class SafeUrlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n transform(url: string) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n\r\n}\r\n","import { ElementRef, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { combineLatest, Subject } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { AdobeLaunchCommunity, AdobeLaunchListing, AdobeLaunchPage, AdobeLaunchPageViewLoadedEvent,\r\n AdobeLaunchPlanListingDisplayedEvent, AdobeLaunchPlanListingClickedEvent,\r\n AdobeLaunchPlanListingViewedEvent,\r\n AdobeLaunchFormSubmittedEvent} from '../models/analytics/adobe-launch-event';\r\nimport { ProductFilterDataModel } from '../models/content/community/product-filter-data.model';\r\nimport { Community } from '../models/product/community.model';\r\nimport { Plan } from '../models/product/plan.model';\r\nimport { QMI } from '../models/product/qmi.model';\r\nimport { AppInsightsService } from './app-insights.service';\r\nimport { CommunityService } from './community.service';\r\nimport { ScriptInjectorService } from './script-injector.service';\r\nimport { SettingsService } from './settings.service';\r\n\r\ndeclare global {\r\n interface Window { appEventData: any[]; } // extend global Window object to hold data layer property\r\n}\r\ndeclare const window: Window;\r\ndeclare const _satellite: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdobeLaunchService {\r\n\r\n currentCommunity: Community;\r\n currentFilterData: ProductFilterDataModel;\r\n unsubscribe$ = new Subject();\r\n\r\n renderer: Renderer2; // for analytics attribute purposes\r\n\r\n constructor(private scriptInjectorService: ScriptInjectorService, private appInsightsService: AppInsightsService,\r\n private communityService: CommunityService, private rendererFactory: RendererFactory2,\r\n private settingsService: SettingsService) {\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n }\r\n\r\n initAdobeLaunchDataLayer() {\r\n window.appEventData = window.appEventData || [];\r\n }\r\n\r\n async injectAdobeLaunchScript() {\r\n if (this.settingsService.adobeLaunchScriptUrl) {\r\n try {\r\n await this.scriptInjectorService.load('adobeLaunch', this.settingsService.adobeLaunchScriptUrl);\r\n _satellite.pageBottom(); // Crucial call once the launch scripts are loaded, do not touch.\r\n } catch (e) {\r\n this.appInsightsService.logException(\r\n new Error(`An error occurred while loading Adobe Launch script: ${e}`), false);\r\n }\r\n }\r\n }\r\n\r\n triggerView(viewName: string) {\r\n // Trigger View for Target and Call Pre-hiding Snippet Code\r\n if (viewName) {\r\n if (typeof adobe !== 'undefined' && adobe.target) {\r\n // Sanitize viewName to get rid of any trailing symbols derived from URL\r\n if (viewName.startsWith('#') || viewName.startsWith('/')) {\r\n viewName = viewName.substr(1);\r\n }\r\n adobe.target.triggerView(viewName);\r\n this.prehideBody();\r\n }\r\n }\r\n }\r\n\r\n // tslint:disable\r\n prehideBody() {\r\n // Prehiding snippet as provided by Adobe, for Adobe Target with asynchronous Launch deployment.\r\n // Prempetively hides the app body in preparation for Target to finish loading the page.\r\n (function(g, b, d, f) {\r\n (function(a, c, d) {\r\n if (a) {\r\n const e = b.createElement('style');\r\n e.id = c;\r\n e.innerHTML = d;\r\n a.appendChild(e);\r\n }\r\n })\r\n (b.getElementsByTagName('head')[0], 'at-body-style', d); // This 'at-body-style' is the Adobe Target-added\r\n // style class to designate when Target is done loading.\r\n setTimeout(function() {\r\n const a = b.getElementsByTagName('head')[0];\r\n if (a) {\r\n const c = b.getElementById('at-body-style');\r\n c && a.removeChild(c);\r\n }\r\n }, f);\r\n })\r\n (window, document, 'app-page {opacity: 0 !important}', 3E3);\r\n }\r\n // tslint:enable\r\n\r\n updateCurrentCommunity(community: Community) {\r\n this.currentCommunity = community;\r\n }\r\n\r\n updateCurrentFilterData(filterData: ProductFilterDataModel) {\r\n this.currentFilterData = filterData;\r\n }\r\n\r\n pushToDataLayer(event) {\r\n if (event) {\r\n this.initAdobeLaunchDataLayer();\r\n if (window && window.appEventData) {\r\n window.appEventData.push(event);\r\n }\r\n }\r\n }\r\n\r\n pushPageViewEvent(pageID, pageName, pageRoute) {\r\n if (pageID && pageName && pageRoute) {\r\n const pageURL = window.location.origin + pageRoute;\r\n\r\n // Analytics Page Object\r\n const adobeLaunchPage = new AdobeLaunchPage(pageID, pageName, pageURL);\r\n if (this.currentCommunity) {\r\n adobeLaunchPage.community = new AdobeLaunchCommunity(this.currentCommunity);\r\n }\r\n\r\n // Analytics Event\r\n const pageViewEvent = new AdobeLaunchPageViewLoadedEvent(adobeLaunchPage);\r\n this.pushToDataLayer(pageViewEvent);\r\n }\r\n }\r\n\r\n pushPlanListingViewedEvent(homeId: string) {\r\n if (homeId) {\r\n combineLatest([this.communityService.getPlanById(homeId), this.communityService.getQmiById(homeId)])\r\n .pipe(take(1))\r\n .subscribe(([plan, qmi]) => {\r\n let planListingViewedEvent = null;\r\n if (plan) {\r\n planListingViewedEvent = new AdobeLaunchPlanListingViewedEvent(this.currentCommunity, plan, plan.Price);\r\n }\r\n if (qmi) {\r\n const qmiId = qmi.InventoryHomeID && qmi.InventoryHomeID.toString();\r\n planListingViewedEvent = new AdobeLaunchPlanListingViewedEvent(this.currentCommunity, qmi.Plan, qmi.Price, qmiId);\r\n }\r\n if (planListingViewedEvent) {\r\n this.pushToDataLayer(planListingViewedEvent);\r\n }\r\n });\r\n }\r\n }\r\n\r\n pushQMIListingDisplayedEvent(qmis: QMI[]) {\r\n if (this.currentCommunity && qmis && qmis.length) {\r\n const qmiListings = [];\r\n\r\n qmis.map(qmi => {\r\n if (qmi) {\r\n const qmiId = qmi.InventoryHomeID && qmi.InventoryHomeID.toString();\r\n const qmiListing = new AdobeLaunchListing(this.currentCommunity, qmi.Plan, qmi.Price, qmiId);\r\n qmiListings.push(qmiListing);\r\n }\r\n });\r\n\r\n if (qmiListings.length) {\r\n const planListingDisplayedEvent = new AdobeLaunchPlanListingDisplayedEvent(qmiListings, this.currentFilterData);\r\n this.pushToDataLayer(planListingDisplayedEvent);\r\n }\r\n }\r\n }\r\n\r\n pushPlanListingDisplayedEvent(plans: Plan[]) {\r\n if (this.currentCommunity && plans && plans.length) {\r\n const planListings = [];\r\n\r\n plans.map(plan => {\r\n if (plan) {\r\n const planListing = new AdobeLaunchListing(this.currentCommunity, plan, plan.Price);\r\n planListings.push(planListing);\r\n }\r\n });\r\n\r\n if (planListings.length) {\r\n const planListingDisplayedEvent = new AdobeLaunchPlanListingDisplayedEvent(planListings, this.currentFilterData);\r\n this.pushToDataLayer(planListingDisplayedEvent);\r\n }\r\n }\r\n }\r\n\r\n pushQMIListingClickedEvent(qmi: QMI) {\r\n if (qmi) {\r\n this.pushPlanListingClickedEvent(qmi.Plan, qmi.Price, qmi.InventoryHomeID && qmi.InventoryHomeID.toString());\r\n }\r\n }\r\n\r\n pushPlanListingClickedEvent(plan: Plan, startingPrice: number, qmiID: string = null) {\r\n if (this.currentCommunity && plan) {\r\n const planListingClickedEvent = new AdobeLaunchPlanListingClickedEvent(this.currentCommunity, plan, startingPrice, qmiID);\r\n this.pushToDataLayer(planListingClickedEvent);\r\n }\r\n }\r\n\r\n pushFormSubmittedEvent(formName: string, formType: string, plans: Plan[] = null, qmis: QMI[] = null) {\r\n if (this.currentCommunity && formName && formType) {\r\n const formSubmittedEvent = new AdobeLaunchFormSubmittedEvent(this.currentCommunity, formName, formType, plans, qmis);\r\n this.pushToDataLayer(formSubmittedEvent);\r\n }\r\n }\r\n\r\n setAnalyticsCtaAttributeOnElem(elem: ElementRef, attrValue: string): void {\r\n if (elem && attrValue) {\r\n this.renderer.setAttribute(elem, 'data-analytics-cta', attrValue);\r\n }\r\n }\r\n\r\n setAnalyticsZoneAttributeOnElem(elem: ElementRef, attrValue: string): void {\r\n if (elem && attrValue) {\r\n this.renderer.setAttribute(elem, 'data-analytics-zone', attrValue);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { AlphaVisionLot,\r\n AlphaVisionAmenity,\r\n AlphaVisionAttributeValues,\r\n AlphaVisionLotFilterAttributes, \r\n AlphaVisionLotFacing,\r\n AlphaVisionLotType,\r\n AlphaVisionLotStatusType} from '../models/maps/alphavision-map-data.model';\r\nimport { Plan } from '../models/product/plan.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlphaVisionMapService {\r\n\r\n statuses = new ReplaySubject(1);\r\n mapPlanIds = new ReplaySubject(1);\r\n lotTypes = new ReplaySubject(1);\r\n lotFacings = new ReplaySubject(1);\r\n lotAttributes = new ReplaySubject(1);\r\n initialLots = new ReplaySubject(1);\r\n selectedLot = new ReplaySubject(1);\r\n selectedPlan = new ReplaySubject(1);\r\n selectedAmenity = new ReplaySubject(1);\r\n\r\n constructor() { }\r\n\r\n updateStatuses(statuses: AlphaVisionLotStatusType[]): void {\r\n this.statuses.next(statuses);\r\n }\r\n\r\n updateMapPlanIds(planIds: string[]): void {\r\n if (planIds && planIds.length) {\r\n this.mapPlanIds.next(planIds);\r\n } else {\r\n this.mapPlanIds.next([]);\r\n }\r\n }\r\n\r\n updateLotAttributes(types: AlphaVisionLotType[], facings: AlphaVisionLotFacing[]) {\r\n const lotFilterAttributes = new AlphaVisionLotFilterAttributes(types, facings);\r\n this.lotAttributes.next(lotFilterAttributes);\r\n }\r\n\r\n updateInitialLots(initialLots: AlphaVisionLot[]) {\r\n if (initialLots) {\r\n // Set Service Subject\r\n this.initialLots.next(initialLots);\r\n\r\n const lotFacingValues = [];\r\n const lotTypeValues = [];\r\n // We need to parse the lot attribute data this way because of the\r\n // way AlphaVision returns them in an array of single property objects.\r\n initialLots.forEach(intialLot => intialLot.lotAttributes.forEach(lot => {\r\n const keys = Object.keys(lot) as string[];\r\n const values = Object.values(lot) as string[];\r\n\r\n if (keys[0] && values[0]) {\r\n if (keys[0] === AlphaVisionAttributeValues.LotType && !lotTypeValues.includes(values[0])) {\r\n const lotTypeVal = values[0];\r\n lotTypeValues.push(lotTypeVal);\r\n }\r\n\r\n if (keys[0] === AlphaVisionAttributeValues.LotFacing && !lotFacingValues.includes(values[0])) {\r\n const lotFacingVal = values[0];\r\n lotFacingValues.push(lotFacingVal);\r\n }\r\n }\r\n }));\r\n this.updateLotAttributes(lotTypeValues, lotFacingValues);\r\n }\r\n }\r\n\r\n updateSelectedLot(lot: AlphaVisionLot): void {\r\n this.selectedLot.next(lot);\r\n }\r\n\r\n updateSelectedPlan(plan: Plan): void {\r\n this.selectedPlan.next(plan);\r\n }\r\n\r\n updateSelectedAmenity(amenity: AlphaVisionAmenity): void {\r\n this.selectedAmenity.next(amenity);\r\n }\r\n\r\n resetHomesMapServiceData() {\r\n this.selectedLot.next();\r\n this.selectedPlan.next();\r\n this.selectedAmenity.next();\r\n this.mapPlanIds.next();\r\n }\r\n\r\n resetAllMapServiceData() {\r\n this.selectedLot.next();\r\n this.selectedPlan.next();\r\n this.selectedAmenity.next();\r\n this.mapPlanIds.next();\r\n this.statuses.next();\r\n this.lotAttributes.next();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AppInsights, Microsoft } from 'applicationinsights-js';\r\nimport { SettingsService } from './settings.service';\r\n\r\n// methods checking for instrumentationKey are logging to console instead if one does not exist. This is intended for local logging\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppInsightsService {\r\n\r\n constructor(private settingsService: SettingsService) {\r\n // only instantiate app insights if the instrumentationKey exists\r\n if (!AppInsights.config && this.settingsService.applicationInsights.instrumentationKey) {\r\n AppInsights.downloadAndSetup({\r\n instrumentationKey: this.settingsService.applicationInsights.instrumentationKey\r\n });\r\n AppInsights.queue.push(() => {\r\n AppInsights.context.addTelemetryInitializer(this.customTelemetry);\r\n });\r\n }\r\n }\r\n\r\n logPageView(name?: string, url?: string, properties?: any, measurements?: any, duration?: number) {\r\n if (this.settingsService.applicationInsights.instrumentationKey) {\r\n this.setUser();\r\n AppInsights.trackPageView(name, url, properties, measurements, duration);\r\n } else {\r\n // name and url are the same at this time so only logging url\r\n console.log(url, properties, measurements, duration);\r\n }\r\n }\r\n\r\n logEvent(name: string, properties?: any, measurements?: any) {\r\n if (this.settingsService.applicationInsights.instrumentationKey) {\r\n this.setUser();\r\n AppInsights.trackEvent(name, properties, measurements);\r\n } else {\r\n console.log(name, properties, measurements);\r\n }\r\n }\r\n\r\n logException(exception: Error, isHttpErrorResponse: boolean, handledAt?: string, properties?: any, measurements?: any) {\r\n if (this.settingsService.applicationInsights.instrumentationKey) {\r\n this.setUser();\r\n AppInsights.trackException(exception, handledAt, properties, measurements);\r\n\r\n // log the error to the console if its not an http error response\r\n if (!isHttpErrorResponse) {\r\n console.error(exception);\r\n }\r\n } else {\r\n console.group(exception.name);\r\n console.error(exception.message);\r\n console.error(exception.stack);\r\n console.warn(handledAt);\r\n console.groupEnd();\r\n }\r\n }\r\n\r\n logTrace(message: string, properties?: any, severityLevel?: any) {\r\n if (this.settingsService.applicationInsights.instrumentationKey) {\r\n this.setUser();\r\n AppInsights.trackTrace(message, properties, severityLevel);\r\n } else {\r\n console.log(message, properties, severityLevel);\r\n }\r\n }\r\n\r\n // No authentication in place currently\r\n setUser() {\r\n AppInsights.clearAuthenticatedUserContext();\r\n }\r\n\r\n customTelemetry(envelope: any) {\r\n const item = envelope.data.baseData;\r\n item.properties = item.properties || {};\r\n item.properties.Role = 'KIOSK';\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Query } from '../models/query.model';\r\nimport { CommunityResponse } from '../models/community-response.model';\r\nimport { KioskCommunity } from '../models/content/community/kiosk-community.model';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { Plan } from '../models/product/plan.model';\r\nimport { Series } from '../models/product/series.model';\r\nimport { QMI } from '../models/product/qmi.model';\r\nimport { Community } from '../models/product/community.model';\r\nimport { map } from 'rxjs/operators';\r\nimport { FloorPlanImage } from '../models/product/floor-plan-image.model';\r\nimport { CommunityPOICategory } from '../models/product/community-poi-category';\r\nimport { KioskSleepStateImage } from '../models/product/kiosk-sleep-state-image.model';\r\nimport { CommunityPOILocation } from '../models/product/community-poi-location';\r\nimport { CommunityAmenitiesModel } from '../models/product/community-amenities.model';\r\nimport { CommunityPromotion } from '../models/product/community-promotions.model';\r\nimport { SettingsService } from './settings.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommunityService {\r\n\r\n kioskCommunity = new ReplaySubject(1);\r\n community = new ReplaySubject(1);\r\n plans = new ReplaySubject(1);\r\n series = new ReplaySubject(1);\r\n qmis = new ReplaySubject(1);\r\n amenities = new ReplaySubject(1);\r\n promotions = new ReplaySubject(1);\r\n communityPOICategories = new ReplaySubject(1);\r\n communityPOILocations = new ReplaySubject(1);\r\n nearbyCommunities = new ReplaySubject(1);\r\n\r\n private apiUrl: string;\r\n private productApiUrl: string;\r\n\r\n constructor(private httpClient: HttpClient, private settingsService: SettingsService) {\r\n this.apiUrl = this.settingsService.apiUrl + '/kiosk';\r\n this.productApiUrl = this.settingsService.productApiUrl;\r\n }\r\n\r\n getKioskCommunityById(communityRequest: Query): Observable {\r\n return this.httpClient.get(`${this.apiUrl}/QueryCommunity`, { params: communityRequest as any });\r\n }\r\n\r\n getAllCommunities(): Observable {\r\n return this.httpClient.get(`${this.apiUrl}/QueryAllCommunities`);\r\n }\r\n\r\n getCommunityInfoById(communityId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/communities/${communityId}`);\r\n }\r\n\r\n getPlansByCommunityId(communityId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/communities/${communityId}/plans?page_all=true`);\r\n }\r\n\r\n getSeriesByCommunityId(communityId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/communities/${communityId}/series`);\r\n }\r\n\r\n getQmisByCommunityId(communityId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/communities/${communityId}/inventory?page_all=true`);\r\n }\r\n\r\n getPoiCategoriesByCommunityId(communityId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/communities/${communityId}/communitymappoicategories`);\r\n }\r\n\r\n getPoiLocationsByCommunityId(communityId: string): Observable {\r\n return this.httpClient.get(\r\n `${this.productApiUrl}/communities/${communityId}/communitypoilocations?page_all=true`);\r\n }\r\n\r\n getAmenitiesByCommunityId(communityId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/communities/${communityId}/amenities?page_all=true`);\r\n }\r\n\r\n getPromotionsByCommunityId(communityId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/communities/${communityId}/promotions`);\r\n }\r\n\r\n getFloorPlanImagesByPlanId(planId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/plans/${planId}/floorplanimages?page_all=true`);\r\n }\r\n\r\n getPlanInfoById(planId: string): Observable {\r\n return this.httpClient.get(`${this.productApiUrl}/plans/${planId}`);\r\n }\r\n\r\n getSleepStateImagesByCommunityId(communityId: string): Observable {\r\n return this.httpClient.get(\r\n `${this.productApiUrl}/communities/${communityId}/kiosksleepstateimages?page_all=true`);\r\n }\r\n\r\n getNearbyCommunities(community: Community): Observable {\r\n const nearbyCommunityParameters = {\r\n BrandName: community.BrandName,\r\n StateName: community.Address.State,\r\n RegionName: community.Region[0]\r\n };\r\n return this.httpClient.post(`${this.productApiUrl}/communities/search`, nearbyCommunityParameters);\r\n }\r\n\r\n getPlanById(planId: string): Observable {\r\n return this.plans.pipe(\r\n map(plans => {\r\n return plans.find(x => x.Id.toString() === planId);\r\n })\r\n );\r\n }\r\n\r\n getQmiById(inventoryHomeId: string): Observable {\r\n return this.qmis.pipe(\r\n map(qmis => {\r\n return qmis.find(x => x.InventoryHomeID.toString() === inventoryHomeId);\r\n })\r\n );\r\n }\r\n\r\n updateKioskCommunity(community: KioskCommunity): void {\r\n this.kioskCommunity.next(community);\r\n }\r\n\r\n updateCommunityInfo(community: Community): void {\r\n this.community.next(community);\r\n this.community.complete();\r\n }\r\n\r\n updatePlans(plans: Plan[]): void {\r\n this.plans.next(plans);\r\n }\r\n\r\n updateAmenities(amenities: CommunityAmenitiesModel): void {\r\n this.amenities.next(amenities);\r\n }\r\n\r\n updatePromotions(promotions: CommunityPromotion[]): void {\r\n this.promotions.next(promotions);\r\n }\r\n\r\n updateSeries(series: Series[]): void {\r\n this.series.next(series);\r\n }\r\n\r\n updateQmis(qmis: QMI[]): void {\r\n this.qmis.next(qmis);\r\n }\r\n\r\n updateCommunityPoiCategories(communityPOICategories: CommunityPOICategory[]): void {\r\n this.communityPOICategories.next(communityPOICategories);\r\n }\r\n\r\n updateCommunityPoiLocations(communityPOILocations: CommunityPOILocation[]): void {\r\n this.communityPOILocations.next(communityPOILocations);\r\n }\r\n\r\n updateNearbyCommunities(nearbyCommunities: Community[]): void {\r\n this.nearbyCommunities.next(nearbyCommunities);\r\n }\r\n}\r\n","import { NgModule, ErrorHandler } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CommunityService } from './community.service';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NavigationService } from './navigation.service';\r\nimport { SleepStateService } from './sleep-state.service';\r\nimport { AppInsightsService } from './app-insights.service';\r\nimport { GlobalErrorHandlerService } from './global-error-handler.service';\r\nimport { InteractiveToolsService } from './interactive-tool.service';\r\nimport { HersScoreService } from './hers-score.service';\r\nimport { GooglePlacesService } from './google-places.service';\r\nimport { GMapsMarkerService } from './gmaps-marker.service';\r\nimport { LmpService } from './lmp.service';\r\nimport { GuestRegistrationService } from './guest-registration.service';\r\nimport { ModalService } from './modal.service';\r\nimport { FormValidationService } from './form-validation.service';\r\nimport { ScriptInjectorService } from './script-injector.service';\r\nimport { AdobeLaunchService } from './adobe-launch.service';\r\nimport { ProductOverviewService } from './product-overview.service';\r\nimport { ProductFilterService } from './product-filter.service';\r\nimport { SettingsService } from './settings.service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n providers: [\r\n CommunityService,\r\n ProductOverviewService,\r\n NavigationService,\r\n InteractiveToolsService,\r\n HersScoreService,\r\n SleepStateService,\r\n AppInsightsService,\r\n GooglePlacesService,\r\n GMapsMarkerService,\r\n LmpService,\r\n FormValidationService,\r\n GuestRegistrationService,\r\n ModalService,\r\n ScriptInjectorService,\r\n AdobeLaunchService,\r\n ProductFilterService,\r\n SettingsService,\r\n { provide: ErrorHandler, useClass: GlobalErrorHandlerService }\r\n ]\r\n})\r\nexport class CoreServicesModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { CrossBrandConfiguration } from '../models/cross-brand-configuration.model';\r\nimport { ReplaySubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CrossBrandService {\r\n\r\n crossBrandConfig = new ReplaySubject(1);\r\n\r\n updateCrossBrandConfiguration(crossBrandConfig: CrossBrandConfiguration): void {\r\n this.crossBrandConfig.next(crossBrandConfig);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { FormValidationConfigurationModel } from '../models/form-validation-configuration';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormValidationService {\r\n\r\n formValidationConfiguration = new ReplaySubject(1);\r\n\r\n constructor() { }\r\n\r\n updateFormValidationConfiguration(formValidationConfiguration: FormValidationConfigurationModel) {\r\n this.formValidationConfiguration.next(formValidationConfiguration);\r\n this.formValidationConfiguration.complete();\r\n }\r\n}\r\n","import { Injectable, ErrorHandler } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { AppInsightsService } from './app-insights.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobalErrorHandlerService implements ErrorHandler {\r\n\r\n constructor(private appInsightsService: AppInsightsService) { }\r\n\r\n handleError(error: Error | HttpErrorResponse) {\r\n let message;\r\n let stackTrace;\r\n let isHttpErrorResponse = false;\r\n\r\n if (error instanceof HttpErrorResponse) {\r\n // Server Error\r\n message = this.getServerMessage(error);\r\n stackTrace = 'no stack trace for server errors';\r\n isHttpErrorResponse = true;\r\n } else {\r\n // Client Error\r\n message = this.getClientMessage(error);\r\n stackTrace = this.getClientStack(error);\r\n }\r\n\r\n const errorObject = new Error(message);\r\n errorObject.stack = stackTrace;\r\n\r\n // log the error via app insights\r\n // passing in href from window.location because importing Router to ErrorHandler creates a cyclical dependency\r\n this.appInsightsService.logException(errorObject, isHttpErrorResponse, window.location.href);\r\n }\r\n\r\n getClientMessage(error: Error): string {\r\n if (!navigator.onLine) {\r\n return 'No Internet Connection';\r\n }\r\n\r\n return error.message ? error.message : error.toString();\r\n }\r\n\r\n getClientStack(error: Error): string {\r\n return error.stack;\r\n }\r\n\r\n getServerMessage(error: HttpErrorResponse): string {\r\n return error.message;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { GoogleDirectionsRouteData } from '../models/maps/google-directions-route-data.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GmapsDirectionsService {\r\n\r\n private origin = new ReplaySubject(1);\r\n private destination = new ReplaySubject(1);\r\n private showDirection = new ReplaySubject(1);\r\n private travelTime = new ReplaySubject(1);\r\n private directionsRoute = new ReplaySubject(1);\r\n private directionsRouteData = new ReplaySubject(1);\r\n\r\n origin$ = this.origin.asObservable();\r\n destination$ = this.destination.asObservable();\r\n showDirection$ = this.showDirection.asObservable();\r\n travelTime$ = this.travelTime.asObservable();\r\n directionsRoute$ = this.directionsRoute.asObservable();\r\n directionsRouteData$ = this.directionsRouteData.asObservable();\r\n\r\n updateOrigin(origin: google.maps.LatLng) {\r\n this.origin.next(origin);\r\n }\r\n\r\n updateDestination(destination: google.maps.LatLng) {\r\n this.destination.next(destination);\r\n }\r\n\r\n updateShowDirection(showDirection: boolean) {\r\n this.showDirection.next(showDirection);\r\n }\r\n\r\n updateTravelTime(travelTime: Date) {\r\n this.travelTime.next(travelTime);\r\n }\r\n\r\n updateDirectionsRoute(directionsRoute: google.maps.DirectionsRoute) {\r\n this.directionsRoute.next(directionsRoute);\r\n }\r\n\r\n updateDirectionsRouteData(directionsRouteData: GoogleDirectionsRouteData) {\r\n this.directionsRouteData.next(directionsRouteData);\r\n }\r\n\r\n clearDirectionsData() {\r\n this.origin.next(null);\r\n this.destination.next(null);\r\n this.travelTime.next(null);\r\n this.directionsRoute.next(null);\r\n this.directionsRouteData.next(null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { GMapsMarker } from '../models/maps/gmaps-marker.model';\r\nimport { GoogleMapsConfiguration } from '../models/maps/google-maps-configuration.model';\r\nimport { getLocalStyleVarUrl, convertSvgToUrl, getLocalStyleVar } from 'src/helper-functions/local-resource-helper';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GMapsMarkerService {\r\n\r\n markers = new ReplaySubject(1);\r\n mapConfiguration = new ReplaySubject(1);\r\n defaultHomeMarkerIcon: string = getLocalStyleVarUrl('--brand-map-marker-home-icon');\r\n sitecoreHomeMarkerIcon: string;\r\n brandColorToken: string = '{brandColor}';\r\n\r\n updateGMapsMarkers(markers: GMapsMarker[]): void {\r\n this.markers.next(markers);\r\n }\r\n\r\n updateMapConfiguration(mapConfiguration: GoogleMapsConfiguration): void {\r\n if (mapConfiguration) {\r\n this.setBrandColorsForPins(mapConfiguration);\r\n this.mapConfiguration.next(mapConfiguration);\r\n this.mapConfiguration.complete();\r\n }\r\n }\r\n\r\n // Create our Community Point/origin point for the map\r\n setCommunityMapMarkerForDisplay(brandName: string, latitude: number, longitude: number,\r\n mapConfiguration: GoogleMapsConfiguration, mapMarkers: GMapsMarker[]) {\r\n if (brandName && latitude && longitude) {\r\n const originMarker = new GMapsMarker(null, latitude, longitude);\r\n originMarker.IsOrigin = true;\r\n originMarker.IsSelected = true;\r\n const homeMarkerIcon = this.setHomeMarkerIcon(brandName, mapConfiguration);\r\n originMarker.setIconUrl(homeMarkerIcon);\r\n originMarker.setScale(1.3);\r\n originMarker.zIndex = 100;\r\n mapMarkers.push(originMarker);\r\n }\r\n }\r\n\r\n // Deselects all markers in supplied array\r\n deselectAllMarkers(markerArray: GMapsMarker[]) {\r\n markerArray.map(m => m.IsSelected = false);\r\n }\r\n\r\n setSelectedMarker(markerID: string | number, mapMarkers: GMapsMarker[]) {\r\n this.deselectAllMarkers(mapMarkers);\r\n if (mapMarkers.find(m => m.MarkerID === markerID)) {\r\n mapMarkers.find(m => m.MarkerID === markerID).IsSelected = true;\r\n }\r\n this.updateGMapsMarkers(mapMarkers);\r\n }\r\n\r\n // Sets the home community pin for the supplied community brand\r\n setHomeMarkerIcon(brandName: string, mapConfiguration: GoogleMapsConfiguration): string {\r\n let homeMarkerIcon;\r\n if (brandName && mapConfiguration) {\r\n homeMarkerIcon = convertSvgToUrl(mapConfiguration.Home_Community_Pin);\r\n } else {\r\n homeMarkerIcon = this.defaultHomeMarkerIcon;\r\n }\r\n return homeMarkerIcon;\r\n }\r\n\r\n // Replaces merge field tokens with brand colors\r\n setBrandColorsForPins(mapConfiguration: GoogleMapsConfiguration) {\r\n if (mapConfiguration) {\r\n const defaultColor = getLocalStyleVar('--brand-map-default-pin-color');\r\n const selectedColor = getLocalStyleVar('--brand-map-selected-pin-color');\r\n mapConfiguration.Home_Community_Pin =\r\n mapConfiguration.Home_Community_Pin.replace(this.brandColorToken, selectedColor);\r\n mapConfiguration.Location_Default_Pin =\r\n mapConfiguration.Location_Default_Pin.replace(this.brandColorToken, defaultColor);\r\n mapConfiguration.Location_Selected_Pin =\r\n mapConfiguration.Location_Selected_Pin.replace(this.brandColorToken, selectedColor);\r\n }\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { } from 'googlemaps';\r\nimport { ReplaySubject, throwError, ObservableInput } from 'rxjs';\r\nimport { GooglePlacesSearchParams } from '../models/maps/google-places-search-params';\r\nimport { GooglePlacesResult } from '../models/maps/google-places-result.model';\r\nimport { tap, catchError } from 'rxjs/operators';\r\nimport { GooglePlacesDetails } from '../models/maps/google-places-details.model';\r\nimport { AppInsightsService } from './app-insights.service';\r\nimport { SettingsService } from './settings.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class GooglePlacesService {\r\n\r\n places = new ReplaySubject(1);\r\n details = new ReplaySubject(1);\r\n\r\n private apiUrl: string;\r\n\r\n constructor(private http: HttpClient, private appInsightsService: AppInsightsService,\r\n private settingsService: SettingsService) {\r\n this.apiUrl = this.settingsService.apiUrl + '/googleplaces';\r\n }\r\n\r\n googlePlacesTextSearch(params: GooglePlacesSearchParams) {\r\n if (params) {\r\n this.http.get(\r\n `${this.apiUrl}/PlacesTextSearch`, { params: (params as any) })\r\n .pipe(\r\n tap((res: GooglePlacesResult) => {\r\n if (res && res.status === 'OK' && res.results) {\r\n this.places.next(res);\r\n }\r\n }),\r\n catchError((err: HttpErrorResponse) => {\r\n this.appInsightsService.logException(\r\n new Error(`An error occurred for Google Places Service request: ${err.message}`), false);\r\n return throwError(err.error);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n }\r\n\r\n getGooglePlacesDetailsById(googlePlaceId: string) {\r\n this.http.get(\r\n `${this.apiUrl}/PlaceDetails`, { params: { googlePlaceId }})\r\n .pipe(\r\n tap((res: GooglePlacesDetails) => {\r\n this.details.next(res);\r\n }),\r\n catchError((err: HttpErrorResponse) => {\r\n this.appInsightsService.logException(\r\n new Error(`An error occurred for Google Places Service request: ${err.message}`), false);\r\n return throwError(err.error);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n clearGooglePlacesData() {\r\n this.places.next(null);\r\n this.details.next(null);\r\n }\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { of } from 'rxjs';\r\nimport { catchError, timeout } from 'rxjs/operators';\r\nimport { getHttpOptions } from 'src/helper-functions/http-helper';\r\nimport { GuestRegistrationResponseModel } from '../models/content/editorial/guest-registration-response.model';\r\nimport { GuestRegistrationModel } from '../models/content/editorial/guest-registration.model';\r\nimport { AppInsightsService } from './app-insights.service';\r\nimport { SettingsService } from './settings.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GuestRegistrationService {\r\n\r\n private apiUrl: string;\r\n\r\n constructor(private http: HttpClient,\r\n private appInsightsService: AppInsightsService,\r\n private settingsService: SettingsService) { \r\n this.apiUrl = this.settingsService.apiUrl + '/guestregistration';\r\n }\r\n\r\n async registerContact(model: GuestRegistrationModel) {\r\n if (model) {\r\n model.IsKioskRegistration = true;\r\n const options = getHttpOptions();\r\n\r\n return await this.http.post(`${this.apiUrl}/RegisterContact`, JSON.stringify(model), options).pipe(\r\n timeout(30000),\r\n catchError((err: HttpErrorResponse) => {\r\n this.appInsightsService.logException(new Error(`An error occurred for Guest Registration service: ${err.message}`), false);\r\n return of(new GuestRegistrationResponseModel()); // default IsSuccessful = false\r\n })\r\n )\r\n .toPromise();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HersScoreModel } from '../models/hers-score-configuration.model';\r\nimport { ReplaySubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HersScoreService {\r\n HersScoreitem = new ReplaySubject(1);\r\n\r\n updateHersScore(HersScore: HersScoreModel): void {\r\n this.HersScoreitem.next(HersScore);\r\n this.HersScoreitem.complete();\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { InteractiveToolsModel } from '../models/interactive-tools-configuration.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InteractiveToolsService {\r\n InteractiveToolsItem = new ReplaySubject(1);\r\n\r\n updateInteractiveTools(interactiveTools: InteractiveToolsModel): void {\r\n this.InteractiveToolsItem.next(interactiveTools);\r\n this.InteractiveToolsItem.complete();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { LmpConfigurationModel } from '../models/lmp-configuration.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LmpService {\r\n\r\n LmpConfiguration = new ReplaySubject(1);\r\n\r\n updateLmpConfiguration(LmpConfiguration: LmpConfigurationModel): void {\r\n this.LmpConfiguration.next(LmpConfiguration);\r\n this.LmpConfiguration.complete();\r\n }\r\n}\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GuestRegistrationModalComponent } from '../community/shared/modals/guest-registration-modal/guest-registration-modal.component';\r\nimport { DynamicComponentTypes } from '../shared/dynamic-component-types';\r\nimport { ModalClasses } from '../shared/modal-classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ModalService {\r\n\r\n constructor(private ngbModalService: NgbModal) { }\r\n\r\n openModalFromModalRef(modalRefData): NgbModalRef {\r\n if (modalRefData && modalRefData.Module_Type) {\r\n const modalType: Type = DynamicComponentTypes[modalRefData.Module_Type];\r\n const modalRef = this.openModal(modalType, modalRefData);\r\n return modalRef;\r\n }\r\n }\r\n\r\n openModal(componentType, modalData?): NgbModalRef {\r\n if (componentType) {\r\n const modalOptions = this.getModalOptionsFromType(componentType);\r\n const modalRef: NgbModalRef = this.ngbModalService.open(componentType, modalOptions);\r\n modalRef.componentInstance.data = modalData;\r\n return modalRef;\r\n }\r\n }\r\n\r\n getModalOptionsFromType(componentType) {\r\n switch (componentType) {\r\n case GuestRegistrationModalComponent:\r\n return { windowClass: `${ModalClasses.Full} ${ModalClasses.Right} `, backdrop: true, backdropClass: ` ${ModalClasses.BackDrop}` };\r\n default:\r\n return {};\r\n }\r\n }\r\n\r\n hasOpenModals() {\r\n return this.ngbModalService.hasOpenModals();\r\n }\r\n\r\n dismissAll() {\r\n this.ngbModalService.dismissAll();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { NavigationItem } from '../models/navigation-item.model';\r\nimport { NavigationConfiguration } from '../models/navigation-configuration-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NavigationService {\r\n\r\n navigationItems = new Subject();\r\n navConfigItem = new Subject();\r\n private defaultPageId = '';\r\n private modalNavigationItems: NavigationItem[] = [];\r\n private sleepStateNavigationItems: NavigationItem[] = [];\r\n private browserAccessNavigationItems: NavigationItem[] = [];\r\n\r\n updateMoreIcon(navigationItem: NavigationConfiguration): void {\r\n this.navConfigItem.next(navigationItem);\r\n }\r\n\r\n updateNavigationsItems(navigationItems: NavigationItem[]): void {\r\n // filter out nav items that have no Page_Url\r\n let filteredNavItems = navigationItems.filter(item => item.Page_Url);\r\n\r\n filteredNavItems = this.addAdditionalNavigationItems(this.modalNavigationItems, filteredNavItems);\r\n filteredNavItems = this.addAdditionalNavigationItems(this.sleepStateNavigationItems, filteredNavItems);\r\n filteredNavItems = this.addAdditionalNavigationItems(this.browserAccessNavigationItems, filteredNavItems);\r\n\r\n filteredNavItems.sort((a, b) => a.Order - b.Order);\r\n\r\n if (filteredNavItems.length) {\r\n // checks for first page navigation item to set default page id, non-page items will break navigation\r\n this.defaultPageId = filteredNavItems.find(navItem => navItem.Page_Url && navItem.Page_Url.trim().length).Page_Url;\r\n } else {\r\n this.defaultPageId = '';\r\n }\r\n\r\n this.navigationItems.next(filteredNavItems);\r\n }\r\n\r\n getDefaultPageId() {\r\n return this.defaultPageId;\r\n }\r\n\r\n addAdditionalNavigationItems(addtionalNavItems: NavigationItem[], pageNavigationItems: NavigationItem[]): NavigationItem[] {\r\n let combinedNavigationItems = [];\r\n if (addtionalNavItems && addtionalNavItems.length) {\r\n combinedNavigationItems = pageNavigationItems.concat(addtionalNavItems);\r\n } else {\r\n combinedNavigationItems = pageNavigationItems;\r\n }\r\n return combinedNavigationItems;\r\n }\r\n\r\n setModalNavigationItems(navigationItems: NavigationItem[]) {\r\n if (navigationItems && navigationItems.length) {\r\n this.modalNavigationItems = navigationItems.filter(navigationItem => navigationItem.Modal_Ref);\r\n }\r\n }\r\n\r\n setSleepStateNavigationItems(sleepStateNavigationItems: NavigationItem[]) {\r\n if (sleepStateNavigationItems && sleepStateNavigationItems.length) {\r\n sleepStateNavigationItems.map(sleepStateNavigationItem => {\r\n sleepStateNavigationItem.IsSleepStateNavItem = true;\r\n this.sleepStateNavigationItems.push(sleepStateNavigationItem);\r\n });\r\n }\r\n }\r\n\r\n setBrowserAccessNavigationItems(browserAccessNavigationItems: NavigationItem[]) {\r\n if (browserAccessNavigationItems && browserAccessNavigationItems.length) {\r\n this.browserAccessNavigationItems = browserAccessNavigationItems.filter(browserAccessNavigationItem =>\r\n browserAccessNavigationItem.External_URL &&\r\n browserAccessNavigationItem.External_URL.trim().length &&\r\n this.validateUrl(browserAccessNavigationItem.External_URL));\r\n\r\n browserAccessNavigationItems.map(browserAccessNavigationItem => {\r\n browserAccessNavigationItem.External_URL = this.prependExternalUrls(browserAccessNavigationItem.External_URL);\r\n });\r\n }\r\n }\r\n\r\n prependExternalUrls(externalUrl: string): string {\r\n if (!externalUrl.match(/^https?:\\/\\//i)) {\r\n externalUrl = 'https://' + externalUrl;\r\n }\r\n return externalUrl;\r\n }\r\n\r\n validateUrl(externalUrl: string): boolean {\r\n const urlRegex: RegExp = new RegExp('((https?|ftp|file):\\/\\/)?[-A-Za-z0-9+&@#\\/%?=~_|!:,.;]+[-A-Za-z0-9+&@#\\/%=~_|]', 'i');\r\n return !!(urlRegex.test(externalUrl));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { Page } from '../models/page.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PagesService {\r\n\r\n pages = new ReplaySubject>(1);\r\n hasSummary = new ReplaySubject(1);\r\n hasFixedHeader = new ReplaySubject(1);\r\n navBarPageId = new Subject();\r\n\r\n\r\n updatePages(pages: Record): void {\r\n this.pages.next(pages);\r\n }\r\n\r\n updateHasSummary(hasSummary: boolean): void {\r\n this.hasSummary.next(hasSummary);\r\n this.hasSummary.complete();\r\n }\r\n\r\n updateHasFixedHeader(hasFixedHeader: boolean): void {\r\n this.hasFixedHeader.next(hasFixedHeader);\r\n this.hasFixedHeader.complete();\r\n }\r\n\r\n updateNavBarSelection(NavBarPageId: string): void {\r\n this.navBarPageId.next(NavBarPageId);\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { tap, catchError, concatMap, takeUntil, timeout } from 'rxjs/operators';\r\nimport { ObservableInput, of, Subject, throwError } from 'rxjs';\r\nimport { Community } from '../models/product/community.model';\r\nimport { Plan } from '../models/product/plan.model';\r\nimport { RequestBrochureParams } from '../models/content/editorial/request-brochure-params.model';\r\nimport { AppInsightsService } from './app-insights.service';\r\nimport { RequestBrochureResponse } from '../models/content/editorial/request-brochure-response.model';\r\nimport { QMI } from '../models/product/qmi.model';\r\nimport { SettingsService } from './settings.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PlanBrochureService {\r\n\r\n private apiUrl: string;\r\n\r\n constructor(private http: HttpClient, private appInsightsService: AppInsightsService,\r\n private settingsService: SettingsService) { \r\n this.apiUrl = this.settingsService.apiUrl + '/planbrochure';\r\n }\r\n\r\n async requestPlanBrochure(community: Community, plans: Plan[], qmis: QMI[], emailAddress: string) {\r\n if (community && plans && emailAddress) {\r\n const requestBrochureParams = new RequestBrochureParams();\r\n requestBrochureParams.CommunityId = community.Id.toString();\r\n requestBrochureParams.EmailAddress = emailAddress;\r\n requestBrochureParams.PlanIds = plans.map(plan => plan.Id.toString());\r\n requestBrochureParams.QmiIds = qmis.map(qmi => qmi.InventoryHomeID.toString());\r\n\r\n return await this.http.get(\r\n `${this.apiUrl}/SendBrochureEmail`, { params: requestBrochureParams as any })\r\n .pipe(\r\n timeout(30000),\r\n catchError((err: HttpErrorResponse) => {\r\n this.appInsightsService.logException(new Error(`An error occurred for Plan Brochure service: ${err.message}`), false);\r\n return of(new RequestBrochureResponse()); // default isSuccessful = false\r\n })\r\n ).toPromise();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\r\nimport { ProductFilterDataModel } from '../models/content/community/product-filter-data.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductFilterService {\r\n\r\n filterData = new BehaviorSubject(null);\r\n exactHomes = new ReplaySubject(1);\r\n closeHomes = new ReplaySubject(1);\r\n\r\n constructor() { }\r\n\r\n updateFilterData(filterData: ProductFilterDataModel) {\r\n // Update this service's filter data subject\r\n this.filterData.next(filterData);\r\n }\r\n\r\n updateExactHomes(homes) {\r\n this.exactHomes.next(homes);\r\n }\r\n\r\n updateCloseHomes(homes) {\r\n this.closeHomes.next(homes);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProductOverviewService {\r\n\r\n seriesID = new ReplaySubject(1);\r\n selectedHomeType = new ReplaySubject(1);\r\n\r\n constructor() { }\r\n\r\n updateSeriesID(seriesID: string): void {\r\n this.seriesID.next(seriesID);\r\n this.seriesID.complete();\r\n }\r\n\r\n updateSelectedHomeType(selectedHomeType: string): void {\r\n this.selectedHomeType.next(selectedHomeType);\r\n this.selectedHomeType.complete();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { RequestBrochureModel } from '../models/content/editorial/request-brochure.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RequestBrochureService {\r\n RequestBrochureItem = new ReplaySubject(1);\r\n\r\n constructor() { }\r\n\r\n updateRequestBrochure(RequestBrochure: RequestBrochureModel): void {\r\n this.RequestBrochureItem.next(RequestBrochure);\r\n this.RequestBrochureItem.complete();\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, NgZone } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScriptInjectorService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document, private zone: NgZone) {}\r\n\r\n async load(id: string, src: string) {\r\n if (src) {\r\n // Init new script tag element to inject.\r\n const scriptElement: HTMLScriptElement = this.document.createElement('script');\r\n scriptElement.id = id;\r\n scriptElement.src = src;\r\n scriptElement.async = true;\r\n\r\n const promise = new Promise((resolve, reject) => {\r\n scriptElement.addEventListener('load', () => {\r\n setTimeout(resolve, 10);\r\n });\r\n scriptElement.addEventListener('error', (err) => {\r\n reject(err);\r\n });\r\n });\r\n\r\n // Run outside the angular zone, i.e. won't fire change detection.\r\n this.zone.runOutsideAngular(() => {\r\n // Add new script element object to document HEAD\r\n this.document.head.appendChild(scriptElement);\r\n });\r\n\r\n return promise;\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, from, of } from \"rxjs\";\r\nimport { map, share, tap } from \"rxjs/operators\";\r\nimport { Environment } from \"src/environments/environment\";\r\nimport { hostnameContainsPreviewPrefix } from \"src/helper-functions/sitecore-api-url-helper\";\r\nimport { getBrandNameForApi } from \"src/helper-functions/brand-specific-configuration\";\r\n\r\n@Injectable()\r\nexport class SettingsService extends Environment\r\n{\r\n constructor()\r\n {\r\n super();\r\n let settings = window[\"settings\"];\r\n\r\n // point the apiUrl to the preview api url if the hostname contains the preview prefix\r\n if (hostnameContainsPreviewPrefix()) {\r\n settings.apiUrl = settings.previewApiUrl;\r\n }\r\n\r\n // store the brand name set by configuration\r\n const brandNameForApi = getBrandNameForApi();\r\n\r\n // replace the brand name in our apiUrl with the brand name retrieved from configuration\r\n settings.apiUrl = settings.apiUrl.replace('pulte', brandNameForApi);\r\n\r\n Object.keys(settings).forEach(k => this[k] = settings[k]);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { SleepStateConfiguration } from '../models/sleep-state-configuration.model';\r\nimport { SleepStateMedia } from '../models/sleep-state-media.model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SleepStateService {\r\n\r\n sleepStateConfig = new ReplaySubject(1);\r\n sleepStateMedia = new ReplaySubject(1);\r\n isManuallyTriggered = new ReplaySubject(1);\r\n\r\n updateSleepStateConfiguration(sleepStateConfig: SleepStateConfiguration): void {\r\n this.sleepStateConfig.next(sleepStateConfig);\r\n this.sleepStateConfig.complete();\r\n }\r\n\r\n updateSleepStateMedia(sleepStateMedia: SleepStateMedia): void {\r\n this.sleepStateMedia.next(sleepStateMedia);\r\n this.sleepStateMedia.complete();\r\n }\r\n\r\n updateManualTrigger(isManuallyTriggered: boolean) {\r\n this.isManuallyTriggered.next(isManuallyTriggered);\r\n }\r\n\r\n}\r\n\r\n\r\n","export enum AdobeLaunchZoneAttribute { }\r\n\r\nexport enum AdobeLaunchCtaAttribute {\r\n PhotoScroll = 'Photo Scroll'\r\n}\r\n","export enum AdobeLaunchEvent {\r\n PageViewLoaded = 'Page View Loaded',\r\n PlanListingDisplayed = 'Plan Listing Displayed',\r\n PlanListingViewed = 'Plan Listing Viewed',\r\n PlanListingClicked = 'Plan Listing Clicked',\r\n FormSubmitted = 'Form Submitted'\r\n}\r\n\r\nexport enum AdobeLaunchFilterKey {\r\n MinPrice = 'minPrice',\r\n MaxPrice = 'minPrice',\r\n MinSqFt = 'minSquareFoot',\r\n MaxSqft = 'maxSquareFoot',\r\n MinBeds = 'minBedrooms',\r\n MaxBeds = 'maxBedrooms',\r\n MinBaths = 'minBathrooms',\r\n MaxBaths = 'maxBathrooms',\r\n ModelAvailable = 'modelAvailable',\r\n QmiAvailable = 'qmiAvailable',\r\n Available = 'available',\r\n Sold = 'sold',\r\n NotReleased = 'notReleased'\r\n}\r\n\r\nexport enum AdobeLaunchFormName {\r\n RequestBrochure = 'Brochure Request',\r\n GuestRegistration = 'Guest Registration',\r\n MayMyCommute = 'Map My Commute'\r\n}\r\n\r\nexport enum AdobeLaunchFormType {\r\n Modal = 'Modal',\r\n Inline = 'Inline'\r\n}\r\n","import { ProductFilterDataModel } from '../content/community/product-filter-data.model';\r\nimport { Community } from '../product/community.model';\r\nimport { Plan } from '../product/plan.model';\r\nimport { QMI } from '../product/qmi.model';\r\nimport { AdobeLaunchEvent, AdobeLaunchFilterKey } from './adobe-launch-event-enum';\r\n\r\nexport class AdobeLaunchCommunity {\r\n communityID: string;\r\n communityName: string;\r\n brandName: string;\r\n\r\n constructor(community: Community) {\r\n if (community) {\r\n this.communityID = community.Id.toString();\r\n this.communityName = community.Name;\r\n this.brandName = community.BrandName;\r\n }\r\n }\r\n}\r\n\r\nexport class AdobeLaunchPage {\r\n pageID: string;\r\n pageType: string;\r\n pageURL: string;\r\n community: AdobeLaunchCommunity;\r\n\r\n constructor(pageID, pageType, pageURL) {\r\n this.pageID = pageID;\r\n this.pageType = pageType;\r\n this.pageURL = pageURL;\r\n }\r\n}\r\n\r\nexport class AdobeLaunchPageViewLoadedEvent {\r\n event: string;\r\n page: AdobeLaunchPage;\r\n\r\n constructor(page: AdobeLaunchPage) {\r\n this.event = AdobeLaunchEvent.PageViewLoaded;\r\n this.page = page;\r\n }\r\n}\r\n\r\nexport class AdobeLaunchPlanInfo {\r\n planName: string;\r\n planID: string;\r\n qmiID: string;\r\n startingPrice: number;\r\n\r\n constructor(plan: Plan, startingPrice: number, qmiId: string = null) {\r\n if (plan) {\r\n this.planName = plan.PlanName;\r\n this.planID = plan.Id && plan.Id.toString();\r\n }\r\n if (qmiId) {\r\n this.qmiID = qmiId;\r\n }\r\n if (startingPrice) {\r\n this.startingPrice = startingPrice;\r\n }\r\n }\r\n}\r\n\r\nexport class AdobeLaunchListing {\r\n community: AdobeLaunchCommunity;\r\n planInfo: AdobeLaunchPlanInfo;\r\n\r\n constructor(community: Community, plan: Plan, startingPrice: number, qmiId: string = null) {\r\n if (community) {\r\n this.community = new AdobeLaunchCommunity(community);\r\n }\r\n if (plan) {\r\n this.planInfo = new AdobeLaunchPlanInfo(plan, startingPrice, qmiId);\r\n }\r\n }\r\n}\r\n\r\ninterface AdobeLaunchFiltersApplied extends Record {\r\n filterKey: string;\r\n filterValue: string;\r\n}\r\n\r\nexport class AdobeLaunchForm {\r\n formName: string;\r\n formType: string;\r\n\r\n constructor(formName: string, formType: string) {\r\n this.formName = formName;\r\n this.formType = formType;\r\n }\r\n}\r\n\r\nexport class AdobeLaunchListingDisplayed {\r\n filtersApplied: AdobeLaunchFiltersApplied[];\r\n listing: AdobeLaunchListing[];\r\n\r\n constructor(listing: AdobeLaunchListing[], filterData?: ProductFilterDataModel) {\r\n if (listing) {\r\n this.listing = listing;\r\n }\r\n this.filtersApplied = this.createFiltersAppliedFromData(filterData);\r\n }\r\n\r\n private createFiltersAppliedFromData(filterData: ProductFilterDataModel): AdobeLaunchFiltersApplied[] {\r\n const filtersApplied: AdobeLaunchFiltersApplied[] = [];\r\n if (filterData) {\r\n if (filterData.minPrice || filterData.minPrice === 0) {\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.MinPrice, filterValue: filterData.minPrice.toString() });\r\n }\r\n\r\n if (filterData.maxPrice || filterData.maxPrice === 0) {\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.MaxPrice, filterValue: filterData.maxPrice.toString() });\r\n }\r\n\r\n if (filterData.minSquareFoot) {\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.MinSqFt, filterValue: filterData.minSquareFoot.toString() });\r\n }\r\n\r\n if (filterData.maxSquareFoot) {\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.MaxSqft, filterValue: filterData.maxSquareFoot.toString() });\r\n }\r\n\r\n if (filterData.minBedrooms || filterData.minBedrooms === 0) {\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.MinBeds, filterValue: filterData.minBedrooms.toString() });\r\n }\r\n\r\n if (filterData.maxBedrooms || filterData.maxBedrooms === 0) {\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.MaxBeds, filterValue: filterData.maxBedrooms.toString() });\r\n }\r\n\r\n if (filterData.minBathrooms || filterData.minBathrooms === 0) {\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.MinBaths, filterValue: filterData.minBathrooms.toString() });\r\n }\r\n\r\n if (filterData.maxBathrooms || filterData.maxBathrooms === 0) {\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.MaxBaths, filterValue: filterData.maxBathrooms.toString() });\r\n }\r\n\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.ModelAvailable, filterValue: filterData.modelAvailableOnly.toString() });\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.NotReleased, filterValue: filterData.notReleased.toString() });\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.QmiAvailable, filterValue: filterData.qmiAvailableOnly.toString() });\r\n filtersApplied.push({ filterKey: AdobeLaunchFilterKey.Sold, filterValue: filterData.sold.toString() });\r\n }\r\n return filtersApplied;\r\n }\r\n}\r\n\r\nexport class AdobeLaunchPlanListingDisplayedEvent {\r\n event: string;\r\n listingDisplayed: AdobeLaunchListingDisplayed;\r\n\r\n constructor(listing: AdobeLaunchListing[], filterData?: ProductFilterDataModel) {\r\n if (listing) {\r\n this.listingDisplayed = new AdobeLaunchListingDisplayed(listing, filterData);\r\n }\r\n this.event = AdobeLaunchEvent.PlanListingDisplayed;\r\n }\r\n}\r\n\r\nexport class AdobeLaunchPlanListingViewedEvent {\r\n event: string;\r\n listingViewed: AdobeLaunchListing[];\r\n\r\n constructor(community: Community, plan: Plan, startingPrice: number, qmiId: string = null) {\r\n this.event = AdobeLaunchEvent.PlanListingViewed;\r\n if (community && plan) {\r\n this.listingViewed = [new AdobeLaunchListing(community, plan, startingPrice, qmiId)];\r\n }\r\n }\r\n}\r\n\r\nexport class AdobeLaunchPlanListingClickedEvent {\r\n event: string;\r\n listingClicked: AdobeLaunchListing[];\r\n\r\n constructor(community: Community, plan: Plan, startingPrice: number, qmiId: string = null) {\r\n this.event = AdobeLaunchEvent.PlanListingClicked;\r\n if (community && plan) {\r\n this.listingClicked = [new AdobeLaunchListing(community, plan, startingPrice, qmiId)];\r\n }\r\n }\r\n}\r\n\r\nexport class AdobeLaunchFormSubmittedEvent {\r\n event: string;\r\n form: AdobeLaunchForm;\r\n community: AdobeLaunchCommunity;\r\n plans: AdobeLaunchPlanInfo[];\r\n qmis: AdobeLaunchPlanInfo[];\r\n\r\n constructor(community: Community, formName: string, formType: string, plans: Plan[] = null, qmis: QMI[] = null) {\r\n this.event = AdobeLaunchEvent.FormSubmitted;\r\n if (community && formName && formType) {\r\n this.community = new AdobeLaunchCommunity(community);\r\n this.form = new AdobeLaunchForm(formName, formType);\r\n\r\n if (plans && plans.length) {\r\n this.plans = [];\r\n plans.map(plan => this.plans.push(new AdobeLaunchPlanInfo(plan, plan.Price)));\r\n }\r\n\r\n if (qmis && qmis.length) {\r\n this.qmis = [];\r\n qmis.map(qmi =>\r\n this.qmis.push(new AdobeLaunchPlanInfo(qmi.Plan, qmi.Price, qmi.InventoryHomeID && qmi.InventoryHomeID.toString())));\r\n }\r\n }\r\n }\r\n}\r\n","import { Image } from 'src/app/models/product/image.model';\r\nimport { KioskImage } from './content/media/kiosk-image.model';\r\n\r\nexport class CarouselOptionsModel {\r\n public RotationInterval: boolean | number;\r\n public ShowArrows: boolean;\r\n public ShowPips: boolean;\r\n public Width: string | number;\r\n public AspectRatio: number;\r\n public InitialSlideId: string;\r\n public ShowImageIndex: boolean;\r\n public ShowImageCaption: boolean;\r\n public ShowModalCta: boolean;\r\n public Images: Image[];\r\n public StatusOverlayText: string[];\r\n public HasImages: boolean;\r\n public IsFloorPlan: boolean;\r\n public HasSingleImage: boolean;\r\n public UseSmallArrows: boolean;\r\n public CarouselBanner: KioskImage;\r\n\r\n constructor(providedImages: Image[]) {\r\n this.RotationInterval = false;\r\n this.ShowArrows = true;\r\n this.ShowPips = false;\r\n this.Width = 'auto';\r\n this.AspectRatio = 1.5;\r\n this.InitialSlideId = '0';\r\n this.ShowImageIndex = true;\r\n this.ShowImageCaption = true;\r\n this.ShowModalCta = false;\r\n this.IsFloorPlan = false;\r\n this.Images = providedImages;\r\n this.HasSingleImage = this.Images.length === 1;\r\n this.HasImages = this.Images && this.Images.length ? true : false;\r\n }\r\n}\r\n","import { CTAPageItemRef } from '../../cta-page-item-ref.model';\r\nimport { AlphaVisionLotFacing, AlphaVisionLotType } from '../../maps/alphavision-map-data.model';\r\n\r\nexport class LotMapLegendModel {\r\n Available: string;\r\n Quick_Move_In: string;\r\n Model_Available: string;\r\n Sold: string;\r\n Not_Released: string;\r\n Homesite: string;\r\n Homesites_Count: string;\r\n Quick_Move_In_Count: string;\r\n Home_Design_Count: string;\r\n Home_Status_Filter: string;\r\n Lot_Direction_Filter: string;\r\n Lot_Type_Filter: string;\r\n Lot_Status: string;\r\n Lot_Facing: string;\r\n Lot_Type: string;\r\n Lot_Premium: string;\r\n Lot_Address: string;\r\n Plan_Elevation: string;\r\n Estimated_Move_In_Date: string;\r\n Homesite_Availability: string;\r\n Unique_Lot: string;\r\n}\r\n\r\nexport class LotMapLegendFormModel {\r\n //Status Properties\r\n availableValue: any = { value: true };\r\n modelAvailableValue: any = { value: true };\r\n qmiAvailableValue: any = { value: true };\r\n soldValue: any = { value: true };\r\n notReleasedValue: any = { value: true };\r\n\r\n facingProperties: any[] = [{value: true}];\r\n typeProperties: any[] = [{value: true}];\r\n\r\n blackListedFacingValues: string[] = [AlphaVisionLotFacing.NA];\r\n blackListedTypeValues: string[] = [AlphaVisionLotType.None];\r\n}\r\n\r\nexport class LegendItem {\r\n label: string;\r\n name: string;\r\n className: string;\r\n checked: any = { value: true };\r\n\r\n constructor(label, value, className?) {\r\n this.label = label;\r\n this.name = value;\r\n this.className = className;\r\n this.checked = value;\r\n }\r\n}\r\n\r\nexport class CommunityLotMapModel extends LotMapLegendModel {\r\n Series_Label: string;\r\n Price: string;\r\n Bedrooms: string;\r\n Bathrooms: string;\r\n Garage: string;\r\n Square_Feet: string;\r\n LMP_Starting_From: string;\r\n PitiPriceLabel: string;\r\n See_Lots_CTA_Text: string;\r\n View_Home_CTA_Text: string;\r\n CTA_Page_Item_Ref: CTAPageItemRef;\r\n Homesites_Label: string;\r\n Quick_Move_Ins_Label: string;\r\n Plan_Almost_Sold_Out: string;\r\n Plan_Future_Release: string;\r\n Plan_Last_Chance: string;\r\n Plan_Last_Home_Design: string;\r\n Plan_Model_For_Sale: string;\r\n Plan_Model_Open: string;\r\n Plan_New_Model: string;\r\n Plan_New_Plan: string;\r\n Plan_Sold_Out: string;\r\n Plan_QMI_Only: string;\r\n Filter_Close_Matches: string;\r\n Homesite_Selected_Lot_Label: string;\r\n Homesites_Map_Error_Label: string;\r\n}","export class ProductFilterDataModel {\r\n minPrice: number;\r\n maxPrice: number;\r\n minSquareFoot: number;\r\n maxSquareFoot: number;\r\n minBedrooms: number;\r\n maxBedrooms: number;\r\n minBathrooms: number;\r\n maxBathrooms: number;\r\n modelAvailableOnly: boolean;\r\n qmiAvailableOnly: boolean;\r\n available: boolean;\r\n sold: boolean;\r\n notReleased: boolean;\r\n}\r\n","export class ProductFilterModel {\r\n Filter_Bathrooms_Maximum: string;\r\n Filter_Bathrooms_Minimum: string;\r\n Filter_Bedroom_Count: string;\r\n Filter_Bedrooms_Maximum: string;\r\n Filter_Bedrooms_Minimum: string;\r\n Filter_Clear_Filters_CTA: string;\r\n Filter_Bathroom_Count: string;\r\n Filter_Name: string;\r\n Filter_Livable_Space: string;\r\n Filter_Living_Space_Maximum: string;\r\n Filter_Living_Space_Minimum: string;\r\n Filter_Model_Availability: string;\r\n Filter_Price: string;\r\n Filter_Price_Range_Maximum: string;\r\n Filter_Price_Range_Minimum: string;\r\n Filter_QMI_Availability: string;\r\n Filter_View_Results: string;\r\n Filter_Close_Matches: string;\r\n Filter_Exact_Matches_Count: string;\r\n Filter_Close_Matches_Count: string;\r\n Filter_Available: string;\r\n Filter_Sold: string;\r\n Filter_Not_Released: string;\r\n}\r\n","export class GuestRegistrationContactModel {\r\n FirstName: string;\r\n LastName: string;\r\n Email: string;\r\n Phone: string;\r\n Zip: string;\r\n\r\n constructor(firstName?: string, lastName?: string) {\r\n this.FirstName = firstName;\r\n this.LastName = lastName;\r\n }\r\n}\r\n","export class GuestRegistrationResponseModel {\r\n IsSuccessful: boolean;\r\n\r\n constructor() {\r\n this.IsSuccessful = false;\r\n }\r\n}\r\n","import { GuestRegistrationContactModel } from './guest-registration-contact.model';\r\n\r\nexport class GuestRegistrationModel {\r\n Contacts: GuestRegistrationContactModel[] = [];\r\n HasAgent: boolean;\r\n AgentFirstName?: string;\r\n AgentLastName?: string;\r\n AgentEmail?: string;\r\n AgentPhone?: string;\r\n AgentZip?: string;\r\n CommunityId: number;\r\n IsKioskRegistration: boolean;\r\n AdditionalComments: string;\r\n}\r\n","import { CTAPageItemRef } from '../../cta-page-item-ref.model';\r\nimport { KioskImage } from '../media/kiosk-image.model';\r\nimport { ProductFilterModel } from '../community/product-filter.model';\r\n\r\nexport class ProductOverviewModel extends ProductFilterModel {\r\n Plan_Toggle_Text: string;\r\n Plan_Bathrooms: string;\r\n Plan_Bedrooms: string;\r\n Plan_CTA_Detail: string;\r\n Plan_Garage: string;\r\n Plan_Price: string;\r\n Plan_Series: string;\r\n Plan_Square_Feet: string;\r\n Plan_LMP_Starting_From: string;\r\n PlanPitiPriceLabel: string;\r\n QMILMPStartingFrom: string;\r\n QMIPitiPriceLabel: string;\r\n Plan_CTA_Page_Item_Ref: CTAPageItemRef;\r\n Plan_Almost_Sold_Out: string;\r\n Plan_Future_Release: string;\r\n Plan_Last_Chance: string;\r\n Plan_Last_Home_Design: string;\r\n Plan_Model_For_Sale: string;\r\n Plan_Model_Open: string;\r\n Plan_New_Model: string;\r\n Plan_New_Plan: string;\r\n Plan_Sold_Out: string;\r\n Plan_QMI_Only: string;\r\n No_Plans_Available: string;\r\n QMI_Availability: string;\r\n QMI_Availability_Date: string;\r\n QMI_Bathrooms: string;\r\n QMI_Bedrooms: string;\r\n QMI_Garage: string;\r\n QMI_Lot: string;\r\n QMI_Price: string;\r\n QMI_Series: string;\r\n QMI_Square_Feet: string;\r\n QMI_CTA_Detail: string;\r\n QMI_CTA_Page_Item_Ref: CTAPageItemRef;\r\n QMI_Price_Discount: string;\r\n QMI_Toggle_Text: string;\r\n QMI_Default_Toggle: boolean;\r\n No_QMIs_Available: string;\r\n Series_Name: string;\r\n Series_Bedrooms: string;\r\n Series_Bathrooms: string;\r\n Series_Square_Feet: string;\r\n Series_Garage: string;\r\n Series_CTA_Detail: string;\r\n Series_Price: string;\r\n Series_Label: string;\r\n All_Homes_Label: string;\r\n Hers_Score_CTA_Label: string;\r\n Hers_Score_CTA_ToolTip: string;\r\n Series_Card_Background_Image: KioskImage;\r\n Bathrooms_Maximum: string;\r\n Bathrooms_Minimum: string;\r\n Call_For_Pricing_Text: string;\r\n}\r\n\r\nexport enum ProductOverviewHometype {\r\n Homes = 'Homes',\r\n Qmis = 'Qmis'\r\n}\r\n\r\n","import { KioskImage } from '../media/kiosk-image.model';\r\nimport { Community } from '../../product/community.model';\r\nimport { Plan } from '../../product/plan.model';\r\n\r\nexport class RequestBrochureParams {\r\n CommunityId: string;\r\n PlanIds: string[];\r\n QmiIds: string[];\r\n EmailAddress: string;\r\n}\r\n","export class RequestBrochureResponse {\r\n isSuccessful: boolean;\r\n message: string;\r\n}\r\n","export class GalleryModalModel {\r\n ModalTitle: string;\r\n ExteriorLabel: string;\r\n InteriorLabel: string;\r\n IsFilterGallery: boolean;\r\n}\r\n","export class VideoModalModel {\r\n ModalHeader: string;\r\n ModalDescription: string;\r\n ModalDescriptionPlacement: string;\r\n VideoId: string;\r\n EnableAutoplay: boolean;\r\n VirtualTourUrl: string;\r\n HasSummary: boolean;\r\n}\r\n","import { CTAPageItemRef } from '../../cta-page-item-ref.model';\r\nimport { HersScoreModel } from '../../hers-score-configuration.model';\r\nimport { LmpConfigurationModel } from '../../lmp-configuration.model';\r\nimport { KioskImage } from '../media/kiosk-image.model';\r\n\r\nexport class PlanCardModel {\r\n Series_Name: string;\r\n Price: string;\r\n Bedrooms: string;\r\n Bathrooms: string;\r\n Garage: string;\r\n Square_Feet: string;\r\n CTA_Page_Item_Ref: CTAPageItemRef;\r\n CTA_Detail: string;\r\n LMP_Starting_From: string;\r\n PITI_Price_Label: string;\r\n QMI_Availability: string;\r\n QMI_Only: string;\r\n Almost_Sold_Out: string;\r\n Future_Release: string;\r\n Last_Chance: string;\r\n Last_Home_Design: string;\r\n Model_For_Sale: string;\r\n Model_Open: string;\r\n New_Model: string;\r\n New_Plan: string;\r\n Sold_Out: string;\r\n HersScore: HersScoreModel;\r\n LmpConfiguration: LmpConfigurationModel;\r\n Virtual_Tour_CTA_Text: string;\r\n Virtual_Tour_CTA_Icon: KioskImage;\r\n Virtual_Tour_CTA_Style: string;\r\n Virtual_Tour_Modal_Header_Text: string;\r\n Video_Tour_CTA_Text: string;\r\n Video_Tour_CTA_Icon: KioskImage;\r\n Video_Tour_CTA_Style: string;\r\n Video_Tour_Modal_Header_Text: string;\r\n Video_Tour_Modal_Caption_Placement: string;\r\n See_Lots_CTA_Detail: string;\r\n View_Home_CTA_Detail: string;\r\n Homesites_Label: string;\r\n Quick_Move_Ins_Label: string;\r\n Call_For_Pricing_Text: string;\r\n}\r\n","import { Image } from 'src/app/models/product/image.model';\r\nimport { PlanFeature } from '../../product/feature.model';\r\n\r\nexport class PlanFeaturesModalModel {\r\n EmbraceYourSpaceImages: Image[];\r\n PlanGalleryImage: Image;\r\n Features: PlanFeature[];\r\n MetaDescription: string;\r\n hasSummary: boolean;\r\n}\r\n","import { CarouselOptionsModel } from '../../carousel-options.model';\r\nimport { KioskImage } from '../media/kiosk-image.model';\r\n\r\nexport class PlanFloorPlansModel {\r\n Header_Text: string;\r\n Button_CTA: string;\r\n Button_Icon: KioskImage;\r\n Modal_Header: string;\r\n}\r\n\r\nexport class FloorPlansConfigurationModel {\r\n IsSelected: boolean;\r\n CarouselOptions: CarouselOptionsModel;\r\n ConfigurationName: string;\r\n Index: number;\r\n ActiveImageIndex: number;\r\n CarouselIndex: number;\r\n ValidSingleImage: boolean;\r\n\r\n constructor() {\r\n this.IsSelected = false;\r\n this.ActiveImageIndex = 0;\r\n }\r\n}\r\n","import { CTAPageItemRef } from '../../cta-page-item-ref.model';\r\nimport { LmpConfigurationModel } from '../../lmp-configuration.model';\r\n\r\nexport class QmiCardModel {\r\n Series: string;\r\n Series_Name: string;\r\n Price: string;\r\n Bedrooms: string;\r\n Bathrooms: string;\r\n Garage: string;\r\n Square_Feet: string;\r\n Lot: string;\r\n Availability_Date: string;\r\n QMI_CTA_Text: string;\r\n View_All_Button_Text: string;\r\n QMI_CTA_Page_Item_Ref: CTAPageItemRef;\r\n Price_Discount: string;\r\n Call_For_Pricing_Text: string;\r\n LmpConfiguration: LmpConfigurationModel;\r\n LMPStartingFrom: string;\r\n PITIPriceLabel: string;\r\n}\r\n","export enum BrandName {\r\n Pulte = 'Pulte',\r\n Centex = 'Centex',\r\n DelWebb = 'Del Webb',\r\n DiVosta = 'DiVosta',\r\n JohnWieland = 'JW',\r\n AmericanWest = 'AmericanWest'\r\n}\r\n","export enum HorizontalAlignment {\r\n Left = 'Left',\r\n Center = 'Center',\r\n Right = 'Right'\r\n}\r\n\r\nexport enum ButtonStyle {\r\n Default = 'Default',\r\n Link = 'Link',\r\n Primary = 'Primary'\r\n}\r\n","export enum TravelTimeOption {\r\n LeaveNow = 'Leave Now',\r\n DepartAt = 'Depart At'\r\n}\r\n","export enum ImageType {\r\n CommunityOverview = 'Community Overview',\r\n CommunityAmenity = 'Community Amenity',\r\n HomeExterior = 'Home Exterior',\r\n PlanFloorplan = 'Plan Floorplan',\r\n HomeInterior = 'Home Interior',\r\n PlanOption = 'Plan Option',\r\n PlanExterior = 'Plan Exterior',\r\n Promotion = 'Promotion',\r\n InventoryInterior = 'Inventory Interior',\r\n CommunityHOA = 'Community HOA',\r\n BrandOffer = 'Brand Offer',\r\n InventoryElevation = 'Inventory Elevation',\r\n LifeTestedFeature = 'LifeTested Feature',\r\n SeriesImage = 'Series Image',\r\n KioskSleepStateIcon = 'Kiosk Sleep State Icon',\r\n KioskSleepStateImage = 'Kiosk Sleep State Image'\r\n}\r\n","export enum KeyboardButtonTheme {\r\n Medium = 'hg-button-medium',\r\n Dark = 'hg-button-dark',\r\n Suggestion = 'hg-button-suggestion'\r\n}\r\n","export enum QMIDiscountOption\r\n{\r\n DoNotApplyDiscount = 0,\r\n ApplyDiscountAndShowDetails = 1,\r\n ApplyDiscountWithoutDetails = 2\r\n}","export enum ButtonClass {\r\n Default = 'btn-default',\r\n Link = 'btn-link',\r\n Primary = 'btn-primary'\r\n}\r\n","export interface AlphaVisionGeneralResponse {\r\n name: string;\r\n datatype: AlphaVisionDataType;\r\n eventtype: AlphaVisionEventType;\r\n data: AlphaVisionGeneralResponseData;\r\n siteplans?: AlphaVisionSitePlan[];\r\n}\r\n\r\nexport interface AlphaVisionClickResponse {\r\n name: string;\r\n datatype: AlphaVisionDataType;\r\n eventtype: AlphaVisionEventType;\r\n data: AlphaVisionClickResponseData;\r\n}\r\n\r\nexport interface AlphaVisionSelectMapResponse {\r\n data: AlphaVisionSitePlan;\r\n datatype: AlphaVisionDataType;\r\n eventtype: AlphaVisionEventType;\r\n}\r\n\r\nexport interface AlphaVisionFilterLotsResponse {\r\n data: AlphaVisionFilterLotsResponseData;\r\n datatype: AlphaVisionDataType;\r\n eventtype: AlphaVisionEventType;\r\n}\r\n\r\nexport interface AlphaVisionSelectLotResponse {\r\n data: AlphaVisionLot;\r\n datatype: AlphaVisionDataType;\r\n eventtype: AlphaVisionEventType;\r\n}\r\n\r\nexport interface AlphaVisionPlan {\r\n id: string;\r\n name: string;\r\n number: string;\r\n}\r\n\r\nexport interface AlphaVisionLot {\r\n lot: string;\r\n lotAttributes: [];\r\n lotGroupName: string;\r\n lotImages: AlphaVisionImage[];\r\n lotLabel: string;\r\n lotNumber: string;\r\n plans: AlphaVisionPlan[];\r\n status: string;\r\n}\r\n\r\nexport interface AlphaVisionImage {\r\n name: string;\r\n url: string;\r\n}\r\n\r\nexport interface AlphaVisionAmenity {\r\n zoneName: string;\r\n location: string;\r\n description: string;\r\n medias: AlphaVisionImage[];\r\n}\r\n\r\nexport class AlphaVisionSitePlan {\r\n amenities: AlphaVisionAmenity[];\r\n availablePlans: AlphaVisionPlan[];\r\n availableStatus: string[];\r\n lots: AlphaVisionLot[];\r\n mapName: string;\r\n siteplans: AlphaVisionSitePlan[];\r\n}\r\n\r\nexport class AlphaVisionLotCounts {\r\n HomesiteLotsCount: number;\r\n AvailableHomesiteLotsCount: number;\r\n QmiLotsCount: number;\r\n}\r\n\r\n// These are the exact values returned from Alpha Vision API\r\nexport enum AlphaVisionAttributeValues {\r\n LotNumber = 'Lot Number',\r\n LotLabel = 'LotLabel',\r\n Lot = 'lot',\r\n Address = 'address',\r\n EstMoveInDate = 'estmoveindate',\r\n Premium = 'premium',\r\n UniqueLot = 'uniquelot',\r\n Elevation = 'elevation',\r\n LotFacing = 'LOTFACING',\r\n LotType = 'LOTTYPE',\r\n HomeSiteAvailability = 'Home Site Availability'\r\n}\r\n\r\nexport class AlphaVisionAttributes {\r\n lotLabel: string;\r\n lotNumber: string;\r\n lotFacing: string;\r\n lotType: string;\r\n lotPremium: string;\r\n address: string;\r\n elevation: string;\r\n estMoveInDate: string;\r\n homeSiteAvailability: string;\r\n uniqueLot: string;\r\n lot: string;\r\n\r\n // Setting Values from the array of objects/properties returned from AlphaVision\r\n constructor(attributes: any[]) {\r\n attributes.map(attribute => {\r\n const key = Object.keys(attribute)[0];\r\n switch (key) {\r\n case AlphaVisionAttributeValues.LotNumber:\r\n this.lotNumber = attribute[AlphaVisionAttributeValues.LotNumber];\r\n break;\r\n case AlphaVisionAttributeValues.LotLabel:\r\n this.lotLabel = attribute[AlphaVisionAttributeValues.LotLabel];\r\n break;\r\n case AlphaVisionAttributeValues.Lot:\r\n this.lot = attribute[AlphaVisionAttributeValues.Lot];\r\n break;\r\n case AlphaVisionAttributeValues.Address:\r\n this.address = attribute[AlphaVisionAttributeValues.Address];\r\n break;\r\n case AlphaVisionAttributeValues.EstMoveInDate:\r\n this.estMoveInDate = attribute[AlphaVisionAttributeValues.EstMoveInDate];\r\n break;\r\n case AlphaVisionAttributeValues.Premium:\r\n this.lotPremium = attribute[AlphaVisionAttributeValues.Premium];\r\n break;\r\n case AlphaVisionAttributeValues.UniqueLot:\r\n this.uniqueLot = attribute[AlphaVisionAttributeValues.UniqueLot];\r\n break;\r\n case AlphaVisionAttributeValues.Elevation:\r\n this.elevation = attribute[AlphaVisionAttributeValues.Elevation];\r\n break;\r\n case AlphaVisionAttributeValues.LotFacing:\r\n this.lotFacing = attribute[AlphaVisionAttributeValues.LotFacing];\r\n break;\r\n case AlphaVisionAttributeValues.LotType:\r\n this.lotType = attribute[AlphaVisionAttributeValues.LotType];\r\n break;\r\n case AlphaVisionAttributeValues.HomeSiteAvailability:\r\n this.homeSiteAvailability = attribute[AlphaVisionAttributeValues.HomeSiteAvailability];\r\n break;\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport class AlphaVisionLotFilterAttributes {\r\n LotTypes: AlphaVisionLotType[];\r\n LotFacings: AlphaVisionLotFacing[];\r\n\r\n constructor(types: AlphaVisionLotType[], facings: AlphaVisionLotFacing[]) {\r\n this.LotTypes = types && types.length ? types : [];\r\n this.LotFacings = facings && facings.length ? facings : [];\r\n }\r\n}\r\n\r\nexport enum AlphaVisionDataType {\r\n MasterMap = 'mastermap',\r\n SitePlan = 'siteplan',\r\n Error = 'error',\r\n Lot = 'lot',\r\n Amenity = 'amenity',\r\n Plan = 'plan',\r\n ZoomLevel = 'zoom_level',\r\n SVG = 'svg'\r\n}\r\n\r\nexport enum AlphaVisionEventType {\r\n Init = 'init',\r\n Click = 'click',\r\n ShowLots = 'showLots()',\r\n ShowPlans = 'showPlans()',\r\n FilterLots = 'filterLots()',\r\n SelectLot = 'selectLot()',\r\n SelectMap = 'selectMap()',\r\n Reset = 'reset()',\r\n ExportStaticSVG = 'exportStaticSVG()'\r\n}\r\n\r\nexport enum AlphaVisionLotStatusType {\r\n Available = 'Available',\r\n Model = 'Model',\r\n QuickMoveIn = 'Quick Move In',\r\n Sold = 'Sold',\r\n Unreleased = 'Unreleased'\r\n}\r\n\r\nexport enum AlphVisionLotStatusClass {\r\n AvailableClass = 'available',\r\n ModelClass = 'model-available',\r\n QuickMoveInClass = 'qmi',\r\n SoldClass = 'sold',\r\n UnreleasedClass = 'not-released'\r\n}\r\n\r\nexport enum AlphaVisionLotFacing {\r\n SW = 'South West',\r\n SE = 'South East',\r\n S = 'South',\r\n NW = 'North West',\r\n NE = 'North East',\r\n N = 'North',\r\n E = 'East',\r\n W = 'West',\r\n NA = 'N/A'\r\n}\r\n\r\nexport enum AlphaVisionLotType {\r\n OpenSpace = 'Open Space',\r\n OtherView = 'Other View',\r\n None = 'None',\r\n BaseView = 'Base View',\r\n Waterfront = 'Waterfront',\r\n NaturePreserve = 'Nature/Preserve',\r\n Standard = 'Standard',\r\n WaterView = 'Water View',\r\n CityView = 'City View',\r\n GolfCourse = 'Golf Course'\r\n}\r\n\r\nexport interface AlphaVisionGeneralResponseData extends AlphaVisionSitePlan, AlphaVisionLot, AlphaVisionPlan { }\r\n\r\nexport interface AlphaVisionClickResponseData extends AlphaVisionLot, AlphaVisionAmenity, AlphaVisionSitePlan { }\r\n\r\nexport interface AlphaVisionFilterLotsResponseData extends AlphaVisionLot, AlphaVisionSitePlan { }\r\n","import { getLocalStyleVar, getLocalStyleVarUrl, convertSvgToUrl } from 'src/helper-functions/local-resource-helper';\r\nimport { GoogleMapsConfiguration } from './google-maps-configuration.model';\r\nimport { BrandName } from '../enums/brand-enum';\r\n\r\nexport class GMapsIconScaledSize {\r\n public height: number;\r\n public width: number;\r\n\r\n constructor(height: number, width: number) {\r\n this.height = height;\r\n this.width = width;\r\n }\r\n}\r\n\r\nexport class GMapsIconLabelOrigin {\r\n public x: number;\r\n public y: number;\r\n\r\n constructor(x: number, y: number) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n}\r\n\r\nexport class GMapsMarkerLabelOptions {\r\n public color: string;\r\n public fontSize: number;\r\n public fontWeight: string;\r\n\r\n private defaultLabelColor = getLocalStyleVar('--brand-map-marker-label-color') || '#000';\r\n private defaultFontSize = getLocalStyleVar('--brand-map-marker-label-font-size') || 1.5;\r\n private defaultFontWeight = 'normal';\r\n\r\n constructor(color?: string, fontSize?: number, fontWeight?: string) {\r\n this.color = color ? color : this.defaultLabelColor;\r\n this.fontSize = fontSize ? fontSize : this.defaultFontSize;\r\n this.fontWeight = fontWeight ? fontWeight : this.defaultFontWeight;\r\n }\r\n}\r\n\r\nexport class GMapsMarkerIconOptions {\r\n public scaledSize: GMapsIconScaledSize;\r\n public labelOrigin: GMapsIconLabelOrigin;\r\n\r\n constructor() {\r\n this.scaledSize = new GMapsIconScaledSize(45, 45);\r\n this.labelOrigin = new GMapsIconLabelOrigin(37, 30);\r\n }\r\n}\r\n\r\nexport class GMapsMarker {\r\n public MarkerID: string | number;\r\n public Latitude: number;\r\n public Longitude: number;\r\n public IsOrigin: boolean;\r\n public IsDestination: boolean;\r\n public IsSelected: boolean;\r\n public LabelText: string;\r\n public zIndex: number;\r\n\r\n public IconUrl: string;\r\n public IconSelectedUrl: string;\r\n public LabelOptions: GMapsMarkerLabelOptions;\r\n public IconOptions: GMapsMarkerIconOptions;\r\n\r\n constructor(markerID: string | number, lat: number, lng: number, googleMapsConfiguration?: GoogleMapsConfiguration, brandName?: string) {\r\n this.MarkerID = markerID;\r\n this.Latitude = lat;\r\n this.Longitude = lng;\r\n this.IsOrigin = false;\r\n this.IsDestination = false;\r\n this.IsSelected = false;\r\n this.LabelText = ' ';\r\n this.setIconUrlsByBrand(brandName, googleMapsConfiguration);\r\n this.zIndex = null;\r\n this.IconOptions = new GMapsMarkerIconOptions();\r\n this.LabelOptions = new GMapsMarkerLabelOptions();\r\n }\r\n\r\n setScale(scale: number) {\r\n if (this.IconOptions) {\r\n this.IconOptions.scaledSize = new GMapsIconScaledSize(75 * scale, 75 * scale);\r\n this.IconOptions.labelOrigin = new GMapsIconLabelOrigin(37 * scale, 30 * scale);\r\n }\r\n if (this.LabelOptions) {\r\n const defaultFontSize = getLocalStyleVar('--brand-map-marker-label-font-size') || 1.5;\r\n this.LabelOptions.fontSize = defaultFontSize * scale;\r\n }\r\n }\r\n\r\n setLabelOptions(fontColor: string, fontSize?: number) {\r\n if (!this.LabelOptions) {\r\n this.LabelOptions = new GMapsMarkerLabelOptions();\r\n }\r\n if (fontColor) {\r\n this.LabelOptions.color = fontColor;\r\n }\r\n if (fontSize) {\r\n this.LabelOptions.fontSize = fontSize;\r\n }\r\n }\r\n\r\n setIconUrl(iconUrl: string, iconSelectedUrl?: string) {\r\n if (iconUrl) {\r\n this.IconUrl = iconUrl;\r\n }\r\n if (iconSelectedUrl) {\r\n this.IconSelectedUrl = iconSelectedUrl;\r\n } else {\r\n this.IconSelectedUrl = iconUrl;\r\n }\r\n }\r\n\r\n // Sets pins based on SVGs set in Sitecore per brand\r\n setIconUrlsByBrand(brandName: string, mapConfiguration: GoogleMapsConfiguration) {\r\n // get brand specific icons from the config item passed in, convert to url for google maps\r\n if (brandName && mapConfiguration) {\r\n switch (brandName) {\r\n case BrandName.Pulte:\r\n this.setIconUrl(\r\n convertSvgToUrl(mapConfiguration.Pulte_Default_Pin),\r\n convertSvgToUrl(mapConfiguration.Pulte_Selected_Pin));\r\n break;\r\n case BrandName.DelWebb:\r\n this.setIconUrl(\r\n convertSvgToUrl(mapConfiguration.Del_Webb_Default_Pin),\r\n convertSvgToUrl(mapConfiguration.Del_Webb_Selected_Pin));\r\n break;\r\n case BrandName.Centex:\r\n this.setIconUrl(\r\n convertSvgToUrl(mapConfiguration.Centex_Default_Pin),\r\n convertSvgToUrl(mapConfiguration.Centex_Selected_Pin));\r\n break;\r\n case BrandName.DiVosta:\r\n this.setIconUrl(\r\n convertSvgToUrl(mapConfiguration.Divosta_Default_Pin),\r\n convertSvgToUrl(mapConfiguration.Divosta_Selected_Pin));\r\n break;\r\n case BrandName.JohnWieland:\r\n this.setIconUrl(\r\n convertSvgToUrl(mapConfiguration.John_Wieland_Default_Pin),\r\n convertSvgToUrl(mapConfiguration.John_Wieland_Selected_Pin));\r\n break;\r\n case BrandName.AmericanWest:\r\n this.setIconUrl(\r\n convertSvgToUrl(mapConfiguration.American_West_Default_Pin),\r\n convertSvgToUrl(mapConfiguration.American_West_Selected_Pin));\r\n break;\r\n }\r\n // get current brand's map pin SVGs from config passed in, convert to url for google maps\r\n } else if (mapConfiguration && mapConfiguration.Location_Default_Pin && mapConfiguration.Location_Selected_Pin) {\r\n this.setIconUrl(\r\n convertSvgToUrl(mapConfiguration.Location_Default_Pin),\r\n convertSvgToUrl(mapConfiguration.Location_Selected_Pin));\r\n // if the map config is not valid, pull the default icon values from the brand's .scss file\r\n } else {\r\n this.setIconUrl(\r\n getLocalStyleVarUrl('--brand-map-marker-icon'),\r\n getLocalStyleVarUrl('--brand-map-marker-selected-icon'));\r\n }\r\n }\r\n\r\n setLabelAdjacentMarkerOptions() {\r\n if (this.IconOptions) {\r\n this.IconOptions.labelOrigin = new GMapsIconLabelOrigin(45, -8);\r\n }\r\n this.LabelOptions = new GMapsMarkerLabelOptions('#000', 1, 'bold');\r\n }\r\n}\r\n","import { Image } from 'src/app/models/product/image.model';\r\nimport { LatLng } from '@agm/core';\r\n\r\nexport class GMapsOptionsModel {\r\n public InitialLatitude: number;\r\n public InitialLongitude: number;\r\n public Zoom: number;\r\n public FullscreenControl: boolean;\r\n public ZoomControl: boolean;\r\n public StreetViewControl: boolean;\r\n public ClickableIcons: boolean;\r\n public MaxZoom: number;\r\n public MinZoom: number;\r\n public MapTypeControl: boolean;\r\n public MapType: string;\r\n\r\n constructor() {\r\n this.InitialLatitude = 33.7490;\r\n this.InitialLongitude = 84.3880;\r\n this.Zoom = 15;\r\n this.FullscreenControl = true;\r\n this.ZoomControl = true;\r\n this.StreetViewControl = false;\r\n this.ClickableIcons = false;\r\n this.MaxZoom = 24;\r\n this.MinZoom = 2;\r\n this.MapTypeControl = true;\r\n this.MapType = google.maps.MapTypeId.ROADMAP;\r\n }\r\n}\r\n","import { Image } from 'src/app/models/product/image.model';\r\nimport { LatLng } from '@agm/core';\r\n\r\nexport class GoogleDirectionsRouteData {\r\n public Route: google.maps.DirectionsRoute;\r\n public MidwayLatLng: google.maps.LatLng;\r\n\r\n constructor(route, midwayLatLng) {\r\n this.Route = route;\r\n this.MidwayLatLng = midwayLatLng;\r\n }\r\n}\r\n","import { Image } from 'src/app/models/product/image.model';\r\nimport { LatLng } from '@agm/core';\r\n\r\nexport class GooglePlacesSearchParams {\r\n public Latitude: number;\r\n public Longitude: number;\r\n public Radius: number;\r\n public Query: string;\r\n\r\n constructor() {\r\n this.Latitude = null;\r\n this.Longitude = null;\r\n this.Radius = null;\r\n this.Query = null;\r\n }\r\n}\r\n","export class CommunityPOICategory {\r\n PointOfInterestID: number;\r\n PointOfInterestName: string;\r\n SourceType: string;\r\n}\r\n\r\nexport class CommunityPOICategoryModel {\r\n item: CommunityPOICategory;\r\n isSelected: boolean;\r\n index: number;\r\n\r\n constructor(communityPOICategory, index) {\r\n this.item = communityPOICategory;\r\n this.isSelected = false;\r\n this.index = index;\r\n }\r\n}\r\n","\r\nexport class CommunityPromotion {\r\n Category: Promotions;\r\n Type: string;\r\n Title: string;\r\n Description: string;\r\n Disclaimer: string;\r\n Rank: number;\r\n CallToActionText: string;\r\n DocumentFlag: boolean;\r\n URL: string;\r\n PopUpFlag: boolean;\r\n StartDate: string;\r\n EndDate: string;\r\n CallToActionImage: string;\r\n DisplayImage: string;\r\n }\r\n\r\nexport enum Promotions {\r\n Offers = 'Offer',\r\n Events = 'Event'\r\n}\r\n","export class Image {\r\n Name: string;\r\n Path: string;\r\n AltText: string;\r\n TargetUrl: string;\r\n ImageRank: number;\r\n ModalRank: number;\r\n CategoryRank: number;\r\n EmbraceYourSpaceRank: number;\r\n Caption: string;\r\n ImageType: string;\r\n ImageTypeRank: number;\r\n RefID: number;\r\n KioskRank: number;\r\n KioskSleepStateRank: number;\r\n Description: string;\r\n}\r\n","export class PointOfInterestDetails {\r\n Name: string;\r\n Address: string;\r\n Rating: number;\r\n RatingsCount: number;\r\n Price: string;\r\n Description: string;\r\n SubDescription: string;\r\n TypeDescriptor: string;\r\n}\r\n","export class PointOfInterest {\r\n public POILocationID: string;\r\n public CommunityID: number;\r\n public PointOfInterestID: number;\r\n public GooglePlaceID: string;\r\n public POIName: string;\r\n public POIAddress: string;\r\n public POIPhone: string;\r\n public POILatitude: number;\r\n public POILongitude: number;\r\n public CreatedDate: Date;\r\n public Distance: number;\r\n\r\n constructor(poiLocationID: string, poiID: number) {\r\n this.POILocationID = poiLocationID;\r\n this.PointOfInterestID = poiID;\r\n }\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { ArticleCardComponent } from '../community/editorials/article-card/article-card.component';\r\nimport { BoxCardComponent } from '../community/editorials/box-card/box-card.component';\r\nimport { CommunityHeroComponent } from '../community/products/community-hero/community-hero.component';\r\nimport { ProductOverviewComponent } from '../community/products/product-overview/product-overview.component';\r\nimport { PlanSummaryComponent } from '../community/products/plan-summary/plan-summary.component';\r\nimport { PlanGalleryComponent } from '../community/products/plan-gallery/plan-gallery.component';\r\nimport { PlanFeaturesComponent } from '../community/products/plan-features/plan-features.component';\r\nimport { QmiGalleryComponent } from '../community/products/qmi-gallery/qmi-gallery.component';\r\nimport { QmiSummaryComponent } from '../community/products/qmi-summary/qmi-summary.component';\r\nimport { CommunityLotMapComponent } from '../community/products/community-lot-map/community-lot-map.component';\r\nimport { CommunityDescriptionComponent } from '../community/products/community-description/community-description.component';\r\nimport { CommunityTourComponent } from '../community/products/community-tour/community-tour.component';\r\nimport { CommunityGalleryComponent } from '../community/products/community-gallery/community-gallery.component';\r\nimport { CtaComponent } from '../community/editorials/cta/cta.component';\r\nimport { ImageComponent } from '../community/editorials/image/image.component';\r\nimport { PageHeaderComponent } from '../community/editorials/page-header/page-header.component';\r\nimport { PlanCtasComponent } from '../community/products/plan-ctas/plan-ctas.component';\r\nimport { PlanFloorPlansComponent } from '../community/products/plan-floor-plans/plan-floor-plans.component';\r\nimport { CommunityPoiCategoriesComponent } from '../community/products/community-poi-categories/community-poi-categories.component';\r\nimport { PlanToursComponent } from '../community/products/plan-tours/plan-tours.component';\r\nimport { QmiLocationComponent } from '../community/products/qmi-location/qmi-location.component';\r\nimport { QmiDescriptionComponent } from '../community/products/qmi-description/qmi-description.component';\r\nimport { QmiTourComponent } from '../community/products/qmi-tour/qmi-tour.component';\r\nimport { VRTourPlanComponent } from '../community/products/vr-tour-plan/vr-tour-plan.component';\r\nimport { NearbyCommunitiesComponent } from '../community/products/nearby-communities/nearby-communities.component';\r\nimport { InlineVideoComponent } from '../community/editorials/inline-video/inline-video.component';\r\nimport { TileCardComponent } from '../community/editorials/tile-card/tile-card.component';\r\nimport { ContentCardComponent } from '../community/editorials/content-card/content-card.component';\r\nimport { CommunitySummaryComponent } from '../community/products/community-summary/community-summary.component';\r\nimport { SpecialOffersCardComponent } from '../community/editorials/special-offers-card/special-offers-card.component';\r\nimport { ColumnCardComponent } from '../community/editorials/column-card/column-card.component';\r\nimport { GuestRegistrationModalComponent } from '../community/shared/modals/guest-registration-modal/guest-registration-modal.component';\r\nimport { CommunityAmenityDetailComponent } from '../community/products/community-amenity-details/community-amenity-details.component';\r\n\r\n// Key Value pair that stores Module Type strings and their associated Component Types\r\n// Add any new Sitecore Module Templates to this list if they are intended to be used as dynamically rendered Kiosk Modules\r\n// The Key string must match the name of the concrete class generated by Glass Mapper\r\nexport const DynamicComponentTypes: Record> = {\r\n Article_Card: ArticleCardComponent,\r\n Box_Card: BoxCardComponent,\r\n Content_Card: ContentCardComponent,\r\n Special_Offers_Card: SpecialOffersCardComponent,\r\n Community_Hero: CommunityHeroComponent,\r\n Product_Overview: ProductOverviewComponent,\r\n Plan_Gallery: PlanGalleryComponent,\r\n Plan_Summary: PlanSummaryComponent,\r\n Plan_Features: PlanFeaturesComponent,\r\n Plan_CTAs: PlanCtasComponent,\r\n Plan_Floor_Plans: PlanFloorPlansComponent,\r\n QMI_Gallery: QmiGalleryComponent,\r\n QMI_Summary: QmiSummaryComponent,\r\n Community_Lot_Map: CommunityLotMapComponent,\r\n CTA: CtaComponent,\r\n Community_Description: CommunityDescriptionComponent,\r\n Community_Tour: CommunityTourComponent,\r\n Community_Gallery: CommunityGalleryComponent,\r\n Page_Header: PageHeaderComponent,\r\n Community_Poi_Categories: CommunityPoiCategoriesComponent,\r\n Plan_Tours: PlanToursComponent,\r\n QMI_Location: QmiLocationComponent,\r\n QMI_Description: QmiDescriptionComponent,\r\n QMI_Tour: QmiTourComponent,\r\n VR_Tour_Plan: VRTourPlanComponent,\r\n Nearby_Communities: NearbyCommunitiesComponent,\r\n Inline_Video: InlineVideoComponent,\r\n Tile_Card: TileCardComponent,\r\n Community_Summary: CommunitySummaryComponent,\r\n Column_Card: ColumnCardComponent,\r\n Single_Image: ImageComponent,\r\n Guest_Registration_Modal: GuestRegistrationModalComponent,\r\n Amenity_Detail: CommunityAmenityDetailComponent\r\n};\r\n\r\nexport const DynamicComponents = [\r\n ArticleCardComponent,\r\n BoxCardComponent,\r\n ContentCardComponent,\r\n SpecialOffersCardComponent,\r\n CommunityHeroComponent,\r\n ProductOverviewComponent,\r\n PlanGalleryComponent,\r\n PlanSummaryComponent,\r\n PlanFeaturesComponent,\r\n PlanCtasComponent,\r\n PlanFloorPlansComponent,\r\n QmiGalleryComponent,\r\n QmiSummaryComponent,\r\n CommunityLotMapComponent,\r\n CtaComponent,\r\n CommunityDescriptionComponent,\r\n CommunityTourComponent,\r\n CommunityGalleryComponent,\r\n PageHeaderComponent,\r\n CommunityPoiCategoriesComponent,\r\n PlanToursComponent,\r\n QmiLocationComponent,\r\n QmiDescriptionComponent,\r\n QmiTourComponent,\r\n VRTourPlanComponent,\r\n NearbyCommunitiesComponent,\r\n InlineVideoComponent,\r\n TileCardComponent,\r\n CommunitySummaryComponent,\r\n ColumnCardComponent,\r\n ImageComponent,\r\n GuestRegistrationModalComponent,\r\n CommunityAmenityDetailComponent\r\n];\r\n","export const ModalClasses = {\r\n Full: 'modal--full',\r\n Left: 'modal--left',\r\n Right: 'modal--right',\r\n Summary: 'modal--summary',\r\n WhiteBackground: 'modal--white-background',\r\n BackDrop: 'modal--backdrop__nav-bar'\r\n};\r\n","export abstract class Environment {\r\n public envName: string;\r\n public production: boolean;\r\n\r\n public apiUrl: string;\r\n public previewApiUrl: string;\r\n public productApiUrl: string;\r\n\r\n public previewCloudinaryVideoRemoteFolder: string;\r\n public cloudinaryVideoRemoteFolder: string;\r\n\r\n public googleApiKey: string;\r\n public pulteAVID: string;\r\n public cloudinaryID: string;\r\n\r\n public applicationInsights: {\r\n instrumentationKey: string;\r\n };\r\n public adobeLaunchScriptUrl: string;\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","/**\r\n * Add brand specific link and meta tags based on the search param 'brand' or hostname in the url\r\n * Add brand specific class to body tag\r\n * Return brand name\r\n */\r\n\r\nimport { BrandName } from 'src/app/models/enums/brand-enum';\r\n\r\n// default brand name to pulte\r\nlet brandName = 'pulte';\r\n\r\nexport function setBrandSpecificConfiguration() {\r\n // get the brand from the hostname and the search param 'brand'\r\n const hostname = window.location.hostname.toLowerCase();\r\n const url = new URL(window.location.href);\r\n const searchParamBrandName = url.searchParams.get('brand');\r\n\r\n // set brand name based on search params if they exist. otherwise, use hostname\r\n if (searchParamBrandName) {\r\n brandName = getBrandNameFromUrl(searchParamBrandName);\r\n } else {\r\n brandName = getBrandNameFromUrl(hostname);\r\n }\r\n\r\n // add the brand-{brand} class to the body element where {brand} is the brand name\r\n document.getElementsByTagName('body')[0].className += ' brand-' + brandName;\r\n\r\n // array of link tags\r\n const linkTags = [\r\n {\r\n rel: 'apple-touch-icon',\r\n sizes: '180x180',\r\n href: '/assets/' + brandName + '/favicon/apple-touch-icon-180x180.png'\r\n },\r\n {\r\n rel: 'apple-touch-icon',\r\n sizes: '144x144',\r\n href: '/assets/' + brandName + '/favicon/apple-touch-icon-144x144.png'\r\n },\r\n {\r\n rel: 'icon',\r\n type: 'image/png',\r\n sizes: '32x32',\r\n href: '/assets/' + brandName + '/favicon/favicon-32x32.png'\r\n },\r\n {\r\n rel: 'shortcut icon',\r\n href: '/assets/' + brandName + '/favicon/favicon.ico'\r\n },\r\n {\r\n rel: 'stylesheet'\r\n }\r\n ];\r\n\r\n // array of meta tags\r\n const metaTags = [\r\n {\r\n name: 'msapplication-TileImage',\r\n content: '/assets/' + brandName + '/favicon/mstile-144x144.png'\r\n }\r\n ];\r\n\r\n const head = document.getElementsByTagName('head')[0];\r\n\r\n // add link tags to head\r\n for (const linkTag of linkTags) {\r\n const link = document.createElement('link');\r\n\r\n if (linkTag.rel) {\r\n link.rel = linkTag.rel;\r\n }\r\n if (linkTag.type) {\r\n link.type = linkTag.type;\r\n }\r\n if (linkTag.sizes) {\r\n link.sizes.value = linkTag.sizes;\r\n }\r\n if (linkTag.href) {\r\n link.href = linkTag.href;\r\n }\r\n\r\n head.appendChild(link);\r\n }\r\n\r\n // add meta tags to head\r\n for (const metaTag of metaTags) {\r\n const meta = document.createElement('meta');\r\n\r\n if (metaTag.name) {\r\n meta.name = metaTag.name;\r\n }\r\n if (metaTag.content) {\r\n meta.content = metaTag.content;\r\n }\r\n\r\n head.appendChild(meta);\r\n }\r\n}\r\n\r\nexport function getBrandName(): string {\r\n return brandName;\r\n}\r\n\r\nexport function getBrandNameForApi(): string {\r\n let brandNameForApi = brandName;\r\n\r\n if (brandName === 'jw') {\r\n brandNameForApi = 'jwhomes';\r\n } else if (brandName === 'americanwest') {\r\n brandNameForApi = 'americanwesthomes';\r\n }\r\n\r\n return brandNameForApi;\r\n}\r\n\r\nexport function setBrandFieldFromSitecore(targetBrand, pulteField?, centexField?, delWebbField?, divostaField?, jwField?, amWestField?) {\r\n let brandField;\r\n if (targetBrand) {\r\n switch (targetBrand) {\r\n case BrandName.Pulte:\r\n brandField = pulteField;\r\n break;\r\n case BrandName.DelWebb:\r\n brandField = delWebbField;\r\n break;\r\n case BrandName.Centex:\r\n brandField = centexField;\r\n break;\r\n case BrandName.DiVosta:\r\n brandField = divostaField;\r\n break;\r\n case BrandName.JohnWieland:\r\n brandField = jwField;\r\n break;\r\n case BrandName.AmericanWest:\r\n brandField = amWestField;\r\n break;\r\n }\r\n }\r\n return brandField;\r\n}\r\n\r\nfunction getBrandNameFromUrl(value: string): string {\r\n let brand: string;\r\n\r\n if (value === 'pulte' || value.includes('pulte')) {\r\n brand = 'pulte';\r\n } else if (value === 'delwebb' || value.includes('delwebb')) {\r\n brand = 'delwebb';\r\n } else if (value === 'centex' || value.includes('centex')) {\r\n brand = 'centex';\r\n } else if (value === 'divosta' || value.includes('divosta')) {\r\n brand = 'divosta';\r\n } else if (value === 'jw' || value.includes('jwhomes')) {\r\n brand = 'jw';\r\n } else if (value === 'americanwest' || value.includes('americanwesthomes')) {\r\n brand = 'americanwest';\r\n } else {\r\n brand = 'pulte';\r\n }\r\n\r\n return brand;\r\n}\r\n","import { Community } from 'src/app/models/product/community.model';\r\n\r\nexport function getDistance(origLat: number, origLng: number, lat: number, lng: number) {\r\n if (origLat && origLng && lat && lng) {\r\n const origin = new google.maps.LatLng(origLat, origLng);\r\n const destination = new google.maps.LatLng(lat, lng);\r\n return google.maps.geometry.spherical.computeDistanceBetween(origin, destination);\r\n }\r\n}\r\n\r\nexport function getDistanceInMiles(origLat: number, origLng: number, lat: number, lng: number) {\r\n if (origLat && origLng && lat && lng) {\r\n return getDistance(origLat, origLng, lat, lng) / 1609; // # of Miles = (Meters / 1609)\r\n }\r\n}\r\n\r\nexport function getDistanceFromCommunity(community: Community, lat: number, lng: number) {\r\n return parseFloat((getDistanceInMiles(community.Latitude, community.Longitude,\r\n lat, lng).toFixed(1)));\r\n}\r\n","import { HttpHeaders } from '@angular/common/http';\r\n\r\n// Creates component based on type\r\nexport function getHttpOptions() {\r\n const options = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n return options;\r\n}\r\n","import { ImageType } from 'src/app/models/enums/image-enum';\r\nimport { Image } from 'src/app/models/product/image.model';\r\n\r\nexport function checkForImages(imageArray: Image[]): boolean {\r\n return imageArray && imageArray.length ? true : false;\r\n}\r\n\r\nexport function checkForSingleImage(imageArray): boolean {\r\n return imageArray && imageArray.length === 1 && imageArray[0] && imageArray[0].Path ? true : false;\r\n}\r\n\r\nexport function sortImagesByImageRank(imageArray: Image[]): Image[] {\r\n if (imageArray) {\r\n // If rank is 0 it is set to Do Not Show in CMS\r\n return imageArray.filter(x => x.ImageRank > 0).sort((a, b) => a.ImageRank - b.ImageRank);\r\n }\r\n}\r\n\r\nexport function sortImagesByKioskRank(imageArray: Image[]): Image[] {\r\n let sortedImages: Image[] = [];\r\n\r\n if (imageArray) {\r\n // If rank is 0 it is set to Do Not Show in CMS\r\n const kioskImages = imageArray.filter(x => x.KioskRank > 0).sort((a, b) => a.KioskRank - b.KioskRank);\r\n\r\n if (kioskImages && kioskImages.length) {\r\n sortedImages = kioskImages;\r\n } else {\r\n // use Community Gallery images if Kiosk Rank isn't set\r\n imageArray = imageArray.filter(image => image.ImageType === ImageType.CommunityOverview);\r\n sortedImages = sortImagesByImageRank(imageArray);\r\n }\r\n }\r\n\r\n return sortedImages;\r\n}\r\n\r\nexport function isImageUrl(url: string) {\r\n return (url.match(/\\.(jpeg|jpg|gif|png|ashx)$/) != null);\r\n}\r\n","export function setSuggestionText(suggestion1: string, suggestion2: string, suggestion3: string): string[] {\r\n let suggestions: string [] = [];\r\n suggestions.push(suggestion1 || '');\r\n suggestions.push(suggestion2 || '');\r\n suggestions.push(suggestion3 || '');\r\n suggestions = suggestions.filter(s => s && s.trim().length).sort();\r\n return suggestions;\r\n}\r\n","// Used for getting assets/resources/variables that we save per brand,\r\n// but if we need the values/data in our component code, not just styles.\r\nimport { getBrandName } from 'src/helper-functions/brand-specific-configuration';\r\n\r\nexport function getLocalAssetUrl(path: string): string {\r\n return `assets/${getBrandName()}/` + path;\r\n}\r\n\r\nexport function getLocalStyleVar(key: string): any {\r\n return getComputedStyle(document.body).getPropertyValue(key);\r\n}\r\n\r\nexport function getLocalStyleVarUrl(key: string): any {\r\n const value = getLocalStyleVar(key);\r\n // regex to strip value of 'url()' to return url paths from SASS variables,\r\n // even ignorant of enclosing folders we may create in the future for assets\r\n const reg = /(?:\\(['\"]?)(.*?)(?:['\"]?\\))/;\r\n return reg.exec(value)[1];\r\n}\r\n\r\nexport function convertSvgToUrl(svgHtmlString: string): string {\r\n return 'data:image/svg+xml;base64,' + window.btoa(svgHtmlString);\r\n}\r\n","// this file contains functions used on plan components\r\n\r\nimport { Plan } from 'src/app/models/product/plan.model';\r\n\r\nexport function createStatusOverlayText(plan: Plan, data: any) {\r\n if (plan && data) {\r\n const overlayLabels = [];\r\n if (plan.InventoryCount > 0 && data.QMI_Availability) {\r\n overlayLabels.push(data.QMI_Availability);\r\n }\r\n if (plan.ModelExists && data.Model_Open) {\r\n overlayLabels.push(data.Model_Open);\r\n }\r\n if (plan.IsNewPlan && data.New_Plan && overlayLabels.length < 2) {\r\n overlayLabels.push(data.New_Plan);\r\n }\r\n if (plan.IsFutureRelease && data.Future_Release && overlayLabels.length < 2) {\r\n overlayLabels.push(data.Future_Release);\r\n }\r\n if (plan.QuickMoveInOnlyFlag && data.QMI_Only && overlayLabels.length < 2) {\r\n overlayLabels.push(data.QMI_Only);\r\n }\r\n if (plan.NewModelFlag && data.New_Model && overlayLabels.length < 2) {\r\n overlayLabels.push(data.New_Model);\r\n }\r\n if (plan.IsSoldOut && data.Sold_Out && overlayLabels.length < 2) {\r\n overlayLabels.push(data.Sold_Out);\r\n }\r\n if (plan.LastHomeDesignFlag && data.Last_Home_Design && overlayLabels.length < 2) {\r\n overlayLabels.push(data.Last_Home_Design);\r\n }\r\n if (plan.LastChanceFlag && data.Last_Chance && overlayLabels.length < 2) {\r\n overlayLabels.push(data.Last_Chance);\r\n }\r\n if (plan.ModelForSaleFlag && data.Model_For_Sale && overlayLabels.length < 2) {\r\n overlayLabels.push(data.Model_For_Sale);\r\n }\r\n if (plan.AlmostSoldOutFlag && data.Almost_Sold_Out && overlayLabels.length < 2) {\r\n overlayLabels.push(data.Almost_Sold_Out);\r\n }\r\n return overlayLabels.length > 0 ? overlayLabels : undefined;\r\n }\r\n return undefined;\r\n}\r\n","import { Router } from '@angular/router';\r\n\r\n// check hostname for the preview prefix and return true if it exists\r\nexport function hostnameContainsPreviewPrefix(): boolean {\r\n let hostnameContainsPreview: boolean = false;\r\n const hostname: string = window.location.hostname.toLowerCase();\r\n\r\n if (hostname.includes('preview.')) {\r\n hostnameContainsPreview = true;\r\n }\r\n\r\n return hostnameContainsPreview;\r\n}\r\n\r\n// set a trimmed url for components that can't retrieve the current URL\r\nexport function setTrimUrl(router: Router): string {\r\n return `${router.url.split('/page/')[0]}/page/`;\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { setBrandSpecificConfiguration } from './helper-functions/brand-specific-configuration';\r\n\r\nsetBrandSpecificConfiguration();\r\n\r\nfetch('./assets/environment/settings.json').then(resp => resp.json())\r\n .then(settings => {\r\n window[\"settings\"] = settings;\r\n\r\n if (window[\"settings\"].production){\r\n enableProdMode();\r\n }\r\n\r\n platformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n});\r\n"],"names":["fadeInOnEnterAnimation","i0","CtaComponent","constructor","communityService","ngOnInit","community$","community","planCountClass","setPlanCountClass","data","CTA_Style","buttonType","selectors","inputs","decls","vars","consts","template","duration","delay","BaseComponent","CommunityAmenityDetailComponent","communityAmenity$","amenities","features","_r1","CommunityDescriptionComponent","CommunityGalleryComponent","fadeInUpOnEnterAnimation","ctx_r4","undefined","CommunitySummaryComponent","modalService","location","backButton","hasOpenModals","dismissAll","back","map","takeUntil","PlanQmiListingModalComponent","ModalClasses","PlanCtasComponent","route","params","pipe","routeParam","id","unsubscribe$","subscribe","planId","plan$","getPlanById","qmiCountClass","setQmiCountClass","QMI_CTA_Style","openQmiListModal","plan","modalRef","open","backdrop","windowClass","Full","componentInstance","QmiDescriptionComponent","inventoryHomeId","qmi$","getQmiById","GalleryModalModel","ctx_r0","QmiGalleryComponent","galleryModalModel","ModalTitle","Modal_Title","ExteriorLabel","Exterior_Label","InteriorLabel","Interior_Label","IsFilterGallery","QmiLocationComponent","qmiId","qmi_r1","ctx_r12","_r6","QmiSummaryComponent","lmpService","cmsPIOnlyFlag","overrideBrandPIOnlyFlag","sitecorePIOnlyFlag","OverrideBrandDisplayPIOnlyFlag","DisplayPIOnlyFlag","LmpConfiguration","lmp","Display_PI_Only","lmpConfiguration","qmi","DisplayPIOnly","GuestRegistrationModel","combineLatest","setSuggestionText","GuestRegistrationResponseModel","fadeInRightOnEnterAnimation","fadeOutOnLeaveAnimation","GuestRegistrationContactModel","AdobeLaunchFormName","AdobeLaunchFormType","ctx_r10","_r7","_r5","_r3","ctx_r35","contact_r27","ctx_r15","ctx_r45","ctx_r50","ctx_r13","GuestRegistrationModalComponent","activeModal","guestRegistrationService","cdr","adobeLaunchService","atMaxContactsLimit","guestRegistrationModel","Contacts","length","maxAmountOfContacts","observables","CommunityId","Id","emailDomains","Domain_1","Domain_2","Domain_3","addContactToForm","ngAfterViewInit","detectChanges","push","removeContactFromForm","index","splice","submitGuestRegistrationForm","formSubmitted","guestRegistrationForm","valid","loading","resp","registerContact","registrationResponse","IsSuccessful","pushFormSubmittedEvent","GuestRegistration","Modal","viewQuery","ctx_r41","_r9","ctx_r44","ctx_r48","ctx_r53","RequestBrochureModalComponent","requestBrochureService","planBrochureService","plans","series","qmis","RequestBrochureItem","requestBrochureItem","requestBrochureModal","PlanRankType","toLowerCase","includes","plansWithoutSeries","filter","SeriesName","qmisWithoutSeries","Plan","currentPlanData","selectedPlans","currentQmiData","selectedQmis","ngOnDestroy","formSubmittedResponse","focusEmailInput","planChecked","event","target","checked","p","qmiChecked","q","InventoryHomeID","submitForm","formIsValid","uniqueSelectedPlans","Set","uniqueSelectedQmis","requestPlanBrochure","emailAddress","isSuccessful","RequestBrochure","defocusEmailInput","brochureEmailInput","nativeElement","focus","blur","isValid","requestBrochureForm","ctx","Subject","take","AdobeLaunchCommunity","AdobeLaunchListing","AdobeLaunchPage","AdobeLaunchPageViewLoadedEvent","AdobeLaunchPlanListingDisplayedEvent","AdobeLaunchPlanListingClickedEvent","AdobeLaunchPlanListingViewedEvent","AdobeLaunchFormSubmittedEvent","AdobeLaunchService","scriptInjectorService","appInsightsService","rendererFactory","settingsService","renderer","createRenderer","initAdobeLaunchDataLayer","window","appEventData","injectAdobeLaunchScript","adobeLaunchScriptUrl","load","_satellite","pageBottom","e","logException","Error","triggerView","viewName","adobe","startsWith","substr","prehideBody","g","b","d","f","a","c","createElement","innerHTML","appendChild","getElementsByTagName","setTimeout","getElementById","removeChild","document","updateCurrentCommunity","currentCommunity","updateCurrentFilterData","filterData","currentFilterData","pushToDataLayer","pushPageViewEvent","pageID","pageName","pageRoute","pageURL","origin","adobeLaunchPage","pageViewEvent","pushPlanListingViewedEvent","homeId","planListingViewedEvent","Price","toString","pushQMIListingDisplayedEvent","qmiListings","qmiListing","planListingDisplayedEvent","pushPlanListingDisplayedEvent","planListings","planListing","pushQMIListingClickedEvent","pushPlanListingClickedEvent","startingPrice","qmiID","planListingClickedEvent","formName","formType","formSubmittedEvent","setAnalyticsCtaAttributeOnElem","elem","attrValue","setAttribute","setAnalyticsZoneAttributeOnElem","factory","providedIn","of","catchError","timeout","getHttpOptions","GuestRegistrationService","http","apiUrl","model","IsKioskRegistration","options","post","JSON","stringify","err","message","toPromise","RequestBrochureParams","RequestBrochureResponse","PlanBrochureService","requestBrochureParams","EmailAddress","PlanIds","QmiIds","get","DOCUMENT","ScriptInjectorService","zone","src","scriptElement","async","promise","Promise","resolve","reject","addEventListener","runOutsideAngular","head"],"sourceRoot":"webpack:///"}