Browse Source

Google map on buy page

master
Kobus 5 years ago
parent
commit
7e751d4bbe
4 changed files with 122 additions and 129 deletions
  1. 2
    72
      package-lock.json
  2. 1
    1
      package.json
  3. 102
    56
      src/components/timeshare/buy/buyPage.vue
  4. 17
    0
      src/store/modules/timeshare/buyPage.js

+ 2
- 72
package-lock.json View File

@@ -3400,24 +3400,6 @@
3400 3400
         "randomfill": "^1.0.3"
3401 3401
       }
3402 3402
     },
3403
-    "css": {
3404
-      "version": "2.2.4",
3405
-      "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
3406
-      "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
3407
-      "requires": {
3408
-        "inherits": "^2.0.3",
3409
-        "source-map": "^0.6.1",
3410
-        "source-map-resolve": "^0.5.2",
3411
-        "urix": "^0.1.0"
3412
-      },
3413
-      "dependencies": {
3414
-        "source-map": {
3415
-          "version": "0.6.1",
3416
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3417
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
3418
-        }
3419
-      }
3420
-    },
3421 3403
     "css-color-names": {
3422 3404
       "version": "0.0.4",
3423 3405
       "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
@@ -3473,14 +3455,6 @@
3473 3455
         }
3474 3456
       }
3475 3457
     },
3476
-    "css-parse": {
3477
-      "version": "2.0.0",
3478
-      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
3479
-      "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=",
3480
-      "requires": {
3481
-        "css": "^2.0.0"
3482
-      }
3483
-    },
3484 3458
     "css-select": {
3485 3459
       "version": "2.0.2",
3486 3460
       "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz",
@@ -8228,11 +8202,6 @@
8228 8202
       "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
8229 8203
       "dev": true
8230 8204
     },
8231
-    "object-path": {
8232
-      "version": "0.11.4",
8233
-      "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz",
8234
-      "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk="
8235
-    },
8236 8205
     "object-visit": {
8237 8206
       "version": "1.0.1",
8238 8207
       "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
@@ -10246,7 +10215,8 @@
10246 10215
     "sax": {
10247 10216
       "version": "1.2.4",
10248 10217
       "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
10249
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
10218
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
10219
+      "dev": true
10250 10220
     },
10251 10221
     "schema-utils": {
10252 10222
       "version": "0.4.7",
@@ -11061,46 +11031,6 @@
11061 11031
         }
11062 11032
       }
11063 11033
     },
11064
-    "stylus": {
11065
-      "version": "0.54.7",
11066
-      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz",
11067
-      "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==",
11068
-      "requires": {
11069
-        "css-parse": "~2.0.0",
11070
-        "debug": "~3.1.0",
11071
-        "glob": "^7.1.3",
11072
-        "mkdirp": "~0.5.x",
11073
-        "safer-buffer": "^2.1.2",
11074
-        "sax": "~1.2.4",
11075
-        "semver": "^6.0.0",
11076
-        "source-map": "^0.7.3"
11077
-      },
11078
-      "dependencies": {
11079
-        "debug": {
11080
-          "version": "3.1.0",
11081
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
11082
-          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
11083
-          "requires": {
11084
-            "ms": "2.0.0"
11085
-          }
11086
-        },
11087
-        "ms": {
11088
-          "version": "2.0.0",
11089
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
11090
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
11091
-        },
11092
-        "semver": {
11093
-          "version": "6.3.0",
11094
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
11095
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
11096
-        },
11097
-        "source-map": {
11098
-          "version": "0.7.3",
11099
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
11100
-          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
11101
-        }
11102
-      }
11103
-    },
11104 11034
     "stylus-loader": {
11105 11035
       "version": "3.0.2",
11106 11036
       "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",

+ 1
- 1
package.json View File

@@ -38,4 +38,4 @@
38 38
     "vue-cli-plugin-vuetify": "^0.5.0",
39 39
     "vue-template-compiler": "^2.6.10"
40 40
   }
41
-}
41
+}

+ 102
- 56
src/components/timeshare/buy/buyPage.vue View File

