diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..21cff1fb03 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +14.18.1 \ No newline at end of file diff --git a/components/venue/VenueDivision.vue b/components/venue/VenueDivision.vue new file mode 100644 index 0000000000..dd176f1ca5 --- /dev/null +++ b/components/venue/VenueDivision.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/components/venue/VenueDriveTab.vue b/components/venue/VenueDriveTab.vue index 76033a4cf9..4e75f6358f 100644 --- a/components/venue/VenueDriveTab.vue +++ b/components/venue/VenueDriveTab.vue @@ -12,27 +12,19 @@
-
+
{{ $t('carInstructions.destination') }} -
    -
  1. - {{ carInstruction }} -
  2. -
@@ -46,15 +38,12 @@ {{ $t('carInstructions.footerTitle') }}
- -
-
-

- - {{ $t('parkingInfo.title') }} -

-
-
+ +

+ + {{ $t('parkingInfo.title') }} +

+
@@ -63,7 +52,15 @@ {{ $t('parkingInfo.car.title') }}
-

{{ $t('parkingInfo.car.description') }}

+ + + {{ $t('parkingInfo.car.parkingPlace') }} + +
@@ -74,32 +71,38 @@
{{ $t('parkingInfo.motor.descriptionLinkTitle1') }} {{ $t('parkingInfo.motor.descriptionLinkTitle2') }} {{ $t('parkingInfo.motor.descriptionLinkTitle3') }} - + {{ $t('parkingInfo.moreInfoLinkTitle') }} + {{ $t('parkingInfo.moreInfoLinkTitle2') }}
@@ -108,78 +111,35 @@ - + diff --git a/components/venue/VenuePublicTransporterTab.vue b/components/venue/VenuePublicTransporterTab.vue index 5fc9c34281..ff796dd62f 100644 --- a/components/venue/VenuePublicTransporterTab.vue +++ b/components/venue/VenuePublicTransporterTab.vue @@ -5,8 +5,10 @@ -
-
+
+
@@ -17,19 +19,30 @@ {{ $t('publicTransport.taxi.description') }}

-
+
+
+ +
+ {{ $t('publicTransport.bus.title') }} +
+
+

+ {{ $t('publicTransport.bus.description') }} +

+
+ +
+
+ {{ $t('publicTransport.uBikePark.title') }} +
+ +
-
-
-

- - {{ $t('publicTransport.title') }} -

+ +

+ + {{ $t('publicTransport.title') }} +

+
+ +
+
+ +
+ {{ $t('publicTransportInfo.title') }} +
-
-
-
-
- -
- {{ $t('publicTransportInfo.title') }} -
+
+ -

- {{ $t('publicTransportInfo.info') }} -

- - {{ $t('publicTransportInfo.1843infoTitle') }} - -
    + + {{ $t('publicTransportInfo.publicTransport') }} + + +
    • {{ $t('publicTransportInfo.description1') }}
    • - {{ $t('publicTransportInfo.description2') }} + {{ $t('publicTransportInfo.description2.title') }} + +
        +
      • + {{ + $t( + 'publicTransportInfo.description2.info1', + ) + }} +
      • +
      • + {{ + $t( + 'publicTransportInfo.description2.info2', + ) + }} +
      • +
    • - {{ $t('publicTransportInfo.description3') }} + {{ $t('publicTransportInfo.description3.title') }} +
        +
      • + {{ + $t( + 'publicTransportInfo.description3.info1', + ) + }} +
      • +
      • + {{ + $t( + 'publicTransportInfo.description3.info2', + ) + }} +
      • +
    • {{ $t('publicTransportInfo.description4') }}
    • +
    • + {{ $t('publicTransportInfo.description5') }} +
    + + {{ $t('publicTransportInfo.moreInfo.info1') }} + {{ $t('publicTransportInfo.moreInfo.info2') }} +
