123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <template>
- <div>
- <div class="form-group row" v-if="showSort">
- <button
- type="button"
- class="btn btn-link font-weight-bold color-b"
- style="width: 150px; height:40px;"
- @click="sortNewest()"
- >Newest</button>
- <button
- type="button"
- class="btn btn-link font-weight-bold color-b"
- style="width: 150px; height:40px;"
- @click="sortLowPrice()"
- >Lowest Price</button>
- <button
- type="button"
- class="btn btn-link font-weight-bold color-b"
- style="width: 150px; height:40px;"
- @click="sortHighPrice()"
- >Highest Price</button>
- <hr />
- </div>
- <div class="form-group row">
- <div class="col-md-4" v-for="currentProperty in properties" :key="currentProperty.id">
- <router-link :to="`/property/property/${currentProperty.id}`">
- <div class="card-box-a card-shadow">
- <div class="img-box-a">
- <img
- :src="currentProperty.displayImage"
- alt
- class="img-a img-fluid"
- style="height:466px; width:350px; object-fit: cover;"
- />
- </div>
- <div class="card-overlay">
- <div class="card-overlay-a-content">
- <div class="card-header-a">
- <h4 class="card-title-a">
- <router-link
- :to="`/property/property/${currentProperty.id}`"
- class="link-a"
- >{{ currentProperty.shortDescription }}</router-link>
- </h4>
- <h4 class="card-title-c">
- <router-link :to="`/property/property/${currentProperty.id}`" class="link-a">
- {{ currentProperty.province }}
- <br />
- {{ currentProperty.city }}
- <br />
- {{ currentProperty.suburb }}
- </router-link>
- </h4>
- </div>
- <div class="card-body-a">
- <div class="price-box d-flex">
- <span
- v-if="currentProperty.isSale"
- class="price-a"
- >sale | {{ currentProperty.displayPrice }}</span>
- <span
- v-if="!currentProperty.isSale"
- class="price-a"
- >rent | {{ currentProperty.displayPrice }}</span>
- </div>
- <router-link :to="`/property/property/${currentProperty.id}`" class="link-a">
- Click here to view
- <span class="ion-ios-arrow-forward"></span>
- </router-link>
- </div>
- <div class="card-footer-a" v-if="currentProperty.showFooter">
- <ul class="card-info d-flex justify-content-around">
- <li v-if="currentProperty.area !== null">
- <h4 class="card-info-title">Area</h4>
- <span v-html="currentProperty.area"></span>
- </li>
- <li v-if="currentProperty.beds !== null">
- <h4 class="card-info-title">Beds</h4>
- <span>{{ currentProperty.beds }}</span>
- </li>
- <li v-if="currentProperty.baths !== null">
- <h4 class="card-info-title">Baths</h4>
- <span>{{ currentProperty.baths }}</span>
- </li>
- <li v-if="currentProperty.garages !== null">
- <h4 class="card-info-title">Garages</h4>
- <span>{{ currentProperty.garages }}</span>
- </li>
- </ul>
- </div>
- </div>
- </div>
- </div>
- </router-link>
- <br />
- </div>
- </div>
- </div>
- </template>
-
- <script>
- export default {
- props: {
- properties: { type: Array, default: () => [] },
- showSort: { type: Boolean, default: true },
- },
- methods: {
- sortHighPrice() {
- function compare(a, b) {
- if (a.price < b.price) return 1;
- if (a.price > b.price) return -1;
- return 0;
- }
-
- return this.properties.sort(compare);
- },
- sortLowPrice() {
- function compare(a, b) {
- if (a.price < b.price) return -1;
- if (a.price > b.price) return 1;
- return 0;
- }
-
- return this.properties.sort(compare);
- },
- sortNewest() {
- function compare(a, b) {
- if (a.dateCreated < b.dateCreated) return 1;
- if (a.dateCreated > b.dateCreated) return -1;
- return 0;
- }
-
- return this.properties.sort(compare);
- },
- },
- };
- </script>
|