| 1 |
"use strict";(globalThis.webpackChunkbooktics=globalThis.webpackChunkbooktics||[]).push([[794],{87794:(e,t,a)=>{a.r(t),a.d(t,{default:()=>j});var o=a(51609),r=a(47143),n=a(86087),l=a(22564),s=a(84087),i=a(40309),c=a(74353),d=a.n(c),m=a(11534);const{__}=wp?.i18n||{},b=[{value:"current_week",label:__("Current Week","booktics")},{value:"last_week",label:__("Last Week","booktics")},{value:"current_month",label:__("Current Month","booktics")},{value:"last_month",label:__("Last Month","booktics")},{value:"last_three_months",label:__("Last 3 Month","booktics")}],p=e=>{const t=d()();let a,o;switch(e){case"current_week":a=t.startOf("week").add(1,"day"),o=a.add(6,"day");break;case"last_week":a=t.startOf("week").add(1,"day").subtract(7,"day"),o=a.add(6,"day");break;case"current_month":default:a=t.startOf("month"),o=t.endOf("month");break;case"last_month":const e=t.subtract(1,"month");a=e.startOf("month"),o=e.endOf("month");break;case"last_three_months":a=t.subtract(3,"month").startOf("month"),o=t.subtract(1,"month").endOf("month")}return{start_date:a.format("YYYY-MM-DD"),end_date:o.format("YYYY-MM-DD")}},g=(e,t,a,o,r)=>({label:e,data:t,borderColor:a,pointBackgroundColor:a,pointBorderColor:"#fff",pointBorderWidth:2,pointRadius:6,tension:.4,fill:!0,backgroundColor:e=>{const{ctx:t,chartArea:a}=e.chart;if(a)return((e,t,a,o)=>{const r=e.createLinearGradient(0,t.top,0,t.bottom);return r.addColorStop(0,a),r.addColorStop(1,o),r})(t,a,o,r)}}),h=()=>{const{setDashboardState:e}=(0,r.useDispatch)(i.dashboard),{topCards:t,booking_reports:a}=(0,r.useSelect)(e=>e(i.dashboard).getDashboardState()),o=async(t="current_month")=>{let o={...a};try{e({booking_reports:{...o,loading:!0}});const a={booking_reports:{...p(t),filter_option:t}},r=await m.A.dashboard.getDashboardReports(a);if(r.success){const{booking_reports:e}=r?.data||{},a=Object.keys(e),n=a.map(t=>e[t].completed),l=a.map(t=>e[t].cancel);o={labels:a,completedData:n,canceledData:l,filteredKey:t}}}catch(e){console.error(e)}finally{e({booking_reports:{...o,loading:!1}})}},n=async()=>{const a="current_month",o=p(a),r={filter_option:a,...o},n=["total_bookings","total_revenue","total_customers"],l=n.reduce((e,t)=>(e[t]=r,e),{});let s={...t};try{s=n.reduce((e,t)=>(e[t]={...s?.[t],loading:!0},e),{}),e({topCards:s});const t=await m.A.dashboard.getDashboardReports(l);t.success&&(s=n.reduce((e,o)=>(e[o]={...s?.[o],filteredKey:a,...t.data?.[o]},e),{}))}catch(e){console.error("Failed to fetch dashboard reports:",e)}finally{s=n.reduce((e,t)=>(e[t]={...s?.[t],loading:!1},e),{}),e({topCards:s})}},l=async()=>{try{const t=d()().format("YYYY-MM-DD"),a=await m.A.appointment.getAppointments({date_from:t});a.success&&e({upcomingBookings:a?.data?.items})}catch(t){console.error(t),e({upcomingBookings:[]})}};return{fetchSingleCardData:async(a,o="current_month")=>{let r={...t};const n={[a]:{...p(o),filter_option:o}};try{r={...r,[a]:{...r?.[a],loading:!0}},e({topCards:r});const t=await m.A.dashboard.getDashboardReports(n);return t.success&&(r={...r,[a]:{...r?.[a],filteredKey:o,...t.data?.[a]}}),t}catch(e){throw console.error(`Error fetching ${a}:`,e),e}finally{r={...r,[a]:{...r?.[a],loading:!1}},e({topCards:r})}},getBookingReport:o,loadBookingData:async()=>{try{await Promise.all([n(),o(),l()])}catch(e){console.error("Error loading booking data:",e)}}}},u=({token:e,data:t={}})=>{const{loading:a,filteredKey:r="current_month"}=t,{fetchSingleCardData:n,getBookingReport:s}=h();return(0,o.createElement)(l.SelectInput,{className:"bkt-overview-filter",defaultValue:"current_month",value:r,onChange:t=>{"booking_report"===e?s(t):n(e,t)},options:b,disabled:a})};var k=a(59e3);const w=(0,k.A)(l.Flex)` |
| 103 |
`,{CaretDownOutlined:_,CaretUpOutlined:x}=window?.booktics?.libraryIcons||{},y=({data:e={}})=>{if(!e?.trend||"neutral"===e?.trend)return;const t="positive"===e?.trend;return(0,o.createElement)(E,{isPositive:t,size:0},e?.percentage_changed,"%",t?(0,o.createElement)(x,null):(0,o.createElement)(_,null))},D=()=>{const{settingsData:e,dashboardData:t}=(0,r.useSelect)(e=>({settingsData:e(i.settings).getSettingsState(),dashboardData:e(i.dashboard).getDashboardState()})),a=t?.topCards||{},s=(0,n.useMemo)(()=>e=>e.split("_").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),[]);return(0,o.createElement)(l.Row,{gutter:[20,20]},Object.entries(a).map(([t,a])=>{var r;return(0,o.createElement)(l.Col,{xs:24,md:12,xl:8,key:t},(0,o.createElement)(f,{loading:a?.loading},(0,o.createElement)(l.Flex,{vertical:!0,justify:"space-between",className:"bkt-h-100"},(0,o.createElement)(l.Flex,{justify:"space-between",gap:"small"},(0,o.createElement)(l.Title,{level:4,text:s(t)}),(0,o.createElement)(u,{token:t,data:a})),(0,o.createElement)(l.Space,{className:"bkt-overview-info",size:"small"},(0,o.createElement)(l.Title,{className:"bkt-overview-card-data",level:3,text:"total_revenue"===t?(0,o.createElement)(l.Pricing,{settings:e,price:a?.total}):null!==(r=a?.total)&&void 0!==r?r:0}),(0,o.createElement)(y,{data:a})))))}))};var C=a(44731),S=a(70106);S.t1.register(S.No,S.PP,S.kc,S.FN,S.dN,S.m_,S.s$);const A={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"top",labels:{usePointStyle:!0,padding:20}}},scales:{x:{grid:{display:!1}},y:{min:0,grid:{color:"rgba(0,0,0,0.05)"}}}},N=()=>{const{booking_reports:e}=(0,r.useSelect)(e=>e(i.dashboard).getDashboardState()),{labels:t,completedData:a,canceledData:n,loading:s}=e,c={labels:t,datasets:[g("Completed",a,"#009959","rgba(229, 240, 255, 0.5)","rgba(229, 240, 255, 0)"),g("Canceled",n,"#FF8694","rgba(252, 205, 210, 0.5)","rgba(252, 205, 210, 0)")]};return(0,o.createElement)(l.Spin,{spinning:s},(0,o.createElement)("div",{className:"bkt-overview-report-chart"},(0,o.createElement)(C.N1,{data:c,options:A})))},{__:O}=wp?.i18n||{},B=()=>{const{booking_reports:e}=(0,r.useSelect)(e=>e(i.dashboard).getDashboardState());return(0,o.createElement)(v,null,(0,o.createElement)(l.Flex,{vertical:!0,gap:"small"},(0,o.createElement)(l.Flex,{justify:"space-between",gap:"small"},(0,o.createElement)(l.Title,{level:4,text:O("Booking report","booktics")}),(0,o.createElement)(u,{token:"booking_report",data:e}))),(0,o.createElement)("div",{className:"bkt-overview-report-chart"},(0,o.createElement)(N,null)))};var F=a(47767),Y=a(22639);const{__:M}=wp.i18n,{List:R}=window?.booktics?.library||{},{ArrowRightOutlined:P}=window?.booktics?.libraryIcons||{},z=({loading:e})=>{const t=(0,F.Zp)(),{upcomingBookings:a}=(0,r.useSelect)(e=>e(i.dashboard).getDashboardState());return(0,o.createElement)(v,null,(0,o.createElement)(l.Flex,{vertical:!0,className:"bkt-h-100"},(0,o.createElement)(l.Title,{level:4,text:M("Upcoming Bookings","booktics")}),(0,o.createElement)(l.Divider,null),(0,o.createElement)(R,{className:"bkt-upcoming-booking-lists",itemLayout:"horizontal",dataSource:a,loading:!a,renderItem:e=>(0,o.createElement)(R.Item,null,(0,o.createElement)(R.Item.Meta,{title:e?.date,description:(0,o.createElement)(l.Space,{size:3},M("@","booktics"),e?.start_time,M("to","booktics"),e?.end_time)}),(0,o.createElement)(l.Flex,{vertical:!0,className:"bkt-appointment-title",justify:"flex-start"},(0,o.createElement)(l.Text,{text:e?.service?.title}),(0,o.createElement)(l.Text,{text:`Simplified with ${e?.customer?.first_name} & ${e?.team_member?.display_name}`})))}),(0,o.createElement)(l.PrimaryOutlinedButton,{block:!0,onClick:()=>t(Y.yq),icon:(0,o.createElement)(P,null),text:M("View All Bookings","booktics"),iconPosition:"end",size:"middle",className:"bkt-upcoming-booking-button"})))},{__:T}=wp?.i18n||{},j=()=>{const{loadBookingData:e}=h(),{resetDashboard:t}=(0,r.useDispatch)(i.dashboard);return(0,n.useEffect)(()=>(e(),()=>t()),[]),(0,o.createElement)(o.Fragment,null,(0,o.createElement)(s.A,{title:T("Overview","booktics")}),(0,o.createElement)(l.ResponsiveContainer,null,(0,o.createElement)(w,{vertical:!0,gap:"middle",className:"bkt-overview-flex"},(0,o.createElement)(D,null),(0,o.createElement)(l.Row,{gutter:[20,20]},(0,o.createElement)(l.Col,{xs:24,md:24,xl:14,xxl:14},(0,o.createElement)(B,null)),(0,o.createElement)(l.Col,{xs:24,md:24,xl:10,xxl:10},(0,o.createElement)(z,null))))))}}}]); |