@@ -13,66 +13,99 @@
13 13
     </section>
14 14
     <div class="container">
15 15
       <div class="row">
16
-        <div class="col-md-8 offset-md-0">
17
-          <div class="row">
18
-            <div class="col-md-8" style="text-align:left;">
19
-              <p>
20
-                The resorts have been listed in their relevant provinces.
21
-                Please select the resort for which you would like to view
22
-                the available weeks and then select the weeks that interest
23
-                you on the resort page.
24
-              </p>
25
-              <p>
26
-                Arrival and departure dates are indicated but please note
27
-                that these dates may vary annually.
28
-              </p>
29
-              <p>
30
-                As with any property related sale, upon purchasing the holiday
31
-                of your choice, there will be a transfer fee payable for the
32
-                change of ownership. This fee will depend on the relevant resort
33
-                or managing agent.
34
-              </p>
35
-            </div>
36
-          </div>
16
+        <div class="col-md-12 text-left">
17
+          <p>
18
+            The resorts have been listed in their relevant provinces.
19
+            Please select the resort for which you would like to view
20
+            the available weeks and then select the weeks that interest
21
+            you on the resort page.
22
+          </p>
23
+          <p>
24
+            Arrival and departure dates are indicated but please note
25
+            that these dates may vary annually.
26
+          </p>
27
+          <p>
28
+            As with any property related sale, upon purchasing the holiday
29
+            of your choice, there will be a transfer fee payable for the
30
+            change of ownership. This fee will depend on the relevant resort
31
+            or managing agent.
32
+          </p>
33
+        </div>
34
+      </div>
37 35
 
38
-          <div class="row mb-4">
39
-            <div class="col-md-8">
40
-              <div class="accordion" id="accordionExample">
41
-                <div class="card" v-for="(region, r) in regions" :key="r">
42
-                  <a
43
-                    class="btn btn-b-n"
44
-                    type="button"
45
-                    data-toggle="collapse"
46
-                    :data-target="'#collapse' + region.id"
47
-                    aria-expanded="false"
48
-                    :aria-controls="'collapse' + region.id"
49
-                  >
50
-                    <div :id="'header' + region.id">
51
-                      <h5 class="mb-0">{{ region.regionName }}</h5>
52
-                    </div>
53
-                  </a>
54
-                  <div
55
-                    :id="'collapse' + region.id"
56
-                    class="collapse"
57
-                    :aria-labelledby="'header' + region.id"
58
-                    data-parent="#accordionExample"
59
-                  >
60
-                    <div class="card-body">
61
-                      <p class="mb-0" v-for="(resort, i) in region.resorts" :key="i">
62
-                        <a
63
-                          class="cursor-pointer"
64
-                          href="#"
65
-                          @click="routerGoTo('/resort/' + resort.resortCode)"
66
-                        >{{resort.resortName}}</a>
67
-                        <br />
68
-                      </p>
69
-                    </div>
70
-                  </div>
36
+      <div class="row mb-4">
37
+        <div class="col-md-4">
38
+          <div class="accordion" id="accordionExample">
39
+            <div class="card" v-for="(region, r) in regions" :key="r">
40
+              <a
41
+                class="btn btn-b-n"
42
+                type="button"
43
+                data-toggle="collapse"
44
+                :data-target="'#collapse' + region.id"
45
+                aria-expanded="false"
46
+                :aria-controls="'collapse' + region.id"
47
+              >
48
+                <div :id="'header' + region.id">
49
+                  <h5 class="mb-0">{{ region.regionName }}</h5>
50
+                </div>
51
+              </a>
52
+              <div
53
+                :id="'collapse' + region.id"
54
+                class="collapse"
55
+                :aria-labelledby="'header' + region.id"
56
+                data-parent="#accordionExample"
57
+              >
58
+                <div class="card-body">
59
+                  <p class="mb-0" v-for="(resort, i) in region.resorts" :key="i">
60
+                    <a
61
+                      class="cursor-pointer"
62
+                      href="#"
63
+                      @click="routerGoTo('/resort/' + resort.resortCode)"
64
+                      @mouseover="getResort(resort.resortCode)"
65
+                    >{{resort.resortName}}</a>
66
+                    <br />
67
+                  </p>
71 68
                 </div>
