{"version":3,"sources":["webpack:///./src/views/PropertiesSold.vue?553f","webpack:///./src/views/PropertiesSold.vue","webpack:///./src/views/PropertiesSold.vue?e4b5","webpack:///./src/views/PropertiesSold.vue?2b15","webpack:///./node_modules/client-website-ts-library/plugins/view/index.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","_v","listingFilter","_e","staticRenderFns","Statuses","Sold","Categories","ResidentialSale","ResidentialLand","Rural","PageSize","OrderByStatements","SoldDateDesc","updateFilter","propertyCategories","propertyTypes","hasLand","$route","query","ListingCategory","split","map","v","parseInt","includes","filter","PropertyCategories","PropertyTypes","MethodsOfSale","Sale","Both","Auction","Tender","EOI","ForSale","Offers","CreateDateDesc","length","some","s","keywordOptions","keywordOpts","opt","Type","Value","Suburbs","categories","searchVal","find","SearchTerm","areaMin","MinLandArea","areaMax","MaxLandArea","priceMin","MinPrice","priceMax","MaxPrice","suburbs","isVacantPosession","IsVacant","isTenanted","IsTenanted","isStandalone","IsWholeBuilding","isStrata","components","Listings","component","prolistAnalyticsService","ServiceManager","Get","Analytics","headService","Require","Head","evt","obj","getAnalyticsEvent","call","getAnalyticsData","path","name","undefined","triggerAnalyticsEvent","event","GetAll","forEach","adapter","Record","result","head","bind","Promise","then","meta","Update","UpdateWithStatic","requestAnimationFrame","updateHead","updateAnalytics","$on"],"mappings":"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","file":"js/chunk-f41d8a90.10bd1bab.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Page',[_c('SiteMasthead',{attrs:{\"title\":\"Sold\"}}),_c('ContentRow',{staticClass:\"offset-top\"},[_c('ContentContainer',[_c('SectionTitle',[_vm._v(\"Properties sold in Cairns\")]),(_vm.listingFilter)?_c('Listings',{attrs:{\"filter\":_vm.listingFilter,\"fullWidth\":false}}):_vm._e()],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Watch } from 'vue-property-decorator';\r\nimport {\r\n ListingFilter,\r\n ListingOrderBy,\r\n} from 'client-website-ts-library/filters';\r\nimport {\r\n ListingStatus,\r\n ListingCategory,\r\n MethodOfSale,\r\n PropertyCategory,\r\n PropertyType,\r\n} from 'client-website-ts-library/types';\r\nimport { View } from 'client-website-ts-library/plugins';\r\n\r\nimport Listings from '../components/Listings.vue';\r\n\r\n@Component({\r\n components: {\r\n Listings,\r\n },\r\n})\r\nexport default class PropertiesSold extends Mixins(View) {\r\n public listingFilter: ListingFilter = new ListingFilter({\r\n Statuses: [ListingStatus.Sold],\r\n Categories: [\r\n ListingCategory.ResidentialSale,\r\n ListingCategory.ResidentialLand,\r\n ListingCategory.Rural,\r\n ],\r\n PageSize: 9,\r\n OrderByStatements: [ListingOrderBy.SoldDateDesc],\r\n });\r\n\r\n mounted() {\r\n this.updateFilter();\r\n }\r\n\r\n @Watch('$route.query')\r\n updateFilter() {\r\n let propertyCategories: PropertyCategory[] = [];\r\n let propertyTypes: PropertyType[] = [];\r\n let hasLand = false;\r\n\r\n if (this.$route.query.ListingCategory) {\r\n propertyCategories = (this.$route.query.ListingCategory! as string)\r\n .split(',')\r\n // eslint-disable-next-line radix\r\n .map((v) => parseInt(v) as PropertyCategory);\r\n }\r\n\r\n if (this.$route.query.propertyTypes) {\r\n propertyTypes = (this.$route.query.propertyTypes! as string)\r\n .split('|')\r\n // eslint-disable-next-line radix\r\n .map((v) => parseInt(v) as PropertyType);\r\n hasLand = this.$route.query.propertyTypes!.includes('Land');\r\n }\r\n\r\n const filter = new ListingFilter({\r\n PropertyCategories: propertyCategories,\r\n PropertyTypes: propertyTypes,\r\n Statuses: [ListingStatus.Sold],\r\n MethodsOfSale: [\r\n MethodOfSale.Sale,\r\n MethodOfSale.Both,\r\n MethodOfSale.Auction,\r\n MethodOfSale.Tender,\r\n MethodOfSale.EOI,\r\n MethodOfSale.ForSale,\r\n MethodOfSale.Offers,\r\n ],\r\n PageSize: 9,\r\n OrderByStatements: [ListingOrderBy.CreateDateDesc],\r\n });\r\n\r\n if (filter.PropertyTypes && filter.PropertyTypes.length === 1 && hasLand) {\r\n filter.Categories = [ListingCategory.ResidentialLand];\r\n } else if (\r\n filter.PropertyTypes &&\r\n filter.PropertyTypes.length > 1 &&\r\n hasLand\r\n ) {\r\n filter.Categories = [\r\n ListingCategory.ResidentialSale,\r\n ListingCategory.ResidentialLand,\r\n ListingCategory.Rural,\r\n ];\r\n } else if (filter.PropertyTypes?.some((s) => s === 0)) {\r\n filter.Categories = [\r\n ListingCategory.ResidentialSale,\r\n ListingCategory.Rural,\r\n ];\r\n } else if (filter.PropertyTypes.length > 0) {\r\n filter.Categories = [\r\n ListingCategory.ResidentialSale,\r\n ListingCategory.Rural,\r\n ];\r\n } else {\r\n filter.Categories = [\r\n ListingCategory.ResidentialSale,\r\n ListingCategory.ResidentialLand,\r\n ListingCategory.Rural,\r\n ];\r\n }\r\n\r\n if (this.$route.query.keywordOptions) {\r\n const keywordOpts = (this.$route.query.keywordOptions as string)\r\n .split('|')\r\n .map((opt) => {\r\n const split = opt.split(':');\r\n\r\n return {\r\n Type: split[0],\r\n Value: split[1],\r\n };\r\n });\r\n\r\n filter.Suburbs = keywordOpts\r\n .filter((opt) => opt.Type === 'suburb')\r\n .map((opt) => opt.Value);\r\n\r\n const categories = keywordOpts\r\n .filter((opt) => opt.Type === 'categories')\r\n .map((opt) => parseInt(opt.Value, 10));\r\n\r\n if (categories.length > 0) {\r\n filter.PropertyCategories = categories;\r\n }\r\n\r\n const searchVal = keywordOpts.find((opt) => opt.Type === 'search');\r\n\r\n if (searchVal) {\r\n filter.SearchTerm = searchVal.Value;\r\n }\r\n }\r\n\r\n if (this.$route.query.areaMin) {\r\n filter.MinLandArea = this.$route.query.areaMin as string;\r\n }\r\n\r\n if (this.$route.query.areaMax) {\r\n filter.MaxLandArea = this.$route.query.areaMax as string;\r\n }\r\n\r\n if (this.$route.query.priceMin) {\r\n filter.MinPrice = this.$route.query.priceMin as string;\r\n }\r\n\r\n if (this.$route.query.priceMax) {\r\n filter.MaxPrice = this.$route.query.priceMax as string;\r\n }\r\n\r\n if (this.$route.query.suburbs) {\r\n filter.Suburbs = (this.$route.query.suburbs as string).split('|');\r\n }\r\n\r\n if (this.$route.query.isVacantPosession) filter.IsVacant = true;\r\n if (this.$route.query.isTenanted) filter.IsTenanted = true;\r\n if (this.$route.query.isStandalone) filter.IsWholeBuilding = true;\r\n if (this.$route.query.isStrata) filter.IsVacant = true;\r\n\r\n this.listingFilter = filter;\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertiesSold.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertiesSold.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PropertiesSold.vue?vue&type=template&id=4434281d&\"\nimport script from \"./PropertiesSold.vue?vue&type=script&lang=ts&\"\nexport * from \"./PropertiesSold.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\r\nimport { Component } from \"vue-property-decorator\";\r\nimport { AnalyticsEvent, AnalyticsEventObject, AnalyticsPageView, IAnalyticsAdapter, PROListAnalyticsAdapter } from \"../../services/Analytics\";\r\nimport { HeadService } from \"../../services/HeadService\";\r\nimport { ServiceManager, ServiceType } from \"../../services/ServiceManager\";\r\nimport { RouteMeta } from \"../meta\";\r\n\r\ninterface ViewBase {\r\n getAnalyticsEvent?(): AnalyticsEvent | null;\r\n getAnalyticsData?(): AnalyticsEventObject | null;\r\n head?(): RouteMeta | Promise | null;\r\n}\r\n\r\n@Component\r\nclass ViewBase extends Vue {\r\n protected prolistAnalyticsService = ServiceManager.Get(ServiceType.Analytics, 'PROListAnalyticsAdapter');\r\n protected headService = ServiceManager.Require(ServiceType.Head)!;\r\n\r\n public updateAnalytics() {\r\n let evt: AnalyticsEvent | null = null;\r\n let obj: AnalyticsEventObject | null = null;\r\n\r\n if (typeof this.getAnalyticsEvent !== 'undefined') {\r\n evt = this.getAnalyticsEvent.call(this);\r\n } else if(typeof this.getAnalyticsData !== 'undefined') {\r\n obj = this.getAnalyticsData.call(this);\r\n }\r\n\r\n if (evt === null) evt = new AnalyticsPageView(this.$route.path, this.$route.name || '', obj || undefined);\r\n\r\n this.triggerAnalyticsEvent(evt);\r\n }\r\n\r\n public triggerAnalyticsEvent(event: AnalyticsEvent) {\r\n ServiceManager.GetAll(ServiceType.Analytics).forEach((adapter) => {\r\n adapter.Record(event);\r\n });\r\n }\r\n\r\n public triggerCustomAnalyticsEvent(event: AnalyticsEvent) {\r\n if (this.prolistAnalyticsService !== null) this.prolistAnalyticsService.Record(event);\r\n }\r\n\r\n protected updateHead() {\r\n if ('head' in this) {\r\n const result = this.head!.bind(this)();\r\n\r\n if(result instanceof Promise) {\r\n result.then((meta: RouteMeta | null) => {\r\n this.headService.Update(meta);\r\n });\r\n } else {\r\n this.headService.Update(result as RouteMeta | null);\r\n }\r\n } else {\r\n this.headService.UpdateWithStatic(this.$route.path);\r\n }\r\n }\r\n}\r\n\r\n@Component\r\nclass View extends ViewBase {\r\n public mounted() {\r\n requestAnimationFrame(() => {\r\n this.updateHead();\r\n this.updateAnalytics();\r\n });\r\n }\r\n}\r\n\r\n@Component\r\nclass AsyncView extends ViewBase {\r\n public mounted() {\r\n this.$on('updateView', () => {\r\n requestAnimationFrame(() => {\r\n this.updateHead();\r\n this.updateAnalytics();\r\n });\r\n });\r\n }\r\n}\r\n\r\nexport {\r\n View,\r\n AsyncView\r\n}\r\n"],"sourceRoot":""}