@maplander/components 0.21.37 → 0.21.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"maplander-components.js","sources":["ng://@maplander/components/lib/pipes/address/address-format.pipe.ts","ng://@maplander/components/lib/pipes/address/address-format.module.ts","ng://@maplander/components/lib/utils/classes/filters-wrapper.ts","ng://@maplander/components/lib/utils/classes/mDate.ts","ng://@maplander/components/lib/pipes/format-date/format-date.pipe.ts","ng://@maplander/components/lib/pipes/format-date/format-date.module.ts","ng://@maplander/components/lib/utils/enums/amenity-name.ts","ng://@maplander/components/lib/constantsComponents.ts","ng://@maplander/components/lib/utils.ts","ng://@maplander/components/lib/pipes/marker-price/marker-price.pipe.ts","ng://@maplander/components/lib/pipes/marker-price/marker-price.module.ts","ng://@maplander/components/lib/pipes/offering-type/offering-type.pipe.ts","ng://@maplander/components/lib/pipes/offering-type/offering-type.module.ts","ng://@maplander/components/lib/pipes/property-type/property-type.pipe.ts","ng://@maplander/components/lib/pipes/property-type/property-type.module.ts","ng://@maplander/components/lib/directives/format-price/format-price.directive.ts","ng://@maplander/components/lib/directives/format-price/format-price.module.ts","ng://@maplander/components/lib/directives/image-error/image-error.directive.ts","ng://@maplander/components/lib/directives/image-error/image-error.module.ts","ng://@maplander/components/lib/components/document-visor/document-visor.component.ts","ng://@maplander/components/lib/components/document-visor/document-visor.service.ts","ng://@maplander/components/lib/components/document-visor/document-visor.module.ts","ng://@maplander/components/lib/utils/enums/filter-chip-type.ts","ng://@maplander/components/lib/utils/enums/filters-change-type.ts","ng://@maplander/components/lib/components/filters/token.ts","ng://@maplander/components/lib/components/filters/filters.service.ts","ng://@maplander/components/lib/components/fab-filters/fab-filters.component.ts","ng://@maplander/components/lib/components/fab-filters/fab-filters.module.ts","ng://@maplander/components/lib/services/currency-converter/currency-converter.service.ts","ng://@maplander/components/lib/utils/classes/mUtils.ts","ng://@maplander/components/lib/components/property/validators/remove-error.ts","ng://@maplander/components/lib/components/property/validators/currency-filter-validator.ts","ng://@maplander/components/lib/components/filters/filters.component.ts","ng://@maplander/components/lib/services/currency-converter/currency-converter.module.ts","ng://@maplander/components/lib/components/filters/filters.module.ts","ng://@maplander/components/lib/components/panorama-visor/panorama-visor.component.ts","ng://@maplander/components/lib/components/panorama-visor/panorama-visor.module.ts","ng://@maplander/components/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.ts","ng://@maplander/components/lib/components/property/components/multimedia-uploader/multimedia-uploader.service.ts","ng://@maplander/components/lib/components/property/components/announce-confirm/announce-confirm.component.ts","ng://@maplander/components/lib/components/property/components/announce-confirm/announce-confirm.service.ts","ng://@maplander/components/lib/components/property/components/gallery/gallery.component.ts","ng://@maplander/components/lib/components/property/components/gallery/gallery.service.ts","ng://@maplander/components/lib/components/property/token.ts","ng://@maplander/components/lib/components/property/components/stats/stats.component.ts","ng://@maplander/components/lib/components/property/components/stats/stats.service.ts","ng://@maplander/components/lib/components/property/components/property/property.component.ts","ng://@maplander/components/lib/components/property/validators/property-editor-validators.ts","ng://@maplander/components/lib/components/property/components/editor/editor.component.ts","ng://@maplander/components/lib/components/property/validators/phone-fields-validator.ts","ng://@maplander/components/lib/components/property/components/owner-info/owner-info.component.ts","ng://@maplander/components/lib/components/property/components/documents/documents.component.ts","ng://@maplander/components/lib/components/property/components/details/details.component.ts","ng://@maplander/components/lib/components/property/components/slideshow/slide-show.component.ts","ng://@maplander/components/lib/components/property/components/editor/components/custom-datepicker/date-adapter.ts","ng://@maplander/components/lib/components/property/components/editor/components/custom-datepicker/custom-datepicker-header/custom-datepicker-header.component.ts","ng://@maplander/components/lib/components/property/components/editor/components/custom-datepicker/custom-datepicker/custom-datepicker.component.ts","ng://@maplander/components/lib/components/property/components/editor/components/custom-datepicker/custom-datepicker.module.ts","ng://@maplander/components/lib/components/property/components/custom-drag-and-drop/custom-drag-and-drop.component.ts","ng://@maplander/components/lib/components/property/property.module.ts","ng://@maplander/components/lib/components/property-card/token.ts","ng://@maplander/components/lib/components/property-card/property-card.component.ts","ng://@maplander/components/lib/components/property-card/property-card.module.ts","ng://@maplander/components/lib/services/markers/markers.service.ts","ng://@maplander/components/lib/services/markers/markers.module.ts"],"sourcesContent":["import {Pipe, PipeTransform} from '@angular/core';\r\nimport {Address} from '@maplander/types';\r\n\r\n@Pipe({\r\n name: 'addressFormat'\r\n})\r\nexport class AddressFormatPipe implements PipeTransform {\r\n\r\n transform(value: Address, long?: boolean, country?: string): string {\r\n let result = '';\r\n const language = country || 'mx';\r\n result += value.street;\r\n switch (language) {\r\n case 'mx':\r\n if (long) {\r\n result += `, ${value.colony || ''}`;\r\n result += `, ${value.postalCode || ''}`;\r\n result += `, ${value.city || ''}`;\r\n result += `, ${value.state || ''}`;\r\n result += `, ${value.country || ''}`;\r\n } else {\r\n result += `, ${value.colony || ''}`;\r\n }\r\n break;\r\n case 'usa':\r\n if (long) {\r\n result += `, ${value.city || ''}`;\r\n result += `, ${value.state || ''}`;\r\n result += `, ${value.postalCode || ''}`;\r\n result += `, ${value.country || ''}`;\r\n } else {\r\n result += `, ${value.city || ''}`;\r\n result += `, ${value.state || ''}`;\r\n }\r\n break;\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {AddressFormatPipe} from './address-format.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n AddressFormatPipe\r\n ],\r\n exports: [\r\n AddressFormatPipe\r\n ]\r\n})\r\nexport class AddressFormatModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: AddressFormatModule,\r\n providers: [\r\n AddressFormatPipe\r\n ]\r\n };\r\n }\r\n}\r\n","import {FiltersComponent} from '../../components/filters/filters.component';\r\n\r\nexport class FiltersWrapper {\r\n private _component: FiltersComponent;\r\n\r\n constructor(component: FiltersComponent) {\r\n this._component = component;\r\n }\r\n\r\n open(): void {\r\n this._component.open();\r\n }\r\n\r\n close(): void {\r\n this._component.close();\r\n }\r\n\r\n}\r\n","/*\r\n * Copyright (C) MapLander S de R.L de C.V - All Rights Reserved\r\n * Unauthorized copying of this file, via any medium is strictly prohibited\r\n * Proprietary and confidential\r\n */\r\n\r\n/**\r\n *\r\n * @author Alejandro Lopez Arreola\r\n * Custom class for dates compatible with Google Data Store\r\n *\r\n * */\r\n\r\nexport class MDate {\r\n\r\n private _timestamp: string;\r\n\r\n /**\r\n * @param date Timestamp with format YYYYMMDD\r\n * @example 20190812\r\n * */\r\n constructor(date: number) {\r\n this._timestamp = date.toString();\r\n }\r\n\r\n /**\r\n * @param date Date object\r\n * @param time Returns timestamp as time, default is date\r\n * @example Date: Format YYYYMMDD = 20190812, Time: Format HHMMSS = 171401\r\n * @return number\r\n * */\r\n public static getTimestamp(date: Date, time?: boolean): number {\r\n let timestamp = '';\r\n if (time) {\r\n timestamp += `${date.getHours()}`;\r\n timestamp += date.getMinutes() < 10 ? `0${date.getMinutes()}` : `${date.getMinutes()}`;\r\n timestamp += date.getSeconds() < 10 ? `0${date.getSeconds()}` : `${date.getSeconds()}`;\r\n return Number(timestamp);\r\n } else {\r\n timestamp += `${date.getFullYear().toString()}`;\r\n timestamp += (date.getMonth() + 1) < 10 ? `0${(date.getMonth() + 1)}` : `${date.getMonth() + 1}`;\r\n timestamp += date.getDate() < 10 ? `0${date.getDate()}` : `${date.getDate().toString()}`;\r\n return Number(timestamp);\r\n }\r\n }\r\n\r\n private static getHours(time: string): string {\r\n return time.slice(0, 2);\r\n }\r\n\r\n private static getMinutes(time: string): string {\r\n return time.slice(2, 4);\r\n }\r\n\r\n private static getSeconds(time: string): string {\r\n return time.slice(4, time.length);\r\n }\r\n\r\n private static getWeekDayName(day: number, toLowerCase?: boolean): string {\r\n switch (day) {\r\n case 0:\r\n return toLowerCase ? 'lunes' : 'Lunes';\r\n case 1:\r\n return toLowerCase ? 'martes' : 'Martes';\r\n case 2:\r\n return toLowerCase ? 'miercoles' : 'Miercoles';\r\n case 3:\r\n return toLowerCase ? 'jueves' : 'Jueves';\r\n case 4:\r\n return toLowerCase ? 'viernes' : 'Viernes';\r\n case 5:\r\n return toLowerCase ? 'sabado' : 'Sabado';\r\n case 6:\r\n return toLowerCase ? 'domingo' : 'Domingo';\r\n }\r\n }\r\n\r\n private static getMonthName(month: string, toLowerCase?: boolean): string {\r\n switch (month) {\r\n case '01':\r\n return toLowerCase ? 'ene.' : 'Ene.';\r\n case '02':\r\n return toLowerCase ? 'feb.' : 'Feb.';\r\n case '03':\r\n return toLowerCase ? 'mar.' : 'Mar.';\r\n case '04':\r\n return toLowerCase ? 'abr.' : 'Abr.';\r\n case '05':\r\n return toLowerCase ? 'may.' : 'May.';\r\n case '06':\r\n return toLowerCase ? 'jun.' : 'Jun.';\r\n case '07':\r\n return toLowerCase ? 'jul.' : 'Jul.';\r\n case '08':\r\n return toLowerCase ? 'ago.' : 'Ago.';\r\n case '09':\r\n return toLowerCase ? 'sep.' : 'Sep.';\r\n case '10':\r\n return toLowerCase ? 'oct.' : 'Oct.';\r\n case '11':\r\n return toLowerCase ? 'nov.' : 'Nov.';\r\n case '12':\r\n return toLowerCase ? 'dic.' : 'Dic.';\r\n }\r\n }\r\n\r\n /**\r\n * @param time Timestamp with format HHMMSS\r\n * @example 171401\r\n * @return Date\r\n * Converting timestamp with format YYYYMMDD,\r\n * if you not assign the time param, the hours, minutes and seconds is a zero\r\n * */\r\n public toDate(time?: number): Date {\r\n if (time) {\r\n const cDate = `${this.getYear()}-${this.getMoth()}-${this.getDay()}`;\r\n const cTime = `${MDate.getHours(time.toString())}:${MDate.getMinutes(time.toString())}:${MDate.getSeconds(time.toString())}`;\r\n const fullCDate = `${cDate}T${cTime}Z`;\r\n return new Date(fullCDate);\r\n } else {\r\n return new Date(Number(this.getYear()), Number(this.getMoth()) - 1, Number(this.getDay()));\r\n }\r\n }\r\n\r\n /**\r\n * @param format Format date | 'dd/MM/yyyy' | 'dd MMMMM yyyy' | 'EEEEE HH:mm' | 'dd MMMMM HH:mm' |'dd MMMMM yyyy HH:mm'\r\n * @param time Timestamp as time with format HHMMSS\r\n * @param toLowerCase Words on lower case\r\n * @param format12Hours 12 hours format on time\r\n * @return string\r\n * Return string with date format\r\n * */\r\n public getFormat(format: 'dd/MM/yyyy' | 'dd MMMMM yyyy' | 'dd MMMMM' | 'EEEEE HH:mm' | 'dd MMMMM HH:mm' | 'dd MMMMM yyyy HH:mm', {\r\n time = null,\r\n toLowerCase = false,\r\n format12Hours = false\r\n } = {}): string {\r\n let date = '', d: Date = null;\r\n switch (format) {\r\n case 'dd/MM/yyyy':\r\n date = `${this.getDay()}/${this.getMoth()}/${this.getYear()}`;\r\n break;\r\n case 'dd MMMMM yyyy':\r\n date = `${this.getDay()} ${MDate.getMonthName(this.getMoth(), toLowerCase)} ${this.getYear()}`;\r\n break;\r\n case 'dd MMMMM':\r\n date = `${this.getDay()} ${MDate.getMonthName(this.getMoth(), toLowerCase)}`;\r\n break;\r\n case 'EEEEE HH:mm':\r\n date += `${MDate.getWeekDayName(this.toDate(time).getDay() - 1, toLowerCase)}`;\r\n d = this.toDate(time);\r\n if (format12Hours) {\r\n date += d.getHours() === 13 ? ` a la ` : ` a las `;\r\n date += d.getHours() < 12 ? d.getHours() : d.getHours() - 12;\r\n date += ':' + d.getMinutes();\r\n date += d.getHours() < 12 ? ` AM` : ` PM`;\r\n } else {\r\n date += ' a las ';\r\n date += `${d.getHours()}:${d.getMinutes()}`;\r\n }\r\n break;\r\n case 'dd MMMMM HH:mm':\r\n date += `${this.getDay()}`;\r\n date += ` de ${MDate.getMonthName(this.getMoth(), toLowerCase)}`;\r\n d = this.toDate(time);\r\n if (format12Hours) {\r\n date += d.getHours() === 13 ? ` a la ` : ` a las `;\r\n date += d.getHours() < 12 ? d.getHours() : d.getHours() - 12;\r\n date += ':' + d.getMinutes();\r\n date += d.getHours() < 12 ? ` AM` : ` PM`;\r\n } else {\r\n date += ' a las ';\r\n date += `${d.getHours()}:${d.getMinutes()}`;\r\n }\r\n break;\r\n case 'dd MMMMM yyyy HH:mm':\r\n date += `${this.getDay()}`;\r\n date += ` de ${MDate.getMonthName(this.getMoth(), toLowerCase)} ${this.getYear()}`;\r\n d = this.toDate(time);\r\n if (format12Hours) {\r\n date += d.getHours() === 13 ? ` a la ` : ` a las `;\r\n date += d.getHours() < 12 ? d.getHours() : d.getHours() - 12;\r\n date += ':' + d.getMinutes();\r\n date += d.getHours() < 12 ? ` AM` : ` PM`;\r\n } else {\r\n date += ' a las ';\r\n date += `${d.getHours()}:${d.getMinutes()}`;\r\n }\r\n break;\r\n }\r\n return date;\r\n }\r\n\r\n private getYear(): string {\r\n return this._timestamp.slice(0, 4);\r\n }\r\n\r\n private getMoth(): string {\r\n return this._timestamp.slice(4, 6);\r\n }\r\n\r\n private getDay(): string {\r\n return this._timestamp.slice(6, this._timestamp.length);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {MDate} from '../../utils/classes';\r\n\r\n@Pipe({\r\n name: 'libFormatDate'\r\n})\r\nexport class FormatDatePipe implements PipeTransform {\r\n\r\n transform(value: any, mDate?: boolean, format?: 'dd/MM/yyyy' | 'dd MMMMM yyyy' | 'dd MMMMM' | 'EEEEE HH:mm' | 'dd MMMMM HH:mm' | 'dd MMMMM yyyy HH:mm'): any {\r\n if (mDate) {\r\n return new MDate(value).getFormat(format, {toLowerCase: true});\r\n } else {\r\n const d = new Date(Number(value));\r\n return `${d.getDate() < 10 ? '0' + d.getDate() : d.getDate()}/${d.getMonth() < 10 ? '0' + d.getMonth() : d.getMonth()}/${d.getFullYear()}`;\r\n }\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FormatDatePipe} from './format-date.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n FormatDatePipe\r\n ],\r\n exports: [\r\n FormatDatePipe\r\n ]\r\n})\r\nexport class FormatDateModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: FormatDateModule,\r\n providers: [\r\n FormatDatePipe\r\n ]\r\n };\r\n }\r\n}\r\n","export enum AmenityName {\r\n AdjacentCommerce = 'adjacentCommerce',\r\n AdjacentGym = 'gym',\r\n AdjacentPicnic = 'adjacentPicnic',\r\n AirConditioner = 'airConditioner',\r\n Balcony = 'balcony',\r\n CustomerParking = 'customerParking',\r\n DiningRoom = 'diningRoom',\r\n DoubleHeight = 'doubleHeight',\r\n DressingRooms = 'dressingRooms',\r\n FacingStreet = 'facingStreet',\r\n Finishings = 'finishings',\r\n Furnished = 'furnished',\r\n Garden = 'garden',\r\n Gym = 'gym',\r\n HighResistanceFloors = 'highResistanceFloors',\r\n HighSpeedInternet = 'highSpeedInternet',\r\n InCommercialArea = 'inCommercialArea',\r\n InIndustrialPark = 'inIndustrialPark',\r\n InShoppingCenter = 'inShoppingCenter',\r\n Jacuzzi = 'jacuzzi',\r\n KitchenServices = 'kitchenServices',\r\n MaidsBathroom = 'maidsBathroom',\r\n ManeuverArea = 'maneuverArea',\r\n MeetingRoom = 'meetingRoom',\r\n Mezzanine = 'mezzanine',\r\n MixedBuilding = 'mixedBuilding',\r\n NaturalLighting = 'naturalLighting',\r\n Offices = 'offices',\r\n OpenSpace = 'openSpace',\r\n Platforms = 'platforms',\r\n Playground = 'playground',\r\n Playroom = 'playroom',\r\n Pool = 'pool',\r\n RailSpur = 'railSpur',\r\n RailYard = 'maneuverArea',\r\n Reception = 'reception',\r\n SecurityGuard = 'securityGuard',\r\n Storage = 'storage',\r\n VisitorParking = 'visitorParking',\r\n NearPublicTransportation = 'nearPublicTransportation',\r\n NearShops = 'nearShops',\r\n OnBusyRoad = 'onBusyRoad',\r\n CountrySide = 'countrySide',\r\n Downtown = 'downtown',\r\n GoodReachableTraffic = 'goodReachableTraffic',\r\n NearFitnessCentre = 'nearFitnessCentre',\r\n NearHighway = 'nearHighway',\r\n NearHospital = 'nearHospital',\r\n NearPark = 'nearPark',\r\n NearSchools = 'nearSchools',\r\n OnQuietRoad = 'onQuietRoad',\r\n RoofGarden = 'roofGarden',\r\n PetFriendly = 'petFriendly',\r\n DifferentAbilities = 'differentAbilities'\r\n}\r\n","import {LandUseEnum, OfferingTypeEnum, PFileTypeEnum, PropertyTypeEnum, StatusTypeEnum} from '@maplander/types';\r\nimport {AmenitiesList} from './utils/models/amenities-list';\r\nimport {AmenityName} from './utils/enums/amenity-name';\r\nimport {PropertyTypeItem} from './utils/models/property-type-item';\r\nimport {PropertyStatusItem} from './utils/models/propertyStatusItem';\r\n\r\nexport class ConstantsComponents {\r\n static Amenities: AmenitiesList = {\r\n roofGarden: {\r\n checked: false,\r\n iconName: AmenityName.RoofGarden,\r\n value: AmenityName.RoofGarden,\r\n name: 'Terraza'\r\n },\r\n petFriendly: {\r\n checked: false,\r\n iconName: AmenityName.PetFriendly,\r\n value: AmenityName.PetFriendly,\r\n name: 'Acepta Mascotas'\r\n },\r\n differentAbilities: {\r\n checked: false,\r\n iconName: AmenityName.DifferentAbilities,\r\n value: AmenityName.DifferentAbilities,\r\n name: 'Con capacidades diferentes'\r\n },\r\n adjacentCommerce: {\r\n checked: false,\r\n iconName: AmenityName.AdjacentCommerce,\r\n value: AmenityName.AdjacentCommerce,\r\n name: 'Comercio adyacente'\r\n },\r\n adjacentGym: {checked: false, iconName: AmenityName.Gym, value: AmenityName.AdjacentGym, name: 'Gym adyacente'},\r\n adjacentPicnic: {checked: false, iconName: AmenityName.AdjacentPicnic, value: AmenityName.AdjacentPicnic, name: 'Merendero adyacente'},\r\n airConditioner: {checked: false, iconName: AmenityName.AirConditioner, value: AmenityName.AirConditioner, name: 'Aire acondicionado'},\r\n balcony: {checked: false, iconName: AmenityName.Balcony, value: AmenityName.Balcony, name: 'Balcón'},\r\n customerParking: {\r\n checked: false,\r\n iconName: AmenityName.CustomerParking,\r\n value: AmenityName.CustomerParking,\r\n name: 'Estacionamiento para clientes'\r\n },\r\n diningRoom: {checked: false, iconName: AmenityName.DiningRoom, value: AmenityName.DiningRoom, name: 'Comedor'},\r\n doubleHeight: {checked: false, iconName: AmenityName.DoubleHeight, value: AmenityName.DoubleHeight, name: 'Doble altura'},\r\n dressingRooms: {checked: false, iconName: AmenityName.DressingRooms, value: AmenityName.DressingRooms, name: 'Con vestidores'},\r\n facingStreet: {checked: false, iconName: AmenityName.FacingStreet, value: AmenityName.FacingStreet, name: 'Frente a calle'},\r\n finishings: {checked: false, iconName: AmenityName.Finishings, value: AmenityName.Finishings, name: 'Con acabados'},\r\n furnished: {checked: false, iconName: AmenityName.Furnished, value: AmenityName.Furnished, name: 'Amueblada'},\r\n garden: {checked: false, iconName: AmenityName.Garden, value: AmenityName.Garden, name: 'Jardín'},\r\n gym: {checked: false, iconName: AmenityName.Gym, value: AmenityName.Gym, name: 'Gym'},\r\n highResistanceFloors: {\r\n checked: false,\r\n iconName: AmenityName.HighResistanceFloors,\r\n value: AmenityName.HighResistanceFloors,\r\n name: 'Pisos de alta resistencia'\r\n },\r\n highSpeedInternet: {\r\n checked: false,\r\n iconName: AmenityName.HighSpeedInternet,\r\n value: AmenityName.HighSpeedInternet,\r\n name: 'Internet de alta velocidad'\r\n },\r\n inCommercialArea: {\r\n checked: false,\r\n iconName: AmenityName.InCommercialArea,\r\n value: AmenityName.InCommercialArea,\r\n name: 'En zona comercial'\r\n },\r\n inIndustrialPark: {\r\n checked: false,\r\n iconName: AmenityName.InIndustrialPark,\r\n value: AmenityName.InIndustrialPark,\r\n name: 'En parque industrial'\r\n },\r\n inShoppingCenter: {\r\n checked: false,\r\n iconName: AmenityName.InShoppingCenter,\r\n value: AmenityName.InShoppingCenter,\r\n name: 'En centro comercial'\r\n },\r\n jacuzzi: {checked: false, iconName: AmenityName.Jacuzzi, value: AmenityName.Jacuzzi, name: 'Jacuzzi'},\r\n kitchenServices: {\r\n checked: false,\r\n iconName: AmenityName.KitchenServices,\r\n value: AmenityName.KitchenServices,\r\n name: 'Servicios para cocina'\r\n },\r\n maidsBathroom: {checked: false, iconName: AmenityName.MaidsBathroom, value: AmenityName.MaidsBathroom, name: 'Cuarto de Servicio'},\r\n maneuverArea: {checked: false, iconName: AmenityName.ManeuverArea, value: AmenityName.ManeuverArea, name: 'Área de maniobras'},\r\n meetingRoom: {checked: false, iconName: AmenityName.MeetingRoom, value: AmenityName.MeetingRoom, name: 'Sala de conferencias'},\r\n mezzanine: {checked: false, iconName: AmenityName.Mezzanine, value: AmenityName.Mezzanine, name: 'Con entrepiso'},\r\n mixedBuilding: {checked: false, iconName: AmenityName.MixedBuilding, value: AmenityName.MixedBuilding, name: 'En edificio mixto'},\r\n naturalLighting: {\r\n checked: false,\r\n iconName: AmenityName.NaturalLighting,\r\n value: AmenityName.NaturalLighting,\r\n name: 'Iluminacion natural'\r\n },\r\n offices: {checked: false, iconName: AmenityName.Offices, value: AmenityName.Offices, name: 'Con oficinas'},\r\n openSpace: {checked: false, iconName: AmenityName.OpenSpace, value: AmenityName.OpenSpace, name: 'Espacio abierto'},\r\n platforms: {checked: false, iconName: AmenityName.Platforms, value: AmenityName.Platforms, name: 'Andenes'},\r\n playground: {checked: false, iconName: AmenityName.Playground, value: AmenityName.Playground, name: 'Juegos infantiles'},\r\n playroom: {checked: false, iconName: AmenityName.Playroom, value: AmenityName.Playroom, name: 'Salón de juegos'},\r\n pool: {checked: false, iconName: AmenityName.Pool, value: AmenityName.Pool, name: 'Alberca'},\r\n railSpur: {checked: false, iconName: AmenityName.RailSpur, value: AmenityName.RailSpur, name: 'Espuela de FF.CC'},\r\n railyard: {checked: false, iconName: AmenityName.RailYard, value: AmenityName.RailYard, name: 'Patio de maniobras'},\r\n reception: {checked: false, iconName: AmenityName.Reception, value: AmenityName.Reception, name: 'Recepción'},\r\n securityGuard: {checked: false, iconName: AmenityName.SecurityGuard, value: AmenityName.SecurityGuard, name: 'Con vigilancia'},\r\n storage: {checked: false, iconName: AmenityName.Storage, value: AmenityName.Storage, name: 'Bodega'},\r\n visitorParking: {\r\n checked: false,\r\n iconName: AmenityName.VisitorParking,\r\n value: AmenityName.VisitorParking,\r\n name: 'Estacionamiento para visitas'\r\n },\r\n features: [\r\n {\r\n checked: false,\r\n iconName: AmenityName.NearPublicTransportation,\r\n value: AmenityName.NearPublicTransportation,\r\n name: 'Cerca de estaciones de transporte'\r\n },\r\n {checked: false, iconName: AmenityName.AdjacentCommerce, value: AmenityName.NearShops, name: 'Cerca de comercios'},\r\n {checked: false, iconName: AmenityName.OnBusyRoad, value: AmenityName.OnBusyRoad, name: 'Avenida principal'},\r\n {checked: false, iconName: AmenityName.CountrySide, value: AmenityName.CountrySide, name: 'Suburbio'},\r\n {checked: false, iconName: AmenityName.Downtown, value: AmenityName.Downtown, name: 'Céntrico'},\r\n {\r\n checked: false,\r\n iconName: AmenityName.GoodReachableTraffic,\r\n value: AmenityName.GoodReachableTraffic,\r\n name: 'Se llega sin trafico'\r\n },\r\n {\r\n checked: false,\r\n iconName: AmenityName.NearFitnessCentre,\r\n value: AmenityName.NearFitnessCentre,\r\n name: 'Cerca de centro deportivo'\r\n },\r\n {checked: false, iconName: AmenityName.NearHighway, value: AmenityName.NearHighway, name: 'Cerca de autopista'},\r\n {\r\n checked: false,\r\n iconName: AmenityName.NearHospital,\r\n value: AmenityName.NearHospital,\r\n name: 'Cerca de centros de salud'\r\n },\r\n {\r\n checked: false,\r\n iconName: AmenityName.NearPark,\r\n value: AmenityName.NearPark,\r\n name: 'Cerca de parque'\r\n },\r\n {checked: false, iconName: AmenityName.NearSchools, value: AmenityName.NearSchools, name: 'Cerca de escuelas'},\r\n {checked: false, iconName: AmenityName.OnQuietRoad, value: AmenityName.OnQuietRoad, name: 'En calle tranquila'},\r\n ]\r\n };\r\n static DurationList = [\r\n 30, 60, 90, 180, 365\r\n ];\r\n static CommissionList: {SALE: number[], RENT: number[]} = {\r\n SALE: [0.06, 0.055, 0.05, 0.045, 0.04, 0.035, 0.030, 0.025, 0.020, 0.015, 0.01],\r\n RENT: [2, 1.5, 1, 0.5]\r\n };\r\n static SharedCommissionList: number[] = [\r\n 0.50, 0.40, 0.30, 0.20, 0.10\r\n ];\r\n static LandUseList: {name: string, value: LandUseEnum}[] = [\r\n {\r\n name: 'Habitacional unifamiliar',\r\n value: LandUseEnum.SINGLE_FAMILY_HOUSING\r\n },\r\n {\r\n name: 'Habitacional plurifamiliar',\r\n value: LandUseEnum.MULTI_FAMILY_HOUSING\r\n },\r\n {\r\n name: 'Habitacional con comercio',\r\n value: LandUseEnum.HOUSING_WITH_COMMERCE\r\n },\r\n {\r\n name: 'Habitacional con oficina',\r\n value: LandUseEnum.HOUSING_WITH_OFFICE\r\n },\r\n {\r\n name: 'Habitacional mixto',\r\n value: LandUseEnum.MIXED_HOUSING\r\n },\r\n {\r\n name: 'Comercio',\r\n value: LandUseEnum.COMMERCE\r\n },\r\n {\r\n name: 'Oficina',\r\n value: LandUseEnum.OFFICE\r\n },\r\n {\r\n name: 'Servicios',\r\n value: LandUseEnum.SERVICES\r\n },\r\n {\r\n name: 'Industria',\r\n value: LandUseEnum.INDUSTRY\r\n },\r\n {\r\n name: 'Agrícola',\r\n value: LandUseEnum.AGRICULTURAL\r\n }, {\r\n name: 'No especificado',\r\n value: LandUseEnum.OTHER\r\n }\r\n ];\r\n static AnnounceCheckList = [\r\n {\r\n name: 'Las fotos y videos son los correctos',\r\n value: 0,\r\n checked: false\r\n },\r\n {\r\n name: 'La ortografía y gramática es correcta',\r\n value: 1,\r\n checked: false\r\n },\r\n {\r\n name: 'Los datos de contacto son correctos',\r\n value: 2,\r\n checked: false\r\n },\r\n {\r\n name: 'La dirección, email y web están correctos',\r\n value: 3,\r\n checked: false\r\n },\r\n {\r\n name: 'Todo está correcto y apruebo mi anuncio',\r\n value: 4,\r\n checked: false\r\n }\r\n ];\r\n static DocumentsList: {name: string, value: PFileTypeEnum, loaded: boolean}[] = [\r\n {\r\n name: 'Escritura',\r\n value: PFileTypeEnum.DEED,\r\n loaded: false\r\n },\r\n {\r\n name: 'Identificación Propietario',\r\n value: PFileTypeEnum.OWNER_ID,\r\n loaded: false\r\n },\r\n {\r\n name: 'Recibo de agua',\r\n value: PFileTypeEnum.WATER_BILL,\r\n loaded: false\r\n },\r\n {\r\n name: 'Recibo de luz',\r\n value: PFileTypeEnum.ELECTRICITY_BILL,\r\n loaded: false\r\n },\r\n {\r\n name: 'Recibo predial',\r\n value: PFileTypeEnum.PROPERTY_BILL,\r\n loaded: false\r\n },\r\n {\r\n name: 'Constancia de no adeudo',\r\n value: PFileTypeEnum.CONSTANCY_OF_NO_DEBT,\r\n loaded: false\r\n },\r\n {\r\n name: 'Libertad de Gravamen',\r\n value: PFileTypeEnum.EXEMPTION_TAX,\r\n loaded: false\r\n },\r\n {\r\n name: 'Licencia de construcción',\r\n value: PFileTypeEnum.BUILDING_LICENSE,\r\n loaded: false\r\n },\r\n {\r\n name: 'Terminación de obra',\r\n value: PFileTypeEnum.COMPLETION_OF_CONSTRUCTION,\r\n loaded: false\r\n },\r\n {\r\n name: 'Alineación y número oficial',\r\n value: PFileTypeEnum.ALIGNMENT_AND_OFFICIAL_NUMBER,\r\n loaded: false\r\n },\r\n {\r\n name: 'Hipoteca',\r\n value: PFileTypeEnum.MORTGAGE,\r\n loaded: false\r\n },\r\n {\r\n name: 'Otros',\r\n value: PFileTypeEnum.OTHER,\r\n loaded: false\r\n }\r\n ];\r\n static BedroomList: number[] = [\r\n 0, 1, 2, 3, 4\r\n ];\r\n static BathroomList: number[] = [\r\n 0, 1, 2, 3, 4\r\n ];\r\n static ParkingSpacesList: number[] = [\r\n 0, 1, 2, 3, 4\r\n ];\r\n static SurfaceList: number[] = [\r\n 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000\r\n ];\r\n static ROIList: number[] = [\r\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20\r\n ];\r\n static PropertyTypeList: PropertyTypeItem[] = [\r\n {\r\n value: PropertyTypeEnum.HOUSE,\r\n iconName: 'house',\r\n name: 'Casa',\r\n shortName: 'Casa',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.garden,\r\n ConstantsComponents.Amenities.pool,\r\n ConstantsComponents.Amenities.storage,\r\n ConstantsComponents.Amenities.maidsBathroom,\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.playground,\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.gym,\r\n ConstantsComponents.Amenities.balcony,\r\n ConstantsComponents.Amenities.jacuzzi,\r\n ConstantsComponents.Amenities.playroom,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.RESIDENTIAL,\r\n iconName: 'residential',\r\n name: 'Vivienda',\r\n shortName: 'Vivienda',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.garden,\r\n ConstantsComponents.Amenities.pool,\r\n ConstantsComponents.Amenities.storage,\r\n ConstantsComponents.Amenities.maidsBathroom,\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.playground,\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.gym,\r\n ConstantsComponents.Amenities.balcony,\r\n ConstantsComponents.Amenities.jacuzzi,\r\n ConstantsComponents.Amenities.playroom,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.APARTMENT,\r\n iconName: 'apartment',\r\n name: 'Departamento',\r\n shortName: 'Depto',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.garden,\r\n ConstantsComponents.Amenities.pool,\r\n ConstantsComponents.Amenities.storage,\r\n ConstantsComponents.Amenities.maidsBathroom,\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.playground,\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.gym,\r\n ConstantsComponents.Amenities.balcony,\r\n ConstantsComponents.Amenities.jacuzzi,\r\n ConstantsComponents.Amenities.playroom,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.ROOM,\r\n iconName: 'room',\r\n name: 'Habitación',\r\n shortName: 'Habitación',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.garden,\r\n ConstantsComponents.Amenities.pool,\r\n ConstantsComponents.Amenities.storage,\r\n ConstantsComponents.Amenities.maidsBathroom,\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.playground,\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.gym,\r\n ConstantsComponents.Amenities.balcony,\r\n ConstantsComponents.Amenities.jacuzzi,\r\n ConstantsComponents.Amenities.playroom,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.highSpeedInternet,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.OFFICE,\r\n iconName: 'office',\r\n name: 'Oficina',\r\n shortName: 'Oficina',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.highSpeedInternet,\r\n ConstantsComponents.Amenities.reception,\r\n ConstantsComponents.Amenities.adjacentPicnic,\r\n ConstantsComponents.Amenities.meetingRoom,\r\n ConstantsComponents.Amenities.adjacentGym,\r\n ConstantsComponents.Amenities.openSpace,\r\n ConstantsComponents.Amenities.airConditioner,\r\n ConstantsComponents.Amenities.adjacentCommerce,\r\n ConstantsComponents.Amenities.mixedBuilding,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.RETAIL,\r\n iconName: 'retail',\r\n name: 'Comercio',\r\n shortName: 'Comercio',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.mixedBuilding,\r\n ConstantsComponents.Amenities.facingStreet,\r\n ConstantsComponents.Amenities.maneuverArea,\r\n ConstantsComponents.Amenities.kitchenServices,\r\n ConstantsComponents.Amenities.finishings,\r\n ConstantsComponents.Amenities.mezzanine,\r\n ConstantsComponents.Amenities.inShoppingCenter,\r\n ConstantsComponents.Amenities.inCommercialArea,\r\n ConstantsComponents.Amenities.customerParking,\r\n ConstantsComponents.Amenities.doubleHeight,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.WAREHOUSE,\r\n iconName: 'warehouse',\r\n name: 'Bodega',\r\n shortName: 'Bodega',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.customerParking,\r\n ConstantsComponents.Amenities.doubleHeight,\r\n ConstantsComponents.Amenities.railyard,\r\n ConstantsComponents.Amenities.platforms,\r\n ConstantsComponents.Amenities.highResistanceFloors,\r\n ConstantsComponents.Amenities.offices,\r\n ConstantsComponents.Amenities.dressingRooms,\r\n ConstantsComponents.Amenities.diningRoom,\r\n ConstantsComponents.Amenities.inIndustrialPark,\r\n ConstantsComponents.Amenities.naturalLighting,\r\n ConstantsComponents.Amenities.railSpur,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.LAND,\r\n iconName: 'land',\r\n name: 'Terreno',\r\n shortName: 'Terreno',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.securityGuard\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.INVESTMENT,\r\n iconName: 'investment',\r\n name: 'Inversión',\r\n shortName: 'Inversión',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: []\r\n },\r\n {\r\n value: PropertyTypeEnum.NONE,\r\n name: 'Todo',\r\n shortName: 'Todo',\r\n iconName: 'all',\r\n features: [],\r\n amenities: []\r\n }\r\n ];\r\n static OfferingTypeList: { value: OfferingTypeEnum, name: string }[] = [\r\n {\r\n value: OfferingTypeEnum.SALE,\r\n name: 'Venta'\r\n },\r\n {\r\n value: OfferingTypeEnum.RENT,\r\n name: 'Renta'\r\n },\r\n ];\r\n static LocateList: any = {\r\n USD: {locate: 'en-US', currency: 'USD'},\r\n MXN: {locate: 'es-MX', currency: 'MXN'},\r\n GBP: {locate: 'en-GB', currency: 'GBP'},\r\n EUR: {locate: 'de-DE', currency: 'EUR'},\r\n BRL: {locate: 'pt-BR', currency: 'BRL'},\r\n CNY: {locate: 'zh-CH', currency: 'CNY'}\r\n };\r\n static PropertyStatusList: PropertyStatusItem[] = [\r\n { icon: 'announce', name: 'Anunciadas', value: StatusTypeEnum.ANNOUNCED },\r\n { icon: 'expired', name: 'Expiradas', value: StatusTypeEnum.EXPIRED },\r\n { icon: 'hidden', name: 'Ocultas', value: StatusTypeEnum.HIDDEN },\r\n { icon: 'ready', name: 'Listas para anunciar', value: StatusTypeEnum.READY },\r\n { icon: 'draft', name: 'Borrador', value: StatusTypeEnum.DRAFT }\r\n ];\r\n}\r\n","import {Filter, NewProperty, OfferingTypeEnum, PropertyTypeEnum} from '@maplander/types';\r\n\r\nexport class Utils {\r\n static round(value: number, precision: number): number {\r\n const multiplier = Math.pow(10, precision || 0);\r\n return Math.round(value * multiplier) / multiplier;\r\n }\r\n static getFilterByPropertyType(filter: Filter): Filter {\r\n return {\r\n type: filter.type,\r\n offering: filter.offering,\r\n distance: filter.distance,\r\n location: {\r\n latitude: filter.location.latitude,\r\n longitude: filter.location.longitude\r\n },\r\n currency: filter.currency,\r\n upLimitPrice: 0,\r\n downLimitPrice: 0,\r\n bathrooms: 0,\r\n exclusivity: filter.exclusivity,\r\n bedrooms: 0,\r\n parkingPlaces: 0,\r\n extras: [],\r\n mainArea: 0,\r\n roi: 0,\r\n mls: filter.mls\r\n };\r\n }\r\n static getInitialFilter(isOPI: boolean, filter: Filter = null): Filter {\r\n return {\r\n type: isOPI ? PropertyTypeEnum.NONE : PropertyTypeEnum.RESIDENTIAL,\r\n offering: isOPI ? OfferingTypeEnum.RENT : OfferingTypeEnum.RENT,\r\n distance: filter ? filter.distance : 0,\r\n location: {\r\n latitude: filter ? filter.location.latitude : 0,\r\n longitude: filter ? filter.location.longitude : 0\r\n },\r\n currency: filter ? filter.currency : 'MXN',\r\n upLimitPrice: 0,\r\n downLimitPrice: 0,\r\n bathrooms: 0,\r\n exclusivity: filter ? filter.exclusivity : false,\r\n bedrooms: 0,\r\n parkingPlaces: 0,\r\n extras: [],\r\n mainArea: 0,\r\n roi: 0,\r\n mls: filter ? filter.mls : true\r\n };\r\n }\r\n static listErrorsByPropertyTypeForPublish(type: PropertyTypeEnum): string[] {\r\n let errorField = ['price', 'currency', 'description', 'image'];\r\n switch (type) {\r\n case PropertyTypeEnum.HOUSE:\r\n case PropertyTypeEnum.APARTMENT:\r\n errorField = errorField.concat(['mainArea', 'bedrooms', 'bathrooms']);\r\n break;\r\n case PropertyTypeEnum.ROOM:\r\n case PropertyTypeEnum.OFFICE:\r\n case PropertyTypeEnum.RETAIL:\r\n case PropertyTypeEnum.LAND:\r\n errorField = errorField.concat(['mainArea']);\r\n break;\r\n case PropertyTypeEnum.WAREHOUSE:\r\n errorField = errorField.concat(['mainArea', 'secondaryArea']);\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n errorField = errorField.concat(['roi']);\r\n break;\r\n }\r\n return errorField;\r\n }\r\n static getErrorsForPublish(property: NewProperty): string[] {\r\n let errorField = [];\r\n errorField = errorField.concat((!property.price || property.price === 0) ? ['price'] : []);\r\n errorField = errorField.concat((!property.currency || property.currency === '') ? ['currency'] : []);\r\n errorField = errorField.concat((!property.description || property.description === '') ? ['description'] : []);\r\n errorField = errorField.concat((!property.image || property.image === '') ? ['image'] : []);\r\n switch (property.type) {\r\n case PropertyTypeEnum.HOUSE:\r\n case PropertyTypeEnum.APARTMENT:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n errorField = errorField.concat((property.features && (!property.features.bedrooms || property.features.bedrooms === 0)) ? ['bedrooms'] : []);\r\n errorField = errorField.concat((property.features && (!property.features.bathrooms || property.features.bathrooms === 0)) ? ['bathrooms'] : []);\r\n break;\r\n case PropertyTypeEnum.OFFICE:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n break;\r\n case PropertyTypeEnum.RETAIL:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n break;\r\n case PropertyTypeEnum.LAND:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n break;\r\n case PropertyTypeEnum.WAREHOUSE:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n errorField = errorField.concat(\r\n (property.features && (!property.features.secondaryArea || property.features.secondaryArea === 0)) ? ['secondaryArea'] : []);\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n errorField = errorField.concat((property.features && (!property.features.roi || property.features.roi === 0)) ? ['roi'] : []);\r\n break;\r\n case PropertyTypeEnum.ROOM:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n break;\r\n }\r\n return errorField;\r\n }\r\n static removeDiacritics (str): string {\r\n const diacriticsMap = {\r\n A: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g,\r\n AA: /[\\uA732]/g,\r\n AE: /[\\u00C6\\u01FC\\u01E2]/g,\r\n AO: /[\\uA734]/g,\r\n AU: /[\\uA736]/g,\r\n AV: /[\\uA738\\uA73A]/g,\r\n AY: /[\\uA73C]/g,\r\n B: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g,\r\n C: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g,\r\n D: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g,\r\n DZ: /[\\u01F1\\u01C4]/g,\r\n Dz: /[\\u01F2\\u01C5]/g,\r\n E: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g,\r\n F: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g,\r\n G: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g,\r\n H: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g,\r\n I: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g,\r\n J: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g,\r\n K: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g,\r\n L: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g,\r\n LJ: /[\\u01C7]/g,\r\n Lj: /[\\u01C8]/g,\r\n M: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g,\r\n N: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g,\r\n NJ: /[\\u01CA]/g,\r\n Nj: /[\\u01CB]/g,\r\n O: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g,\r\n OI: /[\\u01A2]/g,\r\n OO: /[\\uA74E]/g,\r\n OU: /[\\u0222]/g,\r\n P: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g,\r\n Q: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g,\r\n R: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g,\r\n S: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g,\r\n T: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g,\r\n TZ: /[\\uA728]/g,\r\n U: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g,\r\n V: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g,\r\n VY: /[\\uA760]/g,\r\n W: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g,\r\n X: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g,\r\n Y: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g,\r\n Z: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g,\r\n a: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g,\r\n aa: /[\\uA733]/g,\r\n ae: /[\\u00E6\\u01FD\\u01E3]/g,\r\n ao: /[\\uA735]/g,\r\n au: /[\\uA737]/g,\r\n av: /[\\uA739\\uA73B]/g,\r\n ay: /[\\uA73D]/g,\r\n b: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g,\r\n c: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g,\r\n d: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g,\r\n dz: /[\\u01F3\\u01C6]/g,\r\n e: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g,\r\n f: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g,\r\n g: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g,\r\n h: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g,\r\n hv: /[\\u0195]/g,\r\n i: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g,\r\n j: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g,\r\n k: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g,\r\n l: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g,\r\n lj: /[\\u01C9]/g,\r\n m: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g,\r\n n: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g,\r\n nj: /[\\u01CC]/g,\r\n o: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g,\r\n oi: /[\\u01A3]/g,\r\n ou: /[\\u0223]/g,\r\n oo: /[\\uA74F]/g,\r\n p: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g,\r\n q: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g,\r\n r: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g,\r\n s: /[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g,\r\n ss: /[\\u00DF]/g,\r\n t: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g,\r\n tz: /[\\uA729]/g,\r\n u: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g,\r\n v: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g,\r\n vy: /[\\uA761]/g,\r\n w: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g,\r\n x: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g,\r\n y: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g,\r\n z: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\r\n };\r\n for (const x of Object.keys(diacriticsMap)) {\r\n // Iterate through each keys in the above object and perform a replace\r\n str = str.replace(diacriticsMap[x], x);\r\n }\r\n return str;\r\n }\r\n}\r\n","/*\r\n * Copyright (C) MapLander S de R.L de C.V - All Rights Reserved\r\n * Unauthorized copying of this file, via any medium is strictly prohibited\r\n * Proprietary and confidential\r\n */\r\n\r\nimport {Pipe, PipeTransform} from '@angular/core';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\nimport {Utils} from '../../utils';\r\n\r\n@Pipe({\r\n name: 'markerPrice'\r\n})\r\nexport class MarkerPricePipe implements PipeTransform {\r\n\r\n transform(price: number, currency?: string): string {\r\n const locate: {locate: string, currency: string} = ConstantsComponents.LocateList[currency || 'MXN'];\r\n let outputPrice;\r\n if (((price / 100000.0) / 10.0) >= 1) {\r\n outputPrice = Utils.round(Number((price / 100000.0) / 10.0), 2);\r\n outputPrice = Number(outputPrice).toLocaleString(locate.locate, {\r\n style: 'currency',\r\n currency: locate.currency\r\n }).toString();\r\n outputPrice += 'M';\r\n } else if (((price / 100.0) / 10.0) >= 1) {\r\n outputPrice = Utils.round(Number((price / 100.0) / 10.0), 2);\r\n outputPrice = Number(outputPrice).toLocaleString(locate.locate, {\r\n style: 'currency',\r\n currency: locate.currency\r\n }).toString();\r\n outputPrice += 'K';\r\n } else {\r\n outputPrice = Number(price).toFixed(2);\r\n outputPrice = Number(outputPrice).toLocaleString(locate.locate, {\r\n style: 'currency',\r\n currency: locate.currency\r\n }).toString();\r\n }\r\n return '' + outputPrice;\r\n }\r\n\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {MarkerPricePipe} from './marker-price.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n MarkerPricePipe\r\n ],\r\n exports: [\r\n MarkerPricePipe\r\n ]\r\n})\r\nexport class MarkerPriceModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: MarkerPriceModule,\r\n providers: [\r\n MarkerPricePipe\r\n ]\r\n };\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {OfferingTypeEnum} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\n\r\n@Pipe({\r\n name: 'offeringType'\r\n})\r\nexport class OfferingTypePipe implements PipeTransform {\r\n\r\n transform(value: OfferingTypeEnum, prefix?: string): string {\r\n let response = prefix ? prefix : 'en';\r\n ConstantsComponents.OfferingTypeList.forEach(type => {\r\n if (type.value === value) {\r\n response += ` ${type.name.toLowerCase()}`;\r\n }\r\n });\r\n return response;\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {OfferingTypePipe} from './offering-type.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n OfferingTypePipe\r\n ],\r\n exports: [\r\n OfferingTypePipe\r\n ]\r\n})\r\nexport class OfferingTypeModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: OfferingTypeModule,\r\n providers: [\r\n OfferingTypePipe\r\n ]\r\n };\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {PropertyTypeEnum} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\n\r\n@Pipe({\r\n name: 'propertyType'\r\n})\r\nexport class PropertyTypePipe implements PipeTransform {\r\n transform(value: PropertyTypeEnum, toLowerCase?: boolean): string {\r\n let result = '';\r\n ConstantsComponents.PropertyTypeList.forEach(type => {\r\n if (type.value === value) {\r\n result = type.name;\r\n }\r\n });\r\n return (toLowerCase) ? result.toLowerCase() : result;\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {PropertyTypePipe} from './property-type.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n PropertyTypePipe\r\n ],\r\n exports: [\r\n PropertyTypePipe\r\n ]\r\n})\r\nexport class PropertyTypeModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: PropertyTypeModule,\r\n providers: [\r\n PropertyTypePipe\r\n ]\r\n };\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, Input, OnChanges, OnDestroy, SimpleChanges} from '@angular/core';\r\nimport {CurrencyPipe} from '@angular/common';\r\nimport {AbstractControl} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[libFormatPrice]'\r\n})\r\nexport class FormatPriceDirective implements AfterViewInit, OnChanges, OnDestroy {\r\n\r\n @Input() control: AbstractControl;\r\n @Input() currency: string;\r\n private _el: HTMLInputElement;\r\n private _value: any;\r\n private _subscription: Subscription;\r\n\r\n constructor(\r\n private _elRef: ElementRef,\r\n private _currency: CurrencyPipe\r\n ) {\r\n this._subscription = new Subscription();\r\n this._el = this._elRef.nativeElement;\r\n }\r\n\r\n private static removeError(control: AbstractControl, error: string): void {\r\n const err = control.errors; // get control errors\r\n if (err) {\r\n delete err[error]; // delete your own error\r\n if (!Object.keys(err).length) { // if no errors left\r\n control.setErrors(null); // set control errors to null making it VALID\r\n } else {\r\n control.setErrors(err); // controls got other errors so set them back\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['currency'] && changes['currency'].currentValue) {\r\n if (this._value) {\r\n this.validateFormatPrice(this._value);\r\n }\r\n }\r\n if (changes['control'] && changes['control'].currentValue) {\r\n this._subscription.add(\r\n this.control.valueChanges.subscribe(response => {\r\n this._value = response;\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._el.addEventListener('focus', this.onFocus.bind(this));\r\n this._el.addEventListener('blur', this.onBlur.bind(this));\r\n this._value = this._el.value;\r\n this._el.value = this.formatPrice(this._el.value);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n this._el.removeEventListener('focus', this.onFocus.bind(this));\r\n this._el.removeEventListener('blur', this.onBlur.bind(this));\r\n }\r\n\r\n private formatPrice(value: any): any {\r\n return this._currency.transform(value, this.currency && this.currency !== 'MXN' ? this.currency : null, 'symbol', '1.0-0');\r\n }\r\n\r\n private onFocus() {\r\n this._el.value = this._value;\r\n }\r\n\r\n private onBlur(event: any) {\r\n this.validateFormatPrice(event.target.value);\r\n }\r\n\r\n private validateFormatPrice(value: any): void {\r\n if (Number.isNaN(Number(value))) {\r\n this.control.setErrors({\r\n format: true\r\n });\r\n return;\r\n }\r\n FormatPriceDirective.removeError(this.control, 'format');\r\n this._value = value;\r\n this._el.value = this.formatPrice(value);\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule, CurrencyPipe} from '@angular/common';\r\nimport {FormatPriceDirective} from './format-price.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n FormatPriceDirective\r\n ],\r\n exports: [\r\n FormatPriceDirective\r\n ]\r\n})\r\nexport class FormatPriceModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: FormatPriceModule,\r\n providers: [\r\n CurrencyPipe,\r\n FormatPriceDirective\r\n ]\r\n };\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, Input, OnDestroy} from '@angular/core';\r\nimport {PropertyTypeEnum} from '@maplander/types';\r\n\r\n@Directive({\r\n selector: '[libImageError]'\r\n})\r\nexport class ImageErrorDirective implements AfterViewInit, OnDestroy {\r\n\r\n @Input() typeImage: PropertyTypeEnum;\r\n private _el: HTMLImageElement;\r\n private _onError;\r\n private readonly CDN_URL: string = 'https://storage.googleapis.com/maplander-develop/public/file/front-end/cdn/images-stock';\r\n\r\n constructor(private _ref: ElementRef) {\r\n this._el = this._ref.nativeElement;\r\n if (this._el.constructor !== HTMLImageElement) {\r\n throw new Error('libImageError directive works only image element');\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._onError = () => {\r\n this.updateUrl();\r\n };\r\n this._el.addEventListener('error', this._onError);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._el.removeEventListener('error', this._onError);\r\n }\r\n\r\n updateUrl() {\r\n switch (this.typeImage) {\r\n case PropertyTypeEnum.HOUSE:\r\n this._el.src = `${this.CDN_URL}/Stock-House.jpg`;\r\n break;\r\n case PropertyTypeEnum.OFFICE:\r\n this._el.src = `${this.CDN_URL}/Stock-Office.jpg`;\r\n break;\r\n case PropertyTypeEnum.RETAIL:\r\n this._el.src = `${this.CDN_URL}/Stock-Retail.jpg`;\r\n break;\r\n case PropertyTypeEnum.LAND:\r\n this._el.src = `${this.CDN_URL}/Stock-Land.jpg`;\r\n break;\r\n case PropertyTypeEnum.WAREHOUSE:\r\n this._el.src = `${this.CDN_URL}/Stock-Warehouse.jpg`;\r\n break;\r\n case PropertyTypeEnum.APARTMENT:\r\n case PropertyTypeEnum.ROOM:\r\n this._el.src = `${this.CDN_URL}/Stock-Apartment.jpg`;\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n this._el.src = `${this.CDN_URL}/Stock-Investment.jpg`;\r\n break;\r\n case PropertyTypeEnum.RESIDENTIAL:\r\n this._el.src = `${this.CDN_URL}/Stock-House.jpg`;\r\n break;\r\n default:\r\n this._el.src = `${this.CDN_URL}/Stock-House.jpg`;\r\n break;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {ImageErrorDirective} from './image-error.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n ImageErrorDirective\r\n ],\r\n exports: [\r\n ImageErrorDirective\r\n ]\r\n})\r\nexport class ImageErrorModule { }\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'lib-document-visor',\r\n templateUrl: './document-visor.component.html',\r\n styleUrls: ['./document-visor.component.scss']\r\n})\r\nexport class DocumentVisorComponent implements OnInit {\r\n\r\n public url: string;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private _data: string,\r\n private _dialog: MatDialogRef<DocumentVisorComponent>\r\n ) {\r\n }\r\n\r\n private static isBase64(str): boolean {\r\n try {\r\n return btoa(atob(str)) === str;\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n\r\n private static isURL(url: string): boolean {\r\n const pattern = new RegExp('^(?:(?:(?:https?|ftp):)?\\\\/\\\\/)(?:\\\\S+(?::\\\\S*)?@)?(?:(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\\\d{2,5})?(?:[/?#]\\\\S*)?$', 'i');\r\n return pattern.test(url);\r\n }\r\n\r\n ngOnInit() {\r\n this.url = this._data;\r\n }\r\n\r\n close(): void {\r\n if (!DocumentVisorComponent.isBase64(this.url) && !DocumentVisorComponent.isURL(this.url)) {\r\n URL.revokeObjectURL(this.url);\r\n }\r\n this._dialog.close();\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {DocumentVisorComponent} from './document-visor.component';\r\n\r\n@Injectable()\r\nexport class DocumentVisorService {\r\n\r\n constructor(\r\n private _dialog: MatDialog\r\n ) {\r\n }\r\n\r\n public open(document: string): MatDialogRef<DocumentVisorComponent> {\r\n return this._dialog.open(DocumentVisorComponent, {\r\n data: document,\r\n disableClose: true,\r\n panelClass: 'document_visor_dialog'\r\n });\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {DocumentVisorComponent} from './document-visor.component';\r\nimport {DocumentVisorService} from './document-visor.service';\r\nimport {SafeUrlModule} from '@maplander/shared';\r\n\r\nconst MATERIAL = [\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatIconModule\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SafeUrlModule.forChild(),\r\n MATERIAL\r\n ],\r\n declarations: [\r\n DocumentVisorComponent\r\n ],\r\n exports: [\r\n DocumentVisorComponent\r\n ],\r\n entryComponents: [\r\n DocumentVisorComponent\r\n ]\r\n})\r\nexport class DocumentVisorModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: DocumentVisorModule,\r\n providers: [\r\n DocumentVisorService\r\n ]\r\n };\r\n }\r\n}\r\n","export enum FilterChipType {\r\n OFFERING = 'OFFERING',\r\n PROPERTY_TYPE = 'PROPERTY_TYPE',\r\n PRICE = 'PRICE',\r\n BEDROOMS = 'BEDROOMS',\r\n BATHROOMS = 'BATHROOMS',\r\n PARKING_PLACES = 'PARKING_PLACES',\r\n SURFACE = 'SURFACE',\r\n AMENITIES = 'AMENITIES',\r\n LISTING = 'LISTING'\r\n}\r\n","export enum FiltersChangeType {\r\n APPLY,\r\n INIT,\r\n AREA,\r\n SAVE,\r\n LIST_TYPE\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\n\r\nexport const FILTERS_TOKEN = new InjectionToken<boolean>('FILTERS MODULE CONFIG');\r\n","import {Inject, Injectable, Optional} from '@angular/core';\r\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\r\nimport {LocalStorageService} from '@maplander/static';\r\nimport {FiltersChangeType} from '../../utils/enums/filters-change-type';\r\nimport {FiltersChange} from './../../utils/models/filters-change';\r\nimport {Utils} from '../../utils';\r\nimport {FILTERS_TOKEN} from './token';\r\nimport {FiltersWrapper} from '../../utils/classes';\r\nimport {FiltersSaved} from '../../utils/models';\r\n\r\n@Injectable()\r\nexport class FiltersService {\r\n\r\n private static FILTERS_SAVED_KEY = 'FILTERS';\r\n private _notifier: BehaviorSubject<FiltersChange>;\r\n private _startComponent: Subject<FiltersWrapper>;\r\n\r\n constructor(\r\n @Optional() @Inject(FILTERS_TOKEN) private _config: boolean\r\n ) {\r\n this._startComponent = new Subject<FiltersWrapper>();\r\n this._notifier = new BehaviorSubject<FiltersChange>({\r\n filter: Utils.getInitialFilter(this._config || false),\r\n type: FiltersChangeType.INIT,\r\n ft: false\r\n });\r\n }\r\n\r\n static removeFiltersSaved(): void {\r\n LocalStorageService.removeItem<FiltersSaved>(FiltersService.FILTERS_SAVED_KEY);\r\n }\r\n\r\n static getFiltersSaved(): FiltersSaved {\r\n return LocalStorageService.getItem<FiltersSaved>(FiltersService.FILTERS_SAVED_KEY);\r\n }\r\n\r\n static saveFilters(config: FiltersSaved): void {\r\n LocalStorageService.setItem<FiltersSaved>(FiltersService.FILTERS_SAVED_KEY, {\r\n filters: config.filters,\r\n ft: config.ft || false,\r\n isSharedProperties: config.isSharedProperties || false\r\n });\r\n }\r\n\r\n setChange(change: FiltersChange): void {\r\n this._notifier.next(change);\r\n }\r\n\r\n getChanges(): Observable<FiltersChange> {\r\n return this._notifier.asObservable();\r\n }\r\n\r\n startComponent(wrapper: FiltersWrapper): void {\r\n this._startComponent.next(wrapper);\r\n }\r\n\r\n onStartComponent(): Observable<FiltersWrapper> {\r\n return this._startComponent.asObservable();\r\n }\r\n}\r\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {Filter, PropertyTypeEnum} from '@maplander/types';\r\nimport {MarkerPricePipe} from './../../pipes/marker-price/marker-price.pipe';\r\nimport {OfferingTypePipe} from './../../pipes/offering-type/offering-type.pipe';\r\nimport {FilterChip} from './../../utils/models/filter-chip';\r\nimport {FilterChipType} from '../../utils/enums/filter-chip-type';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\nimport {FiltersService} from './../filters/filters.service';\r\nimport {Subscription} from 'rxjs';\r\nimport {FiltersChange} from '././../../utils/models/filters-change';\r\nimport {FiltersWrapper} from '../../utils/classes';\r\n\r\n@Component({\r\n selector: 'lib-fab-filters',\r\n templateUrl: './fab-filters.component.html',\r\n styleUrls: ['./fab-filters.component.scss']\r\n})\r\nexport class FabFiltersComponent implements OnInit, OnDestroy {\r\n @Input() isOPI: boolean;\r\n @Input() mlsLabel: string;\r\n private readonly METERS_TO_SQ = 10.76391042;\r\n private _filter: Filter;\r\n private _wrapper: FiltersWrapper;\r\n private _subscription: Subscription;\r\n public chips: FilterChip[];\r\n\r\n constructor(\r\n private _currency: MarkerPricePipe,\r\n private _offeringPipe: OfferingTypePipe,\r\n private _filtersService: FiltersService\r\n ) {\r\n this.chips = [];\r\n this._subscription = new Subscription();\r\n }\r\n\r\n ngOnInit() {\r\n this._subscription.add(\r\n this._filtersService.onStartComponent().subscribe(response => {\r\n this._wrapper = response;\r\n })\r\n );\r\n this._subscription.add(\r\n this._filtersService.getChanges().subscribe((response: FiltersChange) => {\r\n this.init(response.filter, response.ft, response.isSharedProperties);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n openFilters(): void {\r\n if (!this._wrapper) {\r\n console.warn('[FabFiltersComponent] waiting onStartComponent');\r\n return;\r\n }\r\n this._wrapper.open();\r\n }\r\n\r\n onClickChip(type: FilterChipType): void {\r\n if (type === FilterChipType.PROPERTY_TYPE || type === FilterChipType.OFFERING) {\r\n this.openFilters();\r\n }\r\n }\r\n\r\n private init(filter: Filter, ft: boolean, sharedProperties?: boolean): void {\r\n this.chips = [];\r\n this._filter = filter;\r\n this.listingType(sharedProperties);\r\n this.offeringType();\r\n this.propertyType();\r\n this.price();\r\n this.surface(ft);\r\n this.bedrooms();\r\n this.bathrooms();\r\n this.parkingPlaces();\r\n this.amenities();\r\n }\r\n\r\n private listingType(sharedProperties?: boolean): void {\r\n if (!this.isOPI) {\r\n return;\r\n }\r\n this.chips.push({\r\n type: FilterChipType.LISTING,\r\n text: sharedProperties ? 'Compartidas' : (this._filter.mls ? this.mlsLabel || 'MLS' : 'Mi lista'),\r\n icon: [this._filter.mls ? 'mlm' : 'list']\r\n });\r\n }\r\n\r\n private offeringType(): void {\r\n if (this._filter.offering && this._filter.type !== PropertyTypeEnum.NONE) {\r\n let offering = this._offeringPipe.transform(this._filter.offering, ' ').replace(/ /g, '');\r\n const firstLetter = offering.substr(0, 1);\r\n offering = offering.replace(firstLetter, '');\r\n offering = `${firstLetter.toLocaleUpperCase()}${offering}`;\r\n this.chips.push({\r\n type: FilterChipType.OFFERING,\r\n text: offering,\r\n icon: null\r\n });\r\n }\r\n }\r\n\r\n private propertyType(): void {\r\n if (this._filter.type && this._filter.type !== PropertyTypeEnum.NONE) {\r\n ConstantsComponents.PropertyTypeList.forEach(item => {\r\n if (item.value === this._filter.type) {\r\n this.chips.push({\r\n type: FilterChipType.PROPERTY_TYPE,\r\n text: item.name,\r\n icon: [item.iconName]\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n private price(): void {\r\n let min = '', max = '', currency;\r\n if (this._filter.downLimitPrice !== 0) {\r\n min += this._currency.transform(this._filter.downLimitPrice);\r\n }\r\n if (this._filter.upLimitPrice !== 0) {\r\n max += this._currency.transform(this._filter.upLimitPrice);\r\n }\r\n if (min !== '' || max !== '') {\r\n currency = this._filter.currency ? this._filter.currency : '';\r\n this.chips.push({\r\n type: FilterChipType.PRICE,\r\n text: `${min}${min !== '' && max !== '' ? ' - ' : ''}${max} ${currency}`,\r\n icon: ['price']\r\n });\r\n }\r\n }\r\n\r\n private surface(ft: boolean): void {\r\n if (this._filter.mainArea !== 0) {\r\n this.chips.push({\r\n type: FilterChipType.SURFACE,\r\n text: (ft ? (this._filter.mainArea / this.METERS_TO_SQ).toFixed(0).toString() : this._filter.mainArea.toString()) + (ft ? ' sq ft' : ' m2'),\r\n icon: ['surface']\r\n });\r\n }\r\n }\r\n\r\n private bedrooms(): void {\r\n if (this._filter.bedrooms !== 0) {\r\n this.chips.push({\r\n type: FilterChipType.BEDROOMS,\r\n text: this._filter.bedrooms.toString(),\r\n icon: ['bedroom']\r\n });\r\n }\r\n }\r\n\r\n private bathrooms(): void {\r\n if (this._filter.bathrooms !== 0) {\r\n this.chips.push({\r\n type: FilterChipType.BATHROOMS,\r\n text: this._filter.bathrooms.toString(),\r\n icon: ['bathroom']\r\n });\r\n }\r\n }\r\n\r\n private parkingPlaces(): void {\r\n if (this._filter.parkingPlaces !== 0) {\r\n this.chips.push({\r\n type: FilterChipType.PARKING_PLACES,\r\n text: this._filter.parkingPlaces.toString(),\r\n icon: ['parking']\r\n });\r\n }\r\n }\r\n\r\n private amenities(): void {\r\n if (this._filter.extras && this._filter.extras.length > 0) {\r\n this.chips.push({\r\n type: FilterChipType.AMENITIES,\r\n text: this._filter.extras.length.toString(),\r\n icon: [this._filter.extras[0]]\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {FabFiltersComponent} from './fab-filters.component';\r\nimport {MatChipsModule} from '@angular/material/chips';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MarkerPriceModule} from './../../pipes/marker-price/marker-price.module';\r\nimport {OfferingTypeModule} from '../../pipes/offering-type/offering-type.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatChipsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n OfferingTypeModule.forChild(),\r\n MarkerPriceModule.forChild()\r\n ],\r\n declarations: [\r\n FabFiltersComponent\r\n ],\r\n exports: [\r\n FabFiltersComponent\r\n ]\r\n})\r\nexport class FabFiltersModule {\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {CER, Currency} from '@maplander/types';\r\n\r\n@Injectable()\r\nexport class CurrencyConverterService {\r\n\r\n list(prices: number[], currencies: CER[], from: Currency, to: Currency): number[] {\r\n const valueFrom = this.getValueByCurrency(currencies, from), valueTo = this.getValueByCurrency(currencies, to);\r\n prices = prices.map(price => {\r\n if (from === to) {\r\n return price;\r\n } else {\r\n return valueTo * (price / valueFrom);\r\n }\r\n });\r\n return prices;\r\n }\r\n\r\n number(price: number, currencies: CER[], from: Currency, to: Currency): number {\r\n const valueFrom = this.getValueByCurrency(currencies, from), valueTo = this.getValueByCurrency(currencies, to);\r\n return valueTo * (price / valueFrom);\r\n }\r\n\r\n private getValueByCurrency(currencies: CER[], c: Currency): number {\r\n let value = 0;\r\n currencies.forEach(currency => {\r\n if (currency.type === c.toString()) {\r\n value = currency.value;\r\n }\r\n });\r\n return value;\r\n }\r\n}\r\n","export class MUtils {\r\n static linSpaceExp(start: number, stop: number, n: number): number[] {\r\n const list: number[] = [];\r\n const phi = 1.618033988749895, b = Math.log(stop / start) / ((n - 1) * Math.log(phi));\r\n for (let i = 0; i < n; i++) {\r\n list[i] = start * Math.pow(phi, b * i);\r\n const length = (Math.log10(list[i]) + 1);\r\n if (length > 2) {\r\n list[i] = (Math.round(list[i] / Math.pow(10, length - 2)) * Math.pow(10, length - 2));\r\n }\r\n }\r\n return list;\r\n }\r\n}\r\n","import {AbstractControl} from '@angular/forms';\r\n\r\nexport function removeError(control: AbstractControl, error: string) {\r\n const err = control.errors; // get control errors\r\n if (err) {\r\n delete err[error]; // delete your own error\r\n if (!Object.keys(err).length) { // if no errors left\r\n control.setErrors(null); // set control errors to null making it VALID\r\n } else {\r\n control.setErrors(err); // controls got other errors so set them back\r\n }\r\n }\r\n}\r\n","import {AbstractControl, FormGroup, ValidatorFn} from '@angular/forms';\r\nimport {removeError} from './remove-error';\r\n\r\n\r\nexport function CurrencyFilterValidator(controlName: string, controlName2: string): ValidatorFn {\r\n return (control: FormGroup): { [key: string]: boolean } | null => {\r\n if (control) {\r\n const peerControl = control.controls[controlName];\r\n const peerControl2 = control.controls[controlName2];\r\n if (peerControl2.value) {\r\n if (peerControl.value >= peerControl2.value) {\r\n peerControl2.setErrors({\r\n currency: true\r\n });\r\n }\r\n if (peerControl.value < peerControl2.value) {\r\n removeError(peerControl2, 'currency');\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef, EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional, Output,\r\n Renderer2,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\nimport {AppUtil, CER, Currency, Filter, LimitPrice, OfferingTypeEnum, PropertyRange, PropertyTypeEnum} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\nimport {Utils} from '../../utils';\r\nimport {FiltersChange} from './../../utils/models/filters-change';\r\nimport {FiltersWrapper} from '../../utils/classes/filters-wrapper';\r\nimport {PropertyTypeItem} from './../../utils/models/property-type-item';\r\nimport {CurrencyConverterService} from './../../services/currency-converter/currency-converter.service';\r\nimport {Filters} from '../../utils/interfaces/filters';\r\nimport {FiltersService} from './filters.service';\r\nimport {FiltersChangeType} from '../../utils/enums';\r\nimport {FILTERS_TOKEN} from './token';\r\nimport {MUtils} from '../../utils/classes/mUtils';\r\nimport {AmenityItem} from '../../utils/models';\r\nimport {CurrencyFilterValidator} from '../property/validators/currency-filter-validator';\r\n\r\n@Component({\r\n selector: 'lib-filters',\r\n templateUrl: './filters.component.html',\r\n styleUrls: ['./filters.component.scss']\r\n})\r\nexport class FiltersComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, Filters {\r\n @Input() utils: AppUtil;\r\n @Input() newFilters: boolean;\r\n @Input() stateOptions: Array<{name: string, total: number}>;\r\n @Input() propertyTotal: number;\r\n @Output() changeFilter: EventEmitter<{type: 'propertyType' | 'filter' | 'offer' | 'init', payload: {filter: Filter, value: any}}>;\r\n private readonly METERS_TO_SQ = 10.76391042;\r\n private _tmpMinPriceList: number[];\r\n private _tmpMaxPriceList: number[];\r\n private _subscription: Subscription;\r\n private _isSharedProperties: boolean;\r\n public filtersForm: FormGroup;\r\n public propertyTypeList: PropertyTypeItem[];\r\n public bedroomsList: number[];\r\n public bathroomsList: number[];\r\n public parkingPlacesList: number[];\r\n public currencyList: CER[];\r\n public minPriceList: number[];\r\n public maxPriceList: number[];\r\n public surfaceList: number[];\r\n public roiList: number[];\r\n public propertyTypeSelected: PropertyTypeItem;\r\n public filter: Filter;\r\n public isOPI: boolean;\r\n public surfaceUnitSelected: number;\r\n private _lastState: string;\r\n constructor(\r\n @Optional() @Inject(FILTERS_TOKEN) private _config: boolean,\r\n private _render: Renderer2,\r\n private _ref: ElementRef,\r\n private _service: FiltersService,\r\n private _formBuilder: FormBuilder,\r\n private _converter: CurrencyConverterService\r\n ) {\r\n this._lastState = null;\r\n this.changeFilter = new EventEmitter<{type: 'propertyType' | 'filter' | 'offer' | 'init', payload: {filter: Filter, value: any}}>();\r\n this.isOPI = this._config || false;\r\n this._subscription = new Subscription();\r\n this.propertyTypeList = ConstantsComponents.PropertyTypeList.map(item => ({...item}));\r\n this.bedroomsList = Object.assign([], ConstantsComponents.BedroomList);\r\n this.bathroomsList = Object.assign([], ConstantsComponents.BathroomList);\r\n this.parkingPlacesList = Object.assign([], ConstantsComponents.ParkingSpacesList);\r\n this.surfaceList = Object.assign([], ConstantsComponents.SurfaceList);\r\n this.roiList = Object.assign([], ConstantsComponents.ROIList);\r\n this.surfaceUnitSelected = 0;\r\n this.buildForm();\r\n this.initComponentByPropertyType();\r\n this.restoreLastFiltersSaved(true);\r\n this.listenChangesOnForm();\r\n }\r\n\r\n ngOnInit() {\r\n this.openComponent(false);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.utils) {\r\n return console.warn('[FiltersComponent] utils param is required');\r\n }\r\n this.initComponent();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['utils'] && changes['utils'].currentValue) {\r\n console.log('[FiltersComponent] utils ready');\r\n this.initComponent();\r\n }\r\n if (changes['stateOptions'] && changes['stateOptions'].currentValue) {\r\n if (this._lastState !== null) {\r\n for (const stateOption of this.stateOptions) {\r\n if (stateOption.name === this._lastState) {\r\n this.filter.state = this._lastState;\r\n this.filtersForm.patchValue({\r\n state: this._lastState\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n open(): void {\r\n this.restoreLastFiltersSaved();\r\n this.openComponent(true);\r\n }\r\n\r\n close(): void {\r\n this.openComponent(false);\r\n }\r\n\r\n changePropertyType(index: number): void {\r\n this._lastState = Object.assign([], this.filter.state);\r\n this.resetFilters(index);\r\n this.applyAmenities();\r\n this.filter.type = this.propertyTypeSelected.value;\r\n switch (this.propertyTypeSelected.value) {\r\n case PropertyTypeEnum.ROOM:\r\n this.filtersForm.controls['offering'].setValue(OfferingTypeEnum.RENT);\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n this.filtersForm.controls['offering'].setValue(OfferingTypeEnum.SALE);\r\n break;\r\n }\r\n this.filter.locationType = 'STATE';\r\n this.filter.state = null;\r\n this.filter.municipality = null;\r\n this.filter.colony = null;\r\n this.changeFilter.emit({type: 'propertyType', payload: {filter: this.filter, value: this.filtersForm.value}});\r\n }\r\n\r\n changeOffering(ev: string): void {\r\n this._lastState = Object.assign([], this.filter.state);\r\n this.filter.locationType = 'STATE';\r\n this.filter.state = null;\r\n this.filter.municipality = null;\r\n this.filter.colony = null;\r\n this.filter.offering = ev as OfferingTypeEnum;\r\n this.changeFilter.emit({type: 'offer', payload: {filter: this.filter, value: this.filtersForm.value}});\r\n }\r\n\r\n changeCurrency(ev: string): void {\r\n this.filter.currency = ev;\r\n this.changeFilterStatus();\r\n }\r\n\r\n changeState(ev: string): void {\r\n this.filter.state = ev;\r\n this.changeFilterStatus();\r\n }\r\n\r\n updateAmenity(amenity: AmenityItem): void {\r\n if (amenity.checked) {\r\n const i = this.filter.extras.indexOf(amenity.value);\r\n if (i > -1) {\r\n this.filter.extras.splice(i, 1);\r\n }\r\n } else {\r\n this.filter.extras.push(amenity.value);\r\n }\r\n amenity.checked = !amenity.checked;\r\n this.changeFilterStatus();\r\n }\r\n\r\n saveSearchByFilters(): void {\r\n this.applyFilters(FiltersChangeType.SAVE);\r\n }\r\n\r\n applyFilters(type?: FiltersChangeType): void {\r\n this.getFilterByForm();\r\n const filterToSearch = Object.assign({}, this.filter);\r\n if (this.surfaceUnitSelected === 1) {\r\n filterToSearch.mainArea = filterToSearch.mainArea * this.METERS_TO_SQ;\r\n }\r\n this.updateFiltersSaved(filterToSearch);\r\n this._service.setChange({\r\n type: type || FiltersChangeType.APPLY,\r\n filter: filterToSearch,\r\n ft: this.surfaceUnitSelected === 1,\r\n isSharedProperties: this._isSharedProperties\r\n });\r\n this.openComponent(false);\r\n }\r\n\r\n resetFilters(propertyTypeItemIndex?: number): void {\r\n this.filter.currency = !propertyTypeItemIndex ? 'MXN' : this.filter.currency;\r\n this.initComponentByPropertyType(propertyTypeItemIndex);\r\n this.surfaceUnitSelected = 0;\r\n this.filter = propertyTypeItemIndex ? Utils.getFilterByPropertyType(this.filter) : Utils.getInitialFilter(this.isOPI, this.filter);\r\n this.updateFormByFilters();\r\n this.setPrices();\r\n this.propertyTotal = 0;\r\n }\r\n\r\n private buildForm(): void {\r\n this.filtersForm = this._formBuilder.group({\r\n state: ['', [Validators.required]],\r\n offering: [],\r\n currency: [],\r\n minPrice: ['', [Validators.required, Validators.pattern(new RegExp('(^[0-9]+)'))]],\r\n maxPrice: ['', [Validators.required, Validators.pattern(new RegExp('(^[0-9]+)'))]],\r\n bedrooms: [],\r\n bathrooms: [],\r\n parkingPlaces: [],\r\n surface: [],\r\n surfaceUnit: [],\r\n roi: []\r\n }, {\r\n validator: CurrencyFilterValidator('minPrice', 'maxPrice')\r\n });\r\n }\r\n\r\n changeFilterStatus(): void {\r\n this.getFilterByForm();\r\n const filterToSearch = Object.assign({}, this.filter);\r\n if (this.surfaceUnitSelected === 1) {\r\n filterToSearch.mainArea = filterToSearch.mainArea * this.METERS_TO_SQ;\r\n }\r\n this.changeFilter.emit({type: 'filter', payload: {filter: this.filter, value: filterToSearch}});\r\n }\r\n\r\n private updateFormByFilters(): void {\r\n this.filtersForm.patchValue({\r\n state: this.filter.state,\r\n offering: this.filter.offering,\r\n currency: this.filter.currency,\r\n minPrice: this.filter.downLimitPrice,\r\n maxPrice: this.filter.upLimitPrice,\r\n bedrooms: this.filter.bedrooms,\r\n bathrooms: this.filter.bathrooms,\r\n parkingPlaces: this.filter.parkingPlaces,\r\n surface: this.filter.mainArea,\r\n surfaceUnit: this.surfaceUnitSelected,\r\n roi: this.filter.roi\r\n });\r\n }\r\n\r\n private getFilterByForm(): void {\r\n const data = this.filtersForm.value;\r\n this.filter.state = data.state;\r\n this.filter.offering = data.offering;\r\n this.filter.currency = data.currency;\r\n this.filter.downLimitPrice = Number(data.minPrice);\r\n this.filter.upLimitPrice = Number(data.maxPrice);\r\n this.filter.bedrooms = Number(data.bedrooms);\r\n this.filter.bathrooms = Number(data.bathrooms);\r\n this.filter.parkingPlaces = Number(data.parkingPlaces);\r\n this.filter.mainArea = Number(data.surface);\r\n this.surfaceUnitSelected = Number(data.surfaceUnit);\r\n this.filter.roi = Number(data.roi);\r\n }\r\n\r\n private initComponent(): void {\r\n this.initUtils();\r\n this._subscription.add(\r\n this._service.getChanges().subscribe((response: FiltersChange) => {\r\n switch (response.type) {\r\n case FiltersChangeType.LIST_TYPE:\r\n this._isSharedProperties = response.isSharedProperties;\r\n this.updateFiltersSaved(response.filter);\r\n break;\r\n case FiltersChangeType.AREA:\r\n this.updateFiltersSaved(response.filter);\r\n break;\r\n }\r\n })\r\n );\r\n this._service.startComponent(new FiltersWrapper(this));\r\n }\r\n\r\n private initUtils(): void {\r\n this.currencyList = this.utils.cers;\r\n this.setPrices();\r\n }\r\n\r\n private setPrices(to?: Currency): void {\r\n this.filtersForm.controls['minPrice'].reset(0);\r\n this.filtersForm.controls['maxPrice'].reset(0);\r\n const offering = this.filtersForm.controls['offering'].value;\r\n this.minPriceList = this.createPrices(this.utils.limitPrice, this.propertyTypeSelected.value, offering);\r\n this.minPriceList = this._converter.list(this.minPriceList, this.utils.cers, Currency.USD, to || this.filter.currency as Currency);\r\n this.maxPriceList = Object.assign([], this.minPriceList);\r\n this._tmpMinPriceList = Object.assign([], this.minPriceList);\r\n this._tmpMaxPriceList = Object.assign([], this.maxPriceList);\r\n }\r\n\r\n private applyAmenities(): void {\r\n this.propertyTypeSelected.amenities = this.propertyTypeSelected.amenities.map(amenity => {\r\n const i = this.filter.extras.indexOf(amenity.value);\r\n amenity.checked = (i > -1);\r\n return amenity;\r\n });\r\n this.propertyTypeSelected.features = this.propertyTypeSelected.features.map(amenity => {\r\n const i = this.filter.extras.indexOf(amenity.value);\r\n amenity.checked = (i > -1);\r\n return amenity;\r\n });\r\n }\r\n\r\n private createPrices(limitPrice: LimitPrice, propertyType: PropertyTypeEnum, offering: OfferingTypeEnum): number[] {\r\n let list: number[] = [];\r\n limitPrice.propertyRanges.forEach((range: PropertyRange) => {\r\n if (range.offering === offering && range.type === propertyType) {\r\n list = MUtils.linSpaceExp(range.min, range.max, 20);\r\n }\r\n });\r\n return list;\r\n }\r\n\r\n private initComponentByPropertyType(propertyTypeItemIndex: number = null): void {\r\n this.propertyTypeSelected = JSON.parse(\r\n JSON.stringify(ConstantsComponents.PropertyTypeList[propertyTypeItemIndex !== null ? propertyTypeItemIndex : 9]));\r\n }\r\n\r\n private updateFiltersSaved(filters: Filter): void {\r\n this.filter = filters;\r\n FiltersService.saveFilters({\r\n filters: filters,\r\n ft: this.surfaceUnitSelected === 1,\r\n isSharedProperties: this._isSharedProperties || false\r\n });\r\n }\r\n\r\n private restoreLastFiltersSaved(init?: boolean): void {\r\n const filtersSaved = FiltersService.getFiltersSaved() || null;\r\n this.filter = filtersSaved ? filtersSaved.filters : Utils.getInitialFilter(this.isOPI);\r\n if (filtersSaved) {\r\n if (filtersSaved.ft) {\r\n this.filter.mainArea = Number((this.filter.mainArea / this.METERS_TO_SQ).toFixed(0));\r\n this.surfaceUnitSelected = filtersSaved.ft ? 1 : 0;\r\n }\r\n this._isSharedProperties = filtersSaved.isSharedProperties || false;\r\n }\r\n this.propertyTypeSelected = ConstantsComponents.PropertyTypeList.find(item => item.value === this.filter.type);\r\n this.applyAmenities();\r\n this.updateFormByFilters();\r\n if (init) {\r\n this.applyFilters(FiltersChangeType.INIT);\r\n }\r\n }\r\n\r\n private openComponent(open: boolean): void {\r\n if (open) {\r\n this.changeFilter.emit({type: 'init', payload: {filter: null, value: null}});\r\n this._render.setStyle(this._ref.nativeElement, 'visibility', 'visible');\r\n this._render.setStyle(this._ref.nativeElement, 'opacity', '1');\r\n } else {\r\n this._render.setStyle(this._ref.nativeElement, 'opacity', '0');\r\n this._render.setStyle(this._ref.nativeElement, 'visibility', 'collapse');\r\n }\r\n }\r\n\r\n private listenChangesOnForm(): void {\r\n this._subscription.add(\r\n this.filtersForm.controls['offering'].valueChanges.subscribe(() => {\r\n this.setPrices();\r\n })\r\n );\r\n this._subscription.add(\r\n this.filtersForm.controls['currency'].valueChanges.subscribe(value => {\r\n if (!value) {\r\n return;\r\n }\r\n this.setPrices(value.toString() as Currency);\r\n })\r\n );\r\n this._subscription.add(\r\n this.filtersForm.controls['minPrice'].valueChanges.subscribe((value) => {\r\n if (!value) {\r\n return;\r\n }\r\n this.maxPriceList = Object.assign([], this._tmpMaxPriceList);\r\n const i = this.minPriceList.indexOf(value);\r\n if (i > -1) {\r\n this.maxPriceList.splice(0, i + 1);\r\n }\r\n })\r\n );\r\n this._subscription.add(\r\n this.filtersForm.controls['maxPrice'].valueChanges.subscribe(value => {\r\n if (!value) {\r\n return;\r\n }\r\n this.minPriceList = Object.assign([], this._tmpMinPriceList);\r\n const i = this.maxPriceList.indexOf(value);\r\n if (i > -1) {\r\n const difference = this.minPriceList.length - this.maxPriceList.length;\r\n this.minPriceList.splice(i + difference, this.minPriceList.length - 1);\r\n }\r\n })\r\n );\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {CurrencyConverterService} from './currency-converter.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class CurrencyConverterModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: CurrencyConverterModule,\r\n providers: [\r\n CurrencyConverterService\r\n ]\r\n };\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FiltersComponent} from './filters.component';\r\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatFormFieldModule} from '@angular/material/form-field';\r\nimport {MatSelectModule} from '@angular/material/select';\r\nimport {MatDividerModule} from '@angular/material/divider';\r\nimport {MarkerPriceModule} from './../../pipes/marker-price/marker-price.module';\r\nimport {CurrencyConverterModule} from './../../services/currency-converter/currency-converter.module';\r\nimport {FiltersService} from './filters.service';\r\nimport {FILTERS_TOKEN} from './token';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {MatRippleModule} from '@angular/material/core';\r\nimport { MatInputModule } from '@angular/material';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatRippleModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatButtonToggleModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatDividerModule,\r\n MatInputModule,\r\n MarkerPriceModule.forChild(),\r\n CurrencyConverterModule.forChild()\r\n ],\r\n declarations: [\r\n FiltersComponent\r\n ],\r\n exports: [\r\n FiltersComponent\r\n ],\r\n providers: [\r\n FiltersService\r\n ]\r\n})\r\nexport class FiltersModule {\r\n static forChild(isOPI?: boolean): ModuleWithProviders {\r\n return {\r\n ngModule: FiltersModule,\r\n providers: [\r\n FiltersService,\r\n {\r\n provide: FILTERS_TOKEN,\r\n useValue: isOPI || false\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import {AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild} from '@angular/core';\r\nimport {LazyLoadService} from '@maplander/shared';\r\nimport {Observable, of} from 'rxjs';\r\nimport {fromPromise} from 'rxjs/internal-compatibility';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\n\r\ndeclare var PANOLENS: any;\r\ndeclare var DeviceOrientationEvent: any;\r\ndeclare var DeviceMotionEvent: any;\r\n\r\n@Component({\r\n selector: 'lib-panorama-visor',\r\n templateUrl: './panorama-visor.component.html',\r\n styleUrls: ['./panorama-visor.component.scss']\r\n})\r\nexport class PanoramaVisorComponent implements AfterViewInit, OnDestroy {\r\n @Input() url: string;\r\n @ViewChild('container', {static: true}) private _container: ElementRef;\r\n private _panorama: any;\r\n private _viewer: any;\r\n public isTouch: boolean;\r\n public showPanorama: boolean;\r\n public isFullScreen: boolean;\r\n\r\n constructor(\r\n private _lazy: LazyLoadService\r\n ) {\r\n }\r\n\r\n private static checkTouchSupported(): boolean {\r\n return window ? (\r\n window.navigator.msMaxTouchPoints !== null &&\r\n window.navigator.msMaxTouchPoints !== undefined)\r\n || 'ontouchstart' in window : false;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.url || this.url === '') {\r\n return;\r\n }\r\n this._lazy.load('https://pchen66.github.io/js/three/three.min.js').then(() => {\r\n return this._lazy.load('https://rawgit.com/pchen66/panolens.js/dev/build/panolens.min.js');\r\n }).then(() => {\r\n setTimeout(() => {\r\n this.showPanorama = true;\r\n this.init();\r\n }, 500);\r\n }).catch((e) => {\r\n console.log('Failed', e);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._panorama) {\r\n this._panorama.dispose();\r\n }\r\n if (this._viewer) {\r\n this._viewer.dispose();\r\n this._viewer.destroy();\r\n }\r\n }\r\n\r\n fullscreen(): void {\r\n this.toggleFullscreen();\r\n }\r\n\r\n changeControl(type: 'TOUCH' | 'MOUSE' | 'SENSOR'): void {\r\n if (!this._viewer) {\r\n return;\r\n }\r\n switch (type) {\r\n case 'MOUSE':\r\n case 'TOUCH':\r\n this._viewer.enableControl(PANOLENS.CONTROLS.ORBIT);\r\n break;\r\n case 'SENSOR':\r\n this.requestPermissions().subscribe((value) => {\r\n if (value) {\r\n this._viewer.enableControl(PANOLENS.CONTROLS.DEVICEORIENTATION);\r\n } else {\r\n if (confirm(`No se otorgarón los permisos de movimiento y orientación, ¿desea ir a ajustes?`)) {\r\n window.location.href = 'prefs:root=Safari';\r\n } else {\r\n alert('Permisos de movimiento y orientación no otorgados');\r\n }\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n\r\n changeMode(mode: 'NORMAL' | 'CARDBOARD' | 'STEREOSCOPIC'): void {\r\n if (!this._viewer) {\r\n return;\r\n }\r\n switch (mode) {\r\n case 'NORMAL':\r\n this._viewer.disableEffect();\r\n break;\r\n case 'CARDBOARD':\r\n this._viewer.enableEffect(PANOLENS.MODES.CARDBOARD);\r\n break;\r\n case 'STEREOSCOPIC':\r\n this._viewer.enableEffect(PANOLENS.MODES.STEREO);\r\n break;\r\n }\r\n }\r\n\r\n private init(): void {\r\n try {\r\n this.isTouch = PanoramaVisorComponent.checkTouchSupported();\r\n this._panorama = new PANOLENS.ImagePanorama(this.url);\r\n this._viewer = new PANOLENS.Viewer({container: this._container.nativeElement, controlBar: true, controlButtons: []});\r\n this._viewer.onWindowResize(this._container.nativeElement.offsetWidth, this._container.nativeElement.offsetHeight);\r\n this._viewer.add(this._panorama);\r\n } catch (e) {\r\n console.log('Failed', e);\r\n }\r\n }\r\n\r\n private toggleFullscreen(): void {\r\n const doc: any = window.document;\r\n const docEl: any = this._container.nativeElement;\r\n const requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen ||\r\n docEl.webkitRequestFullScreen || docEl.msRequestFullscreen;\r\n const cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen;\r\n if (!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement && !doc.msFullscreenElement) {\r\n requestFullScreen.call(docEl);\r\n this.isFullScreen = true;\r\n } else {\r\n cancelFullScreen.call(doc);\r\n this.isFullScreen = false;\r\n }\r\n }\r\n\r\n private requestPermissions(): Observable<boolean> {\r\n const success = of(true), failed = of(false);\r\n if (typeof DeviceMotionEvent.requestPermission === 'function') {\r\n return fromPromise(DeviceOrientationEvent.requestPermission()).pipe(\r\n mergeMap((response) => {\r\n if (response === 'granted') {\r\n return fromPromise(DeviceMotionEvent.requestPermission()).pipe(\r\n map((response2) => {\r\n return response2 === 'granted';\r\n })\r\n );\r\n } else {\r\n return failed;\r\n }\r\n })\r\n );\r\n } else {\r\n return success;\r\n }\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {PanoramaVisorComponent} from './panorama-visor.component';\r\nimport {LazyLoaderModule} from '@maplander/shared';\r\nimport {MatButtonModule, MatIconModule, MatMenuModule} from '@angular/material';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatMenuModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n LazyLoaderModule.forChild()\r\n ],\r\n declarations: [\r\n PanoramaVisorComponent\r\n ],\r\n exports: [\r\n PanoramaVisorComponent\r\n ]\r\n})\r\nexport class PanoramaVisorModule {\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {PFile, PFileTypeEnum, UserMedia} from '@maplander/types';\r\n\r\ninterface MultimediaUploaderData {\r\n currentType: PFileTypeEnum;\r\n multimedia: PFile[];\r\n newMedia: UserMedia[];\r\n}\r\n\r\n@Component({\r\n selector: 'lib-property-multimedia-uploader',\r\n templateUrl: './multimedia-uploader.component.html',\r\n styleUrls: ['./multimedia-uploader.component.scss']\r\n})\r\nexport class MultimediaUploaderComponent implements OnInit {\r\n\r\n public fileType: 'image' | 'image360' | 'document';\r\n public images: PFile[];\r\n public images360: PFile[];\r\n public videos: PFile[];\r\n public currentIndex: number;\r\n private _newMedia: UserMedia[];\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private _data: MultimediaUploaderData,\r\n private _dialog: MatDialogRef<MultimediaUploaderComponent, { multimedia: PFile[], newMedia: UserMedia[] }>\r\n ) {\r\n switch (this._data.currentType) {\r\n case PFileTypeEnum.IMAGE:\r\n this.fileType = 'image';\r\n this.currentIndex = 0;\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.fileType = 'image360';\r\n this.currentIndex = 1;\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.fileType = 'document';\r\n this.currentIndex = 2;\r\n break;\r\n }\r\n this.images = [];\r\n this.images360 = [];\r\n this.videos = [];\r\n this._newMedia = [];\r\n }\r\n\r\n private static getYouTubeID(text: string): string {\r\n if (text.indexOf('https://youtu.be/') !== -1) {\r\n text = text.replace('https://youtu.be/', '');\r\n return text;\r\n } else if (text.indexOf('https://www.youtube.com/') !== -1) {\r\n text = text.replace('https://www.youtube.com/', '');\r\n } else {\r\n return text = null;\r\n }\r\n if (text.indexOf('watch?v=') !== -1) {\r\n text = text.replace('watch?v=', '');\r\n } else {\r\n return text = null;\r\n }\r\n if (text.indexOf('&')) {\r\n const arr = text.split('&');\r\n text = arr[0];\r\n }\r\n return text;\r\n }\r\n\r\n ngOnInit() {\r\n this.parseMultimedia();\r\n }\r\n\r\n onUploadImage(ev: UserMedia | UserMedia[]): void {\r\n if (!ev) {\r\n return;\r\n }\r\n switch (this.fileType) {\r\n case 'image':\r\n if (Array.isArray(ev)) {\r\n ev.forEach(image => {\r\n this.createImagePFile(image);\r\n });\r\n } else {\r\n this.createImagePFile(ev);\r\n }\r\n break;\r\n case 'image360':\r\n if (Array.isArray(ev)) {\r\n ev.forEach(image => {\r\n this.createImage360PFile(image);\r\n });\r\n } else {\r\n this.createImage360PFile(ev);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n onTabChanged(tab: number): void {\r\n this.currentIndex = tab;\r\n switch (tab) {\r\n case 0:\r\n this.fileType = 'image';\r\n break;\r\n case 1:\r\n this.fileType = 'image360';\r\n break;\r\n }\r\n }\r\n\r\n onListChanged(ev: PFile[]): void {\r\n switch (this.currentIndex) {\r\n case 0:\r\n if (Array.isArray(ev) && ev.length > 0) {\r\n ev = ev.map((item, index) => {\r\n item.position = index;\r\n return item;\r\n });\r\n this.images = ev;\r\n }\r\n break;\r\n case 1:\r\n if (Array.isArray(ev) && ev.length > 0) {\r\n ev = ev.map((item, index) => {\r\n item.position = index;\r\n return item;\r\n });\r\n this.images360 = ev;\r\n }\r\n break;\r\n case 2:\r\n if (Array.isArray(ev) && ev.length > 0) {\r\n ev = ev.map((item, index) => {\r\n item.position = index;\r\n return item;\r\n });\r\n this.videos = ev;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n removeMedia(ev: PFile): void {\r\n let i = -1;\r\n if (!ev.id) {\r\n switch (ev.type) {\r\n case PFileTypeEnum.IMAGE:\r\n this.images.splice(this.images.indexOf(ev), 1);\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.images360.splice(this.images360.indexOf(ev), 1);\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.videos.splice(this.videos.indexOf(ev), 1);\r\n break;\r\n }\r\n this._newMedia.forEach((item, index) => {\r\n if (item.url === ev.fileCS.thumbnail) {\r\n i = index;\r\n }\r\n });\r\n if (i > -1) {\r\n this._newMedia.splice(i, 1);\r\n }\r\n } else {\r\n switch (ev.type) {\r\n case PFileTypeEnum.IMAGE:\r\n this.images.splice(this.images.indexOf(ev), 1);\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.images360.splice(this.images360.indexOf(ev), 1);\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.videos.splice(this.videos.indexOf(ev), 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n onYouTubeInputTextChanged(input: HTMLInputElement): void {\r\n if (input.value === '') {\r\n return;\r\n }\r\n const id = MultimediaUploaderComponent.getYouTubeID(input.value);\r\n if (!id) {\r\n return;\r\n }\r\n if (id.length >= 11) {\r\n const file = new PFile();\r\n file.type = PFileTypeEnum.VIDEO;\r\n file.media = true;\r\n file.name = `video_${new Date().getTime()}`;\r\n file.fileCS = {\r\n thumbnail: id,\r\n blobName: null\r\n };\r\n file.position = this.videos.length === 0 ? 0 : this.videos.length;\r\n this.videos.push(file);\r\n input.value = '';\r\n }\r\n }\r\n\r\n accept(): void {\r\n this._dialog.close({multimedia: this.joinMultimediaTypes(), newMedia: this._newMedia});\r\n }\r\n\r\n close(): void {\r\n this._dialog.close(null);\r\n }\r\n\r\n private createImagePFile(image: UserMedia): void {\r\n const file = new PFile();\r\n file.type = PFileTypeEnum.IMAGE;\r\n image.type = PFileTypeEnum.IMAGE;\r\n file.media = true;\r\n file.fileCS = {\r\n thumbnail: image.url,\r\n blobName: null\r\n };\r\n const fileName = `image_${Date.now()}_${Math.round(Math.random() * 1000000)}.${image.blob.type.replace('image/', '')}`;\r\n file.name = fileName;\r\n image.name = fileName;\r\n file.position = this.images.length === 0 ? 0 : this.images.length;\r\n this._newMedia.push(image);\r\n this.images.push(file);\r\n }\r\n\r\n private createImage360PFile(image: UserMedia): void {\r\n const file = new PFile();\r\n file.type = PFileTypeEnum.SPHERIC;\r\n image.type = PFileTypeEnum.SPHERIC;\r\n file.media = true;\r\n const fileName = `spheric_${Date.now()}_${Math.round(Math.random() * 1000000)}.${image.blob.type.replace('image/', '')}`;\r\n file.name = fileName;\r\n image.name = fileName;\r\n file.fileCS = {\r\n thumbnail: image.url,\r\n blobName: null\r\n };\r\n file.position = this.images360.length === 0 ? 0 : this.images360.length;\r\n this._newMedia.push(image);\r\n this.images360.push(file);\r\n }\r\n\r\n private parseMultimedia(): void {\r\n if (this._data) {\r\n this._data.multimedia.forEach(item => {\r\n switch (item.type) {\r\n case PFileTypeEnum.IMAGE:\r\n this.images.push(item);\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.images360.push(item);\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.videos.push(item);\r\n break;\r\n }\r\n });\r\n this._newMedia = this._data.newMedia || [];\r\n }\r\n }\r\n\r\n private joinMultimediaTypes(): PFile[] {\r\n let response = [];\r\n response = response.concat(this.images);\r\n response = response.concat(this.images360);\r\n response = response.concat(this.videos);\r\n return response;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {PFile, PFileTypeEnum, UserMedia} from '@maplander/types';\r\nimport {MultimediaUploaderComponent} from './multimedia-uploader.component';\r\n\r\n@Injectable()\r\nexport class MultimediaUploaderService {\r\n\r\n constructor(\r\n private _dialog: MatDialog\r\n ) {\r\n }\r\n\r\n open(currentType: PFileTypeEnum, multimedia?: PFile[], newMedia?: UserMedia[]): MatDialogRef<MultimediaUploaderComponent> {\r\n return this._dialog.open<MultimediaUploaderComponent, {currentType: PFileTypeEnum, multimedia: PFile[], newMedia: UserMedia[]},\r\n {currentType: PFileTypeEnum, multimedia: PFile[], newMedia: UserMedia[]}>\r\n (MultimediaUploaderComponent, {\r\n data: {currentType: currentType || PFileTypeEnum.IMAGE, multimedia: multimedia || [], newMedia: newMedia || []},\r\n panelClass: 'multimedia-uploader-panel-class',\r\n disableClose: true\r\n });\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {MatDialogRef} from '@angular/material/dialog';\r\nimport {DialogResponse, DialogResponseType} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../../../constantsComponents';\r\n\r\n@Component({\r\n selector: 'lib-property-announce-confirm',\r\n templateUrl: './announce-confirm.component.html',\r\n styleUrls: ['./announce-confirm.component.scss']\r\n})\r\nexport class AnnounceConfirmComponent {\r\n\r\n public list: { name: string, value: number, checked: boolean }[];\r\n public errorField: boolean;\r\n constructor(\r\n private _dialogRef: MatDialogRef<AnnounceConfirmComponent, DialogResponse<any>>\r\n ) {\r\n this.list = ConstantsComponents.AnnounceCheckList.map(item => ({...item}));\r\n }\r\n\r\n public close(): void {\r\n this._dialogRef.close({code: DialogResponseType.CANCEL});\r\n }\r\n\r\n public accept(): void {\r\n this.errorField = false;\r\n this.list.forEach(item => {\r\n if (!item.checked) {\r\n this.errorField = true;\r\n }\r\n });\r\n if (this.errorField) {\r\n return;\r\n }\r\n this._dialogRef.close({code: DialogResponseType.ACCEPT});\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {DialogResponse} from '@maplander/types';\r\nimport {AnnounceConfirmComponent} from './announce-confirm.component';\r\n\r\n@Injectable()\r\nexport class AnnounceConfirmService {\r\n\r\n constructor(private _dialog: MatDialog) {\r\n }\r\n\r\n public open():\r\n MatDialogRef<AnnounceConfirmComponent, DialogResponse<any>> {\r\n return this._dialog.open(AnnounceConfirmComponent, {\r\n disableClose: true,\r\n panelClass: 'confirm-announce-panel-class'\r\n });\r\n }\r\n}\r\n","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {PFile, PFileTypeEnum} from '@maplander/types';\r\nimport {BreakpointObserver} from '@angular/cdk/layout';\r\nimport {GalleryConfig} from './gallery.service';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-gallery',\r\n templateUrl: './gallery.component.html',\r\n styleUrls: ['./gallery.component.scss']\r\n})\r\nexport class GalleryComponent implements OnInit, OnDestroy {\r\n\r\n public multimedia: PFile[];\r\n public sideOpened: boolean;\r\n public typeSelected: 'IMAGE' | 'VIDEO' | 'SPHERIC';\r\n public indexSelected: number;\r\n public count: {\r\n image: number,\r\n video: number,\r\n sphere: number\r\n };\r\n private _mobileVersion: boolean;\r\n private _subscription: Subscription;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private _data: GalleryConfig,\r\n private _ref: MatDialogRef<GalleryComponent>,\r\n private _breakpointObserver: BreakpointObserver\r\n ) {\r\n this._subscription = new Subscription();\r\n this.multimedia = this.getPFilesByType(PFileTypeEnum.IMAGE, this._data.multimedia || []);\r\n this.sideOpened = true;\r\n this.indexSelected = this._data.indexSelected;\r\n this.typeSelected = 'IMAGE';\r\n this.count = {\r\n image: 0,\r\n sphere: 0,\r\n video: 0\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n this._subscription.add(\r\n this._breakpointObserver.observe(['(max-width: 1024px)']).subscribe((state) => {\r\n this._mobileVersion = state.matches;\r\n })\r\n );\r\n this.assignCountByType();\r\n this.assignMultimediaByType();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n close(): void {\r\n this._ref.close();\r\n }\r\n\r\n updateSideNav(): void {\r\n this.sideOpened = !this.sideOpened;\r\n }\r\n\r\n selectPFile(index: number): void {\r\n this.indexSelected = index;\r\n if (this._mobileVersion) {\r\n this.updateSideNav();\r\n }\r\n }\r\n\r\n onIndexSelectedChange(ev: number): void {\r\n this.indexSelected = ev;\r\n }\r\n\r\n changePFileType(type: 'IMAGE' | 'VIDEO' | 'SPHERIC'): void {\r\n this.indexSelected = 0;\r\n this.typeSelected = type;\r\n const pFileType = type as PFileTypeEnum;\r\n this.multimedia = this.getPFilesByType(pFileType, this._data.multimedia);\r\n }\r\n\r\n private assignCountByType(): void {\r\n this.count.image = this.getPFilesByType(PFileTypeEnum.IMAGE, this._data.multimedia).length;\r\n this.count.video = this.getPFilesByType(PFileTypeEnum.VIDEO, this._data.multimedia).length;\r\n this.count.sphere = this.getPFilesByType(PFileTypeEnum.SPHERIC, this._data.multimedia).length;\r\n }\r\n\r\n private assignMultimediaByType(): void {\r\n if (this._data.type) {\r\n this.typeSelected = this._data.type;\r\n this.multimedia = this.getPFilesByType(this.typeSelected as PFileTypeEnum, this._data.multimedia);\r\n }\r\n }\r\n\r\n private getPFilesByType(type: PFileTypeEnum, list: PFile[]): PFile[] {\r\n return list.filter(item => {\r\n return (item.type === type);\r\n }) || [];\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {PFile} from '@maplander/types';\r\nimport {GalleryComponent} from './gallery.component';\r\n\r\nexport interface GalleryConfig {\r\n multimedia: PFile[];\r\n indexSelected: number;\r\n type: 'IMAGE' | 'VIDEO' | 'SPHERIC';\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class GalleryService {\r\n\r\n constructor(\r\n private _dialog: MatDialog\r\n ) {\r\n }\r\n\r\n public open(multimedia: PFile[], indexSelected?: number, type?: 'IMAGE' | 'VIDEO' | 'SPHERIC'): MatDialogRef<GalleryComponent> {\r\n return this._dialog.open<GalleryComponent, GalleryConfig>(\r\n GalleryComponent, {\r\n data: {\r\n multimedia: multimedia || [],\r\n indexSelected: indexSelected || 0,\r\n type: type || null\r\n },\r\n disableClose: true,\r\n panelClass: 'gallery_dialog'\r\n });\r\n }\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\n\r\nexport const PROPERTY_TOKEN = new InjectionToken<boolean>('PROPERTY MODULE CONFIG');\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material';\r\nimport {LeadInfo} from '@maplander/types';\r\n\r\n@Component({\r\n selector: 'lib-stats',\r\n templateUrl: './stats.component.html',\r\n styleUrls: ['./stats.component.scss']\r\n})\r\nexport class StatsComponent implements OnInit {\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: LeadInfo,\r\n private _dialogRef: MatDialogRef<StatsComponent>\r\n ) {\r\n this.data = new LeadInfo(this.data || null);\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n close(): void {\r\n this._dialogRef.close();\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog} from '@angular/material';\r\nimport {StatsComponent} from './stats.component';\r\nimport {LeadInfo} from '@maplander/types';\r\n\r\n@Injectable()\r\nexport class StatsService {\r\n\r\n constructor(\r\n private _dialog: MatDialog\r\n ) {\r\n }\r\n\r\n open(leadInfo: LeadInfo): void {\r\n this._dialog.open<void, LeadInfo>(StatsComponent, {\r\n data: leadInfo || null,\r\n panelClass: 'stats-panel-class'\r\n });\r\n }\r\n}\r\n","import {Component, EventEmitter, Inject, Input, OnChanges, OnInit, Optional, Output, SimpleChanges} from '@angular/core';\r\nimport {\r\n Address,\r\n AppUtil,\r\n DialogResponseType,\r\n NewCompleteProperty,\r\n NewProperty,\r\n PFile,\r\n PFileTypeEnum,\r\n PropertyInfo,\r\n PropertyTypeEnum,\r\n StatusTypeEnum,\r\n UserMedia\r\n} from '@maplander/types';\r\nimport {SnackBarService} from '@maplander/core';\r\nimport {EditorComponent} from '../editor/editor.component';\r\nimport {OwnerInfoComponent} from '../owner-info/owner-info.component';\r\nimport {DocumentsComponent} from '../documents/documents.component';\r\nimport {MultimediaUploaderService} from '../multimedia-uploader/multimedia-uploader.service';\r\nimport {AnnounceConfirmService} from '../announce-confirm/announce-confirm.service';\r\nimport {DocumentVisorService} from '../../../document-visor/document-visor.service';\r\nimport {Utils} from '../../../../utils';\r\nimport {ShareService} from '@maplander/shared';\r\nimport {GalleryService} from '../gallery/gallery.service';\r\nimport {PROPERTY_TOKEN} from '../../token';\r\nimport {StatsService} from '../stats/stats.service';\r\n\r\nexport enum PropertyEventType {\r\n CREATE = 'CREATE',\r\n UPDATE = 'UPDATE',\r\n ANNOUNCE = 'ANNOUNCE',\r\n HIDE = 'HIDE',\r\n SHOW = 'SHOW',\r\n ADDRESS = 'ADDRESS',\r\n OFFER = 'OFFER',\r\n FAVORITE = 'FAVORITE',\r\n REQUEST_INFO = 'REQUEST_INFO',\r\n SHARE = 'SHARE',\r\n ARCHIVE = 'ARCHIVE',\r\n REAL_ESTATE_EXCHANGE = 'REAL_ESTATE_EXCHANGE',\r\n SHARE_COMMISSION = 'SHARE_COMMISSION',\r\n BROCHURE = 'BROCHURE',\r\n POSTER = 'POSTER',\r\n CLIENTS = 'CLIENTS',\r\n BACK = 'BACK',\r\n SHOW_AGENTS = 'SHOW_AGENTS',\r\n TARPS = 'TARPS'\r\n}\r\n\r\nexport interface PropertyEventChange {\r\n type: PropertyEventType;\r\n payload?: any;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-property',\r\n templateUrl: './property.component.html',\r\n styleUrls: ['./property.component.scss']\r\n})\r\nexport class PropertyComponent implements OnInit, OnChanges {\r\n @Input() property: NewCompleteProperty;\r\n @Input() utils: AppUtil;\r\n @Input() propertyType: PropertyTypeEnum;\r\n @Input() mode: 'detail' | 'record' | 'add';\r\n @Input() sharedProperty: { isShared: boolean, ownerAvailable: boolean } = {isShared: false, ownerAvailable: true};\r\n @Input() address: Address;\r\n @Input() mlsLabel: string;\r\n @Input() disableShareCommission: boolean;\r\n @Input() isFavorite: boolean;\r\n @Input() disableConfirmAnnounce: boolean;\r\n @Input() currencyConverted: { currency: string, price: number };\r\n @Input() userUrl: string;\r\n @Output() change: EventEmitter<PropertyEventChange>;\r\n @Output() modeChange: EventEmitter<'detail' | 'record' | 'add'>;\r\n public multimedia: PFile[];\r\n public isOPI: boolean;\r\n public currentIndex: number;\r\n public frontImageError: boolean;\r\n public currentType: PFileTypeEnum;\r\n public multimediaCount: {\r\n images: number,\r\n images360: number,\r\n videos: number\r\n };\r\n public completeProperty: NewCompleteProperty;\r\n private _allMultimedia: PFile[];\r\n private _newMedia: UserMedia[];\r\n private _editorInstance: EditorComponent;\r\n private _ownerInstance: OwnerInfoComponent;\r\n private _documentsInstance: DocumentsComponent;\r\n\r\n constructor(\r\n @Optional() @Inject(PROPERTY_TOKEN) private _config: boolean,\r\n private _uploaderService: MultimediaUploaderService,\r\n private _announceService: AnnounceConfirmService,\r\n private _snackBar: SnackBarService,\r\n private _share: ShareService,\r\n private _gallery: GalleryService,\r\n private _documentService: DocumentVisorService,\r\n private _statsService: StatsService\r\n ) {\r\n this.initCompleteProperty();\r\n this.change = new EventEmitter<PropertyEventChange>();\r\n this.modeChange = new EventEmitter<'detail' | 'record' | 'add'>();\r\n this.disableShareCommission = false;\r\n this.disableConfirmAnnounce = false;\r\n this.currentIndex = 0;\r\n this.multimedia = [];\r\n this._allMultimedia = [];\r\n this._newMedia = [];\r\n this.multimediaCount = {\r\n images: 0,\r\n images360: 0,\r\n videos: 0\r\n };\r\n this.isOPI = this._config || false;\r\n this.currentType = PFileTypeEnum.IMAGE;\r\n }\r\n\r\n ngOnInit() {\r\n // this.agentActions('SHOW_AGENTS');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['property'] && changes['property'].currentValue) {\r\n this.completeProperty = new NewCompleteProperty(changes['property'].currentValue || null);\r\n this.parseMultimedia();\r\n this.assignMultimediaByType();\r\n this.validateMultimediaTypeCount();\r\n }\r\n }\r\n\r\n saveData(): void {\r\n this.restoreFrontImageError();\r\n if (this._editorInstance.validateFormInvalid()) {\r\n this._snackBar.setMessage('Verifique todos los campos obligatorios', 'OK', 5000, 'left', 'bottom');\r\n return;\r\n }\r\n this.parseDataByComponents();\r\n this.change.emit({\r\n type: this.completeProperty.property.id ? PropertyEventType.UPDATE : PropertyEventType.CREATE,\r\n payload: {\r\n property: this.completeProperty,\r\n newMedia: this._newMedia\r\n }\r\n });\r\n }\r\n\r\n agentActions(type: any): void {\r\n this.change.emit({\r\n type: type as PropertyEventType,\r\n payload: {property: this.completeProperty, newMedia: this._newMedia}\r\n });\r\n }\r\n\r\n shareProperty(): void {\r\n this.agentActions('SHARE');\r\n this._share.open({\r\n url: this.completeProperty.property.url,\r\n urlUser: this.userUrl\r\n });\r\n }\r\n\r\n openGallery(): void {\r\n if (this._allMultimedia.length === 0) {\r\n return;\r\n }\r\n let type = null;\r\n if (this.multimedia.length > 0) {\r\n type = this.multimedia[0].type;\r\n }\r\n this._gallery.open(this._allMultimedia, this.currentIndex, type);\r\n }\r\n\r\n goToStats(): void {\r\n this._statsService.open(this.completeProperty.leadInfo || null);\r\n }\r\n\r\n goToEditProperty(): void {\r\n this.mode = 'add';\r\n this.modeChange.emit(this.mode);\r\n }\r\n\r\n goToBack(): void {\r\n this.restoreFrontImageError();\r\n this.change.emit({\r\n type: PropertyEventType.BACK\r\n });\r\n }\r\n\r\n goToClients(): void {\r\n this.change.emit({\r\n type: PropertyEventType.CLIENTS\r\n });\r\n }\r\n\r\n goToUpdateVisibility(): void {\r\n this.change.emit({\r\n type: this.completeProperty.property.status === StatusTypeEnum.ANNOUNCED ? PropertyEventType.HIDE : PropertyEventType.SHOW,\r\n payload: {property: this.completeProperty, newMedia: this._newMedia}\r\n });\r\n }\r\n\r\n goToPublish(): void {\r\n if (this.mode === 'add') {\r\n this.parseDataByComponents();\r\n }\r\n const errors = Utils.getErrorsForPublish(this.completeProperty.property);\r\n if (errors.length > 0) {\r\n this.mode = 'add';\r\n this.modeChange.emit(this.mode);\r\n setTimeout(() => {\r\n this.validateFrontImageOnErrors(errors);\r\n this._editorInstance.setErrorsOnFields(errors);\r\n }, 200);\r\n this._snackBar.setMessage('Complete los campos faltantes para poder publicar', 'OK', 5000, 'left', 'bottom');\r\n } else {\r\n if (this.disableConfirmAnnounce) {\r\n this.change.emit({\r\n type: PropertyEventType.ANNOUNCE,\r\n payload: {property: this.completeProperty, newMedia: this._newMedia}\r\n });\r\n return;\r\n }\r\n this._announceService.open().afterClosed().subscribe((response) => {\r\n if (response.code === DialogResponseType.ACCEPT) {\r\n this.change.emit({\r\n type: PropertyEventType.ANNOUNCE,\r\n payload: {property: this.completeProperty, newMedia: this._newMedia}\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onMultimediaIndexChanged(ev: number): void {\r\n this.currentIndex = ev;\r\n }\r\n\r\n changeMultimediaType(type: string): void {\r\n this.currentType = type as PFileTypeEnum;\r\n this.assignMultimediaByType();\r\n }\r\n\r\n openUploaderMultimedia(): void {\r\n this._uploaderService.open(this.currentType, this._allMultimedia, this._newMedia).afterClosed().subscribe((response) => {\r\n if (response) {\r\n this._newMedia = response.newMedia || [];\r\n this._allMultimedia = Object.assign([], response.multimedia || []);\r\n this.assignFrontImage();\r\n this.assignMultimediaByType();\r\n this.validateMultimediaTypeCount();\r\n }\r\n });\r\n }\r\n\r\n onEditorInstance(ev: EditorComponent): void {\r\n this._editorInstance = ev;\r\n }\r\n\r\n onOwnerInstance(ev: OwnerInfoComponent): void {\r\n this._ownerInstance = ev;\r\n }\r\n\r\n onDocumentsInstance(ev: DocumentsComponent): void {\r\n this._documentsInstance = ev;\r\n }\r\n\r\n onSelectAddress(): void {\r\n this.change.emit({\r\n type: PropertyEventType.ADDRESS\r\n });\r\n }\r\n\r\n private restoreFrontImageError(): void {\r\n this.frontImageError = false;\r\n }\r\n\r\n private parseMultimedia(): void {\r\n this._allMultimedia = [];\r\n this._allMultimedia = this._allMultimedia.concat(this.completeProperty.images || []);\r\n this._allMultimedia = this._allMultimedia.concat(this.completeProperty.videos || []);\r\n this._allMultimedia = this._allMultimedia.concat(this.completeProperty.spherics || []);\r\n }\r\n\r\n private getMultimediaByType(type: PFileTypeEnum): PFile[] {\r\n const response = [];\r\n this._allMultimedia.forEach(item => {\r\n if (item.type === type) {\r\n response.push(item);\r\n }\r\n });\r\n return response;\r\n }\r\n\r\n private assignFrontImage(): void {\r\n const images: PFile[] = [];\r\n this._allMultimedia.forEach(multimedia => {\r\n if (multimedia.type === PFileTypeEnum.IMAGE) {\r\n images.push(multimedia);\r\n }\r\n });\r\n if (images.length > 0) {\r\n this.completeProperty.property.image = images[0].fileCS.thumbnail;\r\n this.frontImageError = false;\r\n } else {\r\n this.completeProperty.property.image = null;\r\n }\r\n this.completeProperty = new NewCompleteProperty(this.completeProperty);\r\n }\r\n\r\n private assignMultimediaByType(): void {\r\n const response = [];\r\n this._allMultimedia.forEach(item => {\r\n if (item.type === this.currentType) {\r\n response.push(item);\r\n }\r\n });\r\n this.multimedia = Object.assign([], response);\r\n }\r\n\r\n private validateFrontImageOnErrors(errors: string[]): void {\r\n errors.forEach(error => {\r\n if (error === 'image') {\r\n this.frontImageError = true;\r\n }\r\n });\r\n }\r\n\r\n private validateMultimediaTypeCount(): void {\r\n this.multimediaCount.images = 0;\r\n this.multimediaCount.images360 = 0;\r\n this.multimediaCount.videos = 0;\r\n this._allMultimedia.forEach(item => {\r\n switch (item.type) {\r\n case PFileTypeEnum.IMAGE:\r\n this.multimediaCount.images++;\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.multimediaCount.images360++;\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.multimediaCount.videos++;\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private parseDataByComponents(): void {\r\n this.completeProperty.property = this._editorInstance.getProperty();\r\n this.completeProperty.property.propertyInfo.owner = this._ownerInstance.getOwner();\r\n const documentsResponse = this._documentsInstance.getDocuments();\r\n this.completeProperty.files = documentsResponse.documents;\r\n this._newMedia = this._newMedia.concat(documentsResponse.newMedia);\r\n this.completeProperty.images = this.getMultimediaByType(PFileTypeEnum.IMAGE);\r\n this.completeProperty.spherics = this.getMultimediaByType(PFileTypeEnum.SPHERIC);\r\n this.completeProperty.videos = this.getMultimediaByType(PFileTypeEnum.VIDEO);\r\n }\r\n\r\n private initCompleteProperty(): void {\r\n const complete = new NewCompleteProperty();\r\n complete.property = new NewProperty();\r\n complete.property.propertyInfo = new PropertyInfo();\r\n this.completeProperty = complete;\r\n }\r\n}\r\n","import {FormGroup} from '@angular/forms';\r\nimport {removeError} from './remove-error';\r\n\r\nexport class PropertyEditorValidators {\r\n static validator(form: FormGroup): void {\r\n // Min price rule\r\n let control = form.get('minPrice');\r\n let condition = Number(control.value) > Number(form.get('price').value);\r\n if (condition) {\r\n control.setErrors({\r\n minPriceInvalid: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'minPriceInvalid');\r\n }\r\n // Commission rule\r\n control = form.get('commission');\r\n condition = control.value && (!form.get('price').value || Number(form.get('price').value) === 0);\r\n if (condition) {\r\n control.setErrors({\r\n commissionInvalid: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'commissionInvalid');\r\n }\r\n // Consumer reporting rule\r\n control = form.get('consumerReportingOption');\r\n condition = form.get('consumerReporting').value && !control.value;\r\n if (condition) {\r\n control.setErrors({\r\n required: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'required');\r\n }\r\n // Lease transfer rule\r\n control = form.get('transferPrice');\r\n condition = form.get('transfer').value && !control.value;\r\n if (condition) {\r\n control.setErrors({\r\n required: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'required');\r\n }\r\n // Condominium fee rule\r\n control = form.get('maintenancePrice');\r\n condition = form.get('maintenance').value && !control.value;\r\n if (condition) {\r\n control.setErrors({\r\n required: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'required');\r\n }\r\n // Shared commission rule\r\n control = form.get('sharedCommission');\r\n condition = form.get('mlm').value && !control.value;\r\n if (condition) {\r\n control.setErrors({\r\n required: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'required');\r\n }\r\n // Shared commission rule 2\r\n condition = form.get('mlm').value && !form.get('commission').value;\r\n control = form.get('sharedCommission');\r\n if (condition) {\r\n control.setErrors({\r\n sharedCommissionInvalid: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'sharedCommissionInvalid');\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {FormBuilder, FormGroup, ValidatorFn, Validators} from '@angular/forms';\r\nimport {\r\n Address,\r\n Amenities,\r\n AppUtil,\r\n AreaUnitEnum,\r\n CER,\r\n Features,\r\n GeoPt,\r\n LandUseEnum,\r\n NewProperty,\r\n OfferingTypeEnum,\r\n PropertyInfo,\r\n PropertyTypeEnum,\r\n StatusTypeEnum\r\n} from '@maplander/types';\r\nimport {Subscription} from 'rxjs';\r\nimport {DialogService} from '@maplander/shared';\r\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';\r\nimport {MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter} from '@angular/material-moment-adapter';\r\nimport * as momentImported from 'moment';\r\nimport {PropertyTypeItem} from '../../../../utils/models/property-type-item';\r\nimport {AmenityItem} from '../../../../utils/models/amenity-item';\r\nimport {ConstantsComponents} from '../../../../constantsComponents';\r\nimport {PropertyEditorValidators} from '../../validators/property-editor-validators';\r\nimport {MDate} from '../../../../utils/classes';\r\nimport {Utils} from '../../../../utils';\r\nconst moment = momentImported;\r\n\r\nconst MY_FORMATS = {\r\n parse: {\r\n dateInput: 'L',\r\n },\r\n display: {\r\n dateInput: 'L',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'L',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'lib-property-editor',\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['./editor.component.scss'],\r\n providers: [\r\n {provide: MAT_DATE_LOCALE, useValue: 'es-MX'},\r\n {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]},\r\n {provide: MAT_DATE_FORMATS, useValue: MY_FORMATS}\r\n ]\r\n})\r\nexport class EditorComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\r\n @ViewChild('btnSubmit', {static: true, read: ElementRef}) private _btnSubmitRef: ElementRef;\r\n @Input() utils: AppUtil;\r\n @Input() address: Address;\r\n @Input() propertyType: PropertyTypeEnum;\r\n @Input() property: NewProperty;\r\n @Input() mlsLabel: string;\r\n @Output() editorInstance: EventEmitter<EditorComponent>;\r\n @Output() selectAddress: EventEmitter<void>;\r\n /**\r\n * REGEX_ONLY_INTEGERS\r\n * Regex pattern to only accept integer and positive numbers\r\n * */\r\n private readonly REGEX_ONLY_INTEGERS = new RegExp(/^[0-9]\\d*$/);\r\n private readonly REGEX_MIDDLE_NUMBER = new RegExp(/^[0-9]*(\\.[5])?$/);\r\n private readonly REGEX_WEBSITE = new RegExp(/(http|https):\\/\\/(\\w+:?\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@\\-\\/]))?/);\r\n private readonly REGEX_ALPHA_NUMBER = new RegExp(/[A-Za-z0-9_]/);\r\n private readonly _subscription: Subscription;\r\n private readonly _validators: {\r\n bedrooms: ValidatorFn[],\r\n bathrooms: ValidatorFn[],\r\n parkingSpaces: ValidatorFn[],\r\n mainArea: ValidatorFn[],\r\n secondaryArea: ValidatorFn[],\r\n externalLink: ValidatorFn[],\r\n sku: ValidatorFn[]\r\n };\r\n private _property: NewProperty;\r\n private _propertyTypeItem: PropertyTypeItem;\r\n private _errorFields: string[];\r\n public propertyForm: FormGroup;\r\n public offeringTypeList: { name: string, value: OfferingTypeEnum }[];\r\n public currencyList: CER[];\r\n public roiList: number[];\r\n public landUseList: { name: string, value: LandUseEnum }[];\r\n public amenitiesList: AmenityItem[];\r\n public featuresList: AmenityItem[];\r\n public commissionList: number[];\r\n public sharedCommissionList: number[];\r\n public durationList: number[];\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _dialog: DialogService,\r\n private _adapter: DateAdapter<any>\r\n ) {\r\n this.editorInstance = new EventEmitter<EditorComponent>();\r\n this.selectAddress = new EventEmitter<void>();\r\n this._subscription = new Subscription();\r\n this.offeringTypeList = ConstantsComponents.OfferingTypeList.map(doc => ({...doc}));\r\n this.landUseList = ConstantsComponents.LandUseList.map(doc => ({...doc}));\r\n this.commissionList = ConstantsComponents.CommissionList[OfferingTypeEnum.SALE];\r\n this.roiList = Object.assign([], ConstantsComponents.ROIList);\r\n this.durationList = Object.assign([], ConstantsComponents.DurationList);\r\n this.sharedCommissionList = Object.assign([], ConstantsComponents.SharedCommissionList);\r\n this._adapter.setLocale('es');\r\n this._errorFields = [];\r\n this._validators = {\r\n bedrooms: [Validators.pattern(this.REGEX_ONLY_INTEGERS)],\r\n bathrooms: [Validators.pattern(this.REGEX_MIDDLE_NUMBER)],\r\n parkingSpaces: [Validators.pattern(this.REGEX_ONLY_INTEGERS)],\r\n mainArea: [],\r\n secondaryArea: [],\r\n externalLink: [Validators.pattern(this.REGEX_WEBSITE)],\r\n sku: [Validators.pattern(this.REGEX_ALPHA_NUMBER)]\r\n };\r\n this.propertyForm = this._formBuilder.group({\r\n offering: [OfferingTypeEnum.SALE],\r\n sku: [null, this._validators.sku],\r\n consumerReporting: [],\r\n consumerReportingOption: [1],\r\n currency: ['MXN'],\r\n minPrice: [],\r\n price: [],\r\n maintenance: [],\r\n maintenancePrice: [],\r\n transfer: [],\r\n transferPrice: [],\r\n bedrooms: [null, this._validators.bedrooms],\r\n bathrooms: [null, this._validators.bathrooms],\r\n parkingSpaces: [null, this._validators.parkingSpaces],\r\n mainArea: [null, this._validators.mainArea],\r\n secondaryArea: [null, this._validators.secondaryArea],\r\n unit: [AreaUnitEnum.M2],\r\n buildIn: [],\r\n landUse: [],\r\n exclusivity: [],\r\n mlm: [],\r\n sharedCommission: [],\r\n agreementDate: [{value: null, disabled: true}],\r\n duration: [],\r\n commission: [],\r\n roi: [],\r\n description: [],\r\n externalLink: [null, this._validators.externalLink],\r\n notes: [],\r\n address: this._formBuilder.group({\r\n country: [],\r\n postalCode: [],\r\n state: [],\r\n city: [],\r\n township: [],\r\n colony: [],\r\n street: [],\r\n extNumber: [],\r\n intNumber: [],\r\n mz: [],\r\n lt: [],\r\n visible: [true],\r\n }),\r\n }, {\r\n validators: PropertyEditorValidators.validator\r\n });\r\n }\r\n\r\n private static geoPtGenerator(geoPt: GeoPt, minDistance: number, maxDistance: number): GeoPt {\r\n const EARTH_RADIUS_METERS = 6371010.0;\r\n const l = Math.random() * (maxDistance - minDistance) + minDistance;\r\n const alpha = Math.random() * Math.PI / 2;\r\n const sx = (Math.random() < 0.5) ? l * Math.cos(alpha) : -l * Math.cos(alpha);\r\n const sy = (Math.random() < 0.5) ? l * Math.sin(alpha) : -l * Math.sin(alpha);\r\n const deltaLat = sy / EARTH_RADIUS_METERS * 180 / Math.PI;\r\n const lat = geoPt.latitude + deltaLat;\r\n const deltaLong = sx / EARTH_RADIUS_METERS / Math.cos(lat * Math.PI / 180) * 180 / Math.PI;\r\n return {\r\n latitude: lat,\r\n longitude: geoPt.longitude + deltaLong\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n this.listenChangesOnForm();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['utils'] && changes['utils'].currentValue) {\r\n this.currencyList = changes['utils'].currentValue.cers;\r\n }\r\n if (changes['propertyType'] && changes['propertyType'].currentValue) {\r\n this.propertyType = changes['propertyType'].currentValue;\r\n this.searchAmenitiesByPropertyType();\r\n }\r\n if (changes['property'] && changes['property'].currentValue) {\r\n this.createProperty(changes['property'].currentValue);\r\n }\r\n if (changes['address'] && changes['address'].currentValue) {\r\n this.updateAddressForm(changes['address'].currentValue);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.editorInstance.emit(this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n getProperty(): NewProperty {\r\n this.setValidatorOnFields(this._errorFields, true);\r\n this.updatePropertyByForm(this.propertyForm.getRawValue());\r\n return this._property;\r\n }\r\n\r\n validateFormInvalid(): boolean {\r\n this.setValidatorOnFields(this._errorFields, true);\r\n return this.propertyForm.invalid;\r\n }\r\n\r\n updateAmenity(amenity: AmenityItem): void {\r\n amenity.checked = !amenity.checked;\r\n this._property.amenities[amenity.value] = amenity.checked;\r\n }\r\n\r\n goToSelectAddress(): void {\r\n this.selectAddress.emit();\r\n }\r\n\r\n setErrorsOnFields(errors: string[]): void {\r\n this._errorFields = errors;\r\n this.setValidatorOnFields(this._errorFields);\r\n this._btnSubmitRef.nativeElement.click();\r\n }\r\n\r\n private updateAddressForm(address: Address): void {\r\n this.propertyForm.patchValue({\r\n address: {\r\n country: address.country,\r\n state: address.state,\r\n city: address.city,\r\n township: address.township,\r\n colony: address.colony,\r\n street: address.street,\r\n postalCode: address.postalCode,\r\n extNumber: address.outdoorNumber\r\n }\r\n });\r\n }\r\n\r\n private assignAmenities(): void {\r\n this.amenitiesList.forEach((amenity) => {\r\n amenity.checked = this._property.amenities[amenity.value];\r\n });\r\n }\r\n\r\n private assignLocationFeatures(): void {\r\n this.featuresList.forEach((amenity) => {\r\n amenity.checked = this._property.amenities[amenity.value];\r\n });\r\n }\r\n\r\n private assignCommission(): void {\r\n this.commissionList = ConstantsComponents.CommissionList[this._property.offering];\r\n }\r\n\r\n private assignBusinessRules(): void {\r\n switch (this.propertyType) {\r\n case PropertyTypeEnum.ROOM:\r\n this.propertyForm.patchValue({\r\n offering: OfferingTypeEnum.RENT\r\n });\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n this.propertyForm.patchValue({\r\n offering: OfferingTypeEnum.SALE\r\n });\r\n break;\r\n }\r\n if (this._property.status === StatusTypeEnum.ANNOUNCED) {\r\n const errors = Utils.listErrorsByPropertyTypeForPublish(this._property.type);\r\n this.setValidatorOnFields(errors);\r\n }\r\n }\r\n\r\n private updateFormByProperty(): void {\r\n this.propertyForm.patchValue({\r\n offering: this._property.offering,\r\n sku: this._property.sku,\r\n consumerReporting: this._property.propertyInfo.consumerReporting && this._property.propertyInfo.consumerReporting !== 0,\r\n consumerReportingOption: this._property.propertyInfo.consumerReporting,\r\n currency: this._property.currency,\r\n minPrice: this._property.propertyInfo.lowestPrice,\r\n price: this._property.price,\r\n maintenance: this._property.features.condominiumFeePrice && this._property.features.condominiumFeePrice !== 0,\r\n maintenancePrice: this._property.features.condominiumFeePrice,\r\n transfer: this._property.propertyInfo.leaseTransferPrice && this._property.propertyInfo.leaseTransferPrice !== 0,\r\n transferPrice: this._property.propertyInfo.leaseTransferPrice,\r\n bedrooms: this._property.features.bedrooms,\r\n bathrooms: this._property.features.bathrooms,\r\n parkingSpaces: this._property.features.parkingSpaces,\r\n mainArea: this._property.features.mainArea,\r\n secondaryArea: this._property.features.secondaryArea,\r\n unit: this._property.features.areaUnit,\r\n buildIn: this._property.features.builtIn ? new Date(this._property.features.builtIn, 1, 1) : null,\r\n landUse: this._property.features.landUse,\r\n exclusivity: this._property.propertyInfo.exclusivity,\r\n mlm: this._property.propertyInfo.mls,\r\n sharedCommission: this._property.propertyInfo.sharedCommission,\r\n agreementDate: this._property.propertyInfo.listingAgreementStartDate ?\r\n moment(new MDate(this._property.propertyInfo.listingAgreementStartDate).toDate()) : null,\r\n duration: this._property.propertyInfo.listingAgreementTime,\r\n commission: this._property.propertyInfo.commission,\r\n roi: this._property.features.roi,\r\n description: this._property.description,\r\n externalLink: this._property.externalLink,\r\n notes: this._property.propertyInfo.notes,\r\n address: {\r\n country: this._property.address.country,\r\n state: this._property.address.state,\r\n city: this._property.address.city,\r\n township: this._property.address.township,\r\n colony: this._property.address.colony,\r\n postalCode: this._property.address.postalCode,\r\n street: this._property.address.street,\r\n extNumber: this._property.address.outdoorNumber,\r\n intNumber: this._property.address.interiorNumber,\r\n mz: this._property.address.mz,\r\n lt: this._property.address.lt,\r\n visible: this._property.address.visible || false,\r\n }\r\n });\r\n }\r\n\r\n private updatePropertyByForm(data: any): void {\r\n this._property.type = this.propertyType;\r\n this._property.offering = data.offering;\r\n this._property.sku = data.sku;\r\n this._property.propertyInfo.consumerReporting = data.consumerReporting ? data.consumerReportingOption : null;\r\n this._property.currency = data.currency;\r\n this._property.propertyInfo.lowestPrice = data.minPrice ? Number(data.minPrice) : null;\r\n this._property.price = data.price ? Number(data.price) : null;\r\n this._property.features.condominiumFeePrice = data.maintenance ? Number(data.maintenancePrice) : null;\r\n this._property.propertyInfo.leaseTransferPrice = data.transfer ? Number(data.transferPrice) : null;\r\n this._property.features.bedrooms = data.bedrooms ? Number(data.bedrooms) : null;\r\n this._property.features.bathrooms = data.bathrooms ? Number(data.bathrooms) : null;\r\n this._property.features.parkingSpaces = data.parkingSpaces ? Number(data.parkingSpaces) : null;\r\n this._property.features.mainArea = data.mainArea ? Number(data.mainArea) : null;\r\n this._property.features.secondaryArea = data.secondaryArea ? Number(data.secondaryArea) : null;\r\n this._property.features.areaUnit = data.unit;\r\n this._property.features.builtIn = data.buildIn ? data.buildIn.getFullYear() : null;\r\n this._property.features.landUse = data.landUse;\r\n this._property.propertyInfo.exclusivity = data.exclusivity;\r\n this._property.propertyInfo.mls = data.mlm;\r\n this._property.propertyInfo.sharedCommission = data.mlm ? Number(data.sharedCommission) : null;\r\n this._property.propertyInfo.listingAgreementStartDate =\r\n data.agreementDate ? MDate.getTimestamp(data.agreementDate.toDate()) : null;\r\n this._property.propertyInfo.listingAgreementTime = data.duration;\r\n this._property.propertyInfo.commission = data.commission;\r\n this._property.features.roi = data.roi;\r\n this._property.description = data.description;\r\n this._property.externalLink = data.externalLink;\r\n this._property.propertyInfo.notes = data.notes;\r\n this._property.address.country = data.address.country;\r\n this._property.address.state = data.address.state;\r\n this._property.address.city = data.address.city;\r\n this._property.address.township = data.address.township;\r\n this._property.address.colony = data.address.colony;\r\n this._property.address.postalCode = data.address.postalCode;\r\n this._property.address.street = data.address.street;\r\n this._property.address.outdoorNumber = data.address.extNumber;\r\n this._property.address.interiorNumber = data.address.intNumber;\r\n this._property.address.mz = data.address.mz;\r\n this._property.address.lt = data.address.lt;\r\n this._property.address.location = this.address.location;\r\n this._property.address.publicLocation = !data.address.visible ?\r\n EditorComponent.geoPtGenerator(this.address.location, 200, 400) : this.address.location;\r\n this._property.address.visible = data.address.visible;\r\n }\r\n\r\n private searchAmenitiesByPropertyType(): void {\r\n ConstantsComponents.PropertyTypeList.forEach(type => {\r\n if (type.value === this.propertyType) {\r\n this._propertyTypeItem = type;\r\n this.amenitiesList = type.amenities.map(item => ({...item}));\r\n this.featuresList = type.features.map(item => ({...item}));\r\n }\r\n });\r\n }\r\n\r\n private listenChangesOnForm(): void {\r\n this._subscription.add(\r\n this.propertyForm.controls['offering'].valueChanges.subscribe((value) => {\r\n this.commissionList = ConstantsComponents.CommissionList[value];\r\n this.propertyForm.patchValue({\r\n minPrice: null,\r\n maxPrice: null\r\n });\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['price'].valueChanges.subscribe((value) => {\r\n if (value && Number(value) === 0) {\r\n this.propertyForm.patchValue({\r\n minPrice: null\r\n });\r\n }\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['mlm'].valueChanges.subscribe(() => {\r\n this.propertyForm.controls['sharedCommission'].setValue(null);\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['maintenance'].valueChanges.subscribe(() => {\r\n this.propertyForm.controls['maintenancePrice'].setValue(null);\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['transfer'].valueChanges.subscribe(() => {\r\n this.propertyForm.controls['transferPrice'].setValue(null);\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['consumerReporting'].valueChanges.subscribe(() => {\r\n this.propertyForm.controls['consumerReportingOption'].setValue(1);\r\n })\r\n );\r\n }\r\n\r\n private createProperty(property?: NewProperty): void {\r\n this._property = new NewProperty(property || null);\r\n this._property.type = this.propertyType;\r\n this._property.propertyInfo = new PropertyInfo(property ? property.propertyInfo : null);\r\n this._property.features = new Features(property ? property.features : null);\r\n this._property.address = new Address(property ? property.address : null);\r\n this._property.amenities = new Amenities(property ? property.amenities : null);\r\n this.assignBusinessRules();\r\n if (property && property.id) {\r\n this.updateFormByProperty();\r\n this.assignAmenities();\r\n this.assignLocationFeatures();\r\n this.assignCommission();\r\n }\r\n }\r\n\r\n private setValidatorOnFields(errors: string[], remove?: boolean): void {\r\n if (errors.length === 0) {\r\n return;\r\n }\r\n errors.forEach(error => {\r\n if (!this.propertyForm.controls[error]) {\r\n return;\r\n }\r\n if (remove) {\r\n this.propertyForm.controls[error].clearValidators();\r\n this.propertyForm.controls[error].setValidators(this._validators[error] ? this._validators[error] : []);\r\n this.propertyForm.controls[error].updateValueAndValidity();\r\n } else {\r\n this.propertyForm.controls[error].clearValidators();\r\n this.propertyForm.controls[error].setValidators(\r\n this._validators[error] ? this._validators[error].concat(Validators.required) : [Validators.required]);\r\n this.propertyForm.controls[error].updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import {AbstractControl, ValidatorFn} from '@angular/forms';\r\nimport {removeError} from './remove-error';\r\n\r\nexport function phoneFieldsValidator(controlName: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n if (control.parent) {\r\n const peerControl = control.parent.controls[controlName] as AbstractControl;\r\n if (!control.value && !peerControl.value) {\r\n removeError(peerControl, 'phoneFieldsError');\r\n return null;\r\n }\r\n if (control.value !== '' && (!peerControl.value || peerControl.value === '')) {\r\n peerControl.setErrors({\r\n phoneFieldsError: true\r\n });\r\n }\r\n if ((peerControl.value && peerControl.value !== '') && (!control.value || control.value === '')) {\r\n return {\r\n phoneFieldsError: true\r\n };\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\r\nimport {CountryCode, Owner} from '@maplander/types';\r\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\r\nimport {phoneFieldsValidator} from '../../validators/phone-fields-validator';\r\n\r\n@Component({\r\n selector: 'lib-property-owner-info',\r\n templateUrl: './owner-info.component.html',\r\n styleUrls: ['./owner-info.component.scss']\r\n})\r\nexport class OwnerInfoComponent implements OnChanges, AfterViewInit {\r\n @Input() owner: Owner;\r\n @Input() disabled: boolean;\r\n @Output() ownerInstance: EventEmitter<OwnerInfoComponent>;\r\n public ownerForm: FormGroup;\r\n private _owner: Owner;\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder\r\n ) {\r\n this.ownerInstance = new EventEmitter<OwnerInfoComponent>();\r\n this.ownerForm = this._formBuilder.group({\r\n name: [],\r\n lastName: [],\r\n email: ['', [Validators.email]],\r\n code: ['', [phoneFieldsValidator('phone')]],\r\n phone: ['', [\r\n phoneFieldsValidator('code'),\r\n Validators.maxLength(13),\r\n Validators.minLength(8),\r\n Validators.pattern(new RegExp(/^[0-9]\\d*$/))]\r\n ],\r\n address: []\r\n });\r\n this.createOwner();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['disabled']) {\r\n this.ownerForm.disable();\r\n }\r\n if (changes['owner'] && changes['owner'].currentValue) {\r\n this.createOwner(changes['owner'].currentValue);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.ownerInstance.emit(this);\r\n }\r\n\r\n onCodePhoneChanged(ev: CountryCode): void {\r\n this.ownerForm.controls['code'].setValue(ev ? ev.code : '');\r\n }\r\n\r\n getOwner(): Owner {\r\n this.updateOwnerByForm(this.ownerForm.value);\r\n return this._owner;\r\n }\r\n\r\n private updateOwnerByForm(data: any): void {\r\n this._owner.name = data.name;\r\n this._owner.lastName = data.lastName;\r\n this._owner.email = data.email;\r\n this._owner.phone = data.phone;\r\n this._owner.codePhone = data.code ? data.code.replace('+', '') : '';\r\n this._owner.address = data.address;\r\n }\r\n\r\n private updateFormByOwner(): void {\r\n this.ownerForm.patchValue({\r\n name: this._owner.name,\r\n lastName: this._owner.lastName,\r\n email: this._owner.email,\r\n phone: this._owner.phone,\r\n code: (this._owner.codePhone) ? `+${this._owner.codePhone}` : '',\r\n address: this._owner.address,\r\n });\r\n }\r\n\r\n private createOwner(owner?: Owner): void {\r\n this._owner = new Owner(owner || null);\r\n if (owner) {\r\n this.updateFormByOwner();\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\r\nimport {PFile, PFileTypeEnum, UserMedia} from '@maplander/types';\r\nimport {DocumentVisorService} from '../../../document-visor/document-visor.service';\r\nimport {ConstantsComponents} from '../../../../constantsComponents';\r\nimport {SnackBarService} from '@maplander/core';\r\nimport {Observable} from 'rxjs';\r\nimport {map} from 'rxjs/operators';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\n@Component({\r\n selector: 'lib-property-documents',\r\n templateUrl: './documents.component.html',\r\n styleUrls: ['./documents.component.scss']\r\n})\r\nexport class DocumentsComponent implements AfterViewInit, OnChanges {\r\n @Input() files: PFile[];\r\n @Input() disabled: boolean;\r\n @Output() documentsInstance: EventEmitter<DocumentsComponent>;\r\n public documents: { name: string, value: PFileTypeEnum, loaded: boolean }[];\r\n private _files: PFile[];\r\n private readonly _newMedia: UserMedia[];\r\n\r\n constructor(\r\n private _visor: DocumentVisorService,\r\n private _snackBar: SnackBarService,\r\n private _http: HttpClient\r\n ) {\r\n this.documentsInstance = new EventEmitter<DocumentsComponent>();\r\n this.documents = ConstantsComponents.DocumentsList.map(doc => ({...doc}));\r\n this._newMedia = [];\r\n this._files = [];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.documentsInstance.emit(this);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['files'] && changes['files'].currentValue) {\r\n this._files = changes['files'].currentValue || [];\r\n this.validateDocumentsLoaded();\r\n }\r\n }\r\n\r\n getDocuments(): { documents: PFile[], newMedia: UserMedia[] } {\r\n return {documents: this._files, newMedia: this._newMedia};\r\n }\r\n\r\n openFile(type: PFileTypeEnum): void {\r\n const doc = this.getPFileByType(type);\r\n const media = this.getUserMediaByType(type);\r\n if (media) {\r\n this._visor.open(media.url);\r\n return;\r\n }\r\n if (doc) {\r\n this.openBlobFile(doc.fileCS.thumbnail);\r\n return;\r\n }\r\n if (!doc && !media) {\r\n this._snackBar.setMessage('Este documento no ha sido añadido', 'OK', 2500, 'left');\r\n }\r\n }\r\n\r\n onUploadFile(ev: UserMedia, doc: { name: string, value: PFileTypeEnum, loaded: boolean }): void {\r\n const name = doc.value.toString().toLowerCase();\r\n if (doc.loaded) {\r\n this.updateDocument(name);\r\n }\r\n doc.loaded = true;\r\n const file = new PFile();\r\n file.type = doc.value;\r\n ev.type = doc.value;\r\n file.media = false;\r\n const fileName = `${name}_${new Date().getTime()}.pdf`;\r\n file.name = fileName;\r\n ev.name = fileName;\r\n file.fileCS = {\r\n thumbnail: ev.url,\r\n blobName: null\r\n };\r\n this._files.push(file);\r\n this._newMedia.push(ev);\r\n }\r\n\r\n private openBlobFile(url: string): void {\r\n this.downloadFile(url)\r\n .subscribe((response) => {\r\n this._visor.open(response);\r\n });\r\n }\r\n\r\n private updateDocument(name: string): void {\r\n let i = -1, file: PFile = null;\r\n this._files.forEach((item, index) => {\r\n if (item.name === name) {\r\n file = item;\r\n i = index;\r\n }\r\n });\r\n if (i > -1) {\r\n this._files.splice(i, 1);\r\n }\r\n if (file) {\r\n i = -1;\r\n this._newMedia.forEach((item, index) => {\r\n if (item.name === file.name) {\r\n i = index;\r\n }\r\n });\r\n if (i > -1) {\r\n this._newMedia.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n private validateDocumentsLoaded(): void {\r\n if (!this._files || this._files.length === 0) {\r\n return;\r\n }\r\n this._files.forEach((file) => this.documents.forEach(doc => {\r\n if (doc.value === file.type) {\r\n doc.loaded = true;\r\n }\r\n }));\r\n }\r\n\r\n private getPFileByType(type: PFileTypeEnum): PFile {\r\n let result = null;\r\n if (!this.files || this.files.length === 0) {\r\n return result;\r\n }\r\n this.files.forEach(item => {\r\n if (item.type === type) {\r\n result = item;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private getUserMediaByType(type: PFileTypeEnum): UserMedia {\r\n let result = null;\r\n if (!this._newMedia || this._newMedia.length === 0) {\r\n return result;\r\n }\r\n this._newMedia.forEach(item => {\r\n if (item.type === type) {\r\n result = item;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private downloadFile(url: string): Observable<string> {\r\n return this._http.get(url, {\r\n responseType: 'arraybuffer'\r\n }).pipe(map((payload) => {\r\n const blob = new Blob([payload], {\r\n type: 'application/pdf'\r\n });\r\n return URL.createObjectURL(blob);\r\n }));\r\n }\r\n}\r\n","import {Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\r\nimport {NewProperty} from '@maplander/types';\r\nimport {AmenityItem} from '../../../../utils/models/amenity-item';\r\nimport {ConstantsComponents} from '../../../../constantsComponents';\r\nimport {PropertyTypeItem} from '../../../../utils/models/property-type-item';\r\nimport {MDate} from '../../../../utils/classes';\r\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\r\n\r\n\r\n@Component({\r\n selector: 'lib-property-details',\r\n templateUrl: './details.component.html',\r\n styleUrls: ['./details.component.scss']\r\n})\r\nexport class DetailsComponent implements OnInit, OnChanges {\r\n @Input() record: boolean;\r\n @Input() currencyConverted: { currency: string, price: number };\r\n @Input() property: NewProperty;\r\n @Input() mlsLabel: string;\r\n @Input() visibleTour: boolean;\r\n public amenities: AmenityItem[];\r\n public features: AmenityItem[];\r\n public propertyType: PropertyTypeItem;\r\n public agreementEndDate: number;\r\n\r\n constructor(\r\n private _sanitizer: DomSanitizer\r\n ) {\r\n this.amenities = [];\r\n this.features = [];\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['property'] && changes['property'].currentValue) {\r\n this.property = changes['property'].currentValue;\r\n this.searchPropertyType();\r\n this.createAmenities();\r\n this.createFeatures();\r\n this.validateAgreement();\r\n }\r\n }\r\n\r\n getTourUrl(): SafeResourceUrl {\r\n return this._sanitizer.bypassSecurityTrustResourceUrl(this.property.externalLink);\r\n }\r\n\r\n private validateAgreement(): void {\r\n if (this.property.propertyInfo.listingAgreementStartDate && this.property.propertyInfo.listingAgreementTime) {\r\n const startDate = new MDate(this.property.propertyInfo.listingAgreementStartDate).toDate();\r\n startDate.setDate(startDate.getDate() + this.property.propertyInfo.listingAgreementTime);\r\n this.agreementEndDate = MDate.getTimestamp(startDate);\r\n }\r\n }\r\n\r\n private searchPropertyType(): void {\r\n ConstantsComponents.PropertyTypeList.forEach((type) => {\r\n if (this.property.type === type.value) {\r\n this.propertyType = type;\r\n }\r\n });\r\n }\r\n\r\n private createAmenities(): void {\r\n this.amenities = [];\r\n let amenities: AmenityItem[] = [];\r\n ConstantsComponents.PropertyTypeList.forEach((type) => {\r\n if (type.value === this.property.type) {\r\n amenities = type.amenities;\r\n }\r\n });\r\n if (amenities.length > 0) {\r\n amenities.forEach((amenity) => {\r\n if (this.property.amenities[amenity.value]) {\r\n this.amenities.push(amenity);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private createFeatures(): void {\r\n this.features = [];\r\n let features: AmenityItem[] = [];\r\n ConstantsComponents.PropertyTypeList.forEach((type) => {\r\n if (type.value === this.property.type) {\r\n features = type.features;\r\n }\r\n });\r\n if (features.length > 0) {\r\n features.forEach((amenity) => {\r\n if (this.property.amenities[amenity.value]) {\r\n this.features.push(amenity);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component, ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n Renderer2,\r\n SimpleChanges, TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {PFile} from '@maplander/types';\r\n\r\n@Component({\r\n selector: 'lib-property-slide-show',\r\n templateUrl: './slide-show.component.html',\r\n styleUrls: ['./slide-show.component.scss']\r\n})\r\nexport class SlideShowComponent implements OnChanges, AfterViewInit {\r\n\r\n @ContentChild(TemplateRef, {static: true})\r\n @Input() customActions: TemplateRef<any>;\r\n @ViewChild('slider', {static: true}) private _slider: ElementRef;\r\n @Input() multimedia: PFile[];\r\n @Input() selectIndex: number;\r\n @Input() initialIndex: number;\r\n @Output() currentIndex: EventEmitter<number>;\r\n public count: number;\r\n public index: number;\r\n\r\n constructor(\r\n private _render: Renderer2\r\n ) {\r\n this.currentIndex = new EventEmitter<number>();\r\n this.index = this.initialIndex || 0;\r\n this.multimedia = [];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.currentIndex.emit(this.index);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectIndex'] && (changes['selectIndex'].currentValue !== undefined && changes['selectIndex'].currentValue !== null)) {\r\n this.moveImageByIndex(changes['selectIndex'].currentValue);\r\n }\r\n if (changes['multimedia'] && changes['multimedia'].currentValue) {\r\n this.multimedia = changes['multimedia'].currentValue || [];\r\n if (this.multimedia.length > 0) {\r\n this.count = this.multimedia.length;\r\n this.moveImageByIndex(this.initialIndex || 0);\r\n this.validateHTTPS();\r\n }\r\n }\r\n }\r\n\r\n moveImage(next?: boolean): void {\r\n this.index = next ? this.index + 1 : this.index - 1;\r\n if (this.index === this.multimedia.length) {\r\n this.index = 0;\r\n }\r\n this.currentIndex.emit(this.index);\r\n this._render.setStyle(this._slider.nativeElement, 'margin-left', `-${this.index * 100}%`);\r\n }\r\n\r\n moveImageByIndex(index: number): void {\r\n this.index = index;\r\n if (this.index === this.multimedia.length) {\r\n this.index = 0;\r\n }\r\n this.currentIndex.emit(this.index);\r\n this._render.setStyle(this._slider.nativeElement, 'margin-left', `-${this.index * 100}%`);\r\n }\r\n\r\n private validateHTTPS(): void {\r\n this.multimedia.forEach(item => {\r\n if (item.fileCS.thumbnail.indexOf('https') === -1) {\r\n item.fileCS.thumbnail = item.fileCS.thumbnail.replace('http', 'https');\r\n }\r\n });\r\n }\r\n}\r\n","import {NativeDateAdapter} from '@angular/material/core';\r\n\r\nexport class CustomDateAdapter extends NativeDateAdapter {\r\n format(date: Date, displayFormat: Object): string {\r\n return date.getFullYear().toString();\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, Inject, OnDestroy} from '@angular/core';\r\nimport {MatCalendar} from '@angular/material/datepicker';\r\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {Subject} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-property-custom-datepicker-header',\r\n templateUrl: './custom-datepicker-header.component.html',\r\n styleUrls: ['./custom-datepicker-header.component.scss']\r\n})\r\nexport class CustomDatepickerHeaderComponent<D> implements OnDestroy {\r\n\r\n private _destroyed = new Subject<void>();\r\n\r\n constructor(\r\n private _calendar: MatCalendar<D>, private _dateAdapter: DateAdapter<D>,\r\n @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats, cdr: ChangeDetectorRef) {\r\n _calendar.stateChanges\r\n .pipe(takeUntil(this._destroyed))\r\n .subscribe(() => cdr.markForCheck());\r\n }\r\n\r\n ngOnDestroy() {\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n }\r\n\r\n get periodLabel(): string {\r\n const currentDate = this._dateAdapter\r\n .format(this._calendar.activeDate, 'YYYY');\r\n return `${Number(currentDate) - 23} - ${currentDate}`;\r\n }\r\n\r\n previousClicked() {\r\n this._calendar.activeDate = this._dateAdapter.addCalendarYears(this._calendar.activeDate, -23);\r\n }\r\n\r\n nextClicked() {\r\n this._calendar.activeDate = this._dateAdapter.addCalendarYears(this._calendar.activeDate, 23);\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, forwardRef, Injector} from '@angular/core';\r\nimport {MatDatepicker} from '@angular/material/datepicker';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl} from '@angular/forms';\r\nimport {DateAdapter, MAT_DATE_FORMATS} from '@angular/material/core';\r\nimport {CustomDateAdapter} from '../date-adapter';\r\nimport {CustomDatepickerHeaderComponent} from '../custom-datepicker-header/custom-datepicker-header.component';\r\n\r\nconst MY_DATE_FORMATS = {\r\n parse: {\r\n dateInput: 'LL'\r\n },\r\n display: {\r\n dateInput: 'YYYY',\r\n monthYearLabel: 'YYYY',\r\n dateA11yLabel: 'YYYY',\r\n monthYearA11yLabel: 'YYYY'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'lib-property-custom-datepicker',\r\n templateUrl: './custom-datepicker.component.html',\r\n styleUrls: ['./custom-datepicker.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CustomDatepickerComponent),\r\n multi: true\r\n },\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useValue: MY_DATE_FORMATS\r\n },\r\n {\r\n provide: DateAdapter,\r\n useClass: CustomDateAdapter\r\n }\r\n ]\r\n})\r\nexport class CustomDatepickerComponent implements ControlValueAccessor, AfterViewInit {\r\n\r\n public currentYear: Date;\r\n public year: string;\r\n public customHeader = CustomDatepickerHeaderComponent;\r\n private _control: NgControl;\r\n\r\n constructor(\r\n private _injector: Injector\r\n ) {\r\n this.currentYear = new Date();\r\n this.year = '';\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._control = this._injector.get(NgControl);\r\n this._control.valueAccessor = this;\r\n }\r\n\r\n onYearSelected(ev: any, datepicker: MatDatepicker<Date>) {\r\n datepicker.close();\r\n this.year = ev;\r\n this._control.control.patchValue(ev);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (value !== undefined) {\r\n this.year = value;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CustomDatepickerComponent } from './custom-datepicker/custom-datepicker.component';\r\nimport {CustomDatepickerHeaderComponent} from './custom-datepicker-header/custom-datepicker-header.component';\r\nimport {MatDatepickerModule} from '@angular/material/datepicker';\r\nimport {MatFormFieldModule} from '@angular/material/form-field';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatButtonModule} from '@angular/material/button';\r\n\r\nconst MATERIAL = [\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatDatepickerModule,\r\n MatButtonModule,\r\n MatIconModule\r\n];\r\n\r\nconst COMPONENTS = [\r\n CustomDatepickerComponent,\r\n CustomDatepickerHeaderComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MATERIAL\r\n ],\r\n declarations: [\r\n COMPONENTS\r\n ],\r\n entryComponents: [\r\n CustomDatepickerHeaderComponent\r\n ],\r\n exports: [\r\n CustomDatepickerComponent\r\n ]\r\n})\r\nexport class CustomDatepickerModule { }\r\n","import {AfterViewInit, Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport {CdkDrag, CdkDragMove, CdkDropList, CdkDropListGroup, moveItemInArray} from '@angular/cdk/drag-drop';\r\nimport {ViewportRuler} from '@angular/cdk/overlay';\r\n\r\n@Component({\r\n selector: 'lib-custom-drag-and-drop',\r\n templateUrl: './custom-drag-and-drop.component.html',\r\n styleUrls: ['./custom-drag-and-drop.component.scss']\r\n})\r\nexport class CustomDragAndDropComponent implements OnInit, AfterViewInit {\r\n @ViewChild(CdkDropListGroup, {static: true}) listGroup: CdkDropListGroup<CdkDropList>;\r\n @ViewChild(CdkDropList, {static: true}) placeholder: CdkDropList;\r\n @ContentChild(TemplateRef, {static: true})\r\n @Input() content: TemplateRef<any>;\r\n @Input() items: any[];\r\n @Output() itemsChanged: EventEmitter<any[]>;\r\n public target: CdkDropList;\r\n public targetIndex: number;\r\n public source: CdkDropList;\r\n public sourceIndex: number;\r\n public activeContainer;\r\n public dropListEnterPredicate: Function;\r\n\r\n constructor(private _viewportRuler: ViewportRuler) {\r\n this.itemsChanged = new EventEmitter<any[]>();\r\n this.target = null;\r\n this.source = null;\r\n this.dropListEnterPredicate = (drag: CdkDrag, drop: CdkDropList) => {\r\n if (drop === this.placeholder) {\r\n return true;\r\n }\r\n if (drop !== this.activeContainer) {\r\n return false;\r\n }\r\n const phElement = this.placeholder.element.nativeElement;\r\n const sourceElement = drag.dropContainer.element.nativeElement;\r\n const dropElement = drop.element.nativeElement;\r\n const dragIndex = __indexOf(dropElement.parentElement.children, (this.source ? phElement : sourceElement));\r\n const dropIndex = __indexOf(dropElement.parentElement.children, dropElement);\r\n if (!this.source) {\r\n this.sourceIndex = dragIndex;\r\n this.source = drag.dropContainer;\r\n phElement.style.width = sourceElement.clientWidth + 'px';\r\n phElement.style.height = sourceElement.clientHeight + 'px';\r\n sourceElement.parentElement.removeChild(sourceElement);\r\n }\r\n this.targetIndex = dropIndex;\r\n this.target = drop;\r\n phElement.style.display = '';\r\n dropElement.parentElement.insertBefore(phElement, (dropIndex > dragIndex\r\n ? dropElement.nextSibling : dropElement));\r\n this.placeholder.enter(drag, drag.element.nativeElement.offsetLeft, drag.element.nativeElement.offsetTop);\r\n return false;\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const phElement = this.placeholder.element.nativeElement;\r\n phElement.style.display = 'none';\r\n phElement.parentElement.removeChild(phElement);\r\n }\r\n\r\n dragMoved(e: CdkDragMove) {\r\n const point = this.getPointerPositionOnPage(e.event);\r\n this.listGroup._items.forEach(dropList => {\r\n if (__isInsideDropListClientRect(dropList, point.x, point.y)) {\r\n this.activeContainer = dropList;\r\n return;\r\n }\r\n });\r\n }\r\n\r\n dropListDropped(): void {\r\n if (!this.target) {\r\n return;\r\n }\r\n const phElement = this.placeholder.element.nativeElement;\r\n const parent = phElement.parentElement;\r\n phElement.style.display = 'none';\r\n parent.removeChild(phElement);\r\n parent.appendChild(phElement);\r\n parent.insertBefore(this.source.element.nativeElement, parent.children[this.sourceIndex]);\r\n this.target = null;\r\n this.source = null;\r\n if (this.sourceIndex !== this.targetIndex) {\r\n moveItemInArray(this.items, this.sourceIndex, this.targetIndex);\r\n this.itemsChanged.emit(this.items);\r\n }\r\n }\r\n\r\n /** Determines the point of the page that was touched by the user. */\r\n getPointerPositionOnPage(event: MouseEvent | TouchEvent): any {\r\n // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\r\n const point = __isTouchEvent(event) ? (event.touches[0] || event.changedTouches[0]) : event;\r\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\r\n return {\r\n x: point.pageX - scrollPosition.left,\r\n y: point.pageY - scrollPosition.top\r\n };\r\n }\r\n}\r\n\r\nfunction __indexOf(collection, node) {\r\n return Array.prototype.indexOf.call(collection, node);\r\n}\r\n\r\n/** Determines whether an event is a touch event. */\r\nfunction __isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\r\n return event.type.startsWith('touch');\r\n}\r\n\r\nfunction __isInsideDropListClientRect(dropList: CdkDropList, x: number, y: number) {\r\n const {top, bottom, left, right} = dropList.element.nativeElement.getBoundingClientRect();\r\n return y >= top && y <= bottom && x >= left && x <= right;\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule, CurrencyPipe} from '@angular/common';\r\nimport {EditorComponent} from './components/editor/editor.component';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {OwnerInfoComponent} from './components/owner-info/owner-info.component';\r\nimport {DocumentsComponent} from './components/documents/documents.component';\r\nimport {\r\n CountryCodeModule,\r\n DialogModule,\r\n LocationModule,\r\n SafeUrlModule, ShareModule,\r\n StringManipulationModule,\r\n UploadFileModule\r\n} from '@maplander/shared';\r\nimport {SnackBarModule} from '@maplander/core';\r\nimport {PropertyComponent} from './components/property/property.component';\r\nimport {DetailsComponent} from './components/details/details.component';\r\nimport {SlideShowComponent} from './components/slideshow/slide-show.component';\r\nimport {MultimediaUploaderComponent} from './components/multimedia-uploader/multimedia-uploader.component';\r\nimport {AnnounceConfirmComponent} from './components/announce-confirm/announce-confirm.component';\r\nimport {MultimediaUploaderService} from './components/multimedia-uploader/multimedia-uploader.service';\r\nimport {AnnounceConfirmService} from './components/announce-confirm/announce-confirm.service';\r\nimport {CustomDatepickerModule} from './components/editor/components/custom-datepicker/custom-datepicker.module';\r\nimport {DocumentVisorModule} from '../document-visor/document-visor.module';\r\nimport {PanoramaVisorModule} from '../panorama-visor/panorama-visor.module';\r\nimport {FormatDateModule} from '../../pipes/format-date/format-date.module';\r\nimport {OfferingTypeModule} from '../../pipes/offering-type/offering-type.module';\r\nimport {PropertyTypeModule} from '../../pipes/property-type/property-type.module';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\r\nimport {MatCheckboxModule} from '@angular/material/checkbox';\r\nimport {MatDatepickerModule} from '@angular/material/datepicker';\r\nimport {MatFormFieldModule} from '@angular/material/form-field';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatRadioModule} from '@angular/material/radio';\r\nimport {MatSelectModule} from '@angular/material/select';\r\nimport {MatSidenavModule} from '@angular/material/sidenav';\r\nimport {MatTabsModule} from '@angular/material/tabs';\r\nimport {MatToolbarModule} from '@angular/material/toolbar';\r\nimport {MatNativeDateModule, MatRippleModule} from '@angular/material/core';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {EcoFabSpeedDialModule} from '@ecodev/fab-speed-dial';\r\nimport {FormatPriceModule} from '../../directives/format-price/format-price.module';\r\nimport {DragDropModule} from '@angular/cdk/drag-drop';\r\nimport { CustomDragAndDropComponent } from './components/custom-drag-and-drop/custom-drag-and-drop.component';\r\nimport {GalleryComponent} from './components/gallery/gallery.component';\r\nimport {GalleryService} from './components/gallery/gallery.service';\r\nimport {PROPERTY_TOKEN} from './token';\r\nimport { StatsComponent } from './components/stats/stats.component';\r\nimport {StatsService} from './components/stats/stats.service';\r\n\r\n\r\nconst MATERIAL = [\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatIconModule,\r\n MatButtonToggleModule,\r\n MatRadioModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatToolbarModule,\r\n MatTabsModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatRippleModule,\r\n MatNativeDateModule,\r\n DragDropModule\r\n];\r\n\r\nconst PAGES = [\r\n PropertyComponent\r\n];\r\n\r\nconst COMPONENTS = [\r\n DetailsComponent,\r\n EditorComponent,\r\n OwnerInfoComponent,\r\n SlideShowComponent,\r\n DocumentsComponent,\r\n MultimediaUploaderComponent,\r\n AnnounceConfirmComponent,\r\n CustomDragAndDropComponent,\r\n GalleryComponent,\r\n StatsComponent\r\n];\r\n\r\nconst ENTRY_COMPONENTS = [\r\n MultimediaUploaderComponent,\r\n AnnounceConfirmComponent,\r\n GalleryComponent,\r\n StatsComponent\r\n];\r\n\r\nconst PROVIDERS = [\r\n MultimediaUploaderService,\r\n AnnounceConfirmService,\r\n CurrencyPipe,\r\n GalleryService,\r\n StatsService\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MATERIAL,\r\n EcoFabSpeedDialModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n UploadFileModule,\r\n DocumentVisorModule.forChild(),\r\n OfferingTypeModule.forChild(),\r\n PropertyTypeModule.forChild(),\r\n SafeUrlModule.forChild(),\r\n StringManipulationModule.forChild(),\r\n FormatDateModule.forChild(),\r\n FormatPriceModule.forChild(),\r\n ShareModule.forChild(),\r\n PanoramaVisorModule,\r\n CountryCodeModule,\r\n LocationModule,\r\n DialogModule,\r\n CustomDatepickerModule,\r\n SnackBarModule.forRoot()\r\n ],\r\n declarations: [\r\n PAGES,\r\n COMPONENTS\r\n ],\r\n entryComponents: [\r\n ENTRY_COMPONENTS\r\n ],\r\n exports: [\r\n PropertyComponent\r\n ],\r\n providers: [\r\n PROVIDERS\r\n ]\r\n})\r\nexport class PropertyModule {\r\n static forChild(isOPI?: boolean): ModuleWithProviders {\r\n return {\r\n ngModule: PropertyModule,\r\n providers: [\r\n {\r\n provide: PROPERTY_TOKEN,\r\n useValue: isOPI || false\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\n\r\nexport const PROPERTY_CARD_CONFIG_MODULE = new InjectionToken<boolean>('PROPERTY CARD CONFIG MODULE');\r\n","import {Component, EventEmitter, Inject, Input, OnChanges, Optional, Output, SimpleChanges, OnInit} from '@angular/core';\r\nimport {PROPERTY_CARD_CONFIG_MODULE} from './token';\r\nimport {Marker} from '../../utils/models/marker';\r\nimport {PropertyCardInfo} from '../../utils/models/property-card-info';\r\n\r\n@Component({\r\n selector: 'lib-property-card',\r\n templateUrl: './property-card.component.html',\r\n styleUrls: ['./property-card.component.scss']\r\n})\r\nexport class PropertyCardComponent implements OnChanges, OnInit {\r\n @Input() marker: Marker;\r\n @Input() href: string;\r\n @Input() target: string;\r\n @Input() queryParams: {\r\n [k: string]: any;\r\n };\r\n @Input() state: {\r\n [k: string]: any;\r\n };\r\n @Input() showAlert: boolean;\r\n @Input() positionLatLng: any;\r\n @Input() isFavorite: boolean;\r\n @Input() currency: string;\r\n @Input() showDiscard: boolean;\r\n @Input() mode: 'full' | 'summary' = 'full';\r\n @Output() markerChanged: EventEmitter<Marker>;\r\n @Output() favoriteChanged: EventEmitter<string>;\r\n @Output() propertyDiscarded: EventEmitter<string>;\r\n public info: PropertyCardInfo;\r\n public distance: any;\r\n\r\n constructor(\r\n @Optional() @Inject(PROPERTY_CARD_CONFIG_MODULE) public isOPI: boolean,\r\n ) {\r\n this.currency = null;\r\n this.markerChanged = new EventEmitter<Marker>();\r\n this.favoriteChanged = new EventEmitter<string>();\r\n this.propertyDiscarded = new EventEmitter<string>();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.positionLatLng) {\r\n this.latLng(this.positionLatLng.latitude, this.positionLatLng.longitude);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['currency'] && changes['currency'].currentValue) {\r\n this.currency = changes['currency'].currentValue !== 'MXN' ? changes['currency'].currentValue : null;\r\n }\r\n if (changes['marker'] && changes['marker'].currentValue) {\r\n this.info = changes['marker'].currentValue.info;\r\n }\r\n }\r\n\r\n onFrontImageOver(): void {\r\n this.marker.hover = true;\r\n this.markerChanged.emit(this.marker);\r\n }\r\n\r\n onFrontImageLeave(): void {\r\n this.marker.hover = false;\r\n this.markerChanged.emit(this.marker);\r\n }\r\n\r\n favorite(): void {\r\n this.favoriteChanged.emit(this.info.propertyId);\r\n }\r\n\r\n discard(): void {\r\n this.propertyDiscarded.emit(this.info.propertyId);\r\n }\r\n\r\n private deg2rad(deg): any {\r\n return deg * (Math.PI / 180 );\r\n }\r\n\r\n private latLng(lat: any, lng: any): void {\r\n const lat1 = lat;\r\n const lon1 = lng;\r\n const lat2 = this.marker.location.latitude;\r\n const lon2 = this.marker.location.longitude;\r\n const R = 6371; // Radius of the earth in km\r\n const dLat = this.deg2rad(lat2 - lat1 ); // deg2rad below\r\n const dLon = this.deg2rad(lon2 - lon1 );\r\n const a =\r\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos(this.deg2rad(lat1)) * Math.cos(this.deg2rad(lat2)) *\r\n Math.sin(dLon / 2) * Math.sin(dLon / 2)\r\n ;\r\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n let d = R * c; // Distance in km\r\n if (Math.trunc(d) < 1) {\r\n d = d * 1000;\r\n d = Math.trunc(d);\r\n if (d < 10) {\r\n this.distance = 10 + ' m de su búsqueda';\r\n } else {\r\n d = d - (d % 10);\r\n this.distance = d + ' m de su búsqueda';\r\n }\r\n } else {\r\n this.distance = d.toFixed(2) + ' km de su búsqueda';\r\n }\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {PropertyCardComponent} from './property-card.component';\r\nimport {RouterModule} from '@angular/router';\r\nimport {OfferingTypeModule} from './../../pipes/offering-type/offering-type.module';\r\nimport {PropertyTypeModule} from './../../pipes/property-type/property-type.module';\r\nimport {ImageErrorModule} from './../../directives/image-error/image-error.module';\r\nimport {FormatDateModule} from '../../pipes/format-date/format-date.module';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {PROPERTY_CARD_CONFIG_MODULE} from './token';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n PropertyTypeModule,\r\n OfferingTypeModule,\r\n ImageErrorModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n FormatDateModule\r\n ],\r\n declarations: [\r\n PropertyCardComponent\r\n ],\r\n exports: [\r\n PropertyCardComponent\r\n ]\r\n})\r\nexport class PropertyCardModule {\r\n static forChild(isOPI?: boolean): ModuleWithProviders {\r\n return {\r\n ngModule: PropertyCardModule,\r\n providers: [\r\n {\r\n provide: PROPERTY_CARD_CONFIG_MODULE,\r\n useValue: isOPI\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {\r\n Address,\r\n CER,\r\n Currency,\r\n GeoPt,\r\n NewPropertyLite,\r\n NewPropertyLiteSuggest,\r\n OfferingTypeEnum,\r\n PropertyTypeEnum\r\n} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\nimport {Marker} from '../../utils/models/marker';\r\nimport {PropertyCardInfo} from '../../utils/models/property-card-info';\r\nimport {PropertyTypeItem} from '../../utils/models/property-type-item';\r\nimport {OfferingTypePipe} from '../../pipes/offering-type/offering-type.pipe';\r\nimport {PropertyTypePipe} from '../../pipes/property-type/property-type.pipe';\r\nimport {Utils} from '../../utils';\r\nimport {CurrencyConverterService} from '../currency-converter/currency-converter.service';\r\n\r\ndeclare var google: any;\r\n\r\n@Injectable()\r\nexport class MarkersService {\r\n\r\n constructor(\r\n private _propertyTypePipe: PropertyTypePipe,\r\n private _offeringTypePipe: OfferingTypePipe,\r\n private _converter: CurrencyConverterService\r\n ) {\r\n }\r\n\r\n private static getPropertyTypeItemByType(type: PropertyTypeEnum): PropertyTypeItem {\r\n let item: PropertyTypeItem = null;\r\n ConstantsComponents.PropertyTypeList.forEach((element) => {\r\n if (element.value === type) {\r\n item = element;\r\n }\r\n });\r\n return item;\r\n }\r\n\r\n private static validatePropertyInFavorites(propertyId: string, favorites: NewPropertyLite[]): boolean {\r\n let result = false;\r\n for (let i = 0; i < favorites.length; i++) {\r\n if (propertyId === favorites[i].id) {\r\n result = true;\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private static calculateLocationFrom(location: GeoPt, bearingInRadians: number, distanceInMetres: number): GeoPt {\r\n const coordinateLatitudeInRadians = location.latitude * Math.PI / 180;\r\n const coordinateLongitudeInRadians = location.longitude * Math.PI / 180;\r\n const distanceComparedToEarth = distanceInMetres / 6378100.0;\r\n const resultLatitudeInRadians = Math.asin(Math.sin(coordinateLatitudeInRadians) * Math.cos(distanceComparedToEarth) +\r\n Math.cos(coordinateLatitudeInRadians) * Math.sin(distanceComparedToEarth) * Math.cos(bearingInRadians));\r\n const resultLongitudeInRadians = coordinateLongitudeInRadians + Math.atan2(Math.sin(bearingInRadians) *\r\n Math.sin(distanceComparedToEarth) * Math.cos(coordinateLatitudeInRadians), Math.cos(distanceComparedToEarth) -\r\n Math.sin(coordinateLatitudeInRadians) * Math.sin(resultLatitudeInRadians));\r\n const newCoordinates: any = {};\r\n newCoordinates.latitude = resultLatitudeInRadians * 180 / Math.PI;\r\n newCoordinates.longitude = resultLongitudeInRadians * 180 / Math.PI;\r\n return newCoordinates;\r\n }\r\n\r\n buildURL(config: {\r\n propertyId: string,\r\n offering: OfferingTypeEnum,\r\n propertyType: PropertyTypeEnum,\r\n address: Address\r\n }): string {\r\n let url = 'property/';\r\n url += `${this._propertyTypePipe.transform(config.propertyType, true)}-`;\r\n url += `${this._offeringTypePipe.transform(config.offering, ' ').replace(/ /g, '')}-`;\r\n url += config.address.colony ? `${config.address.colony}-` : '';\r\n url += config.address.city ? `${config.address.city}-` : '';\r\n url += config.propertyId;\r\n url = Utils.removeDiacritics(url).replace(/ /g, '-').toLowerCase();\r\n return url;\r\n }\r\n\r\n validatePropertiesInPoly(properties: Marker[], paths: any[]): Marker[] {\r\n const polygon = new google.maps.Polygon({paths: paths});\r\n if (properties && properties.length > 0) {\r\n properties.map((el: Marker) => {\r\n el.extras['showInPolygon'] = false;\r\n const customLatLng = new google.maps.LatLng(el.location.latitude, el.location.longitude);\r\n if (google.maps.geometry.poly.containsLocation(customLatLng, polygon)) {\r\n el.extras['showInPolygon'] = true;\r\n return el;\r\n } else {\r\n el.extras['showInPolygon'] = false;\r\n return el;\r\n }\r\n });\r\n properties = properties.filter((e) => {\r\n if (e.extras['showInPolygon']) {\r\n return e;\r\n }\r\n });\r\n return properties;\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n markersToCurrency(markers: Marker[], toCurrency: Currency, currencies: CER[]): Marker[] {\r\n markers = markers.map<Marker>(item => {\r\n if (Currency[item.info.currency] !== toCurrency) {\r\n item.info.price = this._converter.number(item.info.price, currencies, Currency[item.info.currency], toCurrency);\r\n item.info.currency = toCurrency.toString();\r\n }\r\n return item;\r\n });\r\n return markers;\r\n }\r\n\r\n buildMarkers(entities: NewPropertyLite[] | NewPropertyLiteSuggest[], favorites?: NewPropertyLite[]): Marker[] {\r\n const markers: Marker[] = [];\r\n entities.forEach((entity) => {\r\n const m: Marker = {\r\n location: entity.address.location,\r\n hover: false,\r\n visited: false,\r\n type: MarkersService.getPropertyTypeItemByType(entity.type),\r\n info: this.createPropertyInfoCard(entity),\r\n isFavorite: false,\r\n extras: {}\r\n };\r\n if (entity instanceof NewPropertyLite) {\r\n m.isFavorite = favorites && favorites.length > 0 ? MarkersService.validatePropertyInFavorites(entity.id, favorites) : false;\r\n } else {\r\n m.isFavorite = favorites && favorites.length > 0 ? MarkersService.validatePropertyInFavorites(entity.propertyId, favorites) : false;\r\n }\r\n markers.push(m);\r\n });\r\n return markers;\r\n }\r\n\r\n buildSpider(list: Marker[]): { markers: Marker[], polyLines: any[] } {\r\n const response = {markers: [], polyLines: []};\r\n list.map((el) => {\r\n el.extras['repeat'] = false;\r\n const size = list.filter(item => {\r\n return el.location.latitude === item.location.latitude && el.location.longitude === item.location.longitude;\r\n });\r\n const distance = 12 * size.length / 2.0;\r\n const radiansBetweenAnnotations = (Math.PI * 2) / size.length;\r\n if (!el.extras['repeat'] && size.length > 1) {\r\n const locationShare: any = Object.assign({}, el.location);\r\n for (let i = 0; i < size.length; i++) {\r\n const heading = radiansBetweenAnnotations * i;\r\n size[i]['repeat'] = true;\r\n const newLocation = MarkersService.calculateLocationFrom(locationShare, heading, distance);\r\n response.polyLines.push({\r\n path: [\r\n {\r\n latitude: Number(locationShare.latitude),\r\n longitude: Number(locationShare.longitude)\r\n },\r\n {\r\n latitude: Number(newLocation.latitude),\r\n longitude: Number(newLocation.longitude)\r\n }]\r\n });\r\n size[i].location = newLocation;\r\n }\r\n }\r\n return el;\r\n });\r\n response.markers = list;\r\n return response;\r\n }\r\n\r\n buildNewSpider(list: Array<{ id: string, location: GeoPt, price: number,\r\n currency: string, url: string, type: PropertyTypeEnum }>): { markers: any[], polyLines: any[] } {\r\n const response = {markers: [], polyLines: []};\r\n const newList = [];\r\n for (const listElement of list) {\r\n newList.push({\r\n id: listElement.id,\r\n location: listElement.location,\r\n price: listElement.price,\r\n currency: listElement.currency,\r\n url: listElement.url,\r\n type: listElement.type,\r\n extras: {}\r\n });\r\n }\r\n newList.map((el) => {\r\n el.extras['repeat'] = false;\r\n const size = newList.filter(item => {\r\n return el.location.latitude === item.location.latitude && el.location.longitude === item.location.longitude;\r\n });\r\n const distance = 30 * size.length / 2.0;\r\n const radiansBetweenAnnotations = (Math.PI * 2) / size.length;\r\n if (!el.extras['repeat'] && size.length > 1) {\r\n const locationShare: any = Object.assign({}, el.location);\r\n for (let i = 0; i < size.length; i++) {\r\n const heading = radiansBetweenAnnotations * i;\r\n size[i]['repeat'] = true;\r\n const newLocation = MarkersService.calculateLocationFrom(locationShare, heading, distance);\r\n response.polyLines.push({\r\n path: [\r\n {\r\n latitude: Number(locationShare.latitude),\r\n longitude: Number(locationShare.longitude)\r\n },\r\n {\r\n latitude: Number(newLocation.latitude),\r\n longitude: Number(newLocation.longitude)\r\n }]\r\n });\r\n size[i].location = newLocation;\r\n }\r\n }\r\n return el;\r\n });\r\n response.markers = newList;\r\n return response;\r\n }\r\n\r\n private createPropertyInfoCard(entity: NewPropertyLite | NewPropertyLiteSuggest): PropertyCardInfo {\r\n return {\r\n address: new Address(entity.address || null),\r\n authUsers: (entity instanceof NewPropertyLite) ? entity.authUsers : '',\r\n currency: entity.currency,\r\n propertyId: (entity instanceof NewPropertyLite) ? entity.id : entity.propertyId,\r\n image: entity.image,\r\n offering: entity.offering,\r\n price: entity.price,\r\n type: entity.type,\r\n url: this.buildURL({\r\n address: entity.address,\r\n offering: entity.offering,\r\n propertyType: entity.type,\r\n propertyId: (entity instanceof NewPropertyLite) ? entity.id : entity.propertyId\r\n }),\r\n status: (entity instanceof NewPropertyLite) ? entity.status : null,\r\n features: (entity instanceof NewPropertyLite) ? entity.features : null,\r\n };\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {MarkersService} from './markers.service';\r\nimport {CurrencyConverterModule} from '../currency-converter/currency-converter.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CurrencyConverterModule.forChild()\r\n ]\r\n})\r\nexport class MarkersModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: MarkersModule,\r\n providers: [\r\n MarkersService\r\n ]\r\n };\r\n }\r\n}\r\n"],"names":["MatButtonModule","MatIconModule","MAT_DIALOG_DATA","MatDialogRef","MatDialog","MATERIAL","MatInputModule","COMPONENTS"],"mappings":"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"}
1
+ {"version":3,"file":"maplander-components.js","sources":["ng://@maplander/components/lib/pipes/address/address-format.pipe.ts","ng://@maplander/components/lib/pipes/address/address-format.module.ts","ng://@maplander/components/lib/utils/classes/filters-wrapper.ts","ng://@maplander/components/lib/utils/classes/mDate.ts","ng://@maplander/components/lib/pipes/format-date/format-date.pipe.ts","ng://@maplander/components/lib/pipes/format-date/format-date.module.ts","ng://@maplander/components/lib/utils/enums/amenity-name.ts","ng://@maplander/components/lib/constantsComponents.ts","ng://@maplander/components/lib/utils.ts","ng://@maplander/components/lib/pipes/marker-price/marker-price.pipe.ts","ng://@maplander/components/lib/pipes/marker-price/marker-price.module.ts","ng://@maplander/components/lib/pipes/offering-type/offering-type.pipe.ts","ng://@maplander/components/lib/pipes/offering-type/offering-type.module.ts","ng://@maplander/components/lib/pipes/property-type/property-type.pipe.ts","ng://@maplander/components/lib/pipes/property-type/property-type.module.ts","ng://@maplander/components/lib/directives/format-price/format-price.directive.ts","ng://@maplander/components/lib/directives/format-price/format-price.module.ts","ng://@maplander/components/lib/directives/image-error/image-error.directive.ts","ng://@maplander/components/lib/directives/image-error/image-error.module.ts","ng://@maplander/components/lib/components/document-visor/document-visor.component.ts","ng://@maplander/components/lib/components/document-visor/document-visor.service.ts","ng://@maplander/components/lib/components/document-visor/document-visor.module.ts","ng://@maplander/components/lib/utils/enums/filter-chip-type.ts","ng://@maplander/components/lib/utils/enums/filters-change-type.ts","ng://@maplander/components/lib/components/filters/token.ts","ng://@maplander/components/lib/components/filters/filters.service.ts","ng://@maplander/components/lib/components/fab-filters/fab-filters.component.ts","ng://@maplander/components/lib/components/fab-filters/fab-filters.module.ts","ng://@maplander/components/lib/services/currency-converter/currency-converter.service.ts","ng://@maplander/components/lib/utils/classes/mUtils.ts","ng://@maplander/components/lib/components/property/validators/remove-error.ts","ng://@maplander/components/lib/components/property/validators/currency-filter-validator.ts","ng://@maplander/components/lib/components/filters/filters.component.ts","ng://@maplander/components/lib/services/currency-converter/currency-converter.module.ts","ng://@maplander/components/lib/components/filters/filters.module.ts","ng://@maplander/components/lib/components/panorama-visor/panorama-visor.component.ts","ng://@maplander/components/lib/components/panorama-visor/panorama-visor.module.ts","ng://@maplander/components/lib/components/property/components/multimedia-uploader/multimedia-uploader.component.ts","ng://@maplander/components/lib/components/property/components/multimedia-uploader/multimedia-uploader.service.ts","ng://@maplander/components/lib/components/property/components/announce-confirm/announce-confirm.component.ts","ng://@maplander/components/lib/components/property/components/announce-confirm/announce-confirm.service.ts","ng://@maplander/components/lib/components/property/components/gallery/gallery.component.ts","ng://@maplander/components/lib/components/property/components/gallery/gallery.service.ts","ng://@maplander/components/lib/components/property/token.ts","ng://@maplander/components/lib/components/property/components/stats/stats.component.ts","ng://@maplander/components/lib/components/property/components/stats/stats.service.ts","ng://@maplander/components/lib/components/property/components/property/property.component.ts","ng://@maplander/components/lib/components/property/validators/property-editor-validators.ts","ng://@maplander/components/lib/components/property/components/editor/editor.component.ts","ng://@maplander/components/lib/components/property/validators/phone-fields-validator.ts","ng://@maplander/components/lib/components/property/components/owner-info/owner-info.component.ts","ng://@maplander/components/lib/components/property/components/documents/documents.component.ts","ng://@maplander/components/lib/components/property/components/details/details.component.ts","ng://@maplander/components/lib/components/property/components/slideshow/slide-show.component.ts","ng://@maplander/components/lib/components/property/components/editor/components/custom-datepicker/date-adapter.ts","ng://@maplander/components/lib/components/property/components/editor/components/custom-datepicker/custom-datepicker-header/custom-datepicker-header.component.ts","ng://@maplander/components/lib/components/property/components/editor/components/custom-datepicker/custom-datepicker/custom-datepicker.component.ts","ng://@maplander/components/lib/components/property/components/editor/components/custom-datepicker/custom-datepicker.module.ts","ng://@maplander/components/lib/components/property/components/custom-drag-and-drop/custom-drag-and-drop.component.ts","ng://@maplander/components/lib/components/property/property.module.ts","ng://@maplander/components/lib/components/property-card/token.ts","ng://@maplander/components/lib/components/property-card/property-card.component.ts","ng://@maplander/components/lib/components/property-card/property-card.module.ts","ng://@maplander/components/lib/services/markers/markers.service.ts","ng://@maplander/components/lib/services/markers/markers.module.ts"],"sourcesContent":["import {Pipe, PipeTransform} from '@angular/core';\r\nimport {Address} from '@maplander/types';\r\n\r\n@Pipe({\r\n name: 'addressFormat'\r\n})\r\nexport class AddressFormatPipe implements PipeTransform {\r\n\r\n transform(value: Address, long?: boolean, country?: string): string {\r\n let result = '';\r\n const language = country || 'mx';\r\n result += value.street;\r\n switch (language) {\r\n case 'mx':\r\n if (long) {\r\n result += `, ${value.colony || ''}`;\r\n result += `, ${value.postalCode || ''}`;\r\n result += `, ${value.city || ''}`;\r\n result += `, ${value.state || ''}`;\r\n result += `, ${value.country || ''}`;\r\n } else {\r\n result += `, ${value.colony || ''}`;\r\n }\r\n break;\r\n case 'usa':\r\n if (long) {\r\n result += `, ${value.city || ''}`;\r\n result += `, ${value.state || ''}`;\r\n result += `, ${value.postalCode || ''}`;\r\n result += `, ${value.country || ''}`;\r\n } else {\r\n result += `, ${value.city || ''}`;\r\n result += `, ${value.state || ''}`;\r\n }\r\n break;\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {AddressFormatPipe} from './address-format.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n AddressFormatPipe\r\n ],\r\n exports: [\r\n AddressFormatPipe\r\n ]\r\n})\r\nexport class AddressFormatModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: AddressFormatModule,\r\n providers: [\r\n AddressFormatPipe\r\n ]\r\n };\r\n }\r\n}\r\n","import {FiltersComponent} from '../../components/filters/filters.component';\r\n\r\nexport class FiltersWrapper {\r\n private _component: FiltersComponent;\r\n\r\n constructor(component: FiltersComponent) {\r\n this._component = component;\r\n }\r\n\r\n open(): void {\r\n this._component.open();\r\n }\r\n\r\n close(): void {\r\n this._component.close();\r\n }\r\n\r\n}\r\n","/*\r\n * Copyright (C) MapLander S de R.L de C.V - All Rights Reserved\r\n * Unauthorized copying of this file, via any medium is strictly prohibited\r\n * Proprietary and confidential\r\n */\r\n\r\n/**\r\n *\r\n * @author Alejandro Lopez Arreola\r\n * Custom class for dates compatible with Google Data Store\r\n *\r\n * */\r\n\r\nexport class MDate {\r\n\r\n private _timestamp: string;\r\n\r\n /**\r\n * @param date Timestamp with format YYYYMMDD\r\n * @example 20190812\r\n * */\r\n constructor(date: number) {\r\n this._timestamp = date.toString();\r\n }\r\n\r\n /**\r\n * @param date Date object\r\n * @param time Returns timestamp as time, default is date\r\n * @example Date: Format YYYYMMDD = 20190812, Time: Format HHMMSS = 171401\r\n * @return number\r\n * */\r\n public static getTimestamp(date: Date, time?: boolean): number {\r\n let timestamp = '';\r\n if (time) {\r\n timestamp += `${date.getHours()}`;\r\n timestamp += date.getMinutes() < 10 ? `0${date.getMinutes()}` : `${date.getMinutes()}`;\r\n timestamp += date.getSeconds() < 10 ? `0${date.getSeconds()}` : `${date.getSeconds()}`;\r\n return Number(timestamp);\r\n } else {\r\n timestamp += `${date.getFullYear().toString()}`;\r\n timestamp += (date.getMonth() + 1) < 10 ? `0${(date.getMonth() + 1)}` : `${date.getMonth() + 1}`;\r\n timestamp += date.getDate() < 10 ? `0${date.getDate()}` : `${date.getDate().toString()}`;\r\n return Number(timestamp);\r\n }\r\n }\r\n\r\n private static getHours(time: string): string {\r\n return time.slice(0, 2);\r\n }\r\n\r\n private static getMinutes(time: string): string {\r\n return time.slice(2, 4);\r\n }\r\n\r\n private static getSeconds(time: string): string {\r\n return time.slice(4, time.length);\r\n }\r\n\r\n private static getWeekDayName(day: number, toLowerCase?: boolean): string {\r\n switch (day) {\r\n case 0:\r\n return toLowerCase ? 'lunes' : 'Lunes';\r\n case 1:\r\n return toLowerCase ? 'martes' : 'Martes';\r\n case 2:\r\n return toLowerCase ? 'miercoles' : 'Miercoles';\r\n case 3:\r\n return toLowerCase ? 'jueves' : 'Jueves';\r\n case 4:\r\n return toLowerCase ? 'viernes' : 'Viernes';\r\n case 5:\r\n return toLowerCase ? 'sabado' : 'Sabado';\r\n case 6:\r\n return toLowerCase ? 'domingo' : 'Domingo';\r\n }\r\n }\r\n\r\n private static getMonthName(month: string, toLowerCase?: boolean): string {\r\n switch (month) {\r\n case '01':\r\n return toLowerCase ? 'ene.' : 'Ene.';\r\n case '02':\r\n return toLowerCase ? 'feb.' : 'Feb.';\r\n case '03':\r\n return toLowerCase ? 'mar.' : 'Mar.';\r\n case '04':\r\n return toLowerCase ? 'abr.' : 'Abr.';\r\n case '05':\r\n return toLowerCase ? 'may.' : 'May.';\r\n case '06':\r\n return toLowerCase ? 'jun.' : 'Jun.';\r\n case '07':\r\n return toLowerCase ? 'jul.' : 'Jul.';\r\n case '08':\r\n return toLowerCase ? 'ago.' : 'Ago.';\r\n case '09':\r\n return toLowerCase ? 'sep.' : 'Sep.';\r\n case '10':\r\n return toLowerCase ? 'oct.' : 'Oct.';\r\n case '11':\r\n return toLowerCase ? 'nov.' : 'Nov.';\r\n case '12':\r\n return toLowerCase ? 'dic.' : 'Dic.';\r\n }\r\n }\r\n\r\n /**\r\n * @param time Timestamp with format HHMMSS\r\n * @example 171401\r\n * @return Date\r\n * Converting timestamp with format YYYYMMDD,\r\n * if you not assign the time param, the hours, minutes and seconds is a zero\r\n * */\r\n public toDate(time?: number): Date {\r\n if (time) {\r\n const cDate = `${this.getYear()}-${this.getMoth()}-${this.getDay()}`;\r\n const cTime = `${MDate.getHours(time.toString())}:${MDate.getMinutes(time.toString())}:${MDate.getSeconds(time.toString())}`;\r\n const fullCDate = `${cDate}T${cTime}Z`;\r\n return new Date(fullCDate);\r\n } else {\r\n return new Date(Number(this.getYear()), Number(this.getMoth()) - 1, Number(this.getDay()));\r\n }\r\n }\r\n\r\n /**\r\n * @param format Format date | 'dd/MM/yyyy' | 'dd MMMMM yyyy' | 'EEEEE HH:mm' | 'dd MMMMM HH:mm' |'dd MMMMM yyyy HH:mm'\r\n * @param time Timestamp as time with format HHMMSS\r\n * @param toLowerCase Words on lower case\r\n * @param format12Hours 12 hours format on time\r\n * @return string\r\n * Return string with date format\r\n * */\r\n public getFormat(format: 'dd/MM/yyyy' | 'dd MMMMM yyyy' | 'dd MMMMM' | 'EEEEE HH:mm' | 'dd MMMMM HH:mm' | 'dd MMMMM yyyy HH:mm', {\r\n time = null,\r\n toLowerCase = false,\r\n format12Hours = false\r\n } = {}): string {\r\n let date = '', d: Date = null;\r\n switch (format) {\r\n case 'dd/MM/yyyy':\r\n date = `${this.getDay()}/${this.getMoth()}/${this.getYear()}`;\r\n break;\r\n case 'dd MMMMM yyyy':\r\n date = `${this.getDay()} ${MDate.getMonthName(this.getMoth(), toLowerCase)} ${this.getYear()}`;\r\n break;\r\n case 'dd MMMMM':\r\n date = `${this.getDay()} ${MDate.getMonthName(this.getMoth(), toLowerCase)}`;\r\n break;\r\n case 'EEEEE HH:mm':\r\n date += `${MDate.getWeekDayName(this.toDate(time).getDay() - 1, toLowerCase)}`;\r\n d = this.toDate(time);\r\n if (format12Hours) {\r\n date += d.getHours() === 13 ? ` a la ` : ` a las `;\r\n date += d.getHours() < 12 ? d.getHours() : d.getHours() - 12;\r\n date += ':' + d.getMinutes();\r\n date += d.getHours() < 12 ? ` AM` : ` PM`;\r\n } else {\r\n date += ' a las ';\r\n date += `${d.getHours()}:${d.getMinutes()}`;\r\n }\r\n break;\r\n case 'dd MMMMM HH:mm':\r\n date += `${this.getDay()}`;\r\n date += ` de ${MDate.getMonthName(this.getMoth(), toLowerCase)}`;\r\n d = this.toDate(time);\r\n if (format12Hours) {\r\n date += d.getHours() === 13 ? ` a la ` : ` a las `;\r\n date += d.getHours() < 12 ? d.getHours() : d.getHours() - 12;\r\n date += ':' + d.getMinutes();\r\n date += d.getHours() < 12 ? ` AM` : ` PM`;\r\n } else {\r\n date += ' a las ';\r\n date += `${d.getHours()}:${d.getMinutes()}`;\r\n }\r\n break;\r\n case 'dd MMMMM yyyy HH:mm':\r\n date += `${this.getDay()}`;\r\n date += ` de ${MDate.getMonthName(this.getMoth(), toLowerCase)} ${this.getYear()}`;\r\n d = this.toDate(time);\r\n if (format12Hours) {\r\n date += d.getHours() === 13 ? ` a la ` : ` a las `;\r\n date += d.getHours() < 12 ? d.getHours() : d.getHours() - 12;\r\n date += ':' + d.getMinutes();\r\n date += d.getHours() < 12 ? ` AM` : ` PM`;\r\n } else {\r\n date += ' a las ';\r\n date += `${d.getHours()}:${d.getMinutes()}`;\r\n }\r\n break;\r\n }\r\n return date;\r\n }\r\n\r\n private getYear(): string {\r\n return this._timestamp.slice(0, 4);\r\n }\r\n\r\n private getMoth(): string {\r\n return this._timestamp.slice(4, 6);\r\n }\r\n\r\n private getDay(): string {\r\n return this._timestamp.slice(6, this._timestamp.length);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {MDate} from '../../utils/classes';\r\n\r\n@Pipe({\r\n name: 'libFormatDate'\r\n})\r\nexport class FormatDatePipe implements PipeTransform {\r\n\r\n transform(value: any, mDate?: boolean, format?: 'dd/MM/yyyy' | 'dd MMMMM yyyy' | 'dd MMMMM' | 'EEEEE HH:mm' | 'dd MMMMM HH:mm' | 'dd MMMMM yyyy HH:mm'): any {\r\n if (mDate) {\r\n return new MDate(value).getFormat(format, {toLowerCase: true});\r\n } else {\r\n const d = new Date(Number(value));\r\n return `${d.getDate() < 10 ? '0' + d.getDate() : d.getDate()}/${d.getMonth() < 10 ? '0' + d.getMonth() : d.getMonth()}/${d.getFullYear()}`;\r\n }\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FormatDatePipe} from './format-date.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n FormatDatePipe\r\n ],\r\n exports: [\r\n FormatDatePipe\r\n ]\r\n})\r\nexport class FormatDateModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: FormatDateModule,\r\n providers: [\r\n FormatDatePipe\r\n ]\r\n };\r\n }\r\n}\r\n","export enum AmenityName {\r\n AdjacentCommerce = 'adjacentCommerce',\r\n AdjacentGym = 'gym',\r\n AdjacentPicnic = 'adjacentPicnic',\r\n AirConditioner = 'airConditioner',\r\n Balcony = 'balcony',\r\n CustomerParking = 'customerParking',\r\n DiningRoom = 'diningRoom',\r\n DoubleHeight = 'doubleHeight',\r\n DressingRooms = 'dressingRooms',\r\n FacingStreet = 'facingStreet',\r\n Finishings = 'finishings',\r\n Furnished = 'furnished',\r\n Garden = 'garden',\r\n Gym = 'gym',\r\n HighResistanceFloors = 'highResistanceFloors',\r\n HighSpeedInternet = 'highSpeedInternet',\r\n InCommercialArea = 'inCommercialArea',\r\n InIndustrialPark = 'inIndustrialPark',\r\n InShoppingCenter = 'inShoppingCenter',\r\n Jacuzzi = 'jacuzzi',\r\n KitchenServices = 'kitchenServices',\r\n MaidsBathroom = 'maidsBathroom',\r\n ManeuverArea = 'maneuverArea',\r\n MeetingRoom = 'meetingRoom',\r\n Mezzanine = 'mezzanine',\r\n MixedBuilding = 'mixedBuilding',\r\n NaturalLighting = 'naturalLighting',\r\n Offices = 'offices',\r\n OpenSpace = 'openSpace',\r\n Platforms = 'platforms',\r\n Playground = 'playground',\r\n Playroom = 'playroom',\r\n Pool = 'pool',\r\n RailSpur = 'railSpur',\r\n RailYard = 'maneuverArea',\r\n Reception = 'reception',\r\n SecurityGuard = 'securityGuard',\r\n Storage = 'storage',\r\n VisitorParking = 'visitorParking',\r\n NearPublicTransportation = 'nearPublicTransportation',\r\n NearShops = 'nearShops',\r\n OnBusyRoad = 'onBusyRoad',\r\n CountrySide = 'countrySide',\r\n Downtown = 'downtown',\r\n GoodReachableTraffic = 'goodReachableTraffic',\r\n NearFitnessCentre = 'nearFitnessCentre',\r\n NearHighway = 'nearHighway',\r\n NearHospital = 'nearHospital',\r\n NearPark = 'nearPark',\r\n NearSchools = 'nearSchools',\r\n OnQuietRoad = 'onQuietRoad',\r\n RoofGarden = 'roofGarden',\r\n PetFriendly = 'petFriendly',\r\n DifferentAbilities = 'differentAbilities'\r\n}\r\n","import {LandUseEnum, OfferingTypeEnum, PFileTypeEnum, PropertyTypeEnum, StatusTypeEnum} from '@maplander/types';\r\nimport {AmenitiesList} from './utils/models/amenities-list';\r\nimport {AmenityName} from './utils/enums/amenity-name';\r\nimport {PropertyTypeItem} from './utils/models/property-type-item';\r\nimport {PropertyStatusItem} from './utils/models/propertyStatusItem';\r\n\r\nexport class ConstantsComponents {\r\n static Amenities: AmenitiesList = {\r\n roofGarden: {\r\n checked: false,\r\n iconName: AmenityName.RoofGarden,\r\n value: AmenityName.RoofGarden,\r\n name: 'Terraza'\r\n },\r\n petFriendly: {\r\n checked: false,\r\n iconName: AmenityName.PetFriendly,\r\n value: AmenityName.PetFriendly,\r\n name: 'Acepta Mascotas'\r\n },\r\n differentAbilities: {\r\n checked: false,\r\n iconName: AmenityName.DifferentAbilities,\r\n value: AmenityName.DifferentAbilities,\r\n name: 'Con capacidades diferentes'\r\n },\r\n adjacentCommerce: {\r\n checked: false,\r\n iconName: AmenityName.AdjacentCommerce,\r\n value: AmenityName.AdjacentCommerce,\r\n name: 'Comercio adyacente'\r\n },\r\n adjacentGym: {checked: false, iconName: AmenityName.Gym, value: AmenityName.AdjacentGym, name: 'Gym adyacente'},\r\n adjacentPicnic: {checked: false, iconName: AmenityName.AdjacentPicnic, value: AmenityName.AdjacentPicnic, name: 'Merendero adyacente'},\r\n airConditioner: {checked: false, iconName: AmenityName.AirConditioner, value: AmenityName.AirConditioner, name: 'Aire acondicionado'},\r\n balcony: {checked: false, iconName: AmenityName.Balcony, value: AmenityName.Balcony, name: 'Balcón'},\r\n customerParking: {\r\n checked: false,\r\n iconName: AmenityName.CustomerParking,\r\n value: AmenityName.CustomerParking,\r\n name: 'Estacionamiento para clientes'\r\n },\r\n diningRoom: {checked: false, iconName: AmenityName.DiningRoom, value: AmenityName.DiningRoom, name: 'Comedor'},\r\n doubleHeight: {checked: false, iconName: AmenityName.DoubleHeight, value: AmenityName.DoubleHeight, name: 'Doble altura'},\r\n dressingRooms: {checked: false, iconName: AmenityName.DressingRooms, value: AmenityName.DressingRooms, name: 'Con vestidores'},\r\n facingStreet: {checked: false, iconName: AmenityName.FacingStreet, value: AmenityName.FacingStreet, name: 'Frente a calle'},\r\n finishings: {checked: false, iconName: AmenityName.Finishings, value: AmenityName.Finishings, name: 'Con acabados'},\r\n furnished: {checked: false, iconName: AmenityName.Furnished, value: AmenityName.Furnished, name: 'Amueblada'},\r\n garden: {checked: false, iconName: AmenityName.Garden, value: AmenityName.Garden, name: 'Jardín'},\r\n gym: {checked: false, iconName: AmenityName.Gym, value: AmenityName.Gym, name: 'Gym'},\r\n highResistanceFloors: {\r\n checked: false,\r\n iconName: AmenityName.HighResistanceFloors,\r\n value: AmenityName.HighResistanceFloors,\r\n name: 'Pisos de alta resistencia'\r\n },\r\n highSpeedInternet: {\r\n checked: false,\r\n iconName: AmenityName.HighSpeedInternet,\r\n value: AmenityName.HighSpeedInternet,\r\n name: 'Internet de alta velocidad'\r\n },\r\n inCommercialArea: {\r\n checked: false,\r\n iconName: AmenityName.InCommercialArea,\r\n value: AmenityName.InCommercialArea,\r\n name: 'En zona comercial'\r\n },\r\n inIndustrialPark: {\r\n checked: false,\r\n iconName: AmenityName.InIndustrialPark,\r\n value: AmenityName.InIndustrialPark,\r\n name: 'En parque industrial'\r\n },\r\n inShoppingCenter: {\r\n checked: false,\r\n iconName: AmenityName.InShoppingCenter,\r\n value: AmenityName.InShoppingCenter,\r\n name: 'En centro comercial'\r\n },\r\n jacuzzi: {checked: false, iconName: AmenityName.Jacuzzi, value: AmenityName.Jacuzzi, name: 'Jacuzzi'},\r\n kitchenServices: {\r\n checked: false,\r\n iconName: AmenityName.KitchenServices,\r\n value: AmenityName.KitchenServices,\r\n name: 'Servicios para cocina'\r\n },\r\n maidsBathroom: {checked: false, iconName: AmenityName.MaidsBathroom, value: AmenityName.MaidsBathroom, name: 'Cuarto de Servicio'},\r\n maneuverArea: {checked: false, iconName: AmenityName.ManeuverArea, value: AmenityName.ManeuverArea, name: 'Área de maniobras'},\r\n meetingRoom: {checked: false, iconName: AmenityName.MeetingRoom, value: AmenityName.MeetingRoom, name: 'Sala de conferencias'},\r\n mezzanine: {checked: false, iconName: AmenityName.Mezzanine, value: AmenityName.Mezzanine, name: 'Con entrepiso'},\r\n mixedBuilding: {checked: false, iconName: AmenityName.MixedBuilding, value: AmenityName.MixedBuilding, name: 'En edificio mixto'},\r\n naturalLighting: {\r\n checked: false,\r\n iconName: AmenityName.NaturalLighting,\r\n value: AmenityName.NaturalLighting,\r\n name: 'Iluminacion natural'\r\n },\r\n offices: {checked: false, iconName: AmenityName.Offices, value: AmenityName.Offices, name: 'Con oficinas'},\r\n openSpace: {checked: false, iconName: AmenityName.OpenSpace, value: AmenityName.OpenSpace, name: 'Espacio abierto'},\r\n platforms: {checked: false, iconName: AmenityName.Platforms, value: AmenityName.Platforms, name: 'Andenes'},\r\n playground: {checked: false, iconName: AmenityName.Playground, value: AmenityName.Playground, name: 'Juegos infantiles'},\r\n playroom: {checked: false, iconName: AmenityName.Playroom, value: AmenityName.Playroom, name: 'Salón de juegos'},\r\n pool: {checked: false, iconName: AmenityName.Pool, value: AmenityName.Pool, name: 'Alberca'},\r\n railSpur: {checked: false, iconName: AmenityName.RailSpur, value: AmenityName.RailSpur, name: 'Espuela de FF.CC'},\r\n railyard: {checked: false, iconName: AmenityName.RailYard, value: AmenityName.RailYard, name: 'Patio de maniobras'},\r\n reception: {checked: false, iconName: AmenityName.Reception, value: AmenityName.Reception, name: 'Recepción'},\r\n securityGuard: {checked: false, iconName: AmenityName.SecurityGuard, value: AmenityName.SecurityGuard, name: 'Con vigilancia'},\r\n storage: {checked: false, iconName: AmenityName.Storage, value: AmenityName.Storage, name: 'Bodega'},\r\n visitorParking: {\r\n checked: false,\r\n iconName: AmenityName.VisitorParking,\r\n value: AmenityName.VisitorParking,\r\n name: 'Estacionamiento para visitas'\r\n },\r\n features: [\r\n {\r\n checked: false,\r\n iconName: AmenityName.NearPublicTransportation,\r\n value: AmenityName.NearPublicTransportation,\r\n name: 'Cerca de estaciones de transporte'\r\n },\r\n {checked: false, iconName: AmenityName.AdjacentCommerce, value: AmenityName.NearShops, name: 'Cerca de comercios'},\r\n {checked: false, iconName: AmenityName.OnBusyRoad, value: AmenityName.OnBusyRoad, name: 'Avenida principal'},\r\n {checked: false, iconName: AmenityName.CountrySide, value: AmenityName.CountrySide, name: 'Suburbio'},\r\n {checked: false, iconName: AmenityName.Downtown, value: AmenityName.Downtown, name: 'Céntrico'},\r\n {\r\n checked: false,\r\n iconName: AmenityName.GoodReachableTraffic,\r\n value: AmenityName.GoodReachableTraffic,\r\n name: 'Se llega sin trafico'\r\n },\r\n {\r\n checked: false,\r\n iconName: AmenityName.NearFitnessCentre,\r\n value: AmenityName.NearFitnessCentre,\r\n name: 'Cerca de centro deportivo'\r\n },\r\n {checked: false, iconName: AmenityName.NearHighway, value: AmenityName.NearHighway, name: 'Cerca de autopista'},\r\n {\r\n checked: false,\r\n iconName: AmenityName.NearHospital,\r\n value: AmenityName.NearHospital,\r\n name: 'Cerca de centros de salud'\r\n },\r\n {\r\n checked: false,\r\n iconName: AmenityName.NearPark,\r\n value: AmenityName.NearPark,\r\n name: 'Cerca de parque'\r\n },\r\n {checked: false, iconName: AmenityName.NearSchools, value: AmenityName.NearSchools, name: 'Cerca de escuelas'},\r\n {checked: false, iconName: AmenityName.OnQuietRoad, value: AmenityName.OnQuietRoad, name: 'En calle tranquila'},\r\n ]\r\n };\r\n static DurationList = [\r\n 30, 60, 90, 180, 365\r\n ];\r\n static CommissionList: {SALE: number[], RENT: number[]} = {\r\n SALE: [0.06, 0.055, 0.05, 0.045, 0.04, 0.035, 0.030, 0.025, 0.020, 0.015, 0.01],\r\n RENT: [2, 1.5, 1, 0.5]\r\n };\r\n static SharedCommissionList: number[] = [\r\n 0.50, 0.40, 0.30, 0.20, 0.10\r\n ];\r\n static LandUseList: {name: string, value: LandUseEnum}[] = [\r\n {\r\n name: 'Habitacional unifamiliar',\r\n value: LandUseEnum.SINGLE_FAMILY_HOUSING\r\n },\r\n {\r\n name: 'Habitacional plurifamiliar',\r\n value: LandUseEnum.MULTI_FAMILY_HOUSING\r\n },\r\n {\r\n name: 'Habitacional con comercio',\r\n value: LandUseEnum.HOUSING_WITH_COMMERCE\r\n },\r\n {\r\n name: 'Habitacional con oficina',\r\n value: LandUseEnum.HOUSING_WITH_OFFICE\r\n },\r\n {\r\n name: 'Habitacional mixto',\r\n value: LandUseEnum.MIXED_HOUSING\r\n },\r\n {\r\n name: 'Comercio',\r\n value: LandUseEnum.COMMERCE\r\n },\r\n {\r\n name: 'Oficina',\r\n value: LandUseEnum.OFFICE\r\n },\r\n {\r\n name: 'Servicios',\r\n value: LandUseEnum.SERVICES\r\n },\r\n {\r\n name: 'Industria',\r\n value: LandUseEnum.INDUSTRY\r\n },\r\n {\r\n name: 'Agrícola',\r\n value: LandUseEnum.AGRICULTURAL\r\n }, {\r\n name: 'No especificado',\r\n value: LandUseEnum.OTHER\r\n }\r\n ];\r\n static AnnounceCheckList = [\r\n {\r\n name: 'Las fotos y videos son los correctos',\r\n value: 0,\r\n checked: false\r\n },\r\n {\r\n name: 'La ortografía y gramática es correcta',\r\n value: 1,\r\n checked: false\r\n },\r\n {\r\n name: 'Los datos de contacto son correctos',\r\n value: 2,\r\n checked: false\r\n },\r\n {\r\n name: 'La dirección, email y web están correctos',\r\n value: 3,\r\n checked: false\r\n },\r\n {\r\n name: 'Todo está correcto y apruebo mi anuncio',\r\n value: 4,\r\n checked: false\r\n }\r\n ];\r\n static DocumentsList: {name: string, value: PFileTypeEnum, loaded: boolean}[] = [\r\n {\r\n name: 'Escritura',\r\n value: PFileTypeEnum.DEED,\r\n loaded: false\r\n },\r\n {\r\n name: 'Identificación Propietario',\r\n value: PFileTypeEnum.OWNER_ID,\r\n loaded: false\r\n },\r\n {\r\n name: 'Recibo de agua',\r\n value: PFileTypeEnum.WATER_BILL,\r\n loaded: false\r\n },\r\n {\r\n name: 'Recibo de luz',\r\n value: PFileTypeEnum.ELECTRICITY_BILL,\r\n loaded: false\r\n },\r\n {\r\n name: 'Recibo predial',\r\n value: PFileTypeEnum.PROPERTY_BILL,\r\n loaded: false\r\n },\r\n {\r\n name: 'Constancia de no adeudo',\r\n value: PFileTypeEnum.CONSTANCY_OF_NO_DEBT,\r\n loaded: false\r\n },\r\n {\r\n name: 'Libertad de Gravamen',\r\n value: PFileTypeEnum.EXEMPTION_TAX,\r\n loaded: false\r\n },\r\n {\r\n name: 'Licencia de construcción',\r\n value: PFileTypeEnum.BUILDING_LICENSE,\r\n loaded: false\r\n },\r\n {\r\n name: 'Terminación de obra',\r\n value: PFileTypeEnum.COMPLETION_OF_CONSTRUCTION,\r\n loaded: false\r\n },\r\n {\r\n name: 'Alineación y número oficial',\r\n value: PFileTypeEnum.ALIGNMENT_AND_OFFICIAL_NUMBER,\r\n loaded: false\r\n },\r\n {\r\n name: 'Hipoteca',\r\n value: PFileTypeEnum.MORTGAGE,\r\n loaded: false\r\n },\r\n {\r\n name: 'Otros',\r\n value: PFileTypeEnum.OTHER,\r\n loaded: false\r\n }\r\n ];\r\n static BedroomList: number[] = [\r\n 0, 1, 2, 3, 4\r\n ];\r\n static BathroomList: number[] = [\r\n 0, 1, 2, 3, 4\r\n ];\r\n static ParkingSpacesList: number[] = [\r\n 0, 1, 2, 3, 4\r\n ];\r\n static SurfaceList: number[] = [\r\n 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000\r\n ];\r\n static ROIList: number[] = [\r\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20\r\n ];\r\n static PropertyTypeList: PropertyTypeItem[] = [\r\n {\r\n value: PropertyTypeEnum.HOUSE,\r\n iconName: 'house',\r\n name: 'Casa',\r\n shortName: 'Casa',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.garden,\r\n ConstantsComponents.Amenities.pool,\r\n ConstantsComponents.Amenities.storage,\r\n ConstantsComponents.Amenities.maidsBathroom,\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.playground,\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.gym,\r\n ConstantsComponents.Amenities.balcony,\r\n ConstantsComponents.Amenities.jacuzzi,\r\n ConstantsComponents.Amenities.playroom,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.RESIDENTIAL,\r\n iconName: 'residential',\r\n name: 'Vivienda',\r\n shortName: 'Vivienda',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.garden,\r\n ConstantsComponents.Amenities.pool,\r\n ConstantsComponents.Amenities.storage,\r\n ConstantsComponents.Amenities.maidsBathroom,\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.playground,\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.gym,\r\n ConstantsComponents.Amenities.balcony,\r\n ConstantsComponents.Amenities.jacuzzi,\r\n ConstantsComponents.Amenities.playroom,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.APARTMENT,\r\n iconName: 'apartment',\r\n name: 'Departamento',\r\n shortName: 'Depto',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.garden,\r\n ConstantsComponents.Amenities.pool,\r\n ConstantsComponents.Amenities.storage,\r\n ConstantsComponents.Amenities.maidsBathroom,\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.playground,\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.gym,\r\n ConstantsComponents.Amenities.balcony,\r\n ConstantsComponents.Amenities.jacuzzi,\r\n ConstantsComponents.Amenities.playroom,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.ROOM,\r\n iconName: 'room',\r\n name: 'Habitación',\r\n shortName: 'Habitación',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.garden,\r\n ConstantsComponents.Amenities.pool,\r\n ConstantsComponents.Amenities.storage,\r\n ConstantsComponents.Amenities.maidsBathroom,\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.playground,\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.gym,\r\n ConstantsComponents.Amenities.balcony,\r\n ConstantsComponents.Amenities.jacuzzi,\r\n ConstantsComponents.Amenities.playroom,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.highSpeedInternet,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.OFFICE,\r\n iconName: 'office',\r\n name: 'Oficina',\r\n shortName: 'Oficina',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.visitorParking,\r\n ConstantsComponents.Amenities.furnished,\r\n ConstantsComponents.Amenities.highSpeedInternet,\r\n ConstantsComponents.Amenities.reception,\r\n ConstantsComponents.Amenities.adjacentPicnic,\r\n ConstantsComponents.Amenities.meetingRoom,\r\n ConstantsComponents.Amenities.adjacentGym,\r\n ConstantsComponents.Amenities.openSpace,\r\n ConstantsComponents.Amenities.airConditioner,\r\n ConstantsComponents.Amenities.adjacentCommerce,\r\n ConstantsComponents.Amenities.mixedBuilding,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.RETAIL,\r\n iconName: 'retail',\r\n name: 'Comercio',\r\n shortName: 'Comercio',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.mixedBuilding,\r\n ConstantsComponents.Amenities.facingStreet,\r\n ConstantsComponents.Amenities.maneuverArea,\r\n ConstantsComponents.Amenities.kitchenServices,\r\n ConstantsComponents.Amenities.finishings,\r\n ConstantsComponents.Amenities.mezzanine,\r\n ConstantsComponents.Amenities.inShoppingCenter,\r\n ConstantsComponents.Amenities.inCommercialArea,\r\n ConstantsComponents.Amenities.customerParking,\r\n ConstantsComponents.Amenities.doubleHeight,\r\n ConstantsComponents.Amenities.roofGarden,\r\n ConstantsComponents.Amenities.petFriendly,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.WAREHOUSE,\r\n iconName: 'warehouse',\r\n name: 'Bodega',\r\n shortName: 'Bodega',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.securityGuard,\r\n ConstantsComponents.Amenities.customerParking,\r\n ConstantsComponents.Amenities.doubleHeight,\r\n ConstantsComponents.Amenities.railyard,\r\n ConstantsComponents.Amenities.platforms,\r\n ConstantsComponents.Amenities.highResistanceFloors,\r\n ConstantsComponents.Amenities.offices,\r\n ConstantsComponents.Amenities.dressingRooms,\r\n ConstantsComponents.Amenities.diningRoom,\r\n ConstantsComponents.Amenities.inIndustrialPark,\r\n ConstantsComponents.Amenities.naturalLighting,\r\n ConstantsComponents.Amenities.railSpur,\r\n ConstantsComponents.Amenities.differentAbilities\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.LAND,\r\n iconName: 'land',\r\n name: 'Terreno',\r\n shortName: 'Terreno',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: [\r\n ConstantsComponents.Amenities.securityGuard\r\n ]\r\n },\r\n {\r\n value: PropertyTypeEnum.INVESTMENT,\r\n iconName: 'investment',\r\n name: 'Inversión',\r\n shortName: 'Inversión',\r\n features: ConstantsComponents.Amenities.features,\r\n amenities: []\r\n },\r\n {\r\n value: PropertyTypeEnum.NONE,\r\n name: 'Todo',\r\n shortName: 'Todo',\r\n iconName: 'all',\r\n features: [],\r\n amenities: []\r\n }\r\n ];\r\n static OfferingTypeList: { value: OfferingTypeEnum, name: string }[] = [\r\n {\r\n value: OfferingTypeEnum.SALE,\r\n name: 'Venta'\r\n },\r\n {\r\n value: OfferingTypeEnum.RENT,\r\n name: 'Renta'\r\n },\r\n ];\r\n static LocateList: any = {\r\n USD: {locate: 'en-US', currency: 'USD'},\r\n MXN: {locate: 'es-MX', currency: 'MXN'},\r\n GBP: {locate: 'en-GB', currency: 'GBP'},\r\n EUR: {locate: 'de-DE', currency: 'EUR'},\r\n BRL: {locate: 'pt-BR', currency: 'BRL'},\r\n CNY: {locate: 'zh-CH', currency: 'CNY'}\r\n };\r\n static PropertyStatusList: PropertyStatusItem[] = [\r\n { icon: 'announce', name: 'Anunciadas', value: StatusTypeEnum.ANNOUNCED },\r\n { icon: 'expired', name: 'Expiradas', value: StatusTypeEnum.EXPIRED },\r\n { icon: 'hidden', name: 'Ocultas', value: StatusTypeEnum.HIDDEN },\r\n { icon: 'ready', name: 'Listas para anunciar', value: StatusTypeEnum.READY },\r\n { icon: 'draft', name: 'Borrador', value: StatusTypeEnum.DRAFT }\r\n ];\r\n}\r\n","import {Filter, NewProperty, OfferingTypeEnum, PropertyTypeEnum} from '@maplander/types';\r\n\r\nexport class Utils {\r\n static round(value: number, precision: number): number {\r\n const multiplier = Math.pow(10, precision || 0);\r\n return Math.round(value * multiplier) / multiplier;\r\n }\r\n static getFilterByPropertyType(filter: Filter): Filter {\r\n return {\r\n type: filter.type,\r\n offering: filter.offering,\r\n distance: filter.distance,\r\n location: {\r\n latitude: filter.location.latitude,\r\n longitude: filter.location.longitude\r\n },\r\n currency: filter.currency,\r\n upLimitPrice: 0,\r\n downLimitPrice: 0,\r\n bathrooms: 0,\r\n exclusivity: filter.exclusivity,\r\n bedrooms: 0,\r\n parkingPlaces: 0,\r\n extras: [],\r\n mainArea: 0,\r\n roi: 0,\r\n mls: filter.mls\r\n };\r\n }\r\n static getInitialFilter(isOPI: boolean, filter: Filter = null): Filter {\r\n return {\r\n type: isOPI ? PropertyTypeEnum.NONE : PropertyTypeEnum.RESIDENTIAL,\r\n offering: isOPI ? OfferingTypeEnum.RENT : OfferingTypeEnum.RENT,\r\n distance: filter ? filter.distance : 0,\r\n location: {\r\n latitude: filter ? filter.location.latitude : 0,\r\n longitude: filter ? filter.location.longitude : 0\r\n },\r\n currency: filter ? filter.currency : 'MXN',\r\n upLimitPrice: 0,\r\n downLimitPrice: 0,\r\n bathrooms: 0,\r\n exclusivity: filter ? filter.exclusivity : false,\r\n bedrooms: 0,\r\n parkingPlaces: 0,\r\n extras: [],\r\n mainArea: 0,\r\n roi: 0,\r\n mls: filter ? filter.mls : true\r\n };\r\n }\r\n static listErrorsByPropertyTypeForPublish(type: PropertyTypeEnum): string[] {\r\n let errorField = ['price', 'currency', 'description', 'image'];\r\n switch (type) {\r\n case PropertyTypeEnum.HOUSE:\r\n case PropertyTypeEnum.APARTMENT:\r\n errorField = errorField.concat(['mainArea', 'bedrooms', 'bathrooms']);\r\n break;\r\n case PropertyTypeEnum.ROOM:\r\n case PropertyTypeEnum.OFFICE:\r\n case PropertyTypeEnum.RETAIL:\r\n case PropertyTypeEnum.LAND:\r\n errorField = errorField.concat(['mainArea']);\r\n break;\r\n case PropertyTypeEnum.WAREHOUSE:\r\n errorField = errorField.concat(['mainArea', 'secondaryArea']);\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n errorField = errorField.concat(['roi']);\r\n break;\r\n }\r\n return errorField;\r\n }\r\n static getErrorsForPublish(property: NewProperty): string[] {\r\n let errorField = [];\r\n errorField = errorField.concat((!property.price || property.price === 0) ? ['price'] : []);\r\n errorField = errorField.concat((!property.currency || property.currency === '') ? ['currency'] : []);\r\n errorField = errorField.concat((!property.description || property.description === '') ? ['description'] : []);\r\n errorField = errorField.concat((!property.image || property.image === '') ? ['image'] : []);\r\n switch (property.type) {\r\n case PropertyTypeEnum.HOUSE:\r\n case PropertyTypeEnum.APARTMENT:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n errorField = errorField.concat((property.features && (!property.features.bedrooms || property.features.bedrooms === 0)) ? ['bedrooms'] : []);\r\n errorField = errorField.concat((property.features && (!property.features.bathrooms || property.features.bathrooms === 0)) ? ['bathrooms'] : []);\r\n break;\r\n case PropertyTypeEnum.OFFICE:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n break;\r\n case PropertyTypeEnum.RETAIL:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n break;\r\n case PropertyTypeEnum.LAND:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n break;\r\n case PropertyTypeEnum.WAREHOUSE:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n errorField = errorField.concat(\r\n (property.features && (!property.features.secondaryArea || property.features.secondaryArea === 0)) ? ['secondaryArea'] : []);\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n errorField = errorField.concat((property.features && (!property.features.roi || property.features.roi === 0)) ? ['roi'] : []);\r\n break;\r\n case PropertyTypeEnum.ROOM:\r\n errorField = errorField.concat((property.features && (!property.features.mainArea || property.features.mainArea === 0)) ? ['mainArea'] : []);\r\n break;\r\n }\r\n return errorField;\r\n }\r\n static removeDiacritics (str): string {\r\n const diacriticsMap = {\r\n A: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g,\r\n AA: /[\\uA732]/g,\r\n AE: /[\\u00C6\\u01FC\\u01E2]/g,\r\n AO: /[\\uA734]/g,\r\n AU: /[\\uA736]/g,\r\n AV: /[\\uA738\\uA73A]/g,\r\n AY: /[\\uA73C]/g,\r\n B: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g,\r\n C: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g,\r\n D: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g,\r\n DZ: /[\\u01F1\\u01C4]/g,\r\n Dz: /[\\u01F2\\u01C5]/g,\r\n E: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g,\r\n F: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g,\r\n G: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g,\r\n H: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g,\r\n I: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g,\r\n J: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g,\r\n K: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g,\r\n L: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g,\r\n LJ: /[\\u01C7]/g,\r\n Lj: /[\\u01C8]/g,\r\n M: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g,\r\n N: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g,\r\n NJ: /[\\u01CA]/g,\r\n Nj: /[\\u01CB]/g,\r\n O: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g,\r\n OI: /[\\u01A2]/g,\r\n OO: /[\\uA74E]/g,\r\n OU: /[\\u0222]/g,\r\n P: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g,\r\n Q: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g,\r\n R: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g,\r\n S: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g,\r\n T: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g,\r\n TZ: /[\\uA728]/g,\r\n U: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g,\r\n V: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g,\r\n VY: /[\\uA760]/g,\r\n W: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g,\r\n X: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g,\r\n Y: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g,\r\n Z: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g,\r\n a: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g,\r\n aa: /[\\uA733]/g,\r\n ae: /[\\u00E6\\u01FD\\u01E3]/g,\r\n ao: /[\\uA735]/g,\r\n au: /[\\uA737]/g,\r\n av: /[\\uA739\\uA73B]/g,\r\n ay: /[\\uA73D]/g,\r\n b: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g,\r\n c: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g,\r\n d: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g,\r\n dz: /[\\u01F3\\u01C6]/g,\r\n e: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g,\r\n f: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g,\r\n g: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g,\r\n h: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g,\r\n hv: /[\\u0195]/g,\r\n i: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g,\r\n j: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g,\r\n k: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g,\r\n l: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g,\r\n lj: /[\\u01C9]/g,\r\n m: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g,\r\n n: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g,\r\n nj: /[\\u01CC]/g,\r\n o: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g,\r\n oi: /[\\u01A3]/g,\r\n ou: /[\\u0223]/g,\r\n oo: /[\\uA74F]/g,\r\n p: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g,\r\n q: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g,\r\n r: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g,\r\n s: /[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g,\r\n ss: /[\\u00DF]/g,\r\n t: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g,\r\n tz: /[\\uA729]/g,\r\n u: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g,\r\n v: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g,\r\n vy: /[\\uA761]/g,\r\n w: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g,\r\n x: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g,\r\n y: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g,\r\n z: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\r\n };\r\n for (const x of Object.keys(diacriticsMap)) {\r\n // Iterate through each keys in the above object and perform a replace\r\n str = str.replace(diacriticsMap[x], x);\r\n }\r\n return str;\r\n }\r\n}\r\n","/*\r\n * Copyright (C) MapLander S de R.L de C.V - All Rights Reserved\r\n * Unauthorized copying of this file, via any medium is strictly prohibited\r\n * Proprietary and confidential\r\n */\r\n\r\nimport {Pipe, PipeTransform} from '@angular/core';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\nimport {Utils} from '../../utils';\r\n\r\n@Pipe({\r\n name: 'markerPrice'\r\n})\r\nexport class MarkerPricePipe implements PipeTransform {\r\n\r\n transform(price: number, currency?: string): string {\r\n const locate: {locate: string, currency: string} = ConstantsComponents.LocateList[currency || 'MXN'];\r\n let outputPrice;\r\n if (((price / 100000.0) / 10.0) >= 1) {\r\n outputPrice = Utils.round(Number((price / 100000.0) / 10.0), 2);\r\n outputPrice = Number(outputPrice).toLocaleString(locate.locate, {\r\n style: 'currency',\r\n currency: locate.currency\r\n }).toString();\r\n outputPrice += 'M';\r\n } else if (((price / 100.0) / 10.0) >= 1) {\r\n outputPrice = Utils.round(Number((price / 100.0) / 10.0), 2);\r\n outputPrice = Number(outputPrice).toLocaleString(locate.locate, {\r\n style: 'currency',\r\n currency: locate.currency\r\n }).toString();\r\n outputPrice += 'K';\r\n } else {\r\n outputPrice = Number(price).toFixed(2);\r\n outputPrice = Number(outputPrice).toLocaleString(locate.locate, {\r\n style: 'currency',\r\n currency: locate.currency\r\n }).toString();\r\n }\r\n return '' + outputPrice;\r\n }\r\n\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {MarkerPricePipe} from './marker-price.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n MarkerPricePipe\r\n ],\r\n exports: [\r\n MarkerPricePipe\r\n ]\r\n})\r\nexport class MarkerPriceModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: MarkerPriceModule,\r\n providers: [\r\n MarkerPricePipe\r\n ]\r\n };\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {OfferingTypeEnum} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\n\r\n@Pipe({\r\n name: 'offeringType'\r\n})\r\nexport class OfferingTypePipe implements PipeTransform {\r\n\r\n transform(value: OfferingTypeEnum, prefix?: string): string {\r\n let response = prefix ? prefix : 'en';\r\n ConstantsComponents.OfferingTypeList.forEach(type => {\r\n if (type.value === value) {\r\n response += ` ${type.name.toLowerCase()}`;\r\n }\r\n });\r\n return response;\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {OfferingTypePipe} from './offering-type.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n OfferingTypePipe\r\n ],\r\n exports: [\r\n OfferingTypePipe\r\n ]\r\n})\r\nexport class OfferingTypeModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: OfferingTypeModule,\r\n providers: [\r\n OfferingTypePipe\r\n ]\r\n };\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {PropertyTypeEnum} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\n\r\n@Pipe({\r\n name: 'propertyType'\r\n})\r\nexport class PropertyTypePipe implements PipeTransform {\r\n transform(value: PropertyTypeEnum, toLowerCase?: boolean): string {\r\n let result = '';\r\n ConstantsComponents.PropertyTypeList.forEach(type => {\r\n if (type.value === value) {\r\n result = type.name;\r\n }\r\n });\r\n return (toLowerCase) ? result.toLowerCase() : result;\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {PropertyTypePipe} from './property-type.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n PropertyTypePipe\r\n ],\r\n exports: [\r\n PropertyTypePipe\r\n ]\r\n})\r\nexport class PropertyTypeModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: PropertyTypeModule,\r\n providers: [\r\n PropertyTypePipe\r\n ]\r\n };\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, Input, OnChanges, OnDestroy, SimpleChanges} from '@angular/core';\r\nimport {CurrencyPipe} from '@angular/common';\r\nimport {AbstractControl} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[libFormatPrice]'\r\n})\r\nexport class FormatPriceDirective implements AfterViewInit, OnChanges, OnDestroy {\r\n\r\n @Input() control: AbstractControl;\r\n @Input() currency: string;\r\n private _el: HTMLInputElement;\r\n private _value: any;\r\n private _subscription: Subscription;\r\n\r\n constructor(\r\n private _elRef: ElementRef,\r\n private _currency: CurrencyPipe\r\n ) {\r\n this._subscription = new Subscription();\r\n this._el = this._elRef.nativeElement;\r\n }\r\n\r\n private static removeError(control: AbstractControl, error: string): void {\r\n const err = control.errors; // get control errors\r\n if (err) {\r\n delete err[error]; // delete your own error\r\n if (!Object.keys(err).length) { // if no errors left\r\n control.setErrors(null); // set control errors to null making it VALID\r\n } else {\r\n control.setErrors(err); // controls got other errors so set them back\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['currency'] && changes['currency'].currentValue) {\r\n if (this._value) {\r\n this.validateFormatPrice(this._value);\r\n }\r\n }\r\n if (changes['control'] && changes['control'].currentValue) {\r\n this._subscription.add(\r\n this.control.valueChanges.subscribe(response => {\r\n this._value = response;\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._el.addEventListener('focus', this.onFocus.bind(this));\r\n this._el.addEventListener('blur', this.onBlur.bind(this));\r\n this._value = this._el.value;\r\n this._el.value = this.formatPrice(this._el.value);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n this._el.removeEventListener('focus', this.onFocus.bind(this));\r\n this._el.removeEventListener('blur', this.onBlur.bind(this));\r\n }\r\n\r\n private formatPrice(value: any): any {\r\n return this._currency.transform(value, this.currency && this.currency !== 'MXN' ? this.currency : null, 'symbol', '1.0-0');\r\n }\r\n\r\n private onFocus() {\r\n this._el.value = this._value;\r\n }\r\n\r\n private onBlur(event: any) {\r\n this.validateFormatPrice(event.target.value);\r\n }\r\n\r\n private validateFormatPrice(value: any): void {\r\n if (Number.isNaN(Number(value))) {\r\n this.control.setErrors({\r\n format: true\r\n });\r\n return;\r\n }\r\n FormatPriceDirective.removeError(this.control, 'format');\r\n this._value = value;\r\n this._el.value = this.formatPrice(value);\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule, CurrencyPipe} from '@angular/common';\r\nimport {FormatPriceDirective} from './format-price.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n FormatPriceDirective\r\n ],\r\n exports: [\r\n FormatPriceDirective\r\n ]\r\n})\r\nexport class FormatPriceModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: FormatPriceModule,\r\n providers: [\r\n CurrencyPipe,\r\n FormatPriceDirective\r\n ]\r\n };\r\n }\r\n}\r\n","import {AfterViewInit, Directive, ElementRef, Input, OnDestroy} from '@angular/core';\r\nimport {PropertyTypeEnum} from '@maplander/types';\r\n\r\n@Directive({\r\n selector: '[libImageError]'\r\n})\r\nexport class ImageErrorDirective implements AfterViewInit, OnDestroy {\r\n\r\n @Input() typeImage: PropertyTypeEnum;\r\n private _el: HTMLImageElement;\r\n private _onError;\r\n private readonly CDN_URL: string = 'https://storage.googleapis.com/maplander-develop/public/file/front-end/cdn/images-stock';\r\n\r\n constructor(private _ref: ElementRef) {\r\n this._el = this._ref.nativeElement;\r\n if (this._el.constructor !== HTMLImageElement) {\r\n throw new Error('libImageError directive works only image element');\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._onError = () => {\r\n this.updateUrl();\r\n };\r\n this._el.addEventListener('error', this._onError);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._el.removeEventListener('error', this._onError);\r\n }\r\n\r\n updateUrl() {\r\n switch (this.typeImage) {\r\n case PropertyTypeEnum.HOUSE:\r\n this._el.src = `${this.CDN_URL}/Stock-House.jpg`;\r\n break;\r\n case PropertyTypeEnum.OFFICE:\r\n this._el.src = `${this.CDN_URL}/Stock-Office.jpg`;\r\n break;\r\n case PropertyTypeEnum.RETAIL:\r\n this._el.src = `${this.CDN_URL}/Stock-Retail.jpg`;\r\n break;\r\n case PropertyTypeEnum.LAND:\r\n this._el.src = `${this.CDN_URL}/Stock-Land.jpg`;\r\n break;\r\n case PropertyTypeEnum.WAREHOUSE:\r\n this._el.src = `${this.CDN_URL}/Stock-Warehouse.jpg`;\r\n break;\r\n case PropertyTypeEnum.APARTMENT:\r\n case PropertyTypeEnum.ROOM:\r\n this._el.src = `${this.CDN_URL}/Stock-Apartment.jpg`;\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n this._el.src = `${this.CDN_URL}/Stock-Investment.jpg`;\r\n break;\r\n case PropertyTypeEnum.RESIDENTIAL:\r\n this._el.src = `${this.CDN_URL}/Stock-House.jpg`;\r\n break;\r\n default:\r\n this._el.src = `${this.CDN_URL}/Stock-House.jpg`;\r\n break;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {ImageErrorDirective} from './image-error.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n ImageErrorDirective\r\n ],\r\n exports: [\r\n ImageErrorDirective\r\n ]\r\n})\r\nexport class ImageErrorModule { }\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'lib-document-visor',\r\n templateUrl: './document-visor.component.html',\r\n styleUrls: ['./document-visor.component.scss']\r\n})\r\nexport class DocumentVisorComponent implements OnInit {\r\n\r\n public url: string;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private _data: string,\r\n private _dialog: MatDialogRef<DocumentVisorComponent>\r\n ) {\r\n }\r\n\r\n private static isBase64(str): boolean {\r\n try {\r\n return btoa(atob(str)) === str;\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n\r\n private static isURL(url: string): boolean {\r\n const pattern = new RegExp('^(?:(?:(?:https?|ftp):)?\\\\/\\\\/)(?:\\\\S+(?::\\\\S*)?@)?(?:(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\\\d{2,5})?(?:[/?#]\\\\S*)?$', 'i');\r\n return pattern.test(url);\r\n }\r\n\r\n ngOnInit() {\r\n this.url = this._data;\r\n }\r\n\r\n close(): void {\r\n if (!DocumentVisorComponent.isBase64(this.url) && !DocumentVisorComponent.isURL(this.url)) {\r\n URL.revokeObjectURL(this.url);\r\n }\r\n this._dialog.close();\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {DocumentVisorComponent} from './document-visor.component';\r\n\r\n@Injectable()\r\nexport class DocumentVisorService {\r\n\r\n constructor(\r\n private _dialog: MatDialog\r\n ) {\r\n }\r\n\r\n public open(document: string): MatDialogRef<DocumentVisorComponent> {\r\n return this._dialog.open(DocumentVisorComponent, {\r\n data: document,\r\n disableClose: true,\r\n panelClass: 'document_visor_dialog'\r\n });\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {DocumentVisorComponent} from './document-visor.component';\r\nimport {DocumentVisorService} from './document-visor.service';\r\nimport {SafeUrlModule} from '@maplander/shared';\r\n\r\nconst MATERIAL = [\r\n MatButtonModule,\r\n MatDialogModule,\r\n MatIconModule\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SafeUrlModule.forChild(),\r\n MATERIAL\r\n ],\r\n declarations: [\r\n DocumentVisorComponent\r\n ],\r\n exports: [\r\n DocumentVisorComponent\r\n ],\r\n entryComponents: [\r\n DocumentVisorComponent\r\n ]\r\n})\r\nexport class DocumentVisorModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: DocumentVisorModule,\r\n providers: [\r\n DocumentVisorService\r\n ]\r\n };\r\n }\r\n}\r\n","export enum FilterChipType {\r\n OFFERING = 'OFFERING',\r\n PROPERTY_TYPE = 'PROPERTY_TYPE',\r\n PRICE = 'PRICE',\r\n BEDROOMS = 'BEDROOMS',\r\n BATHROOMS = 'BATHROOMS',\r\n PARKING_PLACES = 'PARKING_PLACES',\r\n SURFACE = 'SURFACE',\r\n AMENITIES = 'AMENITIES',\r\n LISTING = 'LISTING'\r\n}\r\n","export enum FiltersChangeType {\r\n APPLY,\r\n INIT,\r\n AREA,\r\n SAVE,\r\n LIST_TYPE\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\n\r\nexport const FILTERS_TOKEN = new InjectionToken<boolean>('FILTERS MODULE CONFIG');\r\n","import {Inject, Injectable, Optional} from '@angular/core';\r\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\r\nimport {LocalStorageService} from '@maplander/static';\r\nimport {FiltersChangeType} from '../../utils/enums/filters-change-type';\r\nimport {FiltersChange} from './../../utils/models/filters-change';\r\nimport {Utils} from '../../utils';\r\nimport {FILTERS_TOKEN} from './token';\r\nimport {FiltersWrapper} from '../../utils/classes';\r\nimport {FiltersSaved} from '../../utils/models';\r\n\r\n@Injectable()\r\nexport class FiltersService {\r\n\r\n private static FILTERS_SAVED_KEY = 'FILTERS';\r\n private _notifier: BehaviorSubject<FiltersChange>;\r\n private _startComponent: Subject<FiltersWrapper>;\r\n\r\n constructor(\r\n @Optional() @Inject(FILTERS_TOKEN) private _config: boolean\r\n ) {\r\n this._startComponent = new Subject<FiltersWrapper>();\r\n this._notifier = new BehaviorSubject<FiltersChange>({\r\n filter: Utils.getInitialFilter(this._config || false),\r\n type: FiltersChangeType.INIT,\r\n ft: false\r\n });\r\n }\r\n\r\n static removeFiltersSaved(): void {\r\n LocalStorageService.removeItem<FiltersSaved>(FiltersService.FILTERS_SAVED_KEY);\r\n }\r\n\r\n static getFiltersSaved(): FiltersSaved {\r\n return LocalStorageService.getItem<FiltersSaved>(FiltersService.FILTERS_SAVED_KEY);\r\n }\r\n\r\n static saveFilters(config: FiltersSaved): void {\r\n LocalStorageService.setItem<FiltersSaved>(FiltersService.FILTERS_SAVED_KEY, {\r\n filters: config.filters,\r\n ft: config.ft || false,\r\n isSharedProperties: config.isSharedProperties || false\r\n });\r\n }\r\n\r\n setChange(change: FiltersChange): void {\r\n this._notifier.next(change);\r\n }\r\n\r\n getChanges(): Observable<FiltersChange> {\r\n return this._notifier.asObservable();\r\n }\r\n\r\n startComponent(wrapper: FiltersWrapper): void {\r\n this._startComponent.next(wrapper);\r\n }\r\n\r\n onStartComponent(): Observable<FiltersWrapper> {\r\n return this._startComponent.asObservable();\r\n }\r\n}\r\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {Filter, PropertyTypeEnum} from '@maplander/types';\r\nimport {MarkerPricePipe} from './../../pipes/marker-price/marker-price.pipe';\r\nimport {OfferingTypePipe} from './../../pipes/offering-type/offering-type.pipe';\r\nimport {FilterChip} from './../../utils/models/filter-chip';\r\nimport {FilterChipType} from '../../utils/enums/filter-chip-type';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\nimport {FiltersService} from './../filters/filters.service';\r\nimport {Subscription} from 'rxjs';\r\nimport {FiltersChange} from '././../../utils/models/filters-change';\r\nimport {FiltersWrapper} from '../../utils/classes';\r\n\r\n@Component({\r\n selector: 'lib-fab-filters',\r\n templateUrl: './fab-filters.component.html',\r\n styleUrls: ['./fab-filters.component.scss']\r\n})\r\nexport class FabFiltersComponent implements OnInit, OnDestroy {\r\n @Input() isOPI: boolean;\r\n @Input() mlsLabel: string;\r\n private readonly METERS_TO_SQ = 10.76391042;\r\n private _filter: Filter;\r\n private _wrapper: FiltersWrapper;\r\n private _subscription: Subscription;\r\n public chips: FilterChip[];\r\n\r\n constructor(\r\n private _currency: MarkerPricePipe,\r\n private _offeringPipe: OfferingTypePipe,\r\n private _filtersService: FiltersService\r\n ) {\r\n this.chips = [];\r\n this._subscription = new Subscription();\r\n }\r\n\r\n ngOnInit() {\r\n this._subscription.add(\r\n this._filtersService.onStartComponent().subscribe(response => {\r\n this._wrapper = response;\r\n })\r\n );\r\n this._subscription.add(\r\n this._filtersService.getChanges().subscribe((response: FiltersChange) => {\r\n this.init(response.filter, response.ft, response.isSharedProperties);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n openFilters(): void {\r\n if (!this._wrapper) {\r\n console.warn('[FabFiltersComponent] waiting onStartComponent');\r\n return;\r\n }\r\n this._wrapper.open();\r\n }\r\n\r\n onClickChip(type: FilterChipType): void {\r\n if (type === FilterChipType.PROPERTY_TYPE || type === FilterChipType.OFFERING) {\r\n this.openFilters();\r\n }\r\n }\r\n\r\n private init(filter: Filter, ft: boolean, sharedProperties?: boolean): void {\r\n this.chips = [];\r\n this._filter = filter;\r\n this.listingType(sharedProperties);\r\n this.offeringType();\r\n this.propertyType();\r\n this.price();\r\n this.surface(ft);\r\n this.bedrooms();\r\n this.bathrooms();\r\n this.parkingPlaces();\r\n this.amenities();\r\n }\r\n\r\n private listingType(sharedProperties?: boolean): void {\r\n if (!this.isOPI) {\r\n return;\r\n }\r\n this.chips.push({\r\n type: FilterChipType.LISTING,\r\n text: sharedProperties ? 'Compartidas' : (this._filter.mls ? this.mlsLabel || 'MLS' : 'Mi lista'),\r\n icon: [this._filter.mls ? 'mlm' : 'list']\r\n });\r\n }\r\n\r\n private offeringType(): void {\r\n if (this._filter.offering && this._filter.type !== PropertyTypeEnum.NONE) {\r\n let offering = this._offeringPipe.transform(this._filter.offering, ' ').replace(/ /g, '');\r\n const firstLetter = offering.substr(0, 1);\r\n offering = offering.replace(firstLetter, '');\r\n offering = `${firstLetter.toLocaleUpperCase()}${offering}`;\r\n this.chips.push({\r\n type: FilterChipType.OFFERING,\r\n text: offering,\r\n icon: null\r\n });\r\n }\r\n }\r\n\r\n private propertyType(): void {\r\n if (this._filter.type && this._filter.type !== PropertyTypeEnum.NONE) {\r\n ConstantsComponents.PropertyTypeList.forEach(item => {\r\n if (item.value === this._filter.type) {\r\n this.chips.push({\r\n type: FilterChipType.PROPERTY_TYPE,\r\n text: item.name,\r\n icon: [item.iconName]\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n private price(): void {\r\n let min = '', max = '', currency;\r\n if (this._filter.downLimitPrice !== 0) {\r\n min += this._currency.transform(this._filter.downLimitPrice);\r\n }\r\n if (this._filter.upLimitPrice !== 0) {\r\n max += this._currency.transform(this._filter.upLimitPrice);\r\n }\r\n if (min !== '' || max !== '') {\r\n currency = this._filter.currency ? this._filter.currency : '';\r\n this.chips.push({\r\n type: FilterChipType.PRICE,\r\n text: `${min}${min !== '' && max !== '' ? ' - ' : ''}${max} ${currency}`,\r\n icon: ['price']\r\n });\r\n }\r\n }\r\n\r\n private surface(ft: boolean): void {\r\n if (this._filter.mainArea !== 0) {\r\n this.chips.push({\r\n type: FilterChipType.SURFACE,\r\n text: (ft ? (this._filter.mainArea / this.METERS_TO_SQ).toFixed(0).toString() : this._filter.mainArea.toString()) + (ft ? ' sq ft' : ' m2'),\r\n icon: ['surface']\r\n });\r\n }\r\n }\r\n\r\n private bedrooms(): void {\r\n if (this._filter.bedrooms !== 0) {\r\n this.chips.push({\r\n type: FilterChipType.BEDROOMS,\r\n text: this._filter.bedrooms.toString(),\r\n icon: ['bedroom']\r\n });\r\n }\r\n }\r\n\r\n private bathrooms(): void {\r\n if (this._filter.bathrooms !== 0) {\r\n this.chips.push({\r\n type: FilterChipType.BATHROOMS,\r\n text: this._filter.bathrooms.toString(),\r\n icon: ['bathroom']\r\n });\r\n }\r\n }\r\n\r\n private parkingPlaces(): void {\r\n if (this._filter.parkingPlaces !== 0) {\r\n this.chips.push({\r\n type: FilterChipType.PARKING_PLACES,\r\n text: this._filter.parkingPlaces.toString(),\r\n icon: ['parking']\r\n });\r\n }\r\n }\r\n\r\n private amenities(): void {\r\n if (this._filter.extras && this._filter.extras.length > 0) {\r\n this.chips.push({\r\n type: FilterChipType.AMENITIES,\r\n text: this._filter.extras.length.toString(),\r\n icon: [this._filter.extras[0]]\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {FabFiltersComponent} from './fab-filters.component';\r\nimport {MatChipsModule} from '@angular/material/chips';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MarkerPriceModule} from './../../pipes/marker-price/marker-price.module';\r\nimport {OfferingTypeModule} from '../../pipes/offering-type/offering-type.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatChipsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n OfferingTypeModule.forChild(),\r\n MarkerPriceModule.forChild()\r\n ],\r\n declarations: [\r\n FabFiltersComponent\r\n ],\r\n exports: [\r\n FabFiltersComponent\r\n ]\r\n})\r\nexport class FabFiltersModule {\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {CER, Currency} from '@maplander/types';\r\n\r\n@Injectable()\r\nexport class CurrencyConverterService {\r\n\r\n list(prices: number[], currencies: CER[], from: Currency, to: Currency): number[] {\r\n const valueFrom = this.getValueByCurrency(currencies, from), valueTo = this.getValueByCurrency(currencies, to);\r\n prices = prices.map(price => {\r\n if (from === to) {\r\n return price;\r\n } else {\r\n return valueTo * (price / valueFrom);\r\n }\r\n });\r\n return prices;\r\n }\r\n\r\n number(price: number, currencies: CER[], from: Currency, to: Currency): number {\r\n const valueFrom = this.getValueByCurrency(currencies, from), valueTo = this.getValueByCurrency(currencies, to);\r\n return valueTo * (price / valueFrom);\r\n }\r\n\r\n private getValueByCurrency(currencies: CER[], c: Currency): number {\r\n let value = 0;\r\n currencies.forEach(currency => {\r\n if (currency.type === c.toString()) {\r\n value = currency.value;\r\n }\r\n });\r\n return value;\r\n }\r\n}\r\n","export class MUtils {\r\n static linSpaceExp(start: number, stop: number, n: number): number[] {\r\n const list: number[] = [];\r\n const phi = 1.618033988749895, b = Math.log(stop / start) / ((n - 1) * Math.log(phi));\r\n for (let i = 0; i < n; i++) {\r\n list[i] = start * Math.pow(phi, b * i);\r\n const length = (Math.log10(list[i]) + 1);\r\n if (length > 2) {\r\n list[i] = (Math.round(list[i] / Math.pow(10, length - 2)) * Math.pow(10, length - 2));\r\n }\r\n }\r\n return list;\r\n }\r\n}\r\n","import {AbstractControl} from '@angular/forms';\r\n\r\nexport function removeError(control: AbstractControl, error: string) {\r\n const err = control.errors; // get control errors\r\n if (err) {\r\n delete err[error]; // delete your own error\r\n if (!Object.keys(err).length) { // if no errors left\r\n control.setErrors(null); // set control errors to null making it VALID\r\n } else {\r\n control.setErrors(err); // controls got other errors so set them back\r\n }\r\n }\r\n}\r\n","import {AbstractControl, FormGroup, ValidatorFn} from '@angular/forms';\r\nimport {removeError} from './remove-error';\r\n\r\n\r\nexport function CurrencyFilterValidator(controlName: string, controlName2: string): ValidatorFn {\r\n return (control: FormGroup): { [key: string]: boolean } | null => {\r\n if (control) {\r\n const peerControl = control.controls[controlName];\r\n const peerControl2 = control.controls[controlName2];\r\n if (peerControl2.value) {\r\n if (peerControl.value >= peerControl2.value) {\r\n peerControl2.setErrors({\r\n currency: true\r\n });\r\n }\r\n if (peerControl.value < peerControl2.value) {\r\n removeError(peerControl2, 'currency');\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef, EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional, Output,\r\n Renderer2,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\r\nimport {Subscription} from 'rxjs';\r\nimport {AppUtil, CER, Currency, Filter, LimitPrice, OfferingTypeEnum, PropertyRange, PropertyTypeEnum} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\nimport {Utils} from '../../utils';\r\nimport {FiltersChange} from './../../utils/models/filters-change';\r\nimport {FiltersWrapper} from '../../utils/classes/filters-wrapper';\r\nimport {PropertyTypeItem} from './../../utils/models/property-type-item';\r\nimport {CurrencyConverterService} from './../../services/currency-converter/currency-converter.service';\r\nimport {Filters} from '../../utils/interfaces/filters';\r\nimport {FiltersService} from './filters.service';\r\nimport {FiltersChangeType} from '../../utils/enums';\r\nimport {FILTERS_TOKEN} from './token';\r\nimport {MUtils} from '../../utils/classes/mUtils';\r\nimport {AmenityItem} from '../../utils/models';\r\nimport {CurrencyFilterValidator} from '../property/validators/currency-filter-validator';\r\n\r\n@Component({\r\n selector: 'lib-filters',\r\n templateUrl: './filters.component.html',\r\n styleUrls: ['./filters.component.scss']\r\n})\r\nexport class FiltersComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, Filters {\r\n @Input() utils: AppUtil;\r\n @Input() newFilters: boolean;\r\n @Input() stateOptions: Array<{name: string, total: number}>;\r\n @Input() propertyTotal: number;\r\n @Output() changeFilter: EventEmitter<{type: 'propertyType' | 'filter' | 'offer' | 'init', payload: {filter: Filter, value: any}}>;\r\n private readonly METERS_TO_SQ = 10.76391042;\r\n private _tmpMinPriceList: number[];\r\n private _tmpMaxPriceList: number[];\r\n private _subscription: Subscription;\r\n private _isSharedProperties: boolean;\r\n public filtersForm: FormGroup;\r\n public propertyTypeList: PropertyTypeItem[];\r\n public bedroomsList: number[];\r\n public bathroomsList: number[];\r\n public parkingPlacesList: number[];\r\n public currencyList: CER[];\r\n public minPriceList: number[];\r\n public maxPriceList: number[];\r\n public surfaceList: number[];\r\n public roiList: number[];\r\n public propertyTypeSelected: PropertyTypeItem;\r\n public filter: Filter;\r\n public isOPI: boolean;\r\n public surfaceUnitSelected: number;\r\n private _lastState: string;\r\n constructor(\r\n @Optional() @Inject(FILTERS_TOKEN) private _config: boolean,\r\n private _render: Renderer2,\r\n private _ref: ElementRef,\r\n private _service: FiltersService,\r\n private _formBuilder: FormBuilder,\r\n private _converter: CurrencyConverterService\r\n ) {\r\n this._lastState = null;\r\n this.changeFilter = new EventEmitter<{type: 'propertyType' | 'filter' | 'offer' | 'init', payload: {filter: Filter, value: any}}>();\r\n this.isOPI = this._config || false;\r\n this._subscription = new Subscription();\r\n this.propertyTypeList = ConstantsComponents.PropertyTypeList.map(item => ({...item}));\r\n this.bedroomsList = Object.assign([], ConstantsComponents.BedroomList);\r\n this.bathroomsList = Object.assign([], ConstantsComponents.BathroomList);\r\n this.parkingPlacesList = Object.assign([], ConstantsComponents.ParkingSpacesList);\r\n this.surfaceList = Object.assign([], ConstantsComponents.SurfaceList);\r\n this.roiList = Object.assign([], ConstantsComponents.ROIList);\r\n this.surfaceUnitSelected = 0;\r\n this.buildForm();\r\n this.initComponentByPropertyType();\r\n this.restoreLastFiltersSaved(true);\r\n this.listenChangesOnForm();\r\n }\r\n\r\n ngOnInit() {\r\n this.openComponent(false);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.utils) {\r\n return console.warn('[FiltersComponent] utils param is required');\r\n }\r\n this.initComponent();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['utils'] && changes['utils'].currentValue) {\r\n console.log('[FiltersComponent] utils ready');\r\n this.initComponent();\r\n }\r\n if (changes['stateOptions'] && changes['stateOptions'].currentValue) {\r\n if (this._lastState !== null) {\r\n for (const stateOption of this.stateOptions) {\r\n if (stateOption.name === this._lastState) {\r\n this.filter.state = this._lastState;\r\n this.filtersForm.patchValue({\r\n state: this._lastState\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n open(): void {\r\n this.restoreLastFiltersSaved();\r\n this.openComponent(true);\r\n }\r\n\r\n close(): void {\r\n this.openComponent(false);\r\n }\r\n\r\n changePropertyType(index: number): void {\r\n this._lastState = this.filter.state;\r\n this.resetFilters(index);\r\n this.applyAmenities();\r\n this.filter.type = this.propertyTypeSelected.value;\r\n switch (this.propertyTypeSelected.value) {\r\n case PropertyTypeEnum.ROOM:\r\n this.filtersForm.controls['offering'].setValue(OfferingTypeEnum.RENT);\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n this.filtersForm.controls['offering'].setValue(OfferingTypeEnum.SALE);\r\n break;\r\n }\r\n this.filter.locationType = 'STATE';\r\n this.filter.state = null;\r\n this.filter.municipality = null;\r\n this.filter.colony = null;\r\n this.changeFilter.emit({type: 'propertyType', payload: {filter: this.filter, value: this.filtersForm.value}});\r\n }\r\n\r\n changeOffering(ev: string): void {\r\n this._lastState = this.filter.state;\r\n this.filter.locationType = 'STATE';\r\n this.filter.state = null;\r\n this.filter.municipality = null;\r\n this.filter.colony = null;\r\n this.filter.offering = ev as OfferingTypeEnum;\r\n this.changeFilter.emit({type: 'offer', payload: {filter: this.filter, value: this.filtersForm.value}});\r\n }\r\n\r\n changeCurrency(ev: string): void {\r\n this.filter.currency = ev;\r\n this.changeFilterStatus();\r\n }\r\n\r\n changeState(ev: string): void {\r\n this.filter.state = ev;\r\n this.changeFilterStatus();\r\n }\r\n\r\n updateAmenity(amenity: AmenityItem): void {\r\n if (amenity.checked) {\r\n const i = this.filter.extras.indexOf(amenity.value);\r\n if (i > -1) {\r\n this.filter.extras.splice(i, 1);\r\n }\r\n } else {\r\n this.filter.extras.push(amenity.value);\r\n }\r\n amenity.checked = !amenity.checked;\r\n this.changeFilterStatus();\r\n }\r\n\r\n saveSearchByFilters(): void {\r\n this.applyFilters(FiltersChangeType.SAVE);\r\n }\r\n\r\n applyFilters(type?: FiltersChangeType): void {\r\n this.getFilterByForm();\r\n const filterToSearch = Object.assign({}, this.filter);\r\n if (this.surfaceUnitSelected === 1) {\r\n filterToSearch.mainArea = filterToSearch.mainArea * this.METERS_TO_SQ;\r\n }\r\n this.updateFiltersSaved(filterToSearch);\r\n this._service.setChange({\r\n type: type || FiltersChangeType.APPLY,\r\n filter: filterToSearch,\r\n ft: this.surfaceUnitSelected === 1,\r\n isSharedProperties: this._isSharedProperties\r\n });\r\n this.openComponent(false);\r\n }\r\n\r\n resetFilters(propertyTypeItemIndex?: number): void {\r\n this.filter.currency = !propertyTypeItemIndex ? 'MXN' : this.filter.currency;\r\n this.initComponentByPropertyType(propertyTypeItemIndex);\r\n this.surfaceUnitSelected = 0;\r\n this.filter = propertyTypeItemIndex ? Utils.getFilterByPropertyType(this.filter) : Utils.getInitialFilter(this.isOPI, this.filter);\r\n this.updateFormByFilters();\r\n this.setPrices();\r\n this.propertyTotal = 0;\r\n }\r\n\r\n private buildForm(): void {\r\n this.filtersForm = this._formBuilder.group({\r\n state: ['', [Validators.required]],\r\n offering: [],\r\n currency: [],\r\n minPrice: ['', [Validators.required, Validators.pattern(new RegExp('(^[0-9]+)'))]],\r\n maxPrice: ['', [Validators.required, Validators.pattern(new RegExp('(^[0-9]+)'))]],\r\n bedrooms: [],\r\n bathrooms: [],\r\n parkingPlaces: [],\r\n surface: [],\r\n surfaceUnit: [],\r\n roi: []\r\n }, {\r\n validator: CurrencyFilterValidator('minPrice', 'maxPrice')\r\n });\r\n }\r\n\r\n changeFilterStatus(): void {\r\n this.getFilterByForm();\r\n const filterToSearch = Object.assign({}, this.filter);\r\n if (this.surfaceUnitSelected === 1) {\r\n filterToSearch.mainArea = filterToSearch.mainArea * this.METERS_TO_SQ;\r\n }\r\n this.changeFilter.emit({type: 'filter', payload: {filter: this.filter, value: filterToSearch}});\r\n }\r\n\r\n private updateFormByFilters(): void {\r\n this.filtersForm.patchValue({\r\n state: this.filter.state,\r\n offering: this.filter.offering,\r\n currency: this.filter.currency,\r\n minPrice: this.filter.downLimitPrice,\r\n maxPrice: this.filter.upLimitPrice,\r\n bedrooms: this.filter.bedrooms,\r\n bathrooms: this.filter.bathrooms,\r\n parkingPlaces: this.filter.parkingPlaces,\r\n surface: this.filter.mainArea,\r\n surfaceUnit: this.surfaceUnitSelected,\r\n roi: this.filter.roi\r\n });\r\n }\r\n\r\n private getFilterByForm(): void {\r\n const data = this.filtersForm.value;\r\n this.filter.state = data.state;\r\n this.filter.offering = data.offering;\r\n this.filter.currency = data.currency;\r\n this.filter.downLimitPrice = Number(data.minPrice);\r\n this.filter.upLimitPrice = Number(data.maxPrice);\r\n this.filter.bedrooms = Number(data.bedrooms);\r\n this.filter.bathrooms = Number(data.bathrooms);\r\n this.filter.parkingPlaces = Number(data.parkingPlaces);\r\n this.filter.mainArea = Number(data.surface);\r\n this.surfaceUnitSelected = Number(data.surfaceUnit);\r\n this.filter.roi = Number(data.roi);\r\n }\r\n\r\n private initComponent(): void {\r\n this.initUtils();\r\n this._subscription.add(\r\n this._service.getChanges().subscribe((response: FiltersChange) => {\r\n switch (response.type) {\r\n case FiltersChangeType.LIST_TYPE:\r\n this._isSharedProperties = response.isSharedProperties;\r\n this.updateFiltersSaved(response.filter);\r\n break;\r\n case FiltersChangeType.AREA:\r\n this.updateFiltersSaved(response.filter);\r\n break;\r\n }\r\n })\r\n );\r\n this._service.startComponent(new FiltersWrapper(this));\r\n }\r\n\r\n private initUtils(): void {\r\n this.currencyList = this.utils.cers;\r\n this.setPrices();\r\n }\r\n\r\n private setPrices(to?: Currency): void {\r\n this.filtersForm.controls['minPrice'].reset(0);\r\n this.filtersForm.controls['maxPrice'].reset(0);\r\n const offering = this.filtersForm.controls['offering'].value;\r\n this.minPriceList = this.createPrices(this.utils.limitPrice, this.propertyTypeSelected.value, offering);\r\n this.minPriceList = this._converter.list(this.minPriceList, this.utils.cers, Currency.USD, to || this.filter.currency as Currency);\r\n this.maxPriceList = Object.assign([], this.minPriceList);\r\n this._tmpMinPriceList = Object.assign([], this.minPriceList);\r\n this._tmpMaxPriceList = Object.assign([], this.maxPriceList);\r\n }\r\n\r\n private applyAmenities(): void {\r\n this.propertyTypeSelected.amenities = this.propertyTypeSelected.amenities.map(amenity => {\r\n const i = this.filter.extras.indexOf(amenity.value);\r\n amenity.checked = (i > -1);\r\n return amenity;\r\n });\r\n this.propertyTypeSelected.features = this.propertyTypeSelected.features.map(amenity => {\r\n const i = this.filter.extras.indexOf(amenity.value);\r\n amenity.checked = (i > -1);\r\n return amenity;\r\n });\r\n }\r\n\r\n private createPrices(limitPrice: LimitPrice, propertyType: PropertyTypeEnum, offering: OfferingTypeEnum): number[] {\r\n let list: number[] = [];\r\n limitPrice.propertyRanges.forEach((range: PropertyRange) => {\r\n if (range.offering === offering && range.type === propertyType) {\r\n list = MUtils.linSpaceExp(range.min, range.max, 20);\r\n }\r\n });\r\n return list;\r\n }\r\n\r\n private initComponentByPropertyType(propertyTypeItemIndex: number = null): void {\r\n this.propertyTypeSelected = JSON.parse(\r\n JSON.stringify(ConstantsComponents.PropertyTypeList[propertyTypeItemIndex !== null ? propertyTypeItemIndex : 9]));\r\n }\r\n\r\n private updateFiltersSaved(filters: Filter): void {\r\n this.filter = filters;\r\n FiltersService.saveFilters({\r\n filters: filters,\r\n ft: this.surfaceUnitSelected === 1,\r\n isSharedProperties: this._isSharedProperties || false\r\n });\r\n }\r\n\r\n private restoreLastFiltersSaved(init?: boolean): void {\r\n const filtersSaved = FiltersService.getFiltersSaved() || null;\r\n this.filter = filtersSaved ? filtersSaved.filters : Utils.getInitialFilter(this.isOPI);\r\n if (filtersSaved) {\r\n if (filtersSaved.ft) {\r\n this.filter.mainArea = Number((this.filter.mainArea / this.METERS_TO_SQ).toFixed(0));\r\n this.surfaceUnitSelected = filtersSaved.ft ? 1 : 0;\r\n }\r\n this._isSharedProperties = filtersSaved.isSharedProperties || false;\r\n }\r\n this.propertyTypeSelected = ConstantsComponents.PropertyTypeList.find(item => item.value === this.filter.type);\r\n this.applyAmenities();\r\n this.updateFormByFilters();\r\n if (init) {\r\n this.applyFilters(FiltersChangeType.INIT);\r\n }\r\n }\r\n\r\n private openComponent(open: boolean): void {\r\n if (open) {\r\n this.changeFilter.emit({type: 'init', payload: {filter: null, value: null}});\r\n this._render.setStyle(this._ref.nativeElement, 'visibility', 'visible');\r\n this._render.setStyle(this._ref.nativeElement, 'opacity', '1');\r\n } else {\r\n this._render.setStyle(this._ref.nativeElement, 'opacity', '0');\r\n this._render.setStyle(this._ref.nativeElement, 'visibility', 'collapse');\r\n }\r\n }\r\n\r\n private listenChangesOnForm(): void {\r\n this._subscription.add(\r\n this.filtersForm.controls['offering'].valueChanges.subscribe(() => {\r\n this.setPrices();\r\n })\r\n );\r\n this._subscription.add(\r\n this.filtersForm.controls['currency'].valueChanges.subscribe(value => {\r\n if (!value) {\r\n this.filtersForm.controls['maxPrice'].reset(0);\r\n return;\r\n }\r\n this.setPrices(value.toString() as Currency);\r\n })\r\n );\r\n this._subscription.add(\r\n this.filtersForm.controls['minPrice'].valueChanges.subscribe((value) => {\r\n if (!value) {\r\n this.filtersForm.controls['minPrice'].reset(0);\r\n return;\r\n }\r\n this.maxPriceList = Object.assign([], this._tmpMaxPriceList);\r\n const i = this.minPriceList.indexOf(value);\r\n if (i > -1) {\r\n this.maxPriceList.splice(0, i + 1);\r\n }\r\n })\r\n );\r\n this._subscription.add(\r\n this.filtersForm.controls['maxPrice'].valueChanges.subscribe(value => {\r\n if (!value) {\r\n return;\r\n }\r\n this.minPriceList = Object.assign([], this._tmpMinPriceList);\r\n const i = this.maxPriceList.indexOf(value);\r\n if (i > -1) {\r\n const difference = this.minPriceList.length - this.maxPriceList.length;\r\n this.minPriceList.splice(i + difference, this.minPriceList.length - 1);\r\n }\r\n })\r\n );\r\n }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {CurrencyConverterService} from './currency-converter.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class CurrencyConverterModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: CurrencyConverterModule,\r\n providers: [\r\n CurrencyConverterService\r\n ]\r\n };\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {FiltersComponent} from './filters.component';\r\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatFormFieldModule} from '@angular/material/form-field';\r\nimport {MatSelectModule} from '@angular/material/select';\r\nimport {MatDividerModule} from '@angular/material/divider';\r\nimport {MarkerPriceModule} from './../../pipes/marker-price/marker-price.module';\r\nimport {CurrencyConverterModule} from './../../services/currency-converter/currency-converter.module';\r\nimport {FiltersService} from './filters.service';\r\nimport {FILTERS_TOKEN} from './token';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {MatRippleModule} from '@angular/material/core';\r\nimport { MatInputModule } from '@angular/material';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatRippleModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatButtonToggleModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatDividerModule,\r\n MatInputModule,\r\n MarkerPriceModule.forChild(),\r\n CurrencyConverterModule.forChild()\r\n ],\r\n declarations: [\r\n FiltersComponent\r\n ],\r\n exports: [\r\n FiltersComponent\r\n ],\r\n providers: [\r\n FiltersService\r\n ]\r\n})\r\nexport class FiltersModule {\r\n static forChild(isOPI?: boolean): ModuleWithProviders {\r\n return {\r\n ngModule: FiltersModule,\r\n providers: [\r\n FiltersService,\r\n {\r\n provide: FILTERS_TOKEN,\r\n useValue: isOPI || false\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import {AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild} from '@angular/core';\r\nimport {LazyLoadService} from '@maplander/shared';\r\nimport {Observable, of} from 'rxjs';\r\nimport {fromPromise} from 'rxjs/internal-compatibility';\r\nimport {map, mergeMap} from 'rxjs/operators';\r\n\r\ndeclare var PANOLENS: any;\r\ndeclare var DeviceOrientationEvent: any;\r\ndeclare var DeviceMotionEvent: any;\r\n\r\n@Component({\r\n selector: 'lib-panorama-visor',\r\n templateUrl: './panorama-visor.component.html',\r\n styleUrls: ['./panorama-visor.component.scss']\r\n})\r\nexport class PanoramaVisorComponent implements AfterViewInit, OnDestroy {\r\n @Input() url: string;\r\n @ViewChild('container', {static: true}) private _container: ElementRef;\r\n private _panorama: any;\r\n private _viewer: any;\r\n public isTouch: boolean;\r\n public showPanorama: boolean;\r\n public isFullScreen: boolean;\r\n\r\n constructor(\r\n private _lazy: LazyLoadService\r\n ) {\r\n }\r\n\r\n private static checkTouchSupported(): boolean {\r\n return window ? (\r\n window.navigator.msMaxTouchPoints !== null &&\r\n window.navigator.msMaxTouchPoints !== undefined)\r\n || 'ontouchstart' in window : false;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.url || this.url === '') {\r\n return;\r\n }\r\n this._lazy.load('https://pchen66.github.io/js/three/three.min.js').then(() => {\r\n return this._lazy.load('https://rawgit.com/pchen66/panolens.js/dev/build/panolens.min.js');\r\n }).then(() => {\r\n setTimeout(() => {\r\n this.showPanorama = true;\r\n this.init();\r\n }, 500);\r\n }).catch((e) => {\r\n console.log('Failed', e);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._panorama) {\r\n this._panorama.dispose();\r\n }\r\n if (this._viewer) {\r\n this._viewer.dispose();\r\n this._viewer.destroy();\r\n }\r\n }\r\n\r\n fullscreen(): void {\r\n this.toggleFullscreen();\r\n }\r\n\r\n changeControl(type: 'TOUCH' | 'MOUSE' | 'SENSOR'): void {\r\n if (!this._viewer) {\r\n return;\r\n }\r\n switch (type) {\r\n case 'MOUSE':\r\n case 'TOUCH':\r\n this._viewer.enableControl(PANOLENS.CONTROLS.ORBIT);\r\n break;\r\n case 'SENSOR':\r\n this.requestPermissions().subscribe((value) => {\r\n if (value) {\r\n this._viewer.enableControl(PANOLENS.CONTROLS.DEVICEORIENTATION);\r\n } else {\r\n if (confirm(`No se otorgarón los permisos de movimiento y orientación, ¿desea ir a ajustes?`)) {\r\n window.location.href = 'prefs:root=Safari';\r\n } else {\r\n alert('Permisos de movimiento y orientación no otorgados');\r\n }\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n\r\n changeMode(mode: 'NORMAL' | 'CARDBOARD' | 'STEREOSCOPIC'): void {\r\n if (!this._viewer) {\r\n return;\r\n }\r\n switch (mode) {\r\n case 'NORMAL':\r\n this._viewer.disableEffect();\r\n break;\r\n case 'CARDBOARD':\r\n this._viewer.enableEffect(PANOLENS.MODES.CARDBOARD);\r\n break;\r\n case 'STEREOSCOPIC':\r\n this._viewer.enableEffect(PANOLENS.MODES.STEREO);\r\n break;\r\n }\r\n }\r\n\r\n private init(): void {\r\n try {\r\n this.isTouch = PanoramaVisorComponent.checkTouchSupported();\r\n this._panorama = new PANOLENS.ImagePanorama(this.url);\r\n this._viewer = new PANOLENS.Viewer({container: this._container.nativeElement, controlBar: true, controlButtons: []});\r\n this._viewer.onWindowResize(this._container.nativeElement.offsetWidth, this._container.nativeElement.offsetHeight);\r\n this._viewer.add(this._panorama);\r\n } catch (e) {\r\n console.log('Failed', e);\r\n }\r\n }\r\n\r\n private toggleFullscreen(): void {\r\n const doc: any = window.document;\r\n const docEl: any = this._container.nativeElement;\r\n const requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen ||\r\n docEl.webkitRequestFullScreen || docEl.msRequestFullscreen;\r\n const cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen;\r\n if (!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement && !doc.msFullscreenElement) {\r\n requestFullScreen.call(docEl);\r\n this.isFullScreen = true;\r\n } else {\r\n cancelFullScreen.call(doc);\r\n this.isFullScreen = false;\r\n }\r\n }\r\n\r\n private requestPermissions(): Observable<boolean> {\r\n const success = of(true), failed = of(false);\r\n if (typeof DeviceMotionEvent.requestPermission === 'function') {\r\n return fromPromise(DeviceOrientationEvent.requestPermission()).pipe(\r\n mergeMap((response) => {\r\n if (response === 'granted') {\r\n return fromPromise(DeviceMotionEvent.requestPermission()).pipe(\r\n map((response2) => {\r\n return response2 === 'granted';\r\n })\r\n );\r\n } else {\r\n return failed;\r\n }\r\n })\r\n );\r\n } else {\r\n return success;\r\n }\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {PanoramaVisorComponent} from './panorama-visor.component';\r\nimport {LazyLoaderModule} from '@maplander/shared';\r\nimport {MatButtonModule, MatIconModule, MatMenuModule} from '@angular/material';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatMenuModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n LazyLoaderModule.forChild()\r\n ],\r\n declarations: [\r\n PanoramaVisorComponent\r\n ],\r\n exports: [\r\n PanoramaVisorComponent\r\n ]\r\n})\r\nexport class PanoramaVisorModule {\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {PFile, PFileTypeEnum, UserMedia} from '@maplander/types';\r\n\r\ninterface MultimediaUploaderData {\r\n currentType: PFileTypeEnum;\r\n multimedia: PFile[];\r\n newMedia: UserMedia[];\r\n}\r\n\r\n@Component({\r\n selector: 'lib-property-multimedia-uploader',\r\n templateUrl: './multimedia-uploader.component.html',\r\n styleUrls: ['./multimedia-uploader.component.scss']\r\n})\r\nexport class MultimediaUploaderComponent implements OnInit {\r\n\r\n public fileType: 'image' | 'image360' | 'document';\r\n public images: PFile[];\r\n public images360: PFile[];\r\n public videos: PFile[];\r\n public currentIndex: number;\r\n private _newMedia: UserMedia[];\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private _data: MultimediaUploaderData,\r\n private _dialog: MatDialogRef<MultimediaUploaderComponent, { multimedia: PFile[], newMedia: UserMedia[] }>\r\n ) {\r\n switch (this._data.currentType) {\r\n case PFileTypeEnum.IMAGE:\r\n this.fileType = 'image';\r\n this.currentIndex = 0;\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.fileType = 'image360';\r\n this.currentIndex = 1;\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.fileType = 'document';\r\n this.currentIndex = 2;\r\n break;\r\n }\r\n this.images = [];\r\n this.images360 = [];\r\n this.videos = [];\r\n this._newMedia = [];\r\n }\r\n\r\n private static getYouTubeID(text: string): string {\r\n if (text.indexOf('https://youtu.be/') !== -1) {\r\n text = text.replace('https://youtu.be/', '');\r\n return text;\r\n } else if (text.indexOf('https://www.youtube.com/') !== -1) {\r\n text = text.replace('https://www.youtube.com/', '');\r\n } else {\r\n return text = null;\r\n }\r\n if (text.indexOf('watch?v=') !== -1) {\r\n text = text.replace('watch?v=', '');\r\n } else {\r\n return text = null;\r\n }\r\n if (text.indexOf('&')) {\r\n const arr = text.split('&');\r\n text = arr[0];\r\n }\r\n return text;\r\n }\r\n\r\n ngOnInit() {\r\n this.parseMultimedia();\r\n }\r\n\r\n onUploadImage(ev: UserMedia | UserMedia[]): void {\r\n if (!ev) {\r\n return;\r\n }\r\n switch (this.fileType) {\r\n case 'image':\r\n if (Array.isArray(ev)) {\r\n ev.forEach(image => {\r\n this.createImagePFile(image);\r\n });\r\n } else {\r\n this.createImagePFile(ev);\r\n }\r\n break;\r\n case 'image360':\r\n if (Array.isArray(ev)) {\r\n ev.forEach(image => {\r\n this.createImage360PFile(image);\r\n });\r\n } else {\r\n this.createImage360PFile(ev);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n onTabChanged(tab: number): void {\r\n this.currentIndex = tab;\r\n switch (tab) {\r\n case 0:\r\n this.fileType = 'image';\r\n break;\r\n case 1:\r\n this.fileType = 'image360';\r\n break;\r\n }\r\n }\r\n\r\n onListChanged(ev: PFile[]): void {\r\n switch (this.currentIndex) {\r\n case 0:\r\n if (Array.isArray(ev) && ev.length > 0) {\r\n ev = ev.map((item, index) => {\r\n item.position = index;\r\n return item;\r\n });\r\n this.images = ev;\r\n }\r\n break;\r\n case 1:\r\n if (Array.isArray(ev) && ev.length > 0) {\r\n ev = ev.map((item, index) => {\r\n item.position = index;\r\n return item;\r\n });\r\n this.images360 = ev;\r\n }\r\n break;\r\n case 2:\r\n if (Array.isArray(ev) && ev.length > 0) {\r\n ev = ev.map((item, index) => {\r\n item.position = index;\r\n return item;\r\n });\r\n this.videos = ev;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n removeMedia(ev: PFile): void {\r\n let i = -1;\r\n if (!ev.id) {\r\n switch (ev.type) {\r\n case PFileTypeEnum.IMAGE:\r\n this.images.splice(this.images.indexOf(ev), 1);\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.images360.splice(this.images360.indexOf(ev), 1);\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.videos.splice(this.videos.indexOf(ev), 1);\r\n break;\r\n }\r\n this._newMedia.forEach((item, index) => {\r\n if (item.url === ev.fileCS.thumbnail) {\r\n i = index;\r\n }\r\n });\r\n if (i > -1) {\r\n this._newMedia.splice(i, 1);\r\n }\r\n } else {\r\n switch (ev.type) {\r\n case PFileTypeEnum.IMAGE:\r\n this.images.splice(this.images.indexOf(ev), 1);\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.images360.splice(this.images360.indexOf(ev), 1);\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.videos.splice(this.videos.indexOf(ev), 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n onYouTubeInputTextChanged(input: HTMLInputElement): void {\r\n if (input.value === '') {\r\n return;\r\n }\r\n const id = MultimediaUploaderComponent.getYouTubeID(input.value);\r\n if (!id) {\r\n return;\r\n }\r\n if (id.length >= 11) {\r\n const file = new PFile();\r\n file.type = PFileTypeEnum.VIDEO;\r\n file.media = true;\r\n file.name = `video_${new Date().getTime()}`;\r\n file.fileCS = {\r\n thumbnail: id,\r\n blobName: null\r\n };\r\n file.position = this.videos.length === 0 ? 0 : this.videos.length;\r\n this.videos.push(file);\r\n input.value = '';\r\n }\r\n }\r\n\r\n accept(): void {\r\n this._dialog.close({multimedia: this.joinMultimediaTypes(), newMedia: this._newMedia});\r\n }\r\n\r\n close(): void {\r\n this._dialog.close(null);\r\n }\r\n\r\n private createImagePFile(image: UserMedia): void {\r\n const file = new PFile();\r\n file.type = PFileTypeEnum.IMAGE;\r\n image.type = PFileTypeEnum.IMAGE;\r\n file.media = true;\r\n file.fileCS = {\r\n thumbnail: image.url,\r\n blobName: null\r\n };\r\n const fileName = `image_${Date.now()}_${Math.round(Math.random() * 1000000)}.${image.blob.type.replace('image/', '')}`;\r\n file.name = fileName;\r\n image.name = fileName;\r\n file.position = this.images.length === 0 ? 0 : this.images.length;\r\n this._newMedia.push(image);\r\n this.images.push(file);\r\n }\r\n\r\n private createImage360PFile(image: UserMedia): void {\r\n const file = new PFile();\r\n file.type = PFileTypeEnum.SPHERIC;\r\n image.type = PFileTypeEnum.SPHERIC;\r\n file.media = true;\r\n const fileName = `spheric_${Date.now()}_${Math.round(Math.random() * 1000000)}.${image.blob.type.replace('image/', '')}`;\r\n file.name = fileName;\r\n image.name = fileName;\r\n file.fileCS = {\r\n thumbnail: image.url,\r\n blobName: null\r\n };\r\n file.position = this.images360.length === 0 ? 0 : this.images360.length;\r\n this._newMedia.push(image);\r\n this.images360.push(file);\r\n }\r\n\r\n private parseMultimedia(): void {\r\n if (this._data) {\r\n this._data.multimedia.forEach(item => {\r\n switch (item.type) {\r\n case PFileTypeEnum.IMAGE:\r\n this.images.push(item);\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.images360.push(item);\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.videos.push(item);\r\n break;\r\n }\r\n });\r\n this._newMedia = this._data.newMedia || [];\r\n }\r\n }\r\n\r\n private joinMultimediaTypes(): PFile[] {\r\n let response = [];\r\n response = response.concat(this.images);\r\n response = response.concat(this.images360);\r\n response = response.concat(this.videos);\r\n return response;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {PFile, PFileTypeEnum, UserMedia} from '@maplander/types';\r\nimport {MultimediaUploaderComponent} from './multimedia-uploader.component';\r\n\r\n@Injectable()\r\nexport class MultimediaUploaderService {\r\n\r\n constructor(\r\n private _dialog: MatDialog\r\n ) {\r\n }\r\n\r\n open(currentType: PFileTypeEnum, multimedia?: PFile[], newMedia?: UserMedia[]): MatDialogRef<MultimediaUploaderComponent> {\r\n return this._dialog.open<MultimediaUploaderComponent, {currentType: PFileTypeEnum, multimedia: PFile[], newMedia: UserMedia[]},\r\n {currentType: PFileTypeEnum, multimedia: PFile[], newMedia: UserMedia[]}>\r\n (MultimediaUploaderComponent, {\r\n data: {currentType: currentType || PFileTypeEnum.IMAGE, multimedia: multimedia || [], newMedia: newMedia || []},\r\n panelClass: 'multimedia-uploader-panel-class',\r\n disableClose: true\r\n });\r\n }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {MatDialogRef} from '@angular/material/dialog';\r\nimport {DialogResponse, DialogResponseType} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../../../constantsComponents';\r\n\r\n@Component({\r\n selector: 'lib-property-announce-confirm',\r\n templateUrl: './announce-confirm.component.html',\r\n styleUrls: ['./announce-confirm.component.scss']\r\n})\r\nexport class AnnounceConfirmComponent {\r\n\r\n public list: { name: string, value: number, checked: boolean }[];\r\n public errorField: boolean;\r\n constructor(\r\n private _dialogRef: MatDialogRef<AnnounceConfirmComponent, DialogResponse<any>>\r\n ) {\r\n this.list = ConstantsComponents.AnnounceCheckList.map(item => ({...item}));\r\n }\r\n\r\n public close(): void {\r\n this._dialogRef.close({code: DialogResponseType.CANCEL});\r\n }\r\n\r\n public accept(): void {\r\n this.errorField = false;\r\n this.list.forEach(item => {\r\n if (!item.checked) {\r\n this.errorField = true;\r\n }\r\n });\r\n if (this.errorField) {\r\n return;\r\n }\r\n this._dialogRef.close({code: DialogResponseType.ACCEPT});\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {DialogResponse} from '@maplander/types';\r\nimport {AnnounceConfirmComponent} from './announce-confirm.component';\r\n\r\n@Injectable()\r\nexport class AnnounceConfirmService {\r\n\r\n constructor(private _dialog: MatDialog) {\r\n }\r\n\r\n public open():\r\n MatDialogRef<AnnounceConfirmComponent, DialogResponse<any>> {\r\n return this._dialog.open(AnnounceConfirmComponent, {\r\n disableClose: true,\r\n panelClass: 'confirm-announce-panel-class'\r\n });\r\n }\r\n}\r\n","import {Component, Inject, OnDestroy, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\r\nimport {PFile, PFileTypeEnum} from '@maplander/types';\r\nimport {BreakpointObserver} from '@angular/cdk/layout';\r\nimport {GalleryConfig} from './gallery.service';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-gallery',\r\n templateUrl: './gallery.component.html',\r\n styleUrls: ['./gallery.component.scss']\r\n})\r\nexport class GalleryComponent implements OnInit, OnDestroy {\r\n\r\n public multimedia: PFile[];\r\n public sideOpened: boolean;\r\n public typeSelected: 'IMAGE' | 'VIDEO' | 'SPHERIC';\r\n public indexSelected: number;\r\n public count: {\r\n image: number,\r\n video: number,\r\n sphere: number\r\n };\r\n private _mobileVersion: boolean;\r\n private _subscription: Subscription;\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) private _data: GalleryConfig,\r\n private _ref: MatDialogRef<GalleryComponent>,\r\n private _breakpointObserver: BreakpointObserver\r\n ) {\r\n this._subscription = new Subscription();\r\n this.multimedia = this.getPFilesByType(PFileTypeEnum.IMAGE, this._data.multimedia || []);\r\n this.sideOpened = true;\r\n this.indexSelected = this._data.indexSelected;\r\n this.typeSelected = 'IMAGE';\r\n this.count = {\r\n image: 0,\r\n sphere: 0,\r\n video: 0\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n this._subscription.add(\r\n this._breakpointObserver.observe(['(max-width: 1024px)']).subscribe((state) => {\r\n this._mobileVersion = state.matches;\r\n })\r\n );\r\n this.assignCountByType();\r\n this.assignMultimediaByType();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n close(): void {\r\n this._ref.close();\r\n }\r\n\r\n updateSideNav(): void {\r\n this.sideOpened = !this.sideOpened;\r\n }\r\n\r\n selectPFile(index: number): void {\r\n this.indexSelected = index;\r\n if (this._mobileVersion) {\r\n this.updateSideNav();\r\n }\r\n }\r\n\r\n onIndexSelectedChange(ev: number): void {\r\n this.indexSelected = ev;\r\n }\r\n\r\n changePFileType(type: 'IMAGE' | 'VIDEO' | 'SPHERIC'): void {\r\n this.indexSelected = 0;\r\n this.typeSelected = type;\r\n const pFileType = type as PFileTypeEnum;\r\n this.multimedia = this.getPFilesByType(pFileType, this._data.multimedia);\r\n }\r\n\r\n private assignCountByType(): void {\r\n this.count.image = this.getPFilesByType(PFileTypeEnum.IMAGE, this._data.multimedia).length;\r\n this.count.video = this.getPFilesByType(PFileTypeEnum.VIDEO, this._data.multimedia).length;\r\n this.count.sphere = this.getPFilesByType(PFileTypeEnum.SPHERIC, this._data.multimedia).length;\r\n }\r\n\r\n private assignMultimediaByType(): void {\r\n if (this._data.type) {\r\n this.typeSelected = this._data.type;\r\n this.multimedia = this.getPFilesByType(this.typeSelected as PFileTypeEnum, this._data.multimedia);\r\n }\r\n }\r\n\r\n private getPFilesByType(type: PFileTypeEnum, list: PFile[]): PFile[] {\r\n return list.filter(item => {\r\n return (item.type === type);\r\n }) || [];\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {PFile} from '@maplander/types';\r\nimport {GalleryComponent} from './gallery.component';\r\n\r\nexport interface GalleryConfig {\r\n multimedia: PFile[];\r\n indexSelected: number;\r\n type: 'IMAGE' | 'VIDEO' | 'SPHERIC';\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class GalleryService {\r\n\r\n constructor(\r\n private _dialog: MatDialog\r\n ) {\r\n }\r\n\r\n public open(multimedia: PFile[], indexSelected?: number, type?: 'IMAGE' | 'VIDEO' | 'SPHERIC'): MatDialogRef<GalleryComponent> {\r\n return this._dialog.open<GalleryComponent, GalleryConfig>(\r\n GalleryComponent, {\r\n data: {\r\n multimedia: multimedia || [],\r\n indexSelected: indexSelected || 0,\r\n type: type || null\r\n },\r\n disableClose: true,\r\n panelClass: 'gallery_dialog'\r\n });\r\n }\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\n\r\nexport const PROPERTY_TOKEN = new InjectionToken<boolean>('PROPERTY MODULE CONFIG');\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material';\r\nimport {LeadInfo} from '@maplander/types';\r\n\r\n@Component({\r\n selector: 'lib-stats',\r\n templateUrl: './stats.component.html',\r\n styleUrls: ['./stats.component.scss']\r\n})\r\nexport class StatsComponent implements OnInit {\r\n\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: LeadInfo,\r\n private _dialogRef: MatDialogRef<StatsComponent>\r\n ) {\r\n this.data = new LeadInfo(this.data || null);\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n close(): void {\r\n this._dialogRef.close();\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {MatDialog} from '@angular/material';\r\nimport {StatsComponent} from './stats.component';\r\nimport {LeadInfo} from '@maplander/types';\r\n\r\n@Injectable()\r\nexport class StatsService {\r\n\r\n constructor(\r\n private _dialog: MatDialog\r\n ) {\r\n }\r\n\r\n open(leadInfo: LeadInfo): void {\r\n this._dialog.open<void, LeadInfo>(StatsComponent, {\r\n data: leadInfo || null,\r\n panelClass: 'stats-panel-class'\r\n });\r\n }\r\n}\r\n","import {Component, EventEmitter, Inject, Input, OnChanges, OnInit, Optional, Output, SimpleChanges} from '@angular/core';\r\nimport {\r\n Address,\r\n AppUtil,\r\n DialogResponseType,\r\n NewCompleteProperty,\r\n NewProperty,\r\n PFile,\r\n PFileTypeEnum,\r\n PropertyInfo,\r\n PropertyTypeEnum,\r\n StatusTypeEnum,\r\n UserMedia\r\n} from '@maplander/types';\r\nimport {SnackBarService} from '@maplander/core';\r\nimport {EditorComponent} from '../editor/editor.component';\r\nimport {OwnerInfoComponent} from '../owner-info/owner-info.component';\r\nimport {DocumentsComponent} from '../documents/documents.component';\r\nimport {MultimediaUploaderService} from '../multimedia-uploader/multimedia-uploader.service';\r\nimport {AnnounceConfirmService} from '../announce-confirm/announce-confirm.service';\r\nimport {DocumentVisorService} from '../../../document-visor/document-visor.service';\r\nimport {Utils} from '../../../../utils';\r\nimport {ShareService} from '@maplander/shared';\r\nimport {GalleryService} from '../gallery/gallery.service';\r\nimport {PROPERTY_TOKEN} from '../../token';\r\nimport {StatsService} from '../stats/stats.service';\r\n\r\nexport enum PropertyEventType {\r\n CREATE = 'CREATE',\r\n UPDATE = 'UPDATE',\r\n ANNOUNCE = 'ANNOUNCE',\r\n HIDE = 'HIDE',\r\n SHOW = 'SHOW',\r\n ADDRESS = 'ADDRESS',\r\n OFFER = 'OFFER',\r\n FAVORITE = 'FAVORITE',\r\n REQUEST_INFO = 'REQUEST_INFO',\r\n SHARE = 'SHARE',\r\n ARCHIVE = 'ARCHIVE',\r\n REAL_ESTATE_EXCHANGE = 'REAL_ESTATE_EXCHANGE',\r\n SHARE_COMMISSION = 'SHARE_COMMISSION',\r\n BROCHURE = 'BROCHURE',\r\n POSTER = 'POSTER',\r\n CLIENTS = 'CLIENTS',\r\n BACK = 'BACK',\r\n SHOW_AGENTS = 'SHOW_AGENTS',\r\n TARPS = 'TARPS'\r\n}\r\n\r\nexport interface PropertyEventChange {\r\n type: PropertyEventType;\r\n payload?: any;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-property',\r\n templateUrl: './property.component.html',\r\n styleUrls: ['./property.component.scss']\r\n})\r\nexport class PropertyComponent implements OnInit, OnChanges {\r\n @Input() property: NewCompleteProperty;\r\n @Input() utils: AppUtil;\r\n @Input() propertyType: PropertyTypeEnum;\r\n @Input() mode: 'detail' | 'record' | 'add';\r\n @Input() sharedProperty: { isShared: boolean, ownerAvailable: boolean } = {isShared: false, ownerAvailable: true};\r\n @Input() address: Address;\r\n @Input() mlsLabel: string;\r\n @Input() disableShareCommission: boolean;\r\n @Input() isFavorite: boolean;\r\n @Input() disableConfirmAnnounce: boolean;\r\n @Input() currencyConverted: { currency: string, price: number };\r\n @Input() userUrl: string;\r\n @Output() change: EventEmitter<PropertyEventChange>;\r\n @Output() modeChange: EventEmitter<'detail' | 'record' | 'add'>;\r\n public multimedia: PFile[];\r\n public isOPI: boolean;\r\n public currentIndex: number;\r\n public frontImageError: boolean;\r\n public currentType: PFileTypeEnum;\r\n public multimediaCount: {\r\n images: number,\r\n images360: number,\r\n videos: number\r\n };\r\n public completeProperty: NewCompleteProperty;\r\n private _allMultimedia: PFile[];\r\n private _newMedia: UserMedia[];\r\n private _editorInstance: EditorComponent;\r\n private _ownerInstance: OwnerInfoComponent;\r\n private _documentsInstance: DocumentsComponent;\r\n\r\n constructor(\r\n @Optional() @Inject(PROPERTY_TOKEN) private _config: boolean,\r\n private _uploaderService: MultimediaUploaderService,\r\n private _announceService: AnnounceConfirmService,\r\n private _snackBar: SnackBarService,\r\n private _share: ShareService,\r\n private _gallery: GalleryService,\r\n private _documentService: DocumentVisorService,\r\n private _statsService: StatsService\r\n ) {\r\n this.initCompleteProperty();\r\n this.change = new EventEmitter<PropertyEventChange>();\r\n this.modeChange = new EventEmitter<'detail' | 'record' | 'add'>();\r\n this.disableShareCommission = false;\r\n this.disableConfirmAnnounce = false;\r\n this.currentIndex = 0;\r\n this.multimedia = [];\r\n this._allMultimedia = [];\r\n this._newMedia = [];\r\n this.multimediaCount = {\r\n images: 0,\r\n images360: 0,\r\n videos: 0\r\n };\r\n this.isOPI = this._config || false;\r\n this.currentType = PFileTypeEnum.IMAGE;\r\n }\r\n\r\n ngOnInit() {\r\n // this.agentActions('SHOW_AGENTS');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['property'] && changes['property'].currentValue) {\r\n this.completeProperty = new NewCompleteProperty(changes['property'].currentValue || null);\r\n this.parseMultimedia();\r\n this.assignMultimediaByType();\r\n this.validateMultimediaTypeCount();\r\n }\r\n }\r\n\r\n saveData(): void {\r\n this.restoreFrontImageError();\r\n if (this._editorInstance.validateFormInvalid()) {\r\n this._snackBar.setMessage('Verifique todos los campos obligatorios', 'OK', 5000, 'left', 'bottom');\r\n return;\r\n }\r\n this.parseDataByComponents();\r\n this.change.emit({\r\n type: this.completeProperty.property.id ? PropertyEventType.UPDATE : PropertyEventType.CREATE,\r\n payload: {\r\n property: this.completeProperty,\r\n newMedia: this._newMedia\r\n }\r\n });\r\n }\r\n\r\n agentActions(type: any): void {\r\n this.change.emit({\r\n type: type as PropertyEventType,\r\n payload: {property: this.completeProperty, newMedia: this._newMedia}\r\n });\r\n }\r\n\r\n shareProperty(): void {\r\n this.agentActions('SHARE');\r\n this._share.open({\r\n url: this.completeProperty.property.url,\r\n urlUser: this.userUrl\r\n });\r\n }\r\n\r\n openGallery(): void {\r\n if (this._allMultimedia.length === 0) {\r\n return;\r\n }\r\n let type = null;\r\n if (this.multimedia.length > 0) {\r\n type = this.multimedia[0].type;\r\n }\r\n this._gallery.open(this._allMultimedia, this.currentIndex, type);\r\n }\r\n\r\n goToStats(): void {\r\n this._statsService.open(this.completeProperty.leadInfo || null);\r\n }\r\n\r\n goToEditProperty(): void {\r\n this.mode = 'add';\r\n this.modeChange.emit(this.mode);\r\n }\r\n\r\n goToBack(): void {\r\n this.restoreFrontImageError();\r\n this.change.emit({\r\n type: PropertyEventType.BACK\r\n });\r\n }\r\n\r\n goToClients(): void {\r\n this.change.emit({\r\n type: PropertyEventType.CLIENTS\r\n });\r\n }\r\n\r\n goToUpdateVisibility(): void {\r\n this.change.emit({\r\n type: this.completeProperty.property.status === StatusTypeEnum.ANNOUNCED ? PropertyEventType.HIDE : PropertyEventType.SHOW,\r\n payload: {property: this.completeProperty, newMedia: this._newMedia}\r\n });\r\n }\r\n\r\n goToPublish(): void {\r\n if (this.mode === 'add') {\r\n this.parseDataByComponents();\r\n }\r\n const errors = Utils.getErrorsForPublish(this.completeProperty.property);\r\n if (errors.length > 0) {\r\n this.mode = 'add';\r\n this.modeChange.emit(this.mode);\r\n setTimeout(() => {\r\n this.validateFrontImageOnErrors(errors);\r\n this._editorInstance.setErrorsOnFields(errors);\r\n }, 200);\r\n this._snackBar.setMessage('Complete los campos faltantes para poder publicar', 'OK', 5000, 'left', 'bottom');\r\n } else {\r\n if (this.disableConfirmAnnounce) {\r\n this.change.emit({\r\n type: PropertyEventType.ANNOUNCE,\r\n payload: {property: this.completeProperty, newMedia: this._newMedia}\r\n });\r\n return;\r\n }\r\n this._announceService.open().afterClosed().subscribe((response) => {\r\n if (response.code === DialogResponseType.ACCEPT) {\r\n this.change.emit({\r\n type: PropertyEventType.ANNOUNCE,\r\n payload: {property: this.completeProperty, newMedia: this._newMedia}\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onMultimediaIndexChanged(ev: number): void {\r\n this.currentIndex = ev;\r\n }\r\n\r\n changeMultimediaType(type: string): void {\r\n this.currentType = type as PFileTypeEnum;\r\n this.assignMultimediaByType();\r\n }\r\n\r\n openUploaderMultimedia(): void {\r\n this._uploaderService.open(this.currentType, this._allMultimedia, this._newMedia).afterClosed().subscribe((response) => {\r\n if (response) {\r\n this._newMedia = response.newMedia || [];\r\n this._allMultimedia = Object.assign([], response.multimedia || []);\r\n this.assignFrontImage();\r\n this.assignMultimediaByType();\r\n this.validateMultimediaTypeCount();\r\n }\r\n });\r\n }\r\n\r\n onEditorInstance(ev: EditorComponent): void {\r\n this._editorInstance = ev;\r\n }\r\n\r\n onOwnerInstance(ev: OwnerInfoComponent): void {\r\n this._ownerInstance = ev;\r\n }\r\n\r\n onDocumentsInstance(ev: DocumentsComponent): void {\r\n this._documentsInstance = ev;\r\n }\r\n\r\n onSelectAddress(): void {\r\n this.change.emit({\r\n type: PropertyEventType.ADDRESS\r\n });\r\n }\r\n\r\n private restoreFrontImageError(): void {\r\n this.frontImageError = false;\r\n }\r\n\r\n private parseMultimedia(): void {\r\n this._allMultimedia = [];\r\n this._allMultimedia = this._allMultimedia.concat(this.completeProperty.images || []);\r\n this._allMultimedia = this._allMultimedia.concat(this.completeProperty.videos || []);\r\n this._allMultimedia = this._allMultimedia.concat(this.completeProperty.spherics || []);\r\n }\r\n\r\n private getMultimediaByType(type: PFileTypeEnum): PFile[] {\r\n const response = [];\r\n this._allMultimedia.forEach(item => {\r\n if (item.type === type) {\r\n response.push(item);\r\n }\r\n });\r\n return response;\r\n }\r\n\r\n private assignFrontImage(): void {\r\n const images: PFile[] = [];\r\n this._allMultimedia.forEach(multimedia => {\r\n if (multimedia.type === PFileTypeEnum.IMAGE) {\r\n images.push(multimedia);\r\n }\r\n });\r\n if (images.length > 0) {\r\n this.completeProperty.property.image = images[0].fileCS.thumbnail;\r\n this.frontImageError = false;\r\n } else {\r\n this.completeProperty.property.image = null;\r\n }\r\n this.completeProperty = new NewCompleteProperty(this.completeProperty);\r\n }\r\n\r\n private assignMultimediaByType(): void {\r\n const response = [];\r\n this._allMultimedia.forEach(item => {\r\n if (item.type === this.currentType) {\r\n response.push(item);\r\n }\r\n });\r\n this.multimedia = Object.assign([], response);\r\n }\r\n\r\n private validateFrontImageOnErrors(errors: string[]): void {\r\n errors.forEach(error => {\r\n if (error === 'image') {\r\n this.frontImageError = true;\r\n }\r\n });\r\n }\r\n\r\n private validateMultimediaTypeCount(): void {\r\n this.multimediaCount.images = 0;\r\n this.multimediaCount.images360 = 0;\r\n this.multimediaCount.videos = 0;\r\n this._allMultimedia.forEach(item => {\r\n switch (item.type) {\r\n case PFileTypeEnum.IMAGE:\r\n this.multimediaCount.images++;\r\n break;\r\n case PFileTypeEnum.SPHERIC:\r\n this.multimediaCount.images360++;\r\n break;\r\n case PFileTypeEnum.VIDEO:\r\n this.multimediaCount.videos++;\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private parseDataByComponents(): void {\r\n this.completeProperty.property = this._editorInstance.getProperty();\r\n this.completeProperty.property.propertyInfo.owner = this._ownerInstance.getOwner();\r\n const documentsResponse = this._documentsInstance.getDocuments();\r\n this.completeProperty.files = documentsResponse.documents;\r\n this._newMedia = this._newMedia.concat(documentsResponse.newMedia);\r\n this.completeProperty.images = this.getMultimediaByType(PFileTypeEnum.IMAGE);\r\n this.completeProperty.spherics = this.getMultimediaByType(PFileTypeEnum.SPHERIC);\r\n this.completeProperty.videos = this.getMultimediaByType(PFileTypeEnum.VIDEO);\r\n }\r\n\r\n private initCompleteProperty(): void {\r\n const complete = new NewCompleteProperty();\r\n complete.property = new NewProperty();\r\n complete.property.propertyInfo = new PropertyInfo();\r\n this.completeProperty = complete;\r\n }\r\n}\r\n","import {FormGroup} from '@angular/forms';\r\nimport {removeError} from './remove-error';\r\n\r\nexport class PropertyEditorValidators {\r\n static validator(form: FormGroup): void {\r\n // Min price rule\r\n let control = form.get('minPrice');\r\n let condition = Number(control.value) > Number(form.get('price').value);\r\n if (condition) {\r\n control.setErrors({\r\n minPriceInvalid: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'minPriceInvalid');\r\n }\r\n // Commission rule\r\n control = form.get('commission');\r\n condition = control.value && (!form.get('price').value || Number(form.get('price').value) === 0);\r\n if (condition) {\r\n control.setErrors({\r\n commissionInvalid: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'commissionInvalid');\r\n }\r\n // Consumer reporting rule\r\n control = form.get('consumerReportingOption');\r\n condition = form.get('consumerReporting').value && !control.value;\r\n if (condition) {\r\n control.setErrors({\r\n required: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'required');\r\n }\r\n // Lease transfer rule\r\n control = form.get('transferPrice');\r\n condition = form.get('transfer').value && !control.value;\r\n if (condition) {\r\n control.setErrors({\r\n required: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'required');\r\n }\r\n // Condominium fee rule\r\n control = form.get('maintenancePrice');\r\n condition = form.get('maintenance').value && !control.value;\r\n if (condition) {\r\n control.setErrors({\r\n required: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'required');\r\n }\r\n // Shared commission rule\r\n control = form.get('sharedCommission');\r\n condition = form.get('mlm').value && !control.value;\r\n if (condition) {\r\n control.setErrors({\r\n required: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'required');\r\n }\r\n // Shared commission rule 2\r\n condition = form.get('mlm').value && !form.get('commission').value;\r\n control = form.get('sharedCommission');\r\n if (condition) {\r\n control.setErrors({\r\n sharedCommissionInvalid: true\r\n });\r\n control.markAsTouched();\r\n } else {\r\n removeError(control, 'sharedCommissionInvalid');\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {FormBuilder, FormGroup, ValidatorFn, Validators} from '@angular/forms';\r\nimport {\r\n Address,\r\n Amenities,\r\n AppUtil,\r\n AreaUnitEnum,\r\n CER,\r\n Features,\r\n GeoPt,\r\n LandUseEnum,\r\n NewProperty,\r\n OfferingTypeEnum,\r\n PropertyInfo,\r\n PropertyTypeEnum,\r\n StatusTypeEnum\r\n} from '@maplander/types';\r\nimport {Subscription} from 'rxjs';\r\nimport {DialogService} from '@maplander/shared';\r\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';\r\nimport {MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter} from '@angular/material-moment-adapter';\r\nimport * as momentImported from 'moment';\r\nimport {PropertyTypeItem} from '../../../../utils/models/property-type-item';\r\nimport {AmenityItem} from '../../../../utils/models/amenity-item';\r\nimport {ConstantsComponents} from '../../../../constantsComponents';\r\nimport {PropertyEditorValidators} from '../../validators/property-editor-validators';\r\nimport {MDate} from '../../../../utils/classes';\r\nimport {Utils} from '../../../../utils';\r\nconst moment = momentImported;\r\n\r\nconst MY_FORMATS = {\r\n parse: {\r\n dateInput: 'L',\r\n },\r\n display: {\r\n dateInput: 'L',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'L',\r\n monthYearA11yLabel: 'MMMM YYYY',\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'lib-property-editor',\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['./editor.component.scss'],\r\n providers: [\r\n {provide: MAT_DATE_LOCALE, useValue: 'es-MX'},\r\n {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]},\r\n {provide: MAT_DATE_FORMATS, useValue: MY_FORMATS}\r\n ]\r\n})\r\nexport class EditorComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\r\n @ViewChild('btnSubmit', {static: true, read: ElementRef}) private _btnSubmitRef: ElementRef;\r\n @Input() utils: AppUtil;\r\n @Input() address: Address;\r\n @Input() propertyType: PropertyTypeEnum;\r\n @Input() property: NewProperty;\r\n @Input() mlsLabel: string;\r\n @Output() editorInstance: EventEmitter<EditorComponent>;\r\n @Output() selectAddress: EventEmitter<void>;\r\n /**\r\n * REGEX_ONLY_INTEGERS\r\n * Regex pattern to only accept integer and positive numbers\r\n * */\r\n private readonly REGEX_ONLY_INTEGERS = new RegExp(/^[0-9]\\d*$/);\r\n private readonly REGEX_MIDDLE_NUMBER = new RegExp(/^[0-9]*(\\.[5])?$/);\r\n private readonly REGEX_WEBSITE = new RegExp(/(http|https):\\/\\/(\\w+:?\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@\\-\\/]))?/);\r\n private readonly REGEX_ALPHA_NUMBER = new RegExp(/[A-Za-z0-9_]/);\r\n private readonly _subscription: Subscription;\r\n private readonly _validators: {\r\n bedrooms: ValidatorFn[],\r\n bathrooms: ValidatorFn[],\r\n parkingSpaces: ValidatorFn[],\r\n mainArea: ValidatorFn[],\r\n secondaryArea: ValidatorFn[],\r\n externalLink: ValidatorFn[],\r\n sku: ValidatorFn[]\r\n };\r\n private _property: NewProperty;\r\n private _propertyTypeItem: PropertyTypeItem;\r\n private _errorFields: string[];\r\n public propertyForm: FormGroup;\r\n public offeringTypeList: { name: string, value: OfferingTypeEnum }[];\r\n public currencyList: CER[];\r\n public roiList: number[];\r\n public landUseList: { name: string, value: LandUseEnum }[];\r\n public amenitiesList: AmenityItem[];\r\n public featuresList: AmenityItem[];\r\n public commissionList: number[];\r\n public sharedCommissionList: number[];\r\n public durationList: number[];\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _dialog: DialogService,\r\n private _adapter: DateAdapter<any>\r\n ) {\r\n this.editorInstance = new EventEmitter<EditorComponent>();\r\n this.selectAddress = new EventEmitter<void>();\r\n this._subscription = new Subscription();\r\n this.offeringTypeList = ConstantsComponents.OfferingTypeList.map(doc => ({...doc}));\r\n this.landUseList = ConstantsComponents.LandUseList.map(doc => ({...doc}));\r\n this.commissionList = ConstantsComponents.CommissionList[OfferingTypeEnum.SALE];\r\n this.roiList = Object.assign([], ConstantsComponents.ROIList);\r\n this.durationList = Object.assign([], ConstantsComponents.DurationList);\r\n this.sharedCommissionList = Object.assign([], ConstantsComponents.SharedCommissionList);\r\n this._adapter.setLocale('es');\r\n this._errorFields = [];\r\n this._validators = {\r\n bedrooms: [Validators.pattern(this.REGEX_ONLY_INTEGERS)],\r\n bathrooms: [Validators.pattern(this.REGEX_MIDDLE_NUMBER)],\r\n parkingSpaces: [Validators.pattern(this.REGEX_ONLY_INTEGERS)],\r\n mainArea: [],\r\n secondaryArea: [],\r\n externalLink: [Validators.pattern(this.REGEX_WEBSITE)],\r\n sku: [Validators.pattern(this.REGEX_ALPHA_NUMBER)]\r\n };\r\n this.propertyForm = this._formBuilder.group({\r\n offering: [OfferingTypeEnum.SALE],\r\n sku: [null, this._validators.sku],\r\n consumerReporting: [],\r\n consumerReportingOption: [1],\r\n currency: ['MXN'],\r\n minPrice: [],\r\n price: [],\r\n maintenance: [],\r\n maintenancePrice: [],\r\n transfer: [],\r\n transferPrice: [],\r\n bedrooms: [null, this._validators.bedrooms],\r\n bathrooms: [null, this._validators.bathrooms],\r\n parkingSpaces: [null, this._validators.parkingSpaces],\r\n mainArea: [null, this._validators.mainArea],\r\n secondaryArea: [null, this._validators.secondaryArea],\r\n unit: [AreaUnitEnum.M2],\r\n buildIn: [],\r\n landUse: [],\r\n exclusivity: [],\r\n mlm: [],\r\n sharedCommission: [],\r\n agreementDate: [{value: null, disabled: true}],\r\n duration: [],\r\n commission: [],\r\n roi: [],\r\n description: [],\r\n externalLink: [null, this._validators.externalLink],\r\n notes: [],\r\n address: this._formBuilder.group({\r\n country: [],\r\n postalCode: [],\r\n state: [],\r\n city: [],\r\n township: [],\r\n colony: [],\r\n street: [],\r\n extNumber: [],\r\n intNumber: [],\r\n mz: [],\r\n lt: [],\r\n visible: [true],\r\n }),\r\n }, {\r\n validators: PropertyEditorValidators.validator\r\n });\r\n }\r\n\r\n private static geoPtGenerator(geoPt: GeoPt, minDistance: number, maxDistance: number): GeoPt {\r\n const EARTH_RADIUS_METERS = 6371010.0;\r\n const l = Math.random() * (maxDistance - minDistance) + minDistance;\r\n const alpha = Math.random() * Math.PI / 2;\r\n const sx = (Math.random() < 0.5) ? l * Math.cos(alpha) : -l * Math.cos(alpha);\r\n const sy = (Math.random() < 0.5) ? l * Math.sin(alpha) : -l * Math.sin(alpha);\r\n const deltaLat = sy / EARTH_RADIUS_METERS * 180 / Math.PI;\r\n const lat = geoPt.latitude + deltaLat;\r\n const deltaLong = sx / EARTH_RADIUS_METERS / Math.cos(lat * Math.PI / 180) * 180 / Math.PI;\r\n return {\r\n latitude: lat,\r\n longitude: geoPt.longitude + deltaLong\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n this.listenChangesOnForm();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['utils'] && changes['utils'].currentValue) {\r\n this.currencyList = changes['utils'].currentValue.cers;\r\n }\r\n if (changes['propertyType'] && changes['propertyType'].currentValue) {\r\n this.propertyType = changes['propertyType'].currentValue;\r\n this.searchAmenitiesByPropertyType();\r\n }\r\n if (changes['property'] && changes['property'].currentValue) {\r\n this.createProperty(changes['property'].currentValue);\r\n }\r\n if (changes['address'] && changes['address'].currentValue) {\r\n this.updateAddressForm(changes['address'].currentValue);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.editorInstance.emit(this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n getProperty(): NewProperty {\r\n this.setValidatorOnFields(this._errorFields, true);\r\n this.updatePropertyByForm(this.propertyForm.getRawValue());\r\n return this._property;\r\n }\r\n\r\n validateFormInvalid(): boolean {\r\n this.setValidatorOnFields(this._errorFields, true);\r\n return this.propertyForm.invalid;\r\n }\r\n\r\n updateAmenity(amenity: AmenityItem): void {\r\n amenity.checked = !amenity.checked;\r\n this._property.amenities[amenity.value] = amenity.checked;\r\n }\r\n\r\n goToSelectAddress(): void {\r\n this.selectAddress.emit();\r\n }\r\n\r\n setErrorsOnFields(errors: string[]): void {\r\n this._errorFields = errors;\r\n this.setValidatorOnFields(this._errorFields);\r\n this._btnSubmitRef.nativeElement.click();\r\n }\r\n\r\n private updateAddressForm(address: Address): void {\r\n this.propertyForm.patchValue({\r\n address: {\r\n country: address.country,\r\n state: address.state,\r\n city: address.city,\r\n township: address.township,\r\n colony: address.colony,\r\n street: address.street,\r\n postalCode: address.postalCode,\r\n extNumber: address.outdoorNumber\r\n }\r\n });\r\n }\r\n\r\n private assignAmenities(): void {\r\n this.amenitiesList.forEach((amenity) => {\r\n amenity.checked = this._property.amenities[amenity.value];\r\n });\r\n }\r\n\r\n private assignLocationFeatures(): void {\r\n this.featuresList.forEach((amenity) => {\r\n amenity.checked = this._property.amenities[amenity.value];\r\n });\r\n }\r\n\r\n private assignCommission(): void {\r\n this.commissionList = ConstantsComponents.CommissionList[this._property.offering];\r\n }\r\n\r\n private assignBusinessRules(): void {\r\n switch (this.propertyType) {\r\n case PropertyTypeEnum.ROOM:\r\n this.propertyForm.patchValue({\r\n offering: OfferingTypeEnum.RENT\r\n });\r\n break;\r\n case PropertyTypeEnum.INVESTMENT:\r\n this.propertyForm.patchValue({\r\n offering: OfferingTypeEnum.SALE\r\n });\r\n break;\r\n }\r\n if (this._property.status === StatusTypeEnum.ANNOUNCED) {\r\n const errors = Utils.listErrorsByPropertyTypeForPublish(this._property.type);\r\n this.setValidatorOnFields(errors);\r\n }\r\n }\r\n\r\n private updateFormByProperty(): void {\r\n this.propertyForm.patchValue({\r\n offering: this._property.offering,\r\n sku: this._property.sku,\r\n consumerReporting: this._property.propertyInfo.consumerReporting && this._property.propertyInfo.consumerReporting !== 0,\r\n consumerReportingOption: this._property.propertyInfo.consumerReporting,\r\n currency: this._property.currency,\r\n minPrice: this._property.propertyInfo.lowestPrice,\r\n price: this._property.price,\r\n maintenance: this._property.features.condominiumFeePrice && this._property.features.condominiumFeePrice !== 0,\r\n maintenancePrice: this._property.features.condominiumFeePrice,\r\n transfer: this._property.propertyInfo.leaseTransferPrice && this._property.propertyInfo.leaseTransferPrice !== 0,\r\n transferPrice: this._property.propertyInfo.leaseTransferPrice,\r\n bedrooms: this._property.features.bedrooms,\r\n bathrooms: this._property.features.bathrooms,\r\n parkingSpaces: this._property.features.parkingSpaces,\r\n mainArea: this._property.features.mainArea,\r\n secondaryArea: this._property.features.secondaryArea,\r\n unit: this._property.features.areaUnit,\r\n buildIn: this._property.features.builtIn ? new Date(this._property.features.builtIn, 1, 1) : null,\r\n landUse: this._property.features.landUse,\r\n exclusivity: this._property.propertyInfo.exclusivity,\r\n mlm: this._property.propertyInfo.mls,\r\n sharedCommission: this._property.propertyInfo.sharedCommission,\r\n agreementDate: this._property.propertyInfo.listingAgreementStartDate ?\r\n moment(new MDate(this._property.propertyInfo.listingAgreementStartDate).toDate()) : null,\r\n duration: this._property.propertyInfo.listingAgreementTime,\r\n commission: this._property.propertyInfo.commission,\r\n roi: this._property.features.roi,\r\n description: this._property.description,\r\n externalLink: this._property.externalLink,\r\n notes: this._property.propertyInfo.notes,\r\n address: {\r\n country: this._property.address.country,\r\n state: this._property.address.state,\r\n city: this._property.address.city,\r\n township: this._property.address.township,\r\n colony: this._property.address.colony,\r\n postalCode: this._property.address.postalCode,\r\n street: this._property.address.street,\r\n extNumber: this._property.address.outdoorNumber,\r\n intNumber: this._property.address.interiorNumber,\r\n mz: this._property.address.mz,\r\n lt: this._property.address.lt,\r\n visible: this._property.address.visible || false,\r\n }\r\n });\r\n }\r\n\r\n private updatePropertyByForm(data: any): void {\r\n this._property.type = this.propertyType;\r\n this._property.offering = data.offering;\r\n this._property.sku = data.sku;\r\n this._property.propertyInfo.consumerReporting = data.consumerReporting ? data.consumerReportingOption : null;\r\n this._property.currency = data.currency;\r\n this._property.propertyInfo.lowestPrice = data.minPrice ? Number(data.minPrice) : null;\r\n this._property.price = data.price ? Number(data.price) : null;\r\n this._property.features.condominiumFeePrice = data.maintenance ? Number(data.maintenancePrice) : null;\r\n this._property.propertyInfo.leaseTransferPrice = data.transfer ? Number(data.transferPrice) : null;\r\n this._property.features.bedrooms = data.bedrooms ? Number(data.bedrooms) : null;\r\n this._property.features.bathrooms = data.bathrooms ? Number(data.bathrooms) : null;\r\n this._property.features.parkingSpaces = data.parkingSpaces ? Number(data.parkingSpaces) : null;\r\n this._property.features.mainArea = data.mainArea ? Number(data.mainArea) : null;\r\n this._property.features.secondaryArea = data.secondaryArea ? Number(data.secondaryArea) : null;\r\n this._property.features.areaUnit = data.unit;\r\n this._property.features.builtIn = data.buildIn ? data.buildIn.getFullYear() : null;\r\n this._property.features.landUse = data.landUse;\r\n this._property.propertyInfo.exclusivity = data.exclusivity;\r\n this._property.propertyInfo.mls = data.mlm;\r\n this._property.propertyInfo.sharedCommission = data.mlm ? Number(data.sharedCommission) : null;\r\n this._property.propertyInfo.listingAgreementStartDate =\r\n data.agreementDate ? MDate.getTimestamp(data.agreementDate.toDate()) : null;\r\n this._property.propertyInfo.listingAgreementTime = data.duration;\r\n this._property.propertyInfo.commission = data.commission;\r\n this._property.features.roi = data.roi;\r\n this._property.description = data.description;\r\n this._property.externalLink = data.externalLink;\r\n this._property.propertyInfo.notes = data.notes;\r\n this._property.address.country = data.address.country;\r\n this._property.address.state = data.address.state;\r\n this._property.address.city = data.address.city;\r\n this._property.address.township = data.address.township;\r\n this._property.address.colony = data.address.colony;\r\n this._property.address.postalCode = data.address.postalCode;\r\n this._property.address.street = data.address.street;\r\n this._property.address.outdoorNumber = data.address.extNumber;\r\n this._property.address.interiorNumber = data.address.intNumber;\r\n this._property.address.mz = data.address.mz;\r\n this._property.address.lt = data.address.lt;\r\n this._property.address.location = this.address.location;\r\n this._property.address.publicLocation = !data.address.visible ?\r\n EditorComponent.geoPtGenerator(this.address.location, 200, 400) : this.address.location;\r\n this._property.address.visible = data.address.visible;\r\n }\r\n\r\n private searchAmenitiesByPropertyType(): void {\r\n ConstantsComponents.PropertyTypeList.forEach(type => {\r\n if (type.value === this.propertyType) {\r\n this._propertyTypeItem = type;\r\n this.amenitiesList = type.amenities.map(item => ({...item}));\r\n this.featuresList = type.features.map(item => ({...item}));\r\n }\r\n });\r\n }\r\n\r\n private listenChangesOnForm(): void {\r\n this._subscription.add(\r\n this.propertyForm.controls['offering'].valueChanges.subscribe((value) => {\r\n this.commissionList = ConstantsComponents.CommissionList[value];\r\n this.propertyForm.patchValue({\r\n minPrice: null,\r\n maxPrice: null\r\n });\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['price'].valueChanges.subscribe((value) => {\r\n if (value && Number(value) === 0) {\r\n this.propertyForm.patchValue({\r\n minPrice: null\r\n });\r\n }\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['mlm'].valueChanges.subscribe(() => {\r\n this.propertyForm.controls['sharedCommission'].setValue(null);\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['maintenance'].valueChanges.subscribe(() => {\r\n this.propertyForm.controls['maintenancePrice'].setValue(null);\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['transfer'].valueChanges.subscribe(() => {\r\n this.propertyForm.controls['transferPrice'].setValue(null);\r\n })\r\n );\r\n this._subscription.add(\r\n this.propertyForm.controls['consumerReporting'].valueChanges.subscribe(() => {\r\n this.propertyForm.controls['consumerReportingOption'].setValue(1);\r\n })\r\n );\r\n }\r\n\r\n private createProperty(property?: NewProperty): void {\r\n this._property = new NewProperty(property || null);\r\n this._property.type = this.propertyType;\r\n this._property.propertyInfo = new PropertyInfo(property ? property.propertyInfo : null);\r\n this._property.features = new Features(property ? property.features : null);\r\n this._property.address = new Address(property ? property.address : null);\r\n this._property.amenities = new Amenities(property ? property.amenities : null);\r\n this.assignBusinessRules();\r\n if (property && property.id) {\r\n this.updateFormByProperty();\r\n this.assignAmenities();\r\n this.assignLocationFeatures();\r\n this.assignCommission();\r\n }\r\n }\r\n\r\n private setValidatorOnFields(errors: string[], remove?: boolean): void {\r\n if (errors.length === 0) {\r\n return;\r\n }\r\n errors.forEach(error => {\r\n if (!this.propertyForm.controls[error]) {\r\n return;\r\n }\r\n if (remove) {\r\n this.propertyForm.controls[error].clearValidators();\r\n this.propertyForm.controls[error].setValidators(this._validators[error] ? this._validators[error] : []);\r\n this.propertyForm.controls[error].updateValueAndValidity();\r\n } else {\r\n this.propertyForm.controls[error].clearValidators();\r\n this.propertyForm.controls[error].setValidators(\r\n this._validators[error] ? this._validators[error].concat(Validators.required) : [Validators.required]);\r\n this.propertyForm.controls[error].updateValueAndValidity();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import {AbstractControl, ValidatorFn} from '@angular/forms';\r\nimport {removeError} from './remove-error';\r\n\r\nexport function phoneFieldsValidator(controlName: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: boolean } | null => {\r\n if (control.parent) {\r\n const peerControl = control.parent.controls[controlName] as AbstractControl;\r\n if (!control.value && !peerControl.value) {\r\n removeError(peerControl, 'phoneFieldsError');\r\n return null;\r\n }\r\n if (control.value !== '' && (!peerControl.value || peerControl.value === '')) {\r\n peerControl.setErrors({\r\n phoneFieldsError: true\r\n });\r\n }\r\n if ((peerControl.value && peerControl.value !== '') && (!control.value || control.value === '')) {\r\n return {\r\n phoneFieldsError: true\r\n };\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\r\nimport {CountryCode, Owner} from '@maplander/types';\r\nimport {FormBuilder, FormGroup, Validators} from '@angular/forms';\r\nimport {phoneFieldsValidator} from '../../validators/phone-fields-validator';\r\n\r\n@Component({\r\n selector: 'lib-property-owner-info',\r\n templateUrl: './owner-info.component.html',\r\n styleUrls: ['./owner-info.component.scss']\r\n})\r\nexport class OwnerInfoComponent implements OnChanges, AfterViewInit {\r\n @Input() owner: Owner;\r\n @Input() disabled: boolean;\r\n @Output() ownerInstance: EventEmitter<OwnerInfoComponent>;\r\n public ownerForm: FormGroup;\r\n private _owner: Owner;\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder\r\n ) {\r\n this.ownerInstance = new EventEmitter<OwnerInfoComponent>();\r\n this.ownerForm = this._formBuilder.group({\r\n name: [],\r\n lastName: [],\r\n email: ['', [Validators.email]],\r\n code: ['', [phoneFieldsValidator('phone')]],\r\n phone: ['', [\r\n phoneFieldsValidator('code'),\r\n Validators.maxLength(13),\r\n Validators.minLength(8),\r\n Validators.pattern(new RegExp(/^[0-9]\\d*$/))]\r\n ],\r\n address: []\r\n });\r\n this.createOwner();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['disabled']) {\r\n this.ownerForm.disable();\r\n }\r\n if (changes['owner'] && changes['owner'].currentValue) {\r\n this.createOwner(changes['owner'].currentValue);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.ownerInstance.emit(this);\r\n }\r\n\r\n onCodePhoneChanged(ev: CountryCode): void {\r\n this.ownerForm.controls['code'].setValue(ev ? ev.code : '');\r\n }\r\n\r\n getOwner(): Owner {\r\n this.updateOwnerByForm(this.ownerForm.value);\r\n return this._owner;\r\n }\r\n\r\n private updateOwnerByForm(data: any): void {\r\n this._owner.name = data.name;\r\n this._owner.lastName = data.lastName;\r\n this._owner.email = data.email;\r\n this._owner.phone = data.phone;\r\n this._owner.codePhone = data.code ? data.code.replace('+', '') : '';\r\n this._owner.address = data.address;\r\n }\r\n\r\n private updateFormByOwner(): void {\r\n this.ownerForm.patchValue({\r\n name: this._owner.name,\r\n lastName: this._owner.lastName,\r\n email: this._owner.email,\r\n phone: this._owner.phone,\r\n code: (this._owner.codePhone) ? `+${this._owner.codePhone}` : '',\r\n address: this._owner.address,\r\n });\r\n }\r\n\r\n private createOwner(owner?: Owner): void {\r\n this._owner = new Owner(owner || null);\r\n if (owner) {\r\n this.updateFormByOwner();\r\n }\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges} from '@angular/core';\r\nimport {PFile, PFileTypeEnum, UserMedia} from '@maplander/types';\r\nimport {DocumentVisorService} from '../../../document-visor/document-visor.service';\r\nimport {ConstantsComponents} from '../../../../constantsComponents';\r\nimport {SnackBarService} from '@maplander/core';\r\nimport {Observable} from 'rxjs';\r\nimport {map} from 'rxjs/operators';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\n@Component({\r\n selector: 'lib-property-documents',\r\n templateUrl: './documents.component.html',\r\n styleUrls: ['./documents.component.scss']\r\n})\r\nexport class DocumentsComponent implements AfterViewInit, OnChanges {\r\n @Input() files: PFile[];\r\n @Input() disabled: boolean;\r\n @Output() documentsInstance: EventEmitter<DocumentsComponent>;\r\n public documents: { name: string, value: PFileTypeEnum, loaded: boolean }[];\r\n private _files: PFile[];\r\n private readonly _newMedia: UserMedia[];\r\n\r\n constructor(\r\n private _visor: DocumentVisorService,\r\n private _snackBar: SnackBarService,\r\n private _http: HttpClient\r\n ) {\r\n this.documentsInstance = new EventEmitter<DocumentsComponent>();\r\n this.documents = ConstantsComponents.DocumentsList.map(doc => ({...doc}));\r\n this._newMedia = [];\r\n this._files = [];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.documentsInstance.emit(this);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['files'] && changes['files'].currentValue) {\r\n this._files = changes['files'].currentValue || [];\r\n this.validateDocumentsLoaded();\r\n }\r\n }\r\n\r\n getDocuments(): { documents: PFile[], newMedia: UserMedia[] } {\r\n return {documents: this._files, newMedia: this._newMedia};\r\n }\r\n\r\n openFile(type: PFileTypeEnum): void {\r\n const doc = this.getPFileByType(type);\r\n const media = this.getUserMediaByType(type);\r\n if (media) {\r\n this._visor.open(media.url);\r\n return;\r\n }\r\n if (doc) {\r\n this.openBlobFile(doc.fileCS.thumbnail);\r\n return;\r\n }\r\n if (!doc && !media) {\r\n this._snackBar.setMessage('Este documento no ha sido añadido', 'OK', 2500, 'left');\r\n }\r\n }\r\n\r\n onUploadFile(ev: UserMedia, doc: { name: string, value: PFileTypeEnum, loaded: boolean }): void {\r\n const name = doc.value.toString().toLowerCase();\r\n if (doc.loaded) {\r\n this.updateDocument(name);\r\n }\r\n doc.loaded = true;\r\n const file = new PFile();\r\n file.type = doc.value;\r\n ev.type = doc.value;\r\n file.media = false;\r\n const fileName = `${name}_${new Date().getTime()}.pdf`;\r\n file.name = fileName;\r\n ev.name = fileName;\r\n file.fileCS = {\r\n thumbnail: ev.url,\r\n blobName: null\r\n };\r\n this._files.push(file);\r\n this._newMedia.push(ev);\r\n }\r\n\r\n private openBlobFile(url: string): void {\r\n this.downloadFile(url)\r\n .subscribe((response) => {\r\n this._visor.open(response);\r\n });\r\n }\r\n\r\n private updateDocument(name: string): void {\r\n let i = -1, file: PFile = null;\r\n this._files.forEach((item, index) => {\r\n if (item.name === name) {\r\n file = item;\r\n i = index;\r\n }\r\n });\r\n if (i > -1) {\r\n this._files.splice(i, 1);\r\n }\r\n if (file) {\r\n i = -1;\r\n this._newMedia.forEach((item, index) => {\r\n if (item.name === file.name) {\r\n i = index;\r\n }\r\n });\r\n if (i > -1) {\r\n this._newMedia.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n private validateDocumentsLoaded(): void {\r\n if (!this._files || this._files.length === 0) {\r\n return;\r\n }\r\n this._files.forEach((file) => this.documents.forEach(doc => {\r\n if (doc.value === file.type) {\r\n doc.loaded = true;\r\n }\r\n }));\r\n }\r\n\r\n private getPFileByType(type: PFileTypeEnum): PFile {\r\n let result = null;\r\n if (!this.files || this.files.length === 0) {\r\n return result;\r\n }\r\n this.files.forEach(item => {\r\n if (item.type === type) {\r\n result = item;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private getUserMediaByType(type: PFileTypeEnum): UserMedia {\r\n let result = null;\r\n if (!this._newMedia || this._newMedia.length === 0) {\r\n return result;\r\n }\r\n this._newMedia.forEach(item => {\r\n if (item.type === type) {\r\n result = item;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private downloadFile(url: string): Observable<string> {\r\n return this._http.get(url, {\r\n responseType: 'arraybuffer'\r\n }).pipe(map((payload) => {\r\n const blob = new Blob([payload], {\r\n type: 'application/pdf'\r\n });\r\n return URL.createObjectURL(blob);\r\n }));\r\n }\r\n}\r\n","import {Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\r\nimport {NewProperty} from '@maplander/types';\r\nimport {AmenityItem} from '../../../../utils/models/amenity-item';\r\nimport {ConstantsComponents} from '../../../../constantsComponents';\r\nimport {PropertyTypeItem} from '../../../../utils/models/property-type-item';\r\nimport {MDate} from '../../../../utils/classes';\r\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\r\n\r\n\r\n@Component({\r\n selector: 'lib-property-details',\r\n templateUrl: './details.component.html',\r\n styleUrls: ['./details.component.scss']\r\n})\r\nexport class DetailsComponent implements OnInit, OnChanges {\r\n @Input() record: boolean;\r\n @Input() currencyConverted: { currency: string, price: number };\r\n @Input() property: NewProperty;\r\n @Input() mlsLabel: string;\r\n @Input() visibleTour: boolean;\r\n public amenities: AmenityItem[];\r\n public features: AmenityItem[];\r\n public propertyType: PropertyTypeItem;\r\n public agreementEndDate: number;\r\n\r\n constructor(\r\n private _sanitizer: DomSanitizer\r\n ) {\r\n this.amenities = [];\r\n this.features = [];\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['property'] && changes['property'].currentValue) {\r\n this.property = changes['property'].currentValue;\r\n this.searchPropertyType();\r\n this.createAmenities();\r\n this.createFeatures();\r\n this.validateAgreement();\r\n }\r\n }\r\n\r\n getTourUrl(): SafeResourceUrl {\r\n return this._sanitizer.bypassSecurityTrustResourceUrl(this.property.externalLink);\r\n }\r\n\r\n private validateAgreement(): void {\r\n if (this.property.propertyInfo.listingAgreementStartDate && this.property.propertyInfo.listingAgreementTime) {\r\n const startDate = new MDate(this.property.propertyInfo.listingAgreementStartDate).toDate();\r\n startDate.setDate(startDate.getDate() + this.property.propertyInfo.listingAgreementTime);\r\n this.agreementEndDate = MDate.getTimestamp(startDate);\r\n }\r\n }\r\n\r\n private searchPropertyType(): void {\r\n ConstantsComponents.PropertyTypeList.forEach((type) => {\r\n if (this.property.type === type.value) {\r\n this.propertyType = type;\r\n }\r\n });\r\n }\r\n\r\n private createAmenities(): void {\r\n this.amenities = [];\r\n let amenities: AmenityItem[] = [];\r\n ConstantsComponents.PropertyTypeList.forEach((type) => {\r\n if (type.value === this.property.type) {\r\n amenities = type.amenities;\r\n }\r\n });\r\n if (amenities.length > 0) {\r\n amenities.forEach((amenity) => {\r\n if (this.property.amenities[amenity.value]) {\r\n this.amenities.push(amenity);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private createFeatures(): void {\r\n this.features = [];\r\n let features: AmenityItem[] = [];\r\n ConstantsComponents.PropertyTypeList.forEach((type) => {\r\n if (type.value === this.property.type) {\r\n features = type.features;\r\n }\r\n });\r\n if (features.length > 0) {\r\n features.forEach((amenity) => {\r\n if (this.property.amenities[amenity.value]) {\r\n this.features.push(amenity);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component, ContentChild,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n Renderer2,\r\n SimpleChanges, TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport {PFile} from '@maplander/types';\r\n\r\n@Component({\r\n selector: 'lib-property-slide-show',\r\n templateUrl: './slide-show.component.html',\r\n styleUrls: ['./slide-show.component.scss']\r\n})\r\nexport class SlideShowComponent implements OnChanges, AfterViewInit {\r\n\r\n @ContentChild(TemplateRef, {static: true})\r\n @Input() customActions: TemplateRef<any>;\r\n @ViewChild('slider', {static: true}) private _slider: ElementRef;\r\n @Input() multimedia: PFile[];\r\n @Input() selectIndex: number;\r\n @Input() initialIndex: number;\r\n @Output() currentIndex: EventEmitter<number>;\r\n public count: number;\r\n public index: number;\r\n\r\n constructor(\r\n private _render: Renderer2\r\n ) {\r\n this.currentIndex = new EventEmitter<number>();\r\n this.index = this.initialIndex || 0;\r\n this.multimedia = [];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.currentIndex.emit(this.index);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectIndex'] && (changes['selectIndex'].currentValue !== undefined && changes['selectIndex'].currentValue !== null)) {\r\n this.moveImageByIndex(changes['selectIndex'].currentValue);\r\n }\r\n if (changes['multimedia'] && changes['multimedia'].currentValue) {\r\n this.multimedia = changes['multimedia'].currentValue || [];\r\n if (this.multimedia.length > 0) {\r\n this.count = this.multimedia.length;\r\n this.moveImageByIndex(this.initialIndex || 0);\r\n this.validateHTTPS();\r\n }\r\n }\r\n }\r\n\r\n moveImage(next?: boolean): void {\r\n this.index = next ? this.index + 1 : this.index - 1;\r\n if (this.index === this.multimedia.length) {\r\n this.index = 0;\r\n }\r\n this.currentIndex.emit(this.index);\r\n this._render.setStyle(this._slider.nativeElement, 'margin-left', `-${this.index * 100}%`);\r\n }\r\n\r\n moveImageByIndex(index: number): void {\r\n this.index = index;\r\n if (this.index === this.multimedia.length) {\r\n this.index = 0;\r\n }\r\n this.currentIndex.emit(this.index);\r\n this._render.setStyle(this._slider.nativeElement, 'margin-left', `-${this.index * 100}%`);\r\n }\r\n\r\n private validateHTTPS(): void {\r\n this.multimedia.forEach(item => {\r\n if (item.fileCS.thumbnail.indexOf('https') === -1) {\r\n item.fileCS.thumbnail = item.fileCS.thumbnail.replace('http', 'https');\r\n }\r\n });\r\n }\r\n}\r\n","import {NativeDateAdapter} from '@angular/material/core';\r\n\r\nexport class CustomDateAdapter extends NativeDateAdapter {\r\n format(date: Date, displayFormat: Object): string {\r\n return date.getFullYear().toString();\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, Inject, OnDestroy} from '@angular/core';\r\nimport {MatCalendar} from '@angular/material/datepicker';\r\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {Subject} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-property-custom-datepicker-header',\r\n templateUrl: './custom-datepicker-header.component.html',\r\n styleUrls: ['./custom-datepicker-header.component.scss']\r\n})\r\nexport class CustomDatepickerHeaderComponent<D> implements OnDestroy {\r\n\r\n private _destroyed = new Subject<void>();\r\n\r\n constructor(\r\n private _calendar: MatCalendar<D>, private _dateAdapter: DateAdapter<D>,\r\n @Inject(MAT_DATE_FORMATS) private _dateFormats: MatDateFormats, cdr: ChangeDetectorRef) {\r\n _calendar.stateChanges\r\n .pipe(takeUntil(this._destroyed))\r\n .subscribe(() => cdr.markForCheck());\r\n }\r\n\r\n ngOnDestroy() {\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n }\r\n\r\n get periodLabel(): string {\r\n const currentDate = this._dateAdapter\r\n .format(this._calendar.activeDate, 'YYYY');\r\n return `${Number(currentDate) - 23} - ${currentDate}`;\r\n }\r\n\r\n previousClicked() {\r\n this._calendar.activeDate = this._dateAdapter.addCalendarYears(this._calendar.activeDate, -23);\r\n }\r\n\r\n nextClicked() {\r\n this._calendar.activeDate = this._dateAdapter.addCalendarYears(this._calendar.activeDate, 23);\r\n }\r\n\r\n}\r\n","import {AfterViewInit, Component, forwardRef, Injector} from '@angular/core';\r\nimport {MatDatepicker} from '@angular/material/datepicker';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl} from '@angular/forms';\r\nimport {DateAdapter, MAT_DATE_FORMATS} from '@angular/material/core';\r\nimport {CustomDateAdapter} from '../date-adapter';\r\nimport {CustomDatepickerHeaderComponent} from '../custom-datepicker-header/custom-datepicker-header.component';\r\n\r\nconst MY_DATE_FORMATS = {\r\n parse: {\r\n dateInput: 'LL'\r\n },\r\n display: {\r\n dateInput: 'YYYY',\r\n monthYearLabel: 'YYYY',\r\n dateA11yLabel: 'YYYY',\r\n monthYearA11yLabel: 'YYYY'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'lib-property-custom-datepicker',\r\n templateUrl: './custom-datepicker.component.html',\r\n styleUrls: ['./custom-datepicker.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CustomDatepickerComponent),\r\n multi: true\r\n },\r\n {\r\n provide: MAT_DATE_FORMATS,\r\n useValue: MY_DATE_FORMATS\r\n },\r\n {\r\n provide: DateAdapter,\r\n useClass: CustomDateAdapter\r\n }\r\n ]\r\n})\r\nexport class CustomDatepickerComponent implements ControlValueAccessor, AfterViewInit {\r\n\r\n public currentYear: Date;\r\n public year: string;\r\n public customHeader = CustomDatepickerHeaderComponent;\r\n private _control: NgControl;\r\n\r\n constructor(\r\n private _injector: Injector\r\n ) {\r\n this.currentYear = new Date();\r\n this.year = '';\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._control = this._injector.get(NgControl);\r\n this._control.valueAccessor = this;\r\n }\r\n\r\n onYearSelected(ev: any, datepicker: MatDatepicker<Date>) {\r\n datepicker.close();\r\n this.year = ev;\r\n this._control.control.patchValue(ev);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (value !== undefined) {\r\n this.year = value;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CustomDatepickerComponent } from './custom-datepicker/custom-datepicker.component';\r\nimport {CustomDatepickerHeaderComponent} from './custom-datepicker-header/custom-datepicker-header.component';\r\nimport {MatDatepickerModule} from '@angular/material/datepicker';\r\nimport {MatFormFieldModule} from '@angular/material/form-field';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatButtonModule} from '@angular/material/button';\r\n\r\nconst MATERIAL = [\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatDatepickerModule,\r\n MatButtonModule,\r\n MatIconModule\r\n];\r\n\r\nconst COMPONENTS = [\r\n CustomDatepickerComponent,\r\n CustomDatepickerHeaderComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MATERIAL\r\n ],\r\n declarations: [\r\n COMPONENTS\r\n ],\r\n entryComponents: [\r\n CustomDatepickerHeaderComponent\r\n ],\r\n exports: [\r\n CustomDatepickerComponent\r\n ]\r\n})\r\nexport class CustomDatepickerModule { }\r\n","import {AfterViewInit, Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild} from '@angular/core';\r\nimport {CdkDrag, CdkDragMove, CdkDropList, CdkDropListGroup, moveItemInArray} from '@angular/cdk/drag-drop';\r\nimport {ViewportRuler} from '@angular/cdk/overlay';\r\n\r\n@Component({\r\n selector: 'lib-custom-drag-and-drop',\r\n templateUrl: './custom-drag-and-drop.component.html',\r\n styleUrls: ['./custom-drag-and-drop.component.scss']\r\n})\r\nexport class CustomDragAndDropComponent implements OnInit, AfterViewInit {\r\n @ViewChild(CdkDropListGroup, {static: true}) listGroup: CdkDropListGroup<CdkDropList>;\r\n @ViewChild(CdkDropList, {static: true}) placeholder: CdkDropList;\r\n @ContentChild(TemplateRef, {static: true})\r\n @Input() content: TemplateRef<any>;\r\n @Input() items: any[];\r\n @Output() itemsChanged: EventEmitter<any[]>;\r\n public target: CdkDropList;\r\n public targetIndex: number;\r\n public source: CdkDropList;\r\n public sourceIndex: number;\r\n public activeContainer;\r\n public dropListEnterPredicate: Function;\r\n\r\n constructor(private _viewportRuler: ViewportRuler) {\r\n this.itemsChanged = new EventEmitter<any[]>();\r\n this.target = null;\r\n this.source = null;\r\n this.dropListEnterPredicate = (drag: CdkDrag, drop: CdkDropList) => {\r\n if (drop === this.placeholder) {\r\n return true;\r\n }\r\n if (drop !== this.activeContainer) {\r\n return false;\r\n }\r\n const phElement = this.placeholder.element.nativeElement;\r\n const sourceElement = drag.dropContainer.element.nativeElement;\r\n const dropElement = drop.element.nativeElement;\r\n const dragIndex = __indexOf(dropElement.parentElement.children, (this.source ? phElement : sourceElement));\r\n const dropIndex = __indexOf(dropElement.parentElement.children, dropElement);\r\n if (!this.source) {\r\n this.sourceIndex = dragIndex;\r\n this.source = drag.dropContainer;\r\n phElement.style.width = sourceElement.clientWidth + 'px';\r\n phElement.style.height = sourceElement.clientHeight + 'px';\r\n sourceElement.parentElement.removeChild(sourceElement);\r\n }\r\n this.targetIndex = dropIndex;\r\n this.target = drop;\r\n phElement.style.display = '';\r\n dropElement.parentElement.insertBefore(phElement, (dropIndex > dragIndex\r\n ? dropElement.nextSibling : dropElement));\r\n this.placeholder.enter(drag, drag.element.nativeElement.offsetLeft, drag.element.nativeElement.offsetTop);\r\n return false;\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const phElement = this.placeholder.element.nativeElement;\r\n phElement.style.display = 'none';\r\n phElement.parentElement.removeChild(phElement);\r\n }\r\n\r\n dragMoved(e: CdkDragMove) {\r\n const point = this.getPointerPositionOnPage(e.event);\r\n this.listGroup._items.forEach(dropList => {\r\n if (__isInsideDropListClientRect(dropList, point.x, point.y)) {\r\n this.activeContainer = dropList;\r\n return;\r\n }\r\n });\r\n }\r\n\r\n dropListDropped(): void {\r\n if (!this.target) {\r\n return;\r\n }\r\n const phElement = this.placeholder.element.nativeElement;\r\n const parent = phElement.parentElement;\r\n phElement.style.display = 'none';\r\n parent.removeChild(phElement);\r\n parent.appendChild(phElement);\r\n parent.insertBefore(this.source.element.nativeElement, parent.children[this.sourceIndex]);\r\n this.target = null;\r\n this.source = null;\r\n if (this.sourceIndex !== this.targetIndex) {\r\n moveItemInArray(this.items, this.sourceIndex, this.targetIndex);\r\n this.itemsChanged.emit(this.items);\r\n }\r\n }\r\n\r\n /** Determines the point of the page that was touched by the user. */\r\n getPointerPositionOnPage(event: MouseEvent | TouchEvent): any {\r\n // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\r\n const point = __isTouchEvent(event) ? (event.touches[0] || event.changedTouches[0]) : event;\r\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\r\n return {\r\n x: point.pageX - scrollPosition.left,\r\n y: point.pageY - scrollPosition.top\r\n };\r\n }\r\n}\r\n\r\nfunction __indexOf(collection, node) {\r\n return Array.prototype.indexOf.call(collection, node);\r\n}\r\n\r\n/** Determines whether an event is a touch event. */\r\nfunction __isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\r\n return event.type.startsWith('touch');\r\n}\r\n\r\nfunction __isInsideDropListClientRect(dropList: CdkDropList, x: number, y: number) {\r\n const {top, bottom, left, right} = dropList.element.nativeElement.getBoundingClientRect();\r\n return y >= top && y <= bottom && x >= left && x <= right;\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule, CurrencyPipe} from '@angular/common';\r\nimport {EditorComponent} from './components/editor/editor.component';\r\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\r\nimport {OwnerInfoComponent} from './components/owner-info/owner-info.component';\r\nimport {DocumentsComponent} from './components/documents/documents.component';\r\nimport {\r\n CountryCodeModule,\r\n DialogModule,\r\n LocationModule,\r\n SafeUrlModule, ShareModule,\r\n StringManipulationModule,\r\n UploadFileModule\r\n} from '@maplander/shared';\r\nimport {SnackBarModule} from '@maplander/core';\r\nimport {PropertyComponent} from './components/property/property.component';\r\nimport {DetailsComponent} from './components/details/details.component';\r\nimport {SlideShowComponent} from './components/slideshow/slide-show.component';\r\nimport {MultimediaUploaderComponent} from './components/multimedia-uploader/multimedia-uploader.component';\r\nimport {AnnounceConfirmComponent} from './components/announce-confirm/announce-confirm.component';\r\nimport {MultimediaUploaderService} from './components/multimedia-uploader/multimedia-uploader.service';\r\nimport {AnnounceConfirmService} from './components/announce-confirm/announce-confirm.service';\r\nimport {CustomDatepickerModule} from './components/editor/components/custom-datepicker/custom-datepicker.module';\r\nimport {DocumentVisorModule} from '../document-visor/document-visor.module';\r\nimport {PanoramaVisorModule} from '../panorama-visor/panorama-visor.module';\r\nimport {FormatDateModule} from '../../pipes/format-date/format-date.module';\r\nimport {OfferingTypeModule} from '../../pipes/offering-type/offering-type.module';\r\nimport {PropertyTypeModule} from '../../pipes/property-type/property-type.module';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\r\nimport {MatCheckboxModule} from '@angular/material/checkbox';\r\nimport {MatDatepickerModule} from '@angular/material/datepicker';\r\nimport {MatFormFieldModule} from '@angular/material/form-field';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {MatInputModule} from '@angular/material/input';\r\nimport {MatRadioModule} from '@angular/material/radio';\r\nimport {MatSelectModule} from '@angular/material/select';\r\nimport {MatSidenavModule} from '@angular/material/sidenav';\r\nimport {MatTabsModule} from '@angular/material/tabs';\r\nimport {MatToolbarModule} from '@angular/material/toolbar';\r\nimport {MatNativeDateModule, MatRippleModule} from '@angular/material/core';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport {EcoFabSpeedDialModule} from '@ecodev/fab-speed-dial';\r\nimport {FormatPriceModule} from '../../directives/format-price/format-price.module';\r\nimport {DragDropModule} from '@angular/cdk/drag-drop';\r\nimport { CustomDragAndDropComponent } from './components/custom-drag-and-drop/custom-drag-and-drop.component';\r\nimport {GalleryComponent} from './components/gallery/gallery.component';\r\nimport {GalleryService} from './components/gallery/gallery.service';\r\nimport {PROPERTY_TOKEN} from './token';\r\nimport { StatsComponent } from './components/stats/stats.component';\r\nimport {StatsService} from './components/stats/stats.service';\r\n\r\n\r\nconst MATERIAL = [\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatIconModule,\r\n MatButtonToggleModule,\r\n MatRadioModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatToolbarModule,\r\n MatTabsModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatRippleModule,\r\n MatNativeDateModule,\r\n DragDropModule\r\n];\r\n\r\nconst PAGES = [\r\n PropertyComponent\r\n];\r\n\r\nconst COMPONENTS = [\r\n DetailsComponent,\r\n EditorComponent,\r\n OwnerInfoComponent,\r\n SlideShowComponent,\r\n DocumentsComponent,\r\n MultimediaUploaderComponent,\r\n AnnounceConfirmComponent,\r\n CustomDragAndDropComponent,\r\n GalleryComponent,\r\n StatsComponent\r\n];\r\n\r\nconst ENTRY_COMPONENTS = [\r\n MultimediaUploaderComponent,\r\n AnnounceConfirmComponent,\r\n GalleryComponent,\r\n StatsComponent\r\n];\r\n\r\nconst PROVIDERS = [\r\n MultimediaUploaderService,\r\n AnnounceConfirmService,\r\n CurrencyPipe,\r\n GalleryService,\r\n StatsService\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MATERIAL,\r\n EcoFabSpeedDialModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n UploadFileModule,\r\n DocumentVisorModule.forChild(),\r\n OfferingTypeModule.forChild(),\r\n PropertyTypeModule.forChild(),\r\n SafeUrlModule.forChild(),\r\n StringManipulationModule.forChild(),\r\n FormatDateModule.forChild(),\r\n FormatPriceModule.forChild(),\r\n ShareModule.forChild(),\r\n PanoramaVisorModule,\r\n CountryCodeModule,\r\n LocationModule,\r\n DialogModule,\r\n CustomDatepickerModule,\r\n SnackBarModule.forRoot()\r\n ],\r\n declarations: [\r\n PAGES,\r\n COMPONENTS\r\n ],\r\n entryComponents: [\r\n ENTRY_COMPONENTS\r\n ],\r\n exports: [\r\n PropertyComponent\r\n ],\r\n providers: [\r\n PROVIDERS\r\n ]\r\n})\r\nexport class PropertyModule {\r\n static forChild(isOPI?: boolean): ModuleWithProviders {\r\n return {\r\n ngModule: PropertyModule,\r\n providers: [\r\n {\r\n provide: PROPERTY_TOKEN,\r\n useValue: isOPI || false\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import {InjectionToken} from '@angular/core';\r\n\r\nexport const PROPERTY_CARD_CONFIG_MODULE = new InjectionToken<boolean>('PROPERTY CARD CONFIG MODULE');\r\n","import {Component, EventEmitter, Inject, Input, OnChanges, Optional, Output, SimpleChanges, OnInit} from '@angular/core';\r\nimport {PROPERTY_CARD_CONFIG_MODULE} from './token';\r\nimport {Marker} from '../../utils/models/marker';\r\nimport {PropertyCardInfo} from '../../utils/models/property-card-info';\r\n\r\n@Component({\r\n selector: 'lib-property-card',\r\n templateUrl: './property-card.component.html',\r\n styleUrls: ['./property-card.component.scss']\r\n})\r\nexport class PropertyCardComponent implements OnChanges, OnInit {\r\n @Input() marker: Marker;\r\n @Input() href: string;\r\n @Input() target: string;\r\n @Input() queryParams: {\r\n [k: string]: any;\r\n };\r\n @Input() state: {\r\n [k: string]: any;\r\n };\r\n @Input() showAlert: boolean;\r\n @Input() positionLatLng: any;\r\n @Input() isFavorite: boolean;\r\n @Input() currency: string;\r\n @Input() showDiscard: boolean;\r\n @Input() mode: 'full' | 'summary' = 'full';\r\n @Output() markerChanged: EventEmitter<Marker>;\r\n @Output() favoriteChanged: EventEmitter<string>;\r\n @Output() propertyDiscarded: EventEmitter<string>;\r\n public info: PropertyCardInfo;\r\n public distance: any;\r\n\r\n constructor(\r\n @Optional() @Inject(PROPERTY_CARD_CONFIG_MODULE) public isOPI: boolean,\r\n ) {\r\n this.currency = null;\r\n this.markerChanged = new EventEmitter<Marker>();\r\n this.favoriteChanged = new EventEmitter<string>();\r\n this.propertyDiscarded = new EventEmitter<string>();\r\n }\r\n\r\n ngOnInit() {\r\n if (this.positionLatLng) {\r\n this.latLng(this.positionLatLng.latitude, this.positionLatLng.longitude);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['currency'] && changes['currency'].currentValue) {\r\n this.currency = changes['currency'].currentValue !== 'MXN' ? changes['currency'].currentValue : null;\r\n }\r\n if (changes['marker'] && changes['marker'].currentValue) {\r\n this.info = changes['marker'].currentValue.info;\r\n }\r\n }\r\n\r\n onFrontImageOver(): void {\r\n this.marker.hover = true;\r\n this.markerChanged.emit(this.marker);\r\n }\r\n\r\n onFrontImageLeave(): void {\r\n this.marker.hover = false;\r\n this.markerChanged.emit(this.marker);\r\n }\r\n\r\n favorite(): void {\r\n this.favoriteChanged.emit(this.info.propertyId);\r\n }\r\n\r\n discard(): void {\r\n this.propertyDiscarded.emit(this.info.propertyId);\r\n }\r\n\r\n private deg2rad(deg): any {\r\n return deg * (Math.PI / 180 );\r\n }\r\n\r\n private latLng(lat: any, lng: any): void {\r\n const lat1 = lat;\r\n const lon1 = lng;\r\n const lat2 = this.marker.location.latitude;\r\n const lon2 = this.marker.location.longitude;\r\n const R = 6371; // Radius of the earth in km\r\n const dLat = this.deg2rad(lat2 - lat1 ); // deg2rad below\r\n const dLon = this.deg2rad(lon2 - lon1 );\r\n const a =\r\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos(this.deg2rad(lat1)) * Math.cos(this.deg2rad(lat2)) *\r\n Math.sin(dLon / 2) * Math.sin(dLon / 2)\r\n ;\r\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n let d = R * c; // Distance in km\r\n if (Math.trunc(d) < 1) {\r\n d = d * 1000;\r\n d = Math.trunc(d);\r\n if (d < 10) {\r\n this.distance = 10 + ' m de su búsqueda';\r\n } else {\r\n d = d - (d % 10);\r\n this.distance = d + ' m de su búsqueda';\r\n }\r\n } else {\r\n this.distance = d.toFixed(2) + ' km de su búsqueda';\r\n }\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {PropertyCardComponent} from './property-card.component';\r\nimport {RouterModule} from '@angular/router';\r\nimport {OfferingTypeModule} from './../../pipes/offering-type/offering-type.module';\r\nimport {PropertyTypeModule} from './../../pipes/property-type/property-type.module';\r\nimport {ImageErrorModule} from './../../directives/image-error/image-error.module';\r\nimport {FormatDateModule} from '../../pipes/format-date/format-date.module';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport {PROPERTY_CARD_CONFIG_MODULE} from './token';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n PropertyTypeModule,\r\n OfferingTypeModule,\r\n ImageErrorModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n FormatDateModule\r\n ],\r\n declarations: [\r\n PropertyCardComponent\r\n ],\r\n exports: [\r\n PropertyCardComponent\r\n ]\r\n})\r\nexport class PropertyCardModule {\r\n static forChild(isOPI?: boolean): ModuleWithProviders {\r\n return {\r\n ngModule: PropertyCardModule,\r\n providers: [\r\n {\r\n provide: PROPERTY_CARD_CONFIG_MODULE,\r\n useValue: isOPI\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {\r\n Address,\r\n CER,\r\n Currency,\r\n GeoPt,\r\n NewPropertyLite,\r\n NewPropertyLiteSuggest,\r\n OfferingTypeEnum,\r\n PropertyTypeEnum\r\n} from '@maplander/types';\r\nimport {ConstantsComponents} from '../../constantsComponents';\r\nimport {Marker} from '../../utils/models/marker';\r\nimport {PropertyCardInfo} from '../../utils/models/property-card-info';\r\nimport {PropertyTypeItem} from '../../utils/models/property-type-item';\r\nimport {OfferingTypePipe} from '../../pipes/offering-type/offering-type.pipe';\r\nimport {PropertyTypePipe} from '../../pipes/property-type/property-type.pipe';\r\nimport {Utils} from '../../utils';\r\nimport {CurrencyConverterService} from '../currency-converter/currency-converter.service';\r\n\r\ndeclare var google: any;\r\n\r\n@Injectable()\r\nexport class MarkersService {\r\n\r\n constructor(\r\n private _propertyTypePipe: PropertyTypePipe,\r\n private _offeringTypePipe: OfferingTypePipe,\r\n private _converter: CurrencyConverterService\r\n ) {\r\n }\r\n\r\n private static getPropertyTypeItemByType(type: PropertyTypeEnum): PropertyTypeItem {\r\n let item: PropertyTypeItem = null;\r\n ConstantsComponents.PropertyTypeList.forEach((element) => {\r\n if (element.value === type) {\r\n item = element;\r\n }\r\n });\r\n return item;\r\n }\r\n\r\n private static validatePropertyInFavorites(propertyId: string, favorites: NewPropertyLite[]): boolean {\r\n let result = false;\r\n for (let i = 0; i < favorites.length; i++) {\r\n if (propertyId === favorites[i].id) {\r\n result = true;\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private static calculateLocationFrom(location: GeoPt, bearingInRadians: number, distanceInMetres: number): GeoPt {\r\n const coordinateLatitudeInRadians = location.latitude * Math.PI / 180;\r\n const coordinateLongitudeInRadians = location.longitude * Math.PI / 180;\r\n const distanceComparedToEarth = distanceInMetres / 6378100.0;\r\n const resultLatitudeInRadians = Math.asin(Math.sin(coordinateLatitudeInRadians) * Math.cos(distanceComparedToEarth) +\r\n Math.cos(coordinateLatitudeInRadians) * Math.sin(distanceComparedToEarth) * Math.cos(bearingInRadians));\r\n const resultLongitudeInRadians = coordinateLongitudeInRadians + Math.atan2(Math.sin(bearingInRadians) *\r\n Math.sin(distanceComparedToEarth) * Math.cos(coordinateLatitudeInRadians), Math.cos(distanceComparedToEarth) -\r\n Math.sin(coordinateLatitudeInRadians) * Math.sin(resultLatitudeInRadians));\r\n const newCoordinates: any = {};\r\n newCoordinates.latitude = resultLatitudeInRadians * 180 / Math.PI;\r\n newCoordinates.longitude = resultLongitudeInRadians * 180 / Math.PI;\r\n return newCoordinates;\r\n }\r\n\r\n buildURL(config: {\r\n propertyId: string,\r\n offering: OfferingTypeEnum,\r\n propertyType: PropertyTypeEnum,\r\n address: Address\r\n }): string {\r\n let url = 'property/';\r\n url += `${this._propertyTypePipe.transform(config.propertyType, true)}-`;\r\n url += `${this._offeringTypePipe.transform(config.offering, ' ').replace(/ /g, '')}-`;\r\n url += config.address.colony ? `${config.address.colony}-` : '';\r\n url += config.address.city ? `${config.address.city}-` : '';\r\n url += config.propertyId;\r\n url = Utils.removeDiacritics(url).replace(/ /g, '-').toLowerCase();\r\n return url;\r\n }\r\n\r\n validatePropertiesInPoly(properties: Marker[], paths: any[]): Marker[] {\r\n const polygon = new google.maps.Polygon({paths: paths});\r\n if (properties && properties.length > 0) {\r\n properties.map((el: Marker) => {\r\n el.extras['showInPolygon'] = false;\r\n const customLatLng = new google.maps.LatLng(el.location.latitude, el.location.longitude);\r\n if (google.maps.geometry.poly.containsLocation(customLatLng, polygon)) {\r\n el.extras['showInPolygon'] = true;\r\n return el;\r\n } else {\r\n el.extras['showInPolygon'] = false;\r\n return el;\r\n }\r\n });\r\n properties = properties.filter((e) => {\r\n if (e.extras['showInPolygon']) {\r\n return e;\r\n }\r\n });\r\n return properties;\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n markersToCurrency(markers: Marker[], toCurrency: Currency, currencies: CER[]): Marker[] {\r\n markers = markers.map<Marker>(item => {\r\n if (Currency[item.info.currency] !== toCurrency) {\r\n item.info.price = this._converter.number(item.info.price, currencies, Currency[item.info.currency], toCurrency);\r\n item.info.currency = toCurrency.toString();\r\n }\r\n return item;\r\n });\r\n return markers;\r\n }\r\n\r\n buildMarkers(entities: NewPropertyLite[] | NewPropertyLiteSuggest[], favorites?: NewPropertyLite[]): Marker[] {\r\n const markers: Marker[] = [];\r\n entities.forEach((entity) => {\r\n const m: Marker = {\r\n location: entity.address.location,\r\n hover: false,\r\n visited: false,\r\n type: MarkersService.getPropertyTypeItemByType(entity.type),\r\n info: this.createPropertyInfoCard(entity),\r\n isFavorite: false,\r\n extras: {}\r\n };\r\n if (entity instanceof NewPropertyLite) {\r\n m.isFavorite = favorites && favorites.length > 0 ? MarkersService.validatePropertyInFavorites(entity.id, favorites) : false;\r\n } else {\r\n m.isFavorite = favorites && favorites.length > 0 ? MarkersService.validatePropertyInFavorites(entity.propertyId, favorites) : false;\r\n }\r\n markers.push(m);\r\n });\r\n return markers;\r\n }\r\n\r\n buildSpider(list: Marker[]): { markers: Marker[], polyLines: any[] } {\r\n const response = {markers: [], polyLines: []};\r\n list.map((el) => {\r\n el.extras['repeat'] = false;\r\n const size = list.filter(item => {\r\n return el.location.latitude === item.location.latitude && el.location.longitude === item.location.longitude;\r\n });\r\n const distance = 12 * size.length / 2.0;\r\n const radiansBetweenAnnotations = (Math.PI * 2) / size.length;\r\n if (!el.extras['repeat'] && size.length > 1) {\r\n const locationShare: any = Object.assign({}, el.location);\r\n for (let i = 0; i < size.length; i++) {\r\n const heading = radiansBetweenAnnotations * i;\r\n size[i]['repeat'] = true;\r\n const newLocation = MarkersService.calculateLocationFrom(locationShare, heading, distance);\r\n response.polyLines.push({\r\n path: [\r\n {\r\n latitude: Number(locationShare.latitude),\r\n longitude: Number(locationShare.longitude)\r\n },\r\n {\r\n latitude: Number(newLocation.latitude),\r\n longitude: Number(newLocation.longitude)\r\n }]\r\n });\r\n size[i].location = newLocation;\r\n }\r\n }\r\n return el;\r\n });\r\n response.markers = list;\r\n return response;\r\n }\r\n\r\n buildNewSpider(list: Array<{ id: string, location: GeoPt, price: number,\r\n currency: string, url: string, type: PropertyTypeEnum }>): { markers: any[], polyLines: any[] } {\r\n const response = {markers: [], polyLines: []};\r\n const newList = [];\r\n for (const listElement of list) {\r\n newList.push({\r\n id: listElement.id,\r\n location: listElement.location,\r\n price: listElement.price,\r\n currency: listElement.currency,\r\n url: listElement.url,\r\n type: listElement.type,\r\n extras: {}\r\n });\r\n }\r\n newList.map((el) => {\r\n el.extras['repeat'] = false;\r\n const size = newList.filter(item => {\r\n return el.location.latitude === item.location.latitude && el.location.longitude === item.location.longitude;\r\n });\r\n const distance = 30 * size.length / 2.0;\r\n const radiansBetweenAnnotations = (Math.PI * 2) / size.length;\r\n if (!el.extras['repeat'] && size.length > 1) {\r\n const locationShare: any = Object.assign({}, el.location);\r\n for (let i = 0; i < size.length; i++) {\r\n const heading = radiansBetweenAnnotations * i;\r\n size[i]['repeat'] = true;\r\n const newLocation = MarkersService.calculateLocationFrom(locationShare, heading, distance);\r\n response.polyLines.push({\r\n path: [\r\n {\r\n latitude: Number(locationShare.latitude),\r\n longitude: Number(locationShare.longitude)\r\n },\r\n {\r\n latitude: Number(newLocation.latitude),\r\n longitude: Number(newLocation.longitude)\r\n }]\r\n });\r\n size[i].location = newLocation;\r\n }\r\n }\r\n return el;\r\n });\r\n response.markers = newList;\r\n return response;\r\n }\r\n\r\n private createPropertyInfoCard(entity: NewPropertyLite | NewPropertyLiteSuggest): PropertyCardInfo {\r\n return {\r\n address: new Address(entity.address || null),\r\n authUsers: (entity instanceof NewPropertyLite) ? entity.authUsers : '',\r\n currency: entity.currency,\r\n propertyId: (entity instanceof NewPropertyLite) ? entity.id : entity.propertyId,\r\n image: entity.image,\r\n offering: entity.offering,\r\n price: entity.price,\r\n type: entity.type,\r\n url: this.buildURL({\r\n address: entity.address,\r\n offering: entity.offering,\r\n propertyType: entity.type,\r\n propertyId: (entity instanceof NewPropertyLite) ? entity.id : entity.propertyId\r\n }),\r\n status: (entity instanceof NewPropertyLite) ? entity.status : null,\r\n features: (entity instanceof NewPropertyLite) ? entity.features : null,\r\n };\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {MarkersService} from './markers.service';\r\nimport {CurrencyConverterModule} from '../currency-converter/currency-converter.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CurrencyConverterModule.forChild()\r\n ]\r\n})\r\nexport class MarkersModule {\r\n static forChild(): ModuleWithProviders {\r\n return {\r\n ngModule: MarkersModule,\r\n providers: [\r\n MarkersService\r\n ]\r\n };\r\n }\r\n}\r\n"],"names":["MatButtonModule","MatIconModule","MAT_DIALOG_DATA","MatDialogRef","MatDialog","MATERIAL","MatInputModule","COMPONENTS"],"mappings":"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"}