@@ -84,24 +183,70 @@ @@ -111,49 +256,4 @@ export default { padding-left: 0px; } } -.publicTransporter-trafficInfo { - display: flex; - justify-content: center; - align-items: center; - white-space: nowrap; - color: #9387ff; - & >>> h3 { - padding: 0 14px; - position: relative; - display: flex; - align-items: center; - justify-content: center; - &::before { - position: absolute; - content: ''; - left: 0; - border: 4px solid #9387ff; - display: inline-block; - border-radius: 50%; - } - &::after { - position: absolute; - content: ''; - right: 0; - border: 4px solid #9387ff; - display: inline-block; - border-radius: 50%; - } - margin: 0; - } - &::before { - max-width: 280px; - content: ''; - width: 100%; - border-top: 1px solid #9387ff; - display: inline-block; - } - &::after { - max-width: 280px; - width: 100%; - content: ''; - border-top: 1px solid #9387ff; - display: inline-block; - } -} diff --git a/components/venue/config/venueIconConfig.js b/components/venue/config/venueIconConfig.js new file mode 100644 index 0000000000..0a181ff8f5 --- /dev/null +++ b/components/venue/config/venueIconConfig.js @@ -0,0 +1,45 @@ +export const venueDriveIconConfig = { + 'en-us': { + car: require('~/static/img/venue/car.svg'), + carWhite: require('~/static/img/venue/car-white.svg'), + motorWhite: require('~/static/img/venue/motor-white.svg'), + parking: require('~/static/img/venue/parking.svg'), + parkingPink: require('~/static/img/venue/parking-pink.svg'), + venueDestination: require('~/static/img/venue/en-us/venue-destination.svg'), + venueDestinationMd: require('~/static/img/venue/en-us/venue-destination-md.svg'), + }, + 'zh-hant': { + car: require('~/static/img/venue/car.svg'), + carWhite: require('~/static/img/venue/car-white.svg'), + motorWhite: require('~/static/img/venue/motor-white.svg'), + parking: require('~/static/img/venue/parking.svg'), + parkingPink: require('~/static/img/venue/parking-pink.svg'), + venueDestination: require('~/static/img/venue/venue-destination.svg'), + venueDestinationMd: require('~/static/img/venue/venue-destination-md.svg'), + }, +} + +export const venuePublicTransportIconConfig = { + 'en-us': { + carWhite: require('~/static/img/venue/car-white.svg'), + busWhite: require('~/static/img/venue/bus-white.svg'), + publicTransporterGuide: require('~/static/img/venue/en-us/publicTransporterGuide.svg'), + publicTransporterGuideMd: require('~/static/img/venue/en-us/publicTransporterGuide-md.svg'), + taxiWhite: require('~/static/img/venue/taxi-white.svg'), + transporterWhite: require('~/static/img/venue/transporter-white.svg'), + uBike: require('~/static/img/venue/uBike.svg'), + parking: require('~/static/img/venue/parking.svg'), + airplane: require('~/static/img/venue/airplane.svg'), + }, + 'zh-hant': { + carWhite: require('~/static/img/venue/car-white.svg'), + busWhite: require('~/static/img/venue/bus-white.svg'), + publicTransporterGuide: require('~/static/img/venue/publicTransporterGuide.svg'), + publicTransporterGuideMd: require('~/static/img/venue/publicTransporterGuide-md.svg'), + taxiWhite: require('~/static/img/venue/taxi-white.svg'), + transporterWhite: require('~/static/img/venue/transporter-white.svg'), + uBike: require('~/static/img/venue/uBike.svg'), + parking: require('~/static/img/venue/parking.svg'), + airplane: require('~/static/img/venue/airplane.svg'), + }, +} diff --git a/i18n/venue/index.i18n.js b/i18n/venue/index.i18n.js index 7bb95532a5..8027c59ada 100644 --- a/i18n/venue/index.i18n.js +++ b/i18n/venue/index.i18n.js @@ -36,8 +36,9 @@ export default genI18nMessages({ title: 'Parking Info', car: { title: 'Car', + parkingPlace: 'Humanities and Social Science Building (HSSB)', description: - 'The underground parking lot (B2) in the Humanities and Social Science Building is available for cars. ' + + 'The underground parking lot (B2) in the {0} is available for cars. ' + 'Upon entering the campus, drivers should present their identification to the main gate security guard' + ' and obtain a parking permit. The parking fee is NT$20 per hour.', }, @@ -63,6 +64,11 @@ export default genI18nMessages({ ' Based on past experience, many people choose this option,' + ' so sharing a taxi from the MRT station is a good idea.', }, + bus: { + title: 'Passenger bus', + description: + "To reach Academia Sinica, you can take buses 205, 212, 212 (212 Express), 270, 270 (270 Shuttle), 276, 306, 306 (306 Shuttle), 620, 645, 645 (645 Sub), S1, S12, 小 12 (S12 Shuttle), S5, or 藍 25 (Blue 25), and get off at Academia Sinica Station. From there, it's approximately an 8-minute walk to your destination.", + }, uBike: { link: { description1: 'official YouBike website', @@ -74,25 +80,54 @@ export default genI18nMessages({ 'It is recommended to check the available docking stations on the app to return the bike. {2}' + 'Cycling time from Nangang Station or Nangang Exhibition Center Station to Academia Sinica is approximately 10-15 minutes', }, + uBikePark: { + parkPlace: { + park1: 'YouBike 2.0: Humanities and Social Science Building', + park2: 'YouBike 2.0: Academia Sinica Gymnasium (East)', + park3: 'YouBike 2.0: Academia Sinica (Jiuzhuang St. Intersection)', + park4: 'YouBike 2.0: Academia Park', + park5: 'YouBike 2.0: Dr. Hu Shih Par', + }, + parkingInfo: { + park1: '{0}', + park2: '{0}', + park3: '{0} — Approximately a 10-minute walk', + park4: '{0} — Approximately a 12-minute walk', + park5: '{0} — Approximately a 13-minute walk', + }, + title: 'Youbike Nearby rental stations', + }, }, publicTransportInfo: { - title: 'Way of Transportation', + title: 'Public transportation', info: - 'You can take the Kuo-Kuang Bus 1843 to travel between Nangang Exhibition' + + 'You can take the {0} to travel between Nangang Exhibition' + ' Center and Terminal 1 and Terminal 2 of Taoyuan International Airport.', - '1843infoTitle': 'Kuo-Kuang Bus 1843 Route Information:', + '1843infoTitle': '{0} Route Information:', + publicTransport: 'Kuo-Kuang Bus 1843', + description1: 'Route: Taiwan Taoyuan Airport Terminal 1 ->' + ' Taiwan Taoyuan Airport Terminal 2 -> MRT Gangqian Station' + ' -> Ruiguang Road -> Neihu Administrative Center ->' + ' MRT Nangang Exhibition Center Station (Nangang Rd.) -> Nangang Bus Station (West)', - description2: - 'Bus platform location: Terminal I: B1 bus area of' + - ' Arrivals Hall Terminal II: Outdoor gallery at East side of 1F Arrivals Hall', - description3: - 'Fare (for reference only):Full Fare: NT$140,Half Fare: NT$75', - description4: 'Schedule: 09:10, 13:10, and 17:20', + description2: { + title: 'Bus platform location:', + info1: 'Terminal I: B1 bus area of Arrivals Hall', + info2: 'Terminal II: Outdoor gallery at East side of 1F Arrivals Hall', + }, + description3: { + title: 'Fare (for reference only):', + info1: 'Fare: NT$140', + info2: 'Fare: NT$75', + }, + description4: 'Schedule: 09:10, 13:10, and 17:20, From Terminal II', description5: 'Estimated time: 1 hour with moderate traffic', + moreInfo: { + title: 'For more information, please refer to {0} and {1} 。', + info1: 'the traffic information of Academia Sinica', + info2: 'the public transportation information of Taoyuan international Airport', + }, }, }, 'zh-hant': { @@ -115,7 +150,7 @@ export default genI18nMessages({ carInstructions: { title: '開車', footerTitle: '停車', - description: '導航至{0}:', + description: '導航至{0}', destination: '中央研究院', description1: '中山高速公路東湖交流道下,過南湖大橋後,接研究院路。', @@ -127,8 +162,9 @@ export default genI18nMessages({ title: '停車資訊', car: { title: '汽車', + parkingPlace: '人文社會科學館', description: - '人社館地下室設有汽車停車場,車輛進入院區持證件向大門警衛換證後可駛入院區,停車費用每小時20元。', + '{0} B2 設有汽車停車場,車輛進入院區持證件向大門警衛換證後可駛入院區,停車費用每小時 20 元。', }, motor: { title: '機車', @@ -138,8 +174,9 @@ export default genI18nMessages({ descriptionLinkTitle2: '對面空地', descriptionLinkTitle3: '胡適公園', }, - moreInfo: '※ 停車相關資訊詳細說明請見{0}', - moreInfoLinkTitle: '中研院公告', + moreInfo: '※停車相關資訊詳細說明請見 {0}、{1} 。', + moreInfoLinkTitle: '中央研究院院區車輛通行停放管理施行要點', + moreInfoLinkTitle2: '中央研究院院區停車 Q&A ', }, publicTransport: { title: '桃園國際機場交通資訊', @@ -148,6 +185,11 @@ export default genI18nMessages({ description: '可以搭計程車代替公車,約 NT$ 100 元。 根據過去的經驗,屆時將會有不少人採取此方式,不妨採取計程車共乘由捷運站前往。', }, + bus: { + title: '公車', + description: + '搭乘 205、212、212 直、270、270 區、276、306、306 區、620、645、645 副、小 1、 小 12、小 12 區、 小 5、藍 25,並在中研院站下車,步行約 8 分鐘。', + }, uBike: { link: { description1: 'YouBike 官方網站', @@ -156,22 +198,52 @@ export default genI18nMessages({ description1: '中研院週邊亦有不少 YouBike 的租借站。更多 YouBike 附近路線的資訊,可以見 {0} 以及 {1},建議還車前留意APP上站點可停駐數量。{2}由南港車站或南港展覽館站出發騎乘時間約 10-15 分鐘。', }, + uBikePark: { + parkPlace: { + park1: 'YouBike 2.0:中研院人文社會科學館', + park2: 'YouBike 2.0:中研院綜合體育館東側', + park3: 'YouBike 2.0:研究院舊莊街口', + park4: 'YouBike 2.0:中研公園', + park5: 'YouBike 2.0: 胡適公園', + }, + parkingInfo: { + park1: '{0}', + park2: '{0}', + park3: '{0} — 步行約 10 分鐘', + park4: '{0} — 步行約 12 分鐘', + park5: '{0} — 步行約 13 分鐘', + }, + title: 'Youbike 附近租賃站點', + }, }, publicTransportInfo: { title: '乘車方式', - info: '可乘坐 國光客運 1843 於南港展覽館與桃園機場第一航廈與第二航廈之間往返。', - '1843infoTitle': '國光客運 1843 路線資訊:', + info: '可乘坐 {0} 於南港展覽館與桃園機場第一航廈與第二航廈之間往返。', + '1843infoTitle': '{0} 路線資訊:', + publicTransport: '國光客運 1843', description1: '路線:桃園機場第一航廈 → ' + '桃園機場第二航廈 → ' + '捷運港墘站→瑞光路 → ' + '內湖行政中心→捷運南港展覽館站 → ' + '南港轉運站西站(高鐵台鐵)', - description2: - '站台位置: 第一航廈:B1 層巴士乘車區。第二航廈:1F 層巴士乘車區。', - description3: '票價:全票 NT$140,半票 NT$75', - description4: '時間:07:10、11:10、15:10', - description5: '路程時間:約一小時二十分鐘', + description2: { + title: '站台位置:', + info1: '第一航廈:B1 層巴士乘車區。', + info2: '第二航廈:1F 層巴士乘車區。', + }, + description3: { + title: '票價(票價僅供參考):', + info1: '全票 NT$140', + info2: '半票 NT$75', + }, + description4: '時間:09:10、13:10、17:20,從第二航廈發車', + description5: '路程時間:一般交通狀況下一小時', + moreInfo: { + title: '更多詳細資訊請參考 {0} 以及 {1} 。', + info1: '中央研究院交通資訊', + info2: '桃園國際機場公共運輸交通資訊', + }, }, }, }) diff --git a/pages/about/community.vue b/pages/about/community.vue index 892a2a148c..765910aaa9 100644 --- a/pages/about/community.vue +++ b/pages/about/community.vue @@ -128,6 +128,9 @@ export default { mounted() { this.$refs.communities.addEventListener('scroll', this.handleScroll) }, + beforeDestroy() { + this.$refs.communities.removeEventListener('scroll', this.handleScroll) + }, methods: { handleScroll() { const scrollTop = this.$refs.communities.scrollTop diff --git a/static/img/venue/bus-white.svg b/static/img/venue/bus-white.svg new file mode 100644 index 0000000000..57bac4484f --- /dev/null +++ b/static/img/venue/bus-white.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/venue/en-us/publicTransporterGuide-md.svg b/static/img/venue/en-us/publicTransporterGuide-md.svg new file mode 100644 index 0000000000..ddfeb18013 --- /dev/null +++ b/static/img/venue/en-us/publicTransporterGuide-md.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/venue/en-us/publicTransporterGuide.svg b/static/img/venue/en-us/publicTransporterGuide.svg new file mode 100644 index 0000000000..79673da2d6 --- /dev/null +++ b/static/img/venue/en-us/publicTransporterGuide.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/venue/en-us/venue-destination-md.svg b/static/img/venue/en-us/venue-destination-md.svg new file mode 100644 index 0000000000..ecf2275716 --- /dev/null +++ b/static/img/venue/en-us/venue-destination-md.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/img/venue/en-us/venue-destination.svg b/static/img/venue/en-us/venue-destination.svg new file mode 100644 index 0000000000..29664864ab --- /dev/null +++ b/static/img/venue/en-us/venue-destination.svg @@ -0,0 +1,6 @@ + + + + + +