{"id":75,"date":"2026-01-03T07:53:18","date_gmt":"2026-01-03T07:53:18","guid":{"rendered":"https:\/\/pulsepass.fit\/?page_id=75"},"modified":"2026-04-02T23:40:30","modified_gmt":"2026-04-02T23:40:30","slug":"schedule","status":"publish","type":"page","link":"https:\/\/pulsepass.fit\/yue\/schedule\/","title":{"rendered":"schedule booking"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full is-resized\" style=\"margin-top:var(--wp--preset--spacing--superbspacing-xxsmall);margin-bottom:var(--wp--preset--spacing--superbspacing-xxsmall)\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"676\" src=\"https:\/\/pulsepass.fit\/wp-content\/uploads\/2026\/01\/Zero-to-hero-banner-1.jpeg\" alt=\"\" class=\"wp-image-344\" style=\"width:1200px;height:auto\" srcset=\"https:\/\/pulsepass.fit\/wp-content\/uploads\/2026\/01\/Zero-to-hero-banner-1.jpeg 2048w, https:\/\/pulsepass.fit\/wp-content\/uploads\/2026\/01\/Zero-to-hero-banner-1-300x99.jpeg 300w, https:\/\/pulsepass.fit\/wp-content\/uploads\/2026\/01\/Zero-to-hero-banner-1-1024x338.jpeg 1024w, https:\/\/pulsepass.fit\/wp-content\/uploads\/2026\/01\/Zero-to-hero-banner-1-768x254.jpeg 768w, https:\/\/pulsepass.fit\/wp-content\/uploads\/2026\/01\/Zero-to-hero-banner-1-1536x507.jpeg 1536w, https:\/\/pulsepass.fit\/wp-content\/uploads\/2026\/01\/Zero-to-hero-banner-1-18x6.jpeg 18w, https:\/\/pulsepass.fit\/wp-content\/uploads\/2026\/01\/Zero-to-hero-banner-1-600x198.jpeg 600w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\" \/><\/figure>\n\n\n<div class=\"gcb-calendar-container\" id=\"app\" v-cloak>\r\n    <div class=\"header\">\r\n        <!-- request geo location button -->\r\n        <div id=\"request-location\" @click=\"getCurrentLocation\" v-if=\"isMobile() && !geoStatus\" style=\"display:flex; align-items:center; gap:10px; padding:10px; background:#f9e7e7; margin-bottom:10px;\">\r\n            <span>Enable location access to the nearest store.<\/span>\r\n            <div class=\"request-button\" style=\"width:115px; color:#fff; padding:5px 10px; border:1px solid #0d6efd; background:#0d6efd; display:flex; align-items:center; gap:5px; border-radius:5px;\">\r\n                <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px; height:24px;\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-6\">\r\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" \/>\r\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z\" \/>\r\n                <\/svg>\r\n                <span>Turn on<\/span>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"gcb-admin-filters\">\r\n            <input type=\"hidden\" name=\"page\" value=\"gcb-holiday\">\r\n\r\n            <div class=\"filter-row\">\r\n                <!-- Region -->\r\n                <div class=\"filter-item\">\r\n                <label for=\"region\">Region:<\/label>\r\n                <select id=\"region\" name=\"region\" style=\"max-width:160px\" required v-model=\"filter.region\" @change=\"regionChange\"><option value=\"\">All Region<\/option><option value=\"Hong Kong\">Hong Kong<\/option><option value=\"Canada\">Canada<\/option><\/select>                <\/div>\r\n                <!-- Store -->\r\n                <div class=\"filter-item\">\r\n                <label for=\"store\">Store:<\/label>\r\n                <select id=\"store_id\" v-model=\"filter.store_id\" name=\"store_id\" style=\"width:140px\" @change=\"storeChange\">\r\n                    <option value=\"\">All Store<\/option>\r\n                    <option v-for=\"store in stores\" :value=\"store.id\">{{ store.name }}<\/option>\r\n                <\/select>\r\n                <\/div>\r\n                <div class=\"filter-item\">\r\n                <label for=\"instructor\">Instructor:<\/label>\r\n                <select id=\"instructor\" v-model=\"filter.instructor\" name=\"instructor\" style=\"width:140px\" @change=\"getDataList\">\r\n                    <option value=\"\">All Instructor<\/option>\r\n                    <option v-for=\"instructor in instructors\" :value=\"instructor.ID\">{{ instructor.display_name }}<\/option>\r\n                <\/select>\r\n                                <\/div>\r\n                <!-- course category -->\r\n                <div class=\"filter-item\">\r\n                <label for=\"course_category\">Course:<\/label>\r\n                                <select id=\"class_name\" v-model=\"filter.class_name\" name=\"class_name\" style=\"width:120px\" @change=\"getDataList\">\r\n                    <option value=\"\">All Course<\/option>\r\n                                        <option value=\"\u6e2c\u8a66\u8ab2\u7a0b\">\u6e2c\u8a66\u8ab2\u7a0b<\/option>\r\n                                        <option value=\"Zero to Hero (Running) (O)\">Zero to Hero (Running) (O)<\/option>\r\n                                        <option value=\"KDG Running Tech (O)\">KDG Running Tech (O)<\/option>\r\n                                        <option value=\"Stretching (O)\">Stretching (O)<\/option>\r\n                                        <option value=\"FoodyFree (O)\">FoodyFree (O)<\/option>\r\n                                        <option value=\"Rubber Band (O)\">Rubber Band (O)<\/option>\r\n                                        <option value=\"Yoga (O)\">Yoga (O)<\/option>\r\n                                        <option value=\"Breathing (I)\">Breathing (I)<\/option>\r\n                                        <option value=\"Self-Practice (I)\">Self-Practice (I)<\/option>\r\n                                        <option value=\"KDG Running Tech (I)\">KDG Running Tech (I)<\/option>\r\n                                        <option value=\"Stretching (I)\">Stretching (I)<\/option>\r\n                                        <option value=\"FoodyFree (I)\">FoodyFree (I)<\/option>\r\n                                        <option value=\"Rubber Band (I)\">Rubber Band (I)<\/option>\r\n                                        <option value=\"Yoga (I)\">Yoga (I)<\/option>\r\n                                    <\/select>\r\n                <\/div>\r\n                <div class=\"filter-item\">\r\n                    <button type=\"default\" class=\"btn-submit\" data-loading-text=\"Loading...\" data-value=\"filter\" @click=\"getDataList\">Filter<\/button>\r\n                <\/div>\r\n                \r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"right\">\r\n            <div>{{getMonthStr(filter.start_time)}}<\/div>\r\n            <!-- <div class=\"ico\" @click=\"filterDate('prev')\">\r\n                <svg t=\"1749022931399\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" p-id=\"8196\" width=\"20\" height=\"20\">\r\n                    <path d=\"M689.92 192a47.36 47.36 0 0 1 0 64l-256 256 256 256a47.36 47.36 0 0 1-64 64L334.08 545.92A50.56 50.56 0 0 1 320 512a47.36 47.36 0 0 1 14.08-33.28L622.72 192a47.36 47.36 0 0 1 67.2 0z\" p-id=\"8197\" fill=\"#666\"><\/path>\r\n                <\/svg>\r\n            <\/div>\r\n            <div class=\"ico\" @click=\"filterDate('next')\">\r\n                <svg t=\"1749022959912\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" p-id=\"9471\" width=\"20\" height=\"20\">\r\n                    <path d=\"M334.08 192a47.36 47.36 0 0 0 0 64l256 256-256 256a47.36 47.36 0 1 0 64 64l288.64-288.64A50.56 50.56 0 0 0 704 512a47.36 47.36 0 0 0-14.08-33.28L401.28 192a47.36 47.36 0 0 0-67.2 0z\" p-id=\"9472\" fill=\"#666\"><\/path>\r\n                <\/svg>\r\n            <\/div> -->\r\n            <div class=\"this-week\" @click=\"filterDate('prev')\">Last Month <\/div>\r\n            <div class=\"this-week\" @click=\"filterDate('next')\">Next Month <\/div>\r\n            <!-- <div class=\"this-week\" @click=\"filterDate('this_week')\">This week<\/div> -->\r\n        <\/div>\r\n    <\/div>\r\n    <!-- users modal -->\r\n    <div class=\"users-modal\" id=\"users-modal\" v-if=\"user_modal_visible\">\r\n        <div class=\"users-modal-content\">\r\n            <div class=\"users-modal-list\">\r\n                <div class=\"current-user\">\r\n                    Current reservation account:\r\n                <\/div>\r\n                <select class=\"users-modal-select\" @change=\"selectUser\" v-model=\"selectedUser\">\r\n                                        <option :value=\"user.ID\" v-for=\"user in child_users\" :key=\"user.ID\">{{ user.display_name }}<\/option>\r\n                <\/select>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"booking-list\">\r\n        <div class=\"loading\" v-if=\"isLoading\">\r\n            <svg t=\"1749030293419\" class=\"icon rotate\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" p-id=\"13669\" width=\"30\" height=\"30\">\r\n                <path d=\"M626.34496 121.8304c0 53.15072-43.07968 96.2304-96.2304 96.2304-53.1456 0-96.2304-43.07968-96.2304-96.2304C433.88928 68.67968 476.96896 25.6 530.11456 25.6c53.1456 0 96.2304 43.0848 96.2304 96.2304zM530.11456 833.9968c-46.50496 0-84.1984 37.69856-84.1984 84.1984s37.69856 84.1984 84.1984 84.1984 84.1984-37.69856 84.1984-84.1984-37.69344-84.1984-84.1984-84.1984z m398.18752-253.83936c-33.21856 0-60.14464-26.92096-60.14464-60.14464 0-33.21856 26.92608-60.14464 60.14464-60.14464 33.22368 0 60.14464 26.92608 60.14464 60.14464-0.00512 33.21856-26.9312 60.14464-60.14464 60.14464zM228.15744 520.0128c0-53.1456-43.07968-96.2304-96.2304-96.2304-53.1456 0-96.2304 43.07968-96.2304 96.2304 0 53.1456 43.07968 96.2304 96.2304 96.2304 53.15072 0 96.2304-43.0848 96.2304-96.2304z m88.448-349.59872c37.5808 37.5808 37.5808 98.5088 0 136.08448-37.5808 37.5808-98.5088 37.5808-136.0896 0s-37.5808-98.5088 0-136.0896 98.5088-37.5808 136.0896 0.00512z m444.03712 580.12672c-28.1856 28.1856-28.1856 73.8816-0.00512 102.0672 28.1856 28.1856 73.8816 28.1856 102.0672 0 28.1856-28.1856 28.1856-73.8816 0-102.0672-28.18048-28.19072-73.87648-28.19072-102.06208 0z m85.05856-478.06464c-18.7904 18.7904-49.25952 18.7904-68.03968 0-18.79552-18.79552-18.79552-49.25952 0-68.0448a48.09728 48.09728 0 0 1 68.03968 0c18.7904 18.7904 18.7904 49.25952 0 68.0448zM316.60544 733.52704c-37.5808-37.5808-98.5088-37.5808-136.0896 0s-37.5808 98.5088 0 136.08448c37.5808 37.5808 98.5088 37.5808 136.08448 0 37.5808-37.57568 37.5808-98.50368 0.00512-136.08448z\" fill=\"#272536\" p-id=\"13670\"><\/path>\r\n            <\/svg>\r\n        <\/div>\r\n        <div class=\"booking-group-item\" v-for=\"(item,key) in list\" :key=\"key\">\r\n            <div class=\"booking-group-title\">{{formatDayFromTs(key)}}<\/div>\r\n            <div class=\"list\">\r\n                <div class=\"item\" :class=\"{disabled:ite.is_expired}\" v-for=\"(ite,i) in item\" :key=\"i\">\r\n                    <div class=\"left\">\r\n                        <div class=\"time\">{{ite.time}}<\/div>\r\n                        <div class=\"avatar\">\r\n                            <img class=\"img\" :src=\"ite.instructor.avatar\" alt=\"\">\r\n                        <\/div>\r\n                        <div class=\"store\">\r\n                            <div class=\"store-name\">{{ite.store_name}}<\/div>\r\n                            <div class=\"instructors\" style=\"padding: 5px 0;\">\r\n                                <div class=\"instructor\" v-for=\"(instructor,i) in ite.instructor\" :style=\"{color:instructor.role=='primary'?'#0d6efd':'#8995a7'}\">{{instructor.name}}<\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"class-name\">{{ite.course_name}}<\/div>\r\n                        <div class=\"location\">{{ite.location}} <span class=\"distance\" style=\"color:#c5c5c5;font-style:italic;font-weight:bold\" v-if=\"ite.distance\" >{{ite.distance}}<\/span><\/div>\r\n                    <\/div>\r\n                    <div class=\"right\">\r\n                        <div class=\"users-count\">\r\n                            <div class=\"users\">\r\n                                <svg t=\"1749024554993\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" p-id=\"12532\" width=\"20\" height=\"20\">\r\n                                    <path d=\"M261.7 522.6h0.2c19.3 0 35-15.7 35-35s-15.7-35-35-35c-31.9 0-58.8-37.7-58.8-82.4s26.9-82.4 58.8-82.4c19.3 0 35-15.7 35-35s-15.7-35-35-35c-35.4 0-69.5 17.3-93.7 47.5-22.6 28.4-35.1 65.6-35.1 104.9s12.5 76.5 35.1 104.9c0.6 0.8 1.3 1.6 2 2.4-22.9 13.2-43.4 31-61.1 53.2-38.3 48-59.5 111.4-59.5 178.4 0 19.3 15.7 35 35 35s35-15.7 35-35c0-51.2 15.7-99.1 44.1-134.7 26.6-33.3 61.3-51.7 97.7-51.7 0.2 0 0.3-0.1 0.3-0.1zM914.8 530.7c-17.7-22.2-38.2-40-61.1-53.2 0.7-0.8 1.3-1.6 2-2.4 22.6-28.4 35.1-65.6 35.1-104.9s-12.5-76.5-35.1-104.9c-24.1-30.2-58.3-47.5-93.7-47.5-19.3 0-35 15.7-35 35s15.7 35 35 35c31.9 0 58.8 37.7 58.8 82.4s-26.9 82.4-58.8 82.4c-19.3 0-35 15.7-35 35s15.7 35 35 35H762.3c36.4 0 71.1 18.4 97.7 51.7 28.5 35.6 44.1 83.5 44.1 134.7 0 19.3 15.7 35 35 35s35-15.7 35-35c0.2-67-21-130.3-59.3-178.3z\" fill=\"#CCCCCC\" p-id=\"12533\"><\/path>\r\n                                    <path d=\"M747.4 541c-30.9-30.8-66.9-54.7-106.1-70.8 40.3-34.7 65.8-86 65.8-143.2 0-104.2-84.8-188.9-188.9-188.9-104.2 0-188.9 84.8-188.9 188.9 0 57 25.4 108.2 65.4 142.9C355.2 486 318.9 510 287.8 541c-61.2 61.1-95.1 142.4-95.5 228.9V850.8c0 19.3 15.7 35 35 35h580.5c19.3 0 35-15.7 35-35v-80.2-0.8c-0.3-86.4-34.2-167.6-95.4-228.8zM518.2 208.1c65.6 0 118.9 53.4 118.9 118.9s-53.4 118.9-118.9 118.9S399.3 392.6 399.3 327s53.4-118.9 118.9-118.9z m254.7 607.8H262.3v-44.6-0.6c0.2-140.5 114.8-254.8 255.3-254.8s255 114.3 255.3 254.8v45.2z\" fill=\"#CCCCCC\" p-id=\"12534\"><\/path>\r\n                                <\/svg>\r\n                            <\/div>\r\n                            <div class=\"count\">{{ite.amount}}\/{{ite.max_capacity}}<\/div>\r\n                            <div v-if=\"ite.is_full\" class=\"full\">Full<\/div>\r\n                        <\/div>\r\n                        <div class=\"\" v-if=\"!ite.is_booked\">\r\n                            <!-- \u68c0\u67e5\u7528\u6237\u662f\u5426\u6709\u9884\u8ba2\u6743\u9650 -->\r\n                            <div v-if=\"ite.user_can_book\">\r\n                                <div class=\"btn btn-booking\" :class=\"{disabled:ite.is_expired}\" v-if=\"ite.amount < ite.max_capacity\" @click=\"booking(ite)\">Book now<\/div>\r\n                                <div v-else>\r\n                                    <div v-if=\"ite.expired\" class=\"btn btn-booking disabled\">Expired<\/div>\r\n                                    <div v-else>\r\n                                        <div v-if=\"ite.is_waiting_list\">\r\n                                            <div class=\"btn btn-booking btn-cancel\" @click=\"cancelWait(ite)\">Cancel wait<\/div>\r\n                                        <\/div>\r\n                                        <div v-else class=\"btn btn-booking\" title=\"Click to join the waiting list\" style=\"font-size: 10px;\" @click=\"joinWaitingList(ite)\">Join waiting list<\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                            <div  target=\"_blank\" style=\"display: block;\" @click=\"bookingHref(ite)\" v-else class=\"btn btn-booking\" :class=\"{'upgrade': ite.upgrade,'no-membership-requirements': !ite.has_membership, 'disabled': ite.is_full || ite.is_age_limit }\">{{ite.user_can_book_text}}<\/div>\r\n                        <\/div>\r\n                        <div class=\"btn btn-booking btn-cancel\" v-else @click=\"cancel(ite)\">Cancel<\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"no-results\" style=\"text-align: center; padding:30px 0\" v-if=\"!isLoading && list.length == 0\">No results found.<\/div>\r\n    <\/div>\r\n    <div style=\"text-align: center;\">\r\n        <a style=\"color: #0d6efd;\" href=\"\/my_gcb_bookings\">reservation record ><\/a>\r\n    <\/div>\r\n    \r\n<style>\r\n\r\n.membership-requirements {\r\n    margin-top: 5px;\r\n}\r\n\r\n.membership-tag {\r\n    display: inline-block;\r\n    background-color: #e7f4ff;\r\n    color: #1296db;\r\n    padding: 2px 6px;\r\n    border-radius: 4px;\r\n    font-size: 12px;\r\n    margin-right: 4px;\r\n    margin-top: 2px;\r\n    border: 1px solid #1296db;\r\n}\r\n\r\n.no-membership-requirements {\r\n    font-size: 12px;\r\n    color: #666;\r\n    margin-top: 5px;\r\n}\r\n\r\n<\/style>\r\n\r\n<\/div>\r\n<\/div>\r\n<script>\r\n    var regions = {\"HK\":\"Hong Kong\",\"CA\":\"Canada\"};\r\n\r\n        var regions_arr = [{\"id\":\"1\",\"abbr\":\"HK\",\"name\":\"Hong Kong\",\"status\":\"normal\",\"created_at\":\"2026-01-10 13:52:58\",\"updated_at\":\"2026-01-17 11:47:53\",\"currency\":\"HKD\",\"timezone\":\"Asia\\\/Hong_Kong\"},{\"id\":\"2\",\"abbr\":\"CA\",\"name\":\"Canada\",\"status\":\"normal\",\"created_at\":\"2026-01-10 13:52:58\",\"updated_at\":\"2026-02-25 02:55:18\",\"currency\":\"CAD\",\"timezone\":\"America\\\/Toronto\"}];\r\n    var region_values = Object.values(regions);\r\n    var user = {\r\n        id: 0,\r\n        username: '',\r\n        email: '',\r\n        has_sub_user: false,\r\n        sub_user: []\r\n    };\r\n    var selectedUser = null;\r\n        console.log(user);\r\n<\/script>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-full-width","meta":{"footnotes":""},"class_list":["post-75","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/pulsepass.fit\/yue\/wp-json\/wp\/v2\/pages\/75","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pulsepass.fit\/yue\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pulsepass.fit\/yue\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pulsepass.fit\/yue\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pulsepass.fit\/yue\/wp-json\/wp\/v2\/comments?post=75"}],"version-history":[{"count":7,"href":"https:\/\/pulsepass.fit\/yue\/wp-json\/wp\/v2\/pages\/75\/revisions"}],"predecessor-version":[{"id":660,"href":"https:\/\/pulsepass.fit\/yue\/wp-json\/wp\/v2\/pages\/75\/revisions\/660"}],"wp:attachment":[{"href":"https:\/\/pulsepass.fit\/yue\/wp-json\/wp\/v2\/media?parent=75"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}