@feedmepos/mf-order-setting 0.0.2 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.dev +13 -0
- package/.env.example +11 -0
- package/.env.prod +12 -0
- package/.eslintrc.cjs +15 -0
- package/.nvmrc +1 -0
- package/.prettierrc.json +8 -0
- package/.vscode/extensions.json +8 -0
- package/README.md +31 -0
- package/dist/KioskSettingView-BTDNtWJ1.js +4 -0
- package/{app-gcisgtft.js → dist/app-XcwzVa60.js} +7363 -7390
- package/dist/app.js +6 -0
- package/dist/frontend/mf-order/src/app.d.ts +4 -0
- package/dist/frontend/mf-order/src/router/routes.d.ts +3 -0
- package/dist/frontend/mf-order/src/views/order-settings/sms/SmsSetting.vue.d.ts +2 -0
- package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -0
- package/env.d.ts +95 -0
- package/index.html +16 -0
- package/package.json +5 -4
- package/postcss.config.js +6 -0
- package/public/favicon.ico +0 -0
- package/src/App.vue +19 -0
- package/src/Entry.vue +42 -0
- package/src/api/auth/index.ts +20 -0
- package/src/api/delivery/index.ts +15 -0
- package/src/api/index.ts +171 -0
- package/src/api/kiosk/index.ts +22 -0
- package/src/api/menu/index.ts +13 -0
- package/src/api/order/index.ts +15 -0
- package/src/api/order-setting/index.ts +25 -0
- package/src/api/public-setting/index.ts +11 -0
- package/src/api/remoteOrder/index.ts +142 -0
- package/src/api/restaurant-setting/index.ts +55 -0
- package/src/api/table-setting/index.ts +30 -0
- package/src/app.ts +7 -0
- package/src/assets/base.css +6 -0
- package/src/assets/images/no-data.svg +35 -0
- package/src/assets/logo.svg +1 -0
- package/src/assets/main.css +1 -0
- package/src/components/GoogleMap.vue +216 -0
- package/src/components/RestaurantSelection.vue +34 -0
- package/src/components/index.ts +7 -0
- package/src/components/snackbar.ts +44 -0
- package/src/components/type.ts +103 -0
- package/src/composables/index.ts +7 -0
- package/src/composables/loading/index.ts +51 -0
- package/src/composables/search.ts +18 -0
- package/src/helpers/currency.ts +6 -0
- package/src/helpers/date.ts +29 -0
- package/src/helpers/iteration.ts +87 -0
- package/src/helpers/map.ts +92 -0
- package/src/helpers/menu.ts +166 -0
- package/src/helpers/number.ts +25 -0
- package/src/helpers/object.ts +12 -0
- package/src/helpers/profile.ts +52 -0
- package/src/i18n.ts +43 -0
- package/src/index.d.ts +3 -0
- package/src/main.ts +77 -0
- package/src/modules/kiosk/interface.ts +16 -0
- package/src/modules/order-setting/interface.ts +4 -0
- package/src/modules/order-setting/kiosk/interface.ts +52 -0
- package/src/plugins/google-maps.ts +28 -0
- package/src/router/index.ts +10 -0
- package/src/router/routes.ts +43 -0
- package/src/stores/app/index.ts +58 -0
- package/src/stores/iframe/index.ts +23 -0
- package/src/stores/kiosk/index.ts +40 -0
- package/src/stores/kiosk/mapper.ts +25 -0
- package/src/stores/menu/menu.ts +258 -0
- package/src/stores/order-setting/index.ts +61 -0
- package/src/stores/order-setting/mapper.ts +104 -0
- package/src/stores/restaurant/index.ts +138 -0
- package/src/stores/table-settings.ts +160 -0
- package/src/stores/type.ts +65 -0
- package/src/utils/constants/route.ts +15 -0
- package/src/utils/number.ts +16 -0
- package/src/utils/object.ts +15 -0
- package/src/views/all-orders/ActionMenuCell.vue +92 -0
- package/src/views/all-orders/FilterRestaurant.vue +71 -0
- package/src/views/all-orders/FilterStatus.vue +121 -0
- package/src/views/all-orders/FilterStatusMenu.vue +44 -0
- package/src/views/all-orders/Orders.vue +524 -0
- package/src/views/all-orders/ReflowOrder.vue +105 -0
- package/src/views/all-orders/UpdateDeliveryOrderDialog.vue +313 -0
- package/src/views/all-orders/order.ts +584 -0
- package/src/views/feedme-express/FeedMeExpress.vue +139 -0
- package/src/views/feedme-express/FeedMeExpressSummary.vue +62 -0
- package/src/views/kiosk/KioskSummary.vue +74 -0
- package/src/views/kiosk/KioskView.vue +140 -0
- package/src/views/kiosk/devices/KioskDeviceCard.vue +105 -0
- package/src/views/kiosk/devices/KioskDeviceDetail.vue +28 -0
- package/src/views/kiosk/devices/KioskDevicesView.vue +27 -0
- package/src/views/kiosk/devices/KioskOtpDialog.vue +15 -0
- package/src/views/kiosk/devices/KioskUnbindConfirm.vue +28 -0
- package/src/views/kiosk/settings/KioskDineInSection.vue +86 -0
- package/src/views/kiosk/settings/KioskDisplayStandSection.vue +98 -0
- package/src/views/kiosk/settings/KioskPickAtCounterSection.vue +25 -0
- package/src/views/kiosk/settings/KioskSettingView.vue +61 -0
- package/src/views/kiosk/settings/KioskTakeawaySection.vue +39 -0
- package/src/views/order-settings/OrderSettingsView.vue +52 -0
- package/src/views/order-settings/components/RestaurantSelector.vue +77 -0
- package/src/views/order-settings/delivery/DeliverySetting.vue +799 -0
- package/src/views/order-settings/delivery/LocalDelivery.vue +0 -0
- package/src/views/order-settings/delivery/components/ManualIntegratedDeliverySetting.vue +167 -0
- package/src/views/order-settings/delivery/delivery.data.ts +75 -0
- package/src/views/order-settings/delivery/delivery.ts +41 -0
- package/src/views/order-settings/delivery/inhouse/CurrencyInput.vue +47 -0
- package/src/views/order-settings/delivery/inhouse/DeliveryCustomTime.vue +235 -0
- package/src/views/order-settings/delivery/inhouse/DeliveryOrder.vue +236 -0
- package/src/views/order-settings/delivery/inhouse/DeliveryTime.vue +143 -0
- package/src/views/order-settings/delivery/inhouse/InHouseDelivery.vue +186 -0
- package/src/views/order-settings/delivery/inhouse/TimePicker.vue +76 -0
- package/src/views/order-settings/delivery/inhouse/ZoneDialog.vue +143 -0
- package/src/views/order-settings/delivery/integrated-delivery/FeedmeDelivery.vue +244 -0
- package/src/views/order-settings/delivery/integrated-delivery/FoodpandaCampaignDialog.vue +110 -0
- package/src/views/order-settings/delivery/integrated-delivery/FoodpandaSetting.vue +261 -0
- package/src/views/order-settings/delivery/integrated-delivery/GrabfoodSetting.vue +128 -0
- package/src/views/order-settings/delivery/integrated-delivery/IntegratedDelivery.vue +272 -0
- package/src/views/order-settings/delivery/integrated-delivery/ShopeefoodSetting.vue +135 -0
- package/src/views/order-settings/delivery/integrated.data.interface.ts +0 -0
- package/src/views/order-settings/dinein/DineInSetting.vue +128 -0
- package/src/views/order-settings/dinein/OfflinePaymentTypeDialog.vue +51 -0
- package/src/views/order-settings/dinein/OfflinePaymentTypeDialogContent.vue +44 -0
- package/src/views/order-settings/dinein/PaymentType.vue +172 -0
- package/src/views/order-settings/pickup/AddressInput.vue +48 -0
- package/src/views/order-settings/pickup/CustomPayment.vue +84 -0
- package/src/views/order-settings/pickup/PaymentSidesheet.vue +167 -0
- package/src/views/order-settings/pickup/PickUpPointDialog.vue +125 -0
- package/src/views/order-settings/pickup/PickUpPointDialogContent.vue +95 -0
- package/src/views/order-settings/pickup/PickUpSetting.vue +233 -0
- package/src/views/order-settings/pickup/PickUpSettingDialog.vue +148 -0
- package/src/views/order-settings/pickup/PickUpSideSheet.vue +15 -0
- package/src/views/order-settings/pickup/Preorder.vue +139 -0
- package/src/views/order-settings/servicecharge/RateInput.vue +34 -0
- package/src/views/order-settings/servicecharge/ServiceChargeRule.vue +453 -0
- package/src/views/order-settings/servicecharge/ServiceChargeSetting.vue +233 -0
- package/src/views/order-settings/sms/SmsSetting.vue +162 -0
- package/tailwind.config.js +20 -0
- package/tsconfig.app.json +25 -0
- package/tsconfig.json +18 -0
- package/tsconfig.node.json +16 -0
- package/vite.config.ts +60 -0
- package/KioskSettingView-BRJpaAwI.js +0 -4
- package/app.js +0 -5
- package/frontend/mf-order/src/app.d.ts +0 -2
- package/frontend/mf-order/tsconfig.app.tsbuildinfo +0 -1
- package/style.css +0 -1
- package/{common → dist/common}/booking/index.d.ts +0 -0
- package/{common → dist/common}/config/bank/index.d.ts +0 -0
- package/{common → dist/common}/config/bank/malaysia.d.ts +0 -0
- package/{common → dist/common}/config/bank/singapore.d.ts +0 -0
- package/{common → dist/common}/config/index.d.ts +0 -0
- package/{common → dist/common}/convertor/index.d.ts +0 -0
- package/{common → dist/common}/index.d.ts +0 -0
- package/{common → dist/common}/number/index.d.ts +0 -0
- package/{common → dist/common}/sms/index.d.ts +0 -0
- package/{common → dist/common}/util/index.d.ts +0 -0
- package/{favicon.ico → dist/favicon.ico} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/App.vue.d.ts +0 -0
- package/{frontend/mf-order/src/views/all-orders/Orders.vue.d.ts → dist/frontend/mf-order/src/Entry.vue.d.ts} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/auth/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/delivery/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/kiosk/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/menu/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/order/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/order-setting/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/public-setting/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/remoteOrder/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/restaurant-setting/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/api/table-setting/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/components/GoogleMap.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/components/RestaurantSelection.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/components/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/components/snackbar.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/components/type.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/composables/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/composables/loading/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/composables/search.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/helpers/currency.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/helpers/date.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/helpers/iteration.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/helpers/map.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/helpers/menu.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/helpers/number.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/helpers/object.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/helpers/profile.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/i18n.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/main.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/modules/kiosk/interface.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/modules/order-setting/interface.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/modules/order-setting/kiosk/interface.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/plugins/google-maps.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/router/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/app/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/iframe/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/kiosk/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/kiosk/mapper.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/menu/menu.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/order-setting/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/order-setting/mapper.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/restaurant/index.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/table-settings.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/stores/type.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/utils/constants/route.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/utils/number.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/utils/object.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/all-orders/ActionMenuCell.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/all-orders/FilterRestaurant.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/all-orders/FilterStatus.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/all-orders/FilterStatusMenu.vue.d.ts +0 -0
- package/{frontend/mf-order/src/views/feedme-express/FeedMeExpress.vue.d.ts → dist/frontend/mf-order/src/views/all-orders/Orders.vue.d.ts} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/all-orders/ReflowOrder.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/all-orders/UpdateDeliveryOrderDialog.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/all-orders/order.d.ts +2 -2
- package/{frontend/mf-order/src/views/kiosk/KioskView.vue.d.ts → dist/frontend/mf-order/src/views/feedme-express/FeedMeExpress.vue.d.ts} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/feedme-express/FeedMeExpressSummary.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/KioskSummary.vue.d.ts +0 -0
- package/{frontend/mf-order/src/views/order-settings/OrderSettingsView.vue.d.ts → dist/frontend/mf-order/src/views/kiosk/KioskView.vue.d.ts} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskDeviceCard.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskDeviceDetail.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskDevicesView.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskOtpDialog.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/devices/KioskUnbindConfirm.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskDineInSection.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskDisplayStandSection.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskPickAtCounterSection.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskSettingView.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/kiosk/settings/KioskTakeawaySection.vue.d.ts +0 -0
- package/{frontend/mf-order/src/views/order-settings/delivery/LocalDelivery.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/OrderSettingsView.vue.d.ts} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/components/RestaurantSelector.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/DeliverySetting.vue.d.ts +0 -0
- package/{frontend/mf-order/src/views/order-settings/dinein/DineInSetting.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/delivery/LocalDelivery.vue.d.ts} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/components/ManualIntegratedDeliverySetting.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/delivery.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/delivery.data.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/CurrencyInput.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/DeliveryCustomTime.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/DeliveryOrder.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/DeliveryTime.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/InHouseDelivery.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/TimePicker.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/inhouse/ZoneDialog.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/FeedmeDelivery.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/FoodpandaCampaignDialog.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/FoodpandaSetting.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/GrabfoodSetting.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/IntegratedDelivery.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated-delivery/ShopeefoodSetting.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/delivery/integrated.data.interface.d.ts +0 -0
- package/{frontend/mf-order/src/views/order-settings/pickup/PickUpSideSheet.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/dinein/DineInSetting.vue.d.ts} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/dinein/OfflinePaymentTypeDialog.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/dinein/OfflinePaymentTypeDialogContent.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/dinein/PaymentType.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/AddressInput.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/CustomPayment.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PaymentSidesheet.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PickUpPointDialog.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PickUpPointDialogContent.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PickUpSetting.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/PickUpSettingDialog.vue.d.ts +0 -0
- package/{frontend/mf-order/src/views/order-settings/servicecharge/ServiceChargeSetting.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/pickup/PickUpSideSheet.vue.d.ts} +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/pickup/Preorder.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/servicecharge/RateInput.vue.d.ts +0 -0
- package/{frontend → dist/frontend}/mf-order/src/views/order-settings/servicecharge/ServiceChargeRule.vue.d.ts +0 -0
- package/{frontend/mf-order/src/views/order-settings/sms/SmsSetting.vue.d.ts → dist/frontend/mf-order/src/views/order-settings/servicecharge/ServiceChargeSetting.vue.d.ts} +0 -0
- package/{package → dist/package}/entity/booking/booking.do.d.ts +0 -0
- package/{package → dist/package}/entity/booking/booking.dto.d.ts +0 -0
- package/{package → dist/package}/entity/booking/booking.enum.d.ts +0 -0
- package/{package → dist/package}/entity/business/business.dto.d.ts +0 -0
- package/{package → dist/package}/entity/clickup/clickup.dto.d.ts +0 -0
- package/{package → dist/package}/entity/cursor/cursor.dto.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/delivery.do.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/delivery.dto.d.ts +28 -28
- package/{package → dist/package}/entity/delivery/delivery.enum.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/gateway/grab.dto.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/gateway/grab.enum.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/gateway/kosmo.dto.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/gateway/kosmo.enum.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/gateway/manual.dto.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/gateway/manual.enum.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/gateway/pandago.dto.d.ts +2 -2
- package/{package → dist/package}/entity/delivery/gateway/pandago.enum.d.ts +0 -0
- package/{package → dist/package}/entity/delivery/linked-delivery.do.d.ts +0 -0
- package/{package → dist/package}/entity/food-court/food-court.do.d.ts +0 -0
- package/{package → dist/package}/entity/food-court/food-court.dto.d.ts +0 -0
- package/{package → dist/package}/entity/food-court/food-court.enum.d.ts +0 -0
- package/{package → dist/package}/entity/food-court/order.do.d.ts +0 -0
- package/{package → dist/package}/entity/food-court/order.dto.d.ts +0 -0
- package/{package → dist/package}/entity/general/dateTime.dto.d.ts +0 -0
- package/{package → dist/package}/entity/general/number.dto.d.ts +0 -0
- package/{package → dist/package}/entity/general/search.dto.d.ts +0 -0
- package/{package → dist/package}/entity/incoming-order/incoming-order-to-bill.dto.d.ts +0 -0
- package/{package → dist/package}/entity/incoming-order/incoming-order.do.d.ts +0 -0
- package/{package → dist/package}/entity/incoming-order/incoming-order.dto.d.ts +0 -0
- package/{package → dist/package}/entity/incoming-order/incoming-order.enum.d.ts +0 -0
- package/{package → dist/package}/entity/index.d.ts +0 -0
- package/{package → dist/package}/entity/kiosk/kiosk.do.d.ts +0 -0
- package/{package → dist/package}/entity/kiosk/kiosk.dto.d.ts +0 -0
- package/{package → dist/package}/entity/kiosk/marketing/marketing.dto.d.ts +0 -0
- package/{package → dist/package}/entity/kiosk/scanner/scanner.do.d.ts +0 -0
- package/{package → dist/package}/entity/kiosk/scanner/scanner.dto.d.ts +0 -0
- package/{package → dist/package}/entity/kiosk/scanner/scanner.enum.d.ts +0 -0
- package/{package → dist/package}/entity/marketing/marketing.dto.d.ts +0 -0
- package/{package → dist/package}/entity/member/member.dto.d.ts +0 -0
- package/{package → dist/package}/entity/money/money.enum.d.ts +0 -0
- package/{package → dist/package}/entity/order/dine-in/dine-in.do.d.ts +0 -0
- package/{package → dist/package}/entity/order/dine-in/dine-in.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order/dine-in/qr.do.d.ts +0 -0
- package/{package → dist/package}/entity/order/dine-in/reservation.do.d.ts +0 -0
- package/{package → dist/package}/entity/order/dine-in/reservation.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order/effects/effect.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order/effects/effect.enum.d.ts +0 -0
- package/{package → dist/package}/entity/order/menu/menu.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order/order-item/order-item.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order/order.do.d.ts +0 -0
- package/{package → dist/package}/entity/order/order.dto.d.ts +4 -4
- package/{package → dist/package}/entity/order/order.enum.d.ts +0 -0
- package/{package → dist/package}/entity/order/payment/payment.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order/pickup/pickup.do.d.ts +0 -0
- package/{package → dist/package}/entity/order/pickup/pickup.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order/timeslot/timeslot.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order/timeslot/timeslot.enum.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/base-integration.do.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-menu.dto.d.ts +48 -48
- package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-order.do.d.ts +16 -16
- package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-order.dto.d.ts +6 -6
- package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-settings.do.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda-settings.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/foodpanda/foodpanda.enum.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/grabfood/grabfood-menu.do.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/grabfood/grabfood-order.do.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/grabfood/grabfood-settings.do.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/grabfood/grabfood.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/grabfood/grabfood.enum.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/menu.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/order-platform.dto.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/order-platform.enum.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-menu.do.d.ts +0 -0
- package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-order.do.d.ts +20 -20
- /package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-order.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-settings.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood-settings.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-platform/shopeefood/shopeefood.enum.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/customization/color.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/customization/color.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/kiosk/kiosk.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/kiosk/kiosk.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/order-setting.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/order-setting.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/queue/queue.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/queue/queue.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/reservation/reservation.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/reservation/reservation.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/sequence/sequence.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/sequence/sequence.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/sms/sms.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/sms/sms.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/sms/sms.enum.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/upselling/upselling.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/upselling/upselling.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/v3/v3.do.d.ts +0 -0
- /package/{package → dist/package}/entity/order-setting/v3/v3.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/pagination/pagination.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/payment/payment.enum.d.ts +0 -0
- /package/{package → dist/package}/entity/printer/printer.do.d.ts +0 -0
- /package/{package → dist/package}/entity/queue/queue.do.d.ts +0 -0
- /package/{package → dist/package}/entity/queue/queue.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/queue/queue.enum.d.ts +0 -0
- /package/{package → dist/package}/entity/restaurant/restaurant.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/user/user.do.d.ts +0 -0
- /package/{package → dist/package}/entity/websocket/websocket.dto.d.ts +0 -0
- /package/{package → dist/package}/entity/websocket/websocket.enum.d.ts +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { baseClientInstance, getData, restaurantClientInstance } from '@/api'
|
|
2
|
+
import type { ExtendedRestaurant } from '@/stores/restaurant'
|
|
3
|
+
import type { OrderSettingsDto } from '@entity'
|
|
4
|
+
import {
|
|
5
|
+
FdoRestaurant,
|
|
6
|
+
FdoRestaurantDineIn,
|
|
7
|
+
FdoRestaurantPickup,
|
|
8
|
+
FdoRestaurantSetting,
|
|
9
|
+
FdoServiceChargeSetting
|
|
10
|
+
} from '@feedmepos/core/entity'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
interface EntityDocument {
|
|
14
|
+
_rev: string
|
|
15
|
+
_id: string
|
|
16
|
+
_deleted?: boolean
|
|
17
|
+
}
|
|
18
|
+
export type RestaurantSettingDoc = EntityDocument & FdoRestaurantSetting
|
|
19
|
+
|
|
20
|
+
export const restaurantApi = {
|
|
21
|
+
async readRestaurantSetting(restaurantId: string): Promise<RestaurantSettingDoc> {
|
|
22
|
+
const result = await restaurantClientInstance().get('/restaurant-setting')
|
|
23
|
+
return getData<RestaurantSettingDoc>(result)
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
async readRestaurant(restaurantId: string): Promise<ExtendedRestaurant> {
|
|
27
|
+
const result = await restaurantClientInstance().get('/restaurant-setting')
|
|
28
|
+
return getData(result)
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
async updateDineInSetting(restaurantId: string, setting: FdoRestaurantDineIn) {
|
|
32
|
+
const result = await restaurantClientInstance().put('/dine-in', setting)
|
|
33
|
+
return getData(result)
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
async updatePickupSetting(restaurantId: string, setting: FdoRestaurantPickup) {
|
|
37
|
+
const result = await restaurantClientInstance().put('/pickup', setting)
|
|
38
|
+
return getData(result)
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
async updateServiceCharge(setting: FdoServiceChargeSetting) {
|
|
42
|
+
const result = await restaurantClientInstance().put('/service-charge-setting', setting)
|
|
43
|
+
return getData(result)
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
async getMobileOrderSetting(): Promise<OrderSettingsDto> {
|
|
47
|
+
return await getData(await restaurantClientInstance().get('/order-settings'))
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
admin: {
|
|
51
|
+
async readAllManagable(): Promise<ExtendedRestaurant[]> {
|
|
52
|
+
return getData(await baseClientInstance().get('/my/restaurants'));
|
|
53
|
+
},
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { FdoLayout, FdoLayoutSetting, FdoTable } from '@feedmepos/core/entity';
|
|
2
|
+
import { getData, restaurantClientInstance } from '..';
|
|
3
|
+
|
|
4
|
+
const tableClientInstance = () => restaurantClientInstance('/table');
|
|
5
|
+
export const tableSettingApi = {
|
|
6
|
+
async readTables(): Promise<FdoTable[]> {
|
|
7
|
+
return getData(await tableClientInstance().get('/slots'));
|
|
8
|
+
},
|
|
9
|
+
async createTables(tables: { name: string }[]): Promise<FdoTable[]> {
|
|
10
|
+
return getData(await tableClientInstance().post('/slots', tables));
|
|
11
|
+
},
|
|
12
|
+
async updateTable(table: FdoTable): Promise<FdoTable> {
|
|
13
|
+
return getData(await tableClientInstance().put(`/slots/${table._id}`, table));
|
|
14
|
+
},
|
|
15
|
+
async deleteTables(tableIds: string[]): Promise<FdoTable[]> {
|
|
16
|
+
return getData(await tableClientInstance().post('/slots/delete', tableIds));
|
|
17
|
+
},
|
|
18
|
+
async readLayouts(): Promise<FdoLayoutSetting> {
|
|
19
|
+
return getData(await tableClientInstance().get('/layouts'));
|
|
20
|
+
},
|
|
21
|
+
async createLayout(dto: { payload: FdoLayout; layoutSetting: FdoLayoutSetting; }): Promise<FdoLayoutSetting> {
|
|
22
|
+
return getData(await tableClientInstance().post('/layouts', dto));
|
|
23
|
+
},
|
|
24
|
+
async updateLayout(layout: FdoLayoutSetting): Promise<FdoLayoutSetting> {
|
|
25
|
+
return getData(await tableClientInstance().put('/layouts', layout));
|
|
26
|
+
},
|
|
27
|
+
async updateSetting(is: boolean) {
|
|
28
|
+
return getData(await tableClientInstance().put('/layouts/setting', { is }));
|
|
29
|
+
},
|
|
30
|
+
};
|
package/src/app.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<svg width="858" height="376" viewBox="0 0 858 376" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_1132_89720)">
|
|
3
|
+
<path d="M440 505.86C651.525 505.86 823 437.839 823 353.93C823 270.021 651.525 202 440 202C228.475 202 57 270.021 57 353.93C57 437.839 228.475 505.86 440 505.86Z" fill="url(#paint0_linear_1132_89720)" fill-opacity="0.5"/>
|
|
4
|
+
<g clip-path="url(#clip1_1132_89720)">
|
|
5
|
+
<path d="M331.443 106.351C343.852 58.097 379.776 37.6206 397.221 30.2477C402.417 28.0519 407.88 26.5702 413.469 25.749L424.914 24.0709C430.503 23.2497 436.163 23.1069 441.769 23.7138C460.588 25.749 500.887 35.0321 526.652 77.6808C561.416 135.2 586.627 250.954 457.589 272.322V272.376C456.91 272.483 456.25 272.555 455.589 272.644C454.928 272.751 454.268 272.858 453.589 272.965V272.912C323.854 289.55 314.695 171.458 331.443 106.351Z" fill="#D6D6D6"/>
|
|
6
|
+
<path d="M429.807 275.839C396.221 275.839 370.046 265.414 351.762 244.705C319.016 207.644 319.641 146.84 330.14 106.03C342.406 58.3112 377.099 37.2993 396.686 29.0337C401.899 26.8379 407.47 25.2848 413.273 24.4457L424.718 22.7676C430.521 21.9107 436.306 21.7858 441.912 22.3928C463.053 24.6778 502.316 34.8178 527.795 76.9845C549.596 113.046 567.701 171.119 547.007 216.035C532.973 246.508 503.387 265.824 459.089 273.429V273.465L457.786 273.715C457.375 273.768 456.982 273.822 456.589 273.876L454.982 274.108C454.59 274.179 454.197 274.233 453.786 274.304L452.447 274.5L452.429 274.411C444.573 275.357 437.02 275.839 429.807 275.839ZM332.747 106.69C322.408 146.876 321.712 206.662 353.762 242.956C375.563 267.645 409.095 277.285 453.429 271.591L454.75 271.43V271.448L456.268 271.233C456.375 271.216 456.5 271.198 456.607 271.198L457.375 271.037C501.477 263.736 530.813 244.866 544.597 214.946C564.845 170.976 546.972 113.921 525.528 78.3949C500.638 37.1743 462.285 27.2842 441.645 25.0349C436.252 24.4457 430.699 24.5707 425.129 25.3919L413.684 27.07C408.113 27.8912 402.756 29.3729 397.757 31.4795C378.598 39.5665 344.727 60.0964 332.747 106.69Z" fill="#D6D6D6"/>
|
|
7
|
+
<path d="M360.457 129.166L360.493 111.814C362.475 83.3041 397.685 72.0216 409.041 68.3083C417.504 65.5413 428.467 63.6489 432.359 63.042V63.0241C432.359 63.0241 432.609 62.9884 433.074 62.917C433.538 62.8456 433.788 62.8099 433.788 62.8099V62.8277C437.68 62.31 448.732 60.9533 457.642 61.1675C469.569 61.471 506.547 62.1315 516.653 88.874L521.67 105.476C527.045 124.114 518.974 141.324 501.566 143.876L390.757 160.175C373.348 162.728 360.671 148.571 360.457 129.166Z" fill="white"/>
|
|
8
|
+
<path d="M490.656 119.473C482.675 120.651 473.997 114.76 473.158 106.458C472.319 98.1393 477.622 90.213 486.175 88.9633C494.156 87.7851 502.833 93.6763 503.673 101.978C504.512 110.297 499.209 118.223 490.656 119.473Z" fill="#A7A9AC"/>
|
|
9
|
+
<path d="M488.585 120.972C484.836 120.972 481.068 119.651 477.944 117.223C474.426 114.474 472.248 110.707 471.837 106.601C470.891 97.2824 477.105 88.9455 485.996 87.6423C490.442 86.9818 495.156 88.285 498.923 91.2306C502.441 93.9798 504.619 97.7466 505.03 101.853C505.976 111.171 499.763 119.508 490.871 120.812C490.103 120.919 489.335 120.972 488.585 120.972ZM488.21 90.1594C487.586 90.1594 486.978 90.1952 486.371 90.2844C478.908 91.3734 473.694 98.425 474.498 106.316C474.837 109.69 476.64 112.796 479.586 115.099C482.729 117.545 486.8 118.687 490.478 118.152C497.941 117.063 503.155 110.011 502.352 102.12C502.012 98.7463 500.209 95.6222 497.263 93.3371C494.62 91.2841 491.353 90.1594 488.21 90.1594Z" fill="#A7A9AC"/>
|
|
10
|
+
<path d="M411.309 131.13C403.327 132.308 394.65 126.417 393.811 118.116C392.971 109.797 398.274 101.87 406.827 100.621C414.808 99.4426 423.486 105.334 424.325 113.635C425.182 121.954 419.861 129.88 411.309 131.13Z" fill="#A7A9AC"/>
|
|
11
|
+
<path d="M409.238 132.63C405.488 132.63 401.721 131.309 398.596 128.881C395.079 126.131 392.9 122.365 392.49 118.259C391.543 108.94 397.757 100.603 406.649 99.2997C411.095 98.6392 415.808 99.9603 419.576 102.888C423.093 105.637 425.272 109.404 425.682 113.51C426.629 122.829 420.415 131.166 411.523 132.469C410.755 132.576 409.988 132.63 409.238 132.63ZM408.863 101.817C408.238 101.817 407.631 101.853 407.024 101.942C399.56 103.031 394.347 110.082 395.15 117.973C395.489 121.347 397.293 124.453 400.239 126.756C403.381 129.202 407.452 130.345 411.13 129.809C418.594 128.72 423.807 121.668 423.004 113.778C422.665 110.404 420.861 107.28 417.915 104.995C415.291 102.942 412.005 101.817 408.863 101.817Z" fill="#A7A9AC"/>
|
|
12
|
+
<path d="M567.791 147.286C576.968 161.747 586.699 171.994 597.698 165.031C608.679 158.069 610.161 140.699 600.983 126.239C591.806 111.778 575.468 105.709 564.47 112.671C553.471 119.633 558.613 132.826 567.791 147.286Z" fill="#D6D6D6"/>
|
|
13
|
+
<path d="M317.962 176.582C318.141 176.546 318.319 176.546 318.498 176.51C318.569 177.242 318.623 177.992 318.712 178.724C320.962 200.039 326.747 219.07 335.674 234.905C334.121 236.101 332.193 236.975 329.836 237.44C317.069 239.921 304.053 228.317 300.786 211.518C297.518 194.719 305.178 179.081 317.962 176.582Z" fill="#D6D6D6"/>
|
|
14
|
+
<path d="M547.167 216.088C549.917 210.143 552.006 203.734 553.506 196.969C550.417 185.579 546.542 174.671 541.686 165.852C539.775 162.371 535.883 160.479 531.955 161.032L526.045 161.871C519.849 162.746 516.153 169.226 518.546 175.028C520.01 178.599 521.224 180.241 522.17 183.454C523.831 189.096 520.081 194.88 514.243 195.665L413.415 209.179C408.059 209.893 403.095 206.073 402.559 200.682C402.059 195.737 401.309 192.88 400.595 188.953C399.685 183.883 394.917 180.455 389.829 181.187L375.116 183.276C369.902 184.008 366.242 188.828 366.974 194.041C368.849 207.751 371.241 234.101 366.188 256.952C366.117 257.255 366.099 257.559 366.063 257.862C382.865 269.93 404.184 276.018 429.824 276.018C437.002 276.018 444.501 275.536 452.339 274.59L452.357 274.679L453.857 274.465C454.268 274.411 454.66 274.34 455.071 274.268L456.678 274.036C457.071 273.983 457.464 273.929 457.856 273.875L459.32 273.608V273.572C503.565 265.913 533.133 246.58 547.167 216.088Z" fill="white"/>
|
|
15
|
+
<path d="M476.069 249.668C484.727 249.668 491.746 242.651 491.746 233.994C491.746 225.337 484.727 218.32 476.069 218.32C467.411 218.32 460.393 225.337 460.393 233.994C460.393 242.651 467.411 249.668 476.069 249.668Z" fill="white"/>
|
|
16
|
+
<path d="M484.854 240.617C485.032 242.135 485.318 244.562 485.55 246.473C489.978 243.116 492.478 237.511 491.603 231.62C490.443 223.836 483.765 218.248 476.141 218.213C476.158 218.552 476.176 218.855 476.176 218.909C476.212 219.712 476.248 220.498 476.266 221.301C476.337 223.497 477.176 224.657 479.23 225.461C479.783 225.675 480.337 225.961 480.836 226.3C482.604 227.496 483.425 229.263 483.729 231.298C483.997 233.083 484.175 234.887 484.39 236.69C484.568 238.011 484.693 239.314 484.854 240.617Z" fill="#A7A9AC"/>
|
|
17
|
+
<path d="M460.499 236.261C461.356 242.045 465.266 246.615 470.355 248.597C470.319 248.365 470.302 248.204 470.284 248.186C470.07 246.812 469.855 245.437 469.623 244.063C469.016 240.331 468.373 236.6 467.802 232.851C467.481 230.816 468.07 229.031 469.552 227.567C470.105 227.014 470.694 226.496 471.248 225.925C472.194 224.961 472.48 223.854 472.105 222.497C471.623 220.569 471.784 221.212 471.623 220.569C471.551 220.284 471.355 219.569 471.212 218.962C464.017 221.301 459.356 228.549 460.499 236.261Z" fill="#A7A9AC"/>
|
|
18
|
+
<path d="M480.925 235.797C480.89 235.511 480.818 235.208 480.729 234.922C480.515 234.19 479.783 233.762 479.051 233.94C478.336 234.101 477.872 234.797 477.979 235.547C478.604 239.725 479.372 244.919 480.015 249.168C480.979 248.918 481.907 248.579 482.782 248.169C482.229 244.473 481.443 239.225 480.925 235.797Z" fill="#A7A9AC"/>
|
|
19
|
+
<path d="M472.855 234.976C471.98 235.261 471.623 235.833 471.766 236.779C472.266 240.224 473.069 245.598 473.641 249.472C474.587 249.615 475.569 249.686 476.551 249.65C476.373 248.258 476.087 246.258 475.944 245.259C475.498 242.152 475.033 239.046 474.569 235.958C474.444 235.226 473.587 234.744 472.855 234.976Z" fill="#A7A9AC"/>
|
|
20
|
+
</g>
|
|
21
|
+
</g>
|
|
22
|
+
<defs>
|
|
23
|
+
<linearGradient id="paint0_linear_1132_89720" x1="440.003" y1="133.148" x2="440.003" y2="371.72" gradientUnits="userSpaceOnUse">
|
|
24
|
+
<stop stop-color="#A5A5A5"/>
|
|
25
|
+
<stop offset="0.4764" stop-color="#E0E0E0"/>
|
|
26
|
+
<stop offset="1" stop-color="white" stop-opacity="0"/>
|
|
27
|
+
</linearGradient>
|
|
28
|
+
<clipPath id="clip0_1132_89720">
|
|
29
|
+
<rect width="858" height="376" fill="white"/>
|
|
30
|
+
</clipPath>
|
|
31
|
+
<clipPath id="clip1_1132_89720">
|
|
32
|
+
<rect width="307" height="254" fill="white" transform="translate(300 22)"/>
|
|
33
|
+
</clipPath>
|
|
34
|
+
</defs>
|
|
35
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './base.css';
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ref, onMounted, watch, type PropType, toRaw, onUnmounted } from 'vue';
|
|
3
|
+
import { coordinates, googleMap } from '@/helpers/map';
|
|
4
|
+
import type { MarkerChangeEvent, PolygonChangeEvent, MapCoordinate, MapPolygon } from './type';
|
|
5
|
+
|
|
6
|
+
interface PolygonEventHandler {
|
|
7
|
+
click: (ev: google.maps.PolyMouseEvent) => void;
|
|
8
|
+
contextmenu: (v: google.maps.PolyMouseEvent) => void;
|
|
9
|
+
dblclick: (v: google.maps.PolyMouseEvent) => void;
|
|
10
|
+
drag: (v: google.maps.MapMouseEvent) => void;
|
|
11
|
+
dragend: (v: google.maps.MapMouseEvent) => void;
|
|
12
|
+
dragstart: (v: google.maps.MapMouseEvent) => void;
|
|
13
|
+
mousedown: (v: google.maps.PolyMouseEvent) => void;
|
|
14
|
+
mousemove: (v: google.maps.PolyMouseEvent) => void;
|
|
15
|
+
mouseout: (v: google.maps.PolyMouseEvent) => void;
|
|
16
|
+
mouseover: (v: google.maps.PolyMouseEvent) => void;
|
|
17
|
+
mouseup: (v: google.maps.PolyMouseEvent) => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
type Vertex = google.maps.MVCArray<google.maps.LatLng>;
|
|
21
|
+
|
|
22
|
+
const props = defineProps({
|
|
23
|
+
markers: {
|
|
24
|
+
type: Array as PropType<MapCoordinate[]>,
|
|
25
|
+
default: () => [],
|
|
26
|
+
},
|
|
27
|
+
polygons: {
|
|
28
|
+
type: Array as PropType<MapPolygon[]>,
|
|
29
|
+
default: () => [],
|
|
30
|
+
},
|
|
31
|
+
zoom: {
|
|
32
|
+
type: Number,
|
|
33
|
+
default: 14,
|
|
34
|
+
},
|
|
35
|
+
editable: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
default: false,
|
|
38
|
+
},
|
|
39
|
+
center: {
|
|
40
|
+
type: Object as PropType<{
|
|
41
|
+
lat: number;
|
|
42
|
+
lng: number;
|
|
43
|
+
}>,
|
|
44
|
+
default: coordinates.jb,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const emits = defineEmits<{
|
|
49
|
+
(event: 'map-click', ev: MapCoordinate): void;
|
|
50
|
+
(event: 'marker-change', ev: MarkerChangeEvent): void;
|
|
51
|
+
(event: 'polygon-change', ev: PolygonChangeEvent): void;
|
|
52
|
+
(event: 'polygon-right-click', ev: number): void;
|
|
53
|
+
}>();
|
|
54
|
+
|
|
55
|
+
defineExpose({
|
|
56
|
+
setCenter: (coordinate: MapCoordinate) => {
|
|
57
|
+
map.value?.setCenter(coordinate);
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const mapRef = ref<Element>();
|
|
62
|
+
const map = ref<google.maps.Map | null>(null);
|
|
63
|
+
const listeners: google.maps.MapsEventListener[] = [];
|
|
64
|
+
|
|
65
|
+
function formatCoordinate(ev: google.maps.MapMouseEvent) {
|
|
66
|
+
return {
|
|
67
|
+
lat: ev.latLng.lat(),
|
|
68
|
+
lng: ev.latLng.lng(),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function addListenerToMap(instance: object, eventName: string, callback: (...args: any[]) => void) {
|
|
73
|
+
const listener = googleMap.maps.event.addListener(instance, eventName, callback);
|
|
74
|
+
listeners.push(listener);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const markers = ref<google.maps.Marker[]>([]);
|
|
78
|
+
|
|
79
|
+
function addMarkerListener<N extends keyof google.maps.MarkerHandlerMap<google.maps.Marker>>(
|
|
80
|
+
marker: google.maps.Marker,
|
|
81
|
+
event: N,
|
|
82
|
+
callback: google.maps.MarkerHandlerMap<google.maps.Marker>[N],
|
|
83
|
+
) {
|
|
84
|
+
addListenerToMap(marker, event, callback);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function setMarkers(newMarkers: MapCoordinate[]) {
|
|
88
|
+
setMapOnAllMarkers(null);
|
|
89
|
+
markers.value = newMarkers.map((m, index) => {
|
|
90
|
+
const marker = new googleMap.maps.Marker({
|
|
91
|
+
position: m,
|
|
92
|
+
draggable: true,
|
|
93
|
+
});
|
|
94
|
+
addMarkerListener(marker, 'dragend', (ev) => {
|
|
95
|
+
emits('marker-change', { index, position: formatCoordinate(ev) });
|
|
96
|
+
});
|
|
97
|
+
return marker;
|
|
98
|
+
});
|
|
99
|
+
setMapOnAllMarkers(map.value);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function setMapOnAllMarkers(map: google.maps.Map | null) {
|
|
103
|
+
markers.value.map((marker) => toRaw(marker).setMap(map));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const polygons = ref<google.maps.Polygon[]>([]);
|
|
107
|
+
|
|
108
|
+
function addPolygonListener<N extends keyof PolygonEventHandler>(
|
|
109
|
+
polygon: google.maps.Polygon,
|
|
110
|
+
event: N,
|
|
111
|
+
callback: PolygonEventHandler[N],
|
|
112
|
+
) {
|
|
113
|
+
addListenerToMap(polygon, event, callback);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function addVertexListener<N extends keyof google.maps.MVCArrayHandlerMap<Vertex, google.maps.LatLng>>(
|
|
117
|
+
path: Vertex,
|
|
118
|
+
event: N,
|
|
119
|
+
callback: google.maps.MVCArrayHandlerMap<Vertex, google.maps.LatLng>[N],
|
|
120
|
+
) {
|
|
121
|
+
addListenerToMap(path, event, callback);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function getPolygonPath(index: number) {
|
|
125
|
+
const path = polygons.value[index].getPath().getArray();
|
|
126
|
+
return path.map(({ lat, lng }) => ({
|
|
127
|
+
lat: lat(),
|
|
128
|
+
lng: lng(),
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function polygonChanged(polygonIndex: number) {
|
|
133
|
+
const newPath = getPolygonPath(polygonIndex);
|
|
134
|
+
emits('polygon-change', { index: polygonIndex, path: newPath });
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function removePolygonVertex(polygonIndex: number, vertexIndex: number) {
|
|
138
|
+
const path = getPolygonPath(polygonIndex);
|
|
139
|
+
const newPath = path.filter((_, i) => i !== vertexIndex);
|
|
140
|
+
emits('polygon-change', { index: polygonIndex, path: newPath });
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function polygonRightClick(polygonIndex: number, ev: google.maps.PolyMouseEvent) {
|
|
144
|
+
if (ev.vertex !== undefined) {
|
|
145
|
+
removePolygonVertex(polygonIndex, ev.vertex);
|
|
146
|
+
} else {
|
|
147
|
+
emits('polygon-right-click', polygonIndex);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function setPolygons(newPolygons: MapPolygon[]) {
|
|
152
|
+
setMapOnAllPolygons(null);
|
|
153
|
+
polygons.value = newPolygons.map((p, index) => {
|
|
154
|
+
const polygon = new googleMap.maps.Polygon({
|
|
155
|
+
paths: p.paths,
|
|
156
|
+
strokeColor: p.strokeColor,
|
|
157
|
+
fillColor: p.fillColor,
|
|
158
|
+
fillOpacity: 0.5,
|
|
159
|
+
editable: props.editable,
|
|
160
|
+
});
|
|
161
|
+
addPolygonListener(polygon, 'contextmenu', (v) => polygonRightClick(index, v));
|
|
162
|
+
polygon.getPaths().forEach(path => {
|
|
163
|
+
addVertexListener(path, 'insert_at', () => polygonChanged(index));
|
|
164
|
+
addVertexListener(path, 'set_at', () => polygonChanged(index));
|
|
165
|
+
});
|
|
166
|
+
return polygon;
|
|
167
|
+
});
|
|
168
|
+
setMapOnAllPolygons(map.value);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function setMapOnAllPolygons(map: google.maps.Map | null) {
|
|
172
|
+
polygons.value.map((polygon) => toRaw(polygon).setMap(map));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function addMapListener<N extends keyof google.maps.MapHandlerMap<google.maps.Map>>(
|
|
176
|
+
map: google.maps.Map,
|
|
177
|
+
event: N,
|
|
178
|
+
callback: google.maps.MapHandlerMap<google.maps.Map>[N],
|
|
179
|
+
) {
|
|
180
|
+
addListenerToMap(map, event, callback);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function setMap() {
|
|
184
|
+
map.value = new googleMap.maps.Map(mapRef.value as Element, {
|
|
185
|
+
center: props.center,
|
|
186
|
+
zoom: props.zoom,
|
|
187
|
+
mapTypeControl: false,
|
|
188
|
+
streetViewControl: false,
|
|
189
|
+
draggable: true,
|
|
190
|
+
scrollwheel: true,
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
addMapListener(map.value, 'click', (ev) => emits('map-click', formatCoordinate(ev)));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
watch(() => props.markers, setMarkers, { deep: true });
|
|
197
|
+
watch(() => props.polygons, setPolygons, { deep: true });
|
|
198
|
+
|
|
199
|
+
onMounted(() => {
|
|
200
|
+
if (!mapRef.value || !googleMap) return;
|
|
201
|
+
setMap();
|
|
202
|
+
setMarkers(props.markers);
|
|
203
|
+
setPolygons(props.polygons);
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
onUnmounted(() => {
|
|
207
|
+
listeners.forEach((listener) => listener.remove());
|
|
208
|
+
});
|
|
209
|
+
</script>
|
|
210
|
+
|
|
211
|
+
<template>
|
|
212
|
+
<div
|
|
213
|
+
ref="mapRef"
|
|
214
|
+
class="map app-map"
|
|
215
|
+
/>
|
|
216
|
+
</template>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FmSelect :model-value="currentValue" :items="availableRestaurantItems" @update:model-value="switchRestaurant"></FmSelect>
|
|
3
|
+
</template>
|
|
4
|
+
<script setup lang="ts">
|
|
5
|
+
|
|
6
|
+
import { useCoreStore } from '@feedmepos/mf-common';
|
|
7
|
+
import { type ISelectItem } from '@feedmepos/ui-library';
|
|
8
|
+
import { computed, ref, onBeforeMount } from 'vue';
|
|
9
|
+
|
|
10
|
+
interface Props{
|
|
11
|
+
onPostChangeRestaurant? : () => Promise<void>,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const props = defineProps<Props>();
|
|
15
|
+
|
|
16
|
+
const { currentRestaurant, restaurants, changeRestaurant } = useCoreStore();
|
|
17
|
+
|
|
18
|
+
const currentValue = ref(currentRestaurant.value?.profile.name ?? 'Select...');
|
|
19
|
+
|
|
20
|
+
const availableRestaurantItems = computed<ISelectItem[]>(() => {
|
|
21
|
+
return restaurants.value.map((restaurant) => {
|
|
22
|
+
return {
|
|
23
|
+
label: restaurant.profile.name,
|
|
24
|
+
value: restaurant._id,
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
async function switchRestaurant(v : any){
|
|
30
|
+
const restaurant = restaurants.value.find((r) => r._id == v);
|
|
31
|
+
changeRestaurant(restaurant);
|
|
32
|
+
if(props.onPostChangeRestaurant) await props.onPostChangeRestaurant();
|
|
33
|
+
}
|
|
34
|
+
</script>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type SnackbarId, type SnackbarPosition, useSnackbar } from '@feedmepos/ui-library';
|
|
2
|
+
|
|
3
|
+
export function useSnackbarFunctions() {
|
|
4
|
+
const Snackbar = useSnackbar();
|
|
5
|
+
|
|
6
|
+
function showSuccess(message: string) {
|
|
7
|
+
Snackbar.open({
|
|
8
|
+
type: 'success',
|
|
9
|
+
message,
|
|
10
|
+
position: 'bottom' as SnackbarPosition,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function showError(message: string) {
|
|
15
|
+
Snackbar.open({
|
|
16
|
+
type: 'error',
|
|
17
|
+
message,
|
|
18
|
+
position: 'bottom' as SnackbarPosition,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let snackbarId: SnackbarId | null = null;
|
|
23
|
+
|
|
24
|
+
function showLoading(message: string): SnackbarId {
|
|
25
|
+
snackbarId = Snackbar.open({
|
|
26
|
+
type: 'neutral',
|
|
27
|
+
spinner: true,
|
|
28
|
+
message,
|
|
29
|
+
position: 'bottom' as SnackbarPosition,
|
|
30
|
+
persistent: true // Ensure the snackbar stays visible until manually closed
|
|
31
|
+
});
|
|
32
|
+
return snackbarId;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function closeLoadingSnackbar() {
|
|
36
|
+
if (snackbarId) {
|
|
37
|
+
Snackbar.close(snackbarId);
|
|
38
|
+
snackbarId = null; // Reset the snackbar ID after closing
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
return { showSuccess, showError, showLoading, closeLoadingSnackbar };
|
|
44
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { DefineComponent } from 'vue';
|
|
2
|
+
|
|
3
|
+
export type InputModel = string | number | boolean | null;
|
|
4
|
+
|
|
5
|
+
export enum AUTH_CODE_TYPE {
|
|
6
|
+
ALL = 'ALL',
|
|
7
|
+
ALPHA = 'ALPHA',
|
|
8
|
+
ALPHANUMERIC = 'ALPHANUMERIC',
|
|
9
|
+
NUMERIC = 'NUMERIC',
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface GlobalDialogType extends DefineComponent {
|
|
13
|
+
onDialogOK: (v?: any) => void;
|
|
14
|
+
onDialogCancel: () => void;
|
|
15
|
+
validate: () => Promise<boolean>;
|
|
16
|
+
reset: () => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type DatePickerData = Date | {
|
|
20
|
+
start: Date;
|
|
21
|
+
end: Date;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface PickerGroup {
|
|
25
|
+
label: string;
|
|
26
|
+
value: string;
|
|
27
|
+
options: PickerOption[];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface PickerOption {
|
|
31
|
+
label: string;
|
|
32
|
+
value: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface CheckboxOption {
|
|
36
|
+
key?: string;
|
|
37
|
+
label: string;
|
|
38
|
+
value: any;
|
|
39
|
+
disable?: boolean;
|
|
40
|
+
suffix?: {
|
|
41
|
+
text: string;
|
|
42
|
+
class: string;
|
|
43
|
+
},
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface TableColumn<T> {
|
|
47
|
+
name: string;
|
|
48
|
+
label: string;
|
|
49
|
+
field: keyof T | ((v: T) => any);
|
|
50
|
+
sort?: boolean | ((a: { index: number; value: any }, b: { index: number; value: any }) => number);
|
|
51
|
+
hide?: boolean;
|
|
52
|
+
format?: (v: any) => string;
|
|
53
|
+
align?: 'left' | 'right' | 'center';
|
|
54
|
+
option?: {
|
|
55
|
+
style?: string;
|
|
56
|
+
class?: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface TableOption<T> {
|
|
61
|
+
columns: TableColumn<T>[];
|
|
62
|
+
data: T[];
|
|
63
|
+
rowId?: keyof T | ((v: T) => string);
|
|
64
|
+
initialSort?: {
|
|
65
|
+
key: string;
|
|
66
|
+
descending?: boolean;
|
|
67
|
+
};
|
|
68
|
+
pagination?: {
|
|
69
|
+
sortBy?: string;
|
|
70
|
+
descending?: boolean;
|
|
71
|
+
page?: number;
|
|
72
|
+
rowsPerPage?: number;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface MoreActionOption {
|
|
77
|
+
label: string;
|
|
78
|
+
class?: string;
|
|
79
|
+
disable?: boolean | string;
|
|
80
|
+
hide?: boolean;
|
|
81
|
+
callback: () => Promise<unknown>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface MapCoordinate {
|
|
85
|
+
lat: number;
|
|
86
|
+
lng: number;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface MapPolygon {
|
|
90
|
+
paths: MapCoordinate[];
|
|
91
|
+
strokeColor?: string;
|
|
92
|
+
fillColor?: string;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface MarkerChangeEvent {
|
|
96
|
+
index: number;
|
|
97
|
+
position: MapCoordinate;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface PolygonChangeEvent {
|
|
101
|
+
index: number;
|
|
102
|
+
path: MapCoordinate[];
|
|
103
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ref } from 'vue';
|
|
2
|
+
|
|
3
|
+
export const useLoading = () => {
|
|
4
|
+
const isLoading = ref(false);
|
|
5
|
+
|
|
6
|
+
function startLoading() {
|
|
7
|
+
isLoading.value = true;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function stopLoading() {
|
|
11
|
+
isLoading.value = false;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* A more advance way that automatically calls startLoading() and stopLoading() based on callback
|
|
16
|
+
* @param cb Callback that performs asynchronous task.
|
|
17
|
+
* @returns Returns generic result based on passed callback.
|
|
18
|
+
*/
|
|
19
|
+
async function startAsyncCall<T>(cb: () => Promise<T>): Promise<T> {
|
|
20
|
+
try {
|
|
21
|
+
startLoading();
|
|
22
|
+
return await cb();
|
|
23
|
+
} finally {
|
|
24
|
+
stopLoading();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* A more advance way that automatically calls startLoading() and stopLoading() based on callback
|
|
30
|
+
* @param cb Callback that performs asynchronous task.
|
|
31
|
+
* @returns Returns generic result based on passed callback. Throw error if have
|
|
32
|
+
*/
|
|
33
|
+
async function startAsyncCallWithErr<T>(cb: () => Promise<T>): Promise<T> {
|
|
34
|
+
try {
|
|
35
|
+
startLoading();
|
|
36
|
+
return await cb();
|
|
37
|
+
} catch(e) {
|
|
38
|
+
throw e;
|
|
39
|
+
} finally {
|
|
40
|
+
stopLoading();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
isLoading,
|
|
46
|
+
startLoading,
|
|
47
|
+
stopLoading,
|
|
48
|
+
startAsyncCall,
|
|
49
|
+
startAsyncCallWithErr
|
|
50
|
+
};
|
|
51
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { computed, ref } from 'vue';
|
|
2
|
+
|
|
3
|
+
export default (initialValue?: string) => {
|
|
4
|
+
const searchKey = ref(initialValue || '');
|
|
5
|
+
|
|
6
|
+
function format(text: unknown) {
|
|
7
|
+
return `${text}`.trim().toLowerCase();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const formattedSearchKey = computed(() => format(searchKey.value));
|
|
11
|
+
|
|
12
|
+
function filter(arr: unknown[]): boolean {
|
|
13
|
+
if (!formattedSearchKey.value) return true;
|
|
14
|
+
return arr.some((el) => format(el).includes(formattedSearchKey.value));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return { searchKey, filter };
|
|
18
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Day from 'dayjs';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export function formatDuration(totalMinutes: number): string {
|
|
5
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
6
|
+
const minutes = totalMinutes % 60;
|
|
7
|
+
return `${hours}h ${minutes.toString().padStart(2, '0')}m`;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export class DateRange {
|
|
11
|
+
private range: {
|
|
12
|
+
start: string;
|
|
13
|
+
end: string;
|
|
14
|
+
};
|
|
15
|
+
constructor(dateRange: { start: string; end: string }) {
|
|
16
|
+
this.range = dateRange;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private format(string: string, format?: string) {
|
|
20
|
+
return Day(string).format(format || 'DD/MM/YYYY');
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
formatWith(format?: string, divider?: string) {
|
|
24
|
+
const start = this.format(this.range.start, format);
|
|
25
|
+
const end = this.format(this.range.end, format);
|
|
26
|
+
return `${start} ${divider || '-'} ${end}`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|