diff --git a/package-lock.json b/package-lock.json index 46e9bfa..c012684 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,13 +8,16 @@ "name": "micromobility-navigation", "version": "0.0.0", "dependencies": { - "axios": "^1.4.0", + "axios": "^1.6.2", + "dotenv": "^16.3.1", "ol": "^7.4.0", "ol-contextmenu": "^5.2.1", "ol-ext": "^4.0.10", "ol-geocoder": "^4.3.0", "vue": "^3.3.4", "vue-router": "^4.2.4", + "vue3-google-login": "^2.0.25", + "vue3-google-oauth2": "^1.0.7", "vue3-openlayers": "^1.0.0", "vuetify": "^3.3.8" }, @@ -589,9 +592,9 @@ } }, "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -698,6 +701,17 @@ "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==", "optional": true }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, "node_modules/earcut": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", @@ -1312,6 +1326,19 @@ "vue": "^3.2.0" } }, + "node_modules/vue3-google-login": { + "version": "2.0.25", + "resolved": "https://registry.npmjs.org/vue3-google-login/-/vue3-google-login-2.0.25.tgz", + "integrity": "sha512-b6EfYFF2KH1qSiiCKI9WmPB79GdXifPB8qOt48RRmo1F5h3UcigrrqzQCosjcRLcTqUpRQcZ9TeKYP4ZVroNHQ==", + "peerDependencies": { + "vue": "^3.0.3" + } + }, + "node_modules/vue3-google-oauth2": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/vue3-google-oauth2/-/vue3-google-oauth2-1.0.7.tgz", + "integrity": "sha512-XZv5+IVRLqKrsfm6DamD75e4LPynDt3xpmEw3SQBKfnUvpaIq6YuimOCPoXMfedR6nQHJeZkw62E/ii2disppA==" + }, "node_modules/vue3-openlayers": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/vue3-openlayers/-/vue3-openlayers-1.2.1.tgz", diff --git a/src/components/DestinationInfoCard.vue b/src/components/DestinationInfoCard.vue index 085345b..ddd0003 100644 --- a/src/components/DestinationInfoCard.vue +++ b/src/components/DestinationInfoCard.vue @@ -11,7 +11,7 @@ {{nearestStructureData.display_name}} - {{destination.subTitle}} + @@ -34,7 +34,7 @@ /> - {{nearestStructureData.lat}} , {{nearestStructureData.lon}} + {{nearestStructureData.lon}} , {{nearestStructureData.lat}} @@ -52,7 +52,7 @@ - + เพิ่มลงในสถานที่โปรด ดูเส้นทาง @@ -238,7 +238,7 @@ export default { data() { return { showPopup: true, - showRoute: false, + showRoute: false }; }, computed: { @@ -257,7 +257,46 @@ export default { viewPopup(){ this.showPopup = true; this.showRoute = false; - } + }, + addToFavorites() { + const currentUser = JSON.parse(sessionStorage.getItem('current_user')); + + if (currentUser) { + console.log('Logged in. Proceed to add to favorites.'); + + fetch("https://little-lines-backend.techtransthai.org/api/favorites/create", { + method: "POST", + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + user_id: currentUser.id, // ใช้ userId ของผู้ใช้ที่ล็อกอินอยู่ + place_name: this.nearestStructureData.display_name, + location: { + type: "Point", + coordinates: [parseFloat(this.nearestStructureData.lon), parseFloat(this.nearestStructureData.lat)] + }, + wheelchair_access: 'Accessible', + highway_type: 'Highway' + }) + }) + .then((res) => { + if (res.ok) { + console.log('Add to favorites success'); + return res.json(); + } else { + throw Error(`Add to favorites failed (${res.status})`); + } + }) + .catch((err) => { + console.log(err); + }); + } else { + console.log('User not logged in. Unable to add to favorites.'); + this.$router.push({ name: 'login' }); + } +} + }, }; diff --git a/src/views/Login.vue b/src/views/Login.vue index baa3339..e7eab55 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -116,8 +116,10 @@ export default { } }) .then((data) => { + console.log(data.success); sessionStorage.setItem('current_user', JSON.stringify({id:data.user._id,username:data.user.username,email:data.user.email})); + this.$router.push({ name: 'home' }); }) .catch((err) => { diff --git a/src/views/Setting.vue b/src/views/Setting.vue index 2ccadff..93fb7a4 100644 --- a/src/views/Setting.vue +++ b/src/views/Setting.vue @@ -1,7 +1,7 @@