72 69
               </div>
73 70
             </div>
74 71
           </div>
75 72
         </div>
73
+        <div class="col-md-8">
74
+          <div class="tab-content" id="myTabContent">
75
+            <div
76
+              class="tab-pane fade show active"
77
+              id="directions"
78
+              role="tabpanel"
79
+              aria-labelledby="directions-tab"
80
+            >
81
+              <iframe
82
+                :src="mapUrl"
83
+                width="100%"
84
+                height="450"
85
+                frameborder="0"
86
+                style="border:0"
87
+                allowfullscreen
88
+              ></iframe>
89
+              <br />
90
+
91
+              <small>
92
+                <a
93
+                  :href="mapUrl"
94
+                  style="color:#60CBEB;text-align:left"
95
+                  target="_blank"
96
+                >See map bigger</a>
97
+              </small>
98
+            </div>
99
+            <div
100
+              class="tab-pane fade"
101
+              id="resort-layout"
102
+              role="tabpanel"
103
+              aria-labelledby="resort-layout-tab"
104
+            >
105
+              <img class="img-fluid" :src="layout" alt="Resort Layout" />
106
+            </div>
107
+          </div>
108
+        </div>
76 109
       </div>
77 110
     </div>
78 111
   </section>
@@ -86,16 +119,29 @@ export default {
86 119
     this.getRegions();
87 120
   },
88 121
   computed: {
89
-    ...mapState('timeshareBuy', ['detailedRegion']),
122
+    ...mapState('timeshareBuy', ['detailedRegion', 'resort']),
123
+    mapUrl() {
124
+      return (
125
+        'http://maps.google.com/maps?q='
126
+        + this.resort.prLatitude
127
+        + ', '
128
+        + this.resort.prLongitude
129
+        + '&z=15&output=embed'
130
+      );
131
+    },
90 132
     regions() {
91 133
       return _.sortBy(this.detailedRegion, r => r.regionName);
92 134
     },
93 135
   },
94 136
   methods: {
95
-    ...mapActions('timeshareBuy', ['getRegions']),
137
+    ...mapActions('timeshareBuy', ['getRegions', 'getResort']),
96 138
     routerGoTo(goTo) {
97 139
       this.$router.push(goTo);
98 140
     },
141
+    updateMap(resortCode) {
142
+      this.getGPS(resortCode);
143
+      alert(resortCode);
144
+    },
99 145
   },
100 146
 };
101 147
 </script>

+ 17
- 0
src/store/modules/timeshare/buyPage.js View File

@@ -2,12 +2,14 @@
2 2
 /* eslint-disable guard-for-in */
3 3
 import axios from 'axios';
4 4
 import _ from 'lodash';
5
+import resort from './resort';
5 6
 
6 7
 export default {
7 8
   namespaced: true,
8 9
   state: {
9 10
     regions: [],
10 11
     detailedRegion: [],
12
+    resort: {},
11 13
   },
12 14
   mutations: {
13 15
     setRegions(state, regions) {
@@ -19,6 +21,9 @@ export default {
19 21
     addDetailed(state, detailed) {
20 22
       state.detailedRegion.push(detailed);
21 23
     },
24
+    setResort(state, resort) {
25
+      state.resort = resort;
26
+    },
22 27
   },
23 28
   getters: {},
24 29
   actions: {
@@ -41,6 +46,18 @@ export default {
41 46
         })
42 47
         .catch(console.error);
43 48
     },
49
+    getResort({
50
+      commit,
51
+    }, resortCode) {
52
+      axios.get(
53
+        `https://www.tradeunipoint.com/unibackend/seam/resource/rest/products/TRESORT/${
54
+          resortCode}`,
55
+      )
56
+        .then((result) => {
57
+          commit('setResort', result.data);
58
+        })
59
+        .catch(console.error);
60
+    },
44 61
     getDetailedRegion({
45 62
       commit,
46 63
     }, region) {

Loading…
Cancel
Save