1"use strict";(self.webpackChunkctmpharma=self.webpackChunkctmpharma||[]).push([[8325],{28325:(tt,f,c)=>{c.r(f),c.d(f,{PharmacyAdminStats:()=>Q});var m=c(74523),u=c(45564),y=c(23446),P=c(89417),C=c(68018),v=c(21413),k=c(40605),b=c(56977),l=c(65574),p=c(26478),M=c(32557),x=c(41563),w=c(61747),t=c(41360),R=c(61201),E=c(28312),D=c(62340),I=c(845),F=c(12141),j=c(9103);const $=["ordersChart"],S=["analyticsChartPerformance"],A=["analyticsChartCustomers"],T=["analyticsChartProducts"],B=["revenueChart"],L=["statusBreakdownChart"],z=["paymentBreakdownChart"],G=["chartCanvas"],U=["ticketsChart"],N=i=>({"fa-spin":i});function J(i,g){if(1&i){const n=t.RV6();t.j41(0,"li")(1,"button",31),t.bIt("click",function(){const a=t.eBV(n).$implicit,s=t.XpG(),o=t.sdS(17);return s.setDateIntervalFromPeriod(a.value),t.Njj(s.closeDropdown(o))}),t.j41(2,"span",32),t.EFF(3),t.k0s()()()}if(2&i){const n=g.$implicit,e=t.XpG();t.R7$(),t.AVh("active",e.selectedPeriod===n.value),t.R7$(),t.Y8G("ngClass","status-"+n.value),t.R7$(),t.SpI(" ",n.label," ")}}function V(i,g){if(1&i){const n=t.RV6();t.j41(0,"div",33),t.nrm(1,"i",34),t.EFF(2),t.j41(3,"button",35),t.bIt("click",function(){t.eBV(n);const a=t.XpG();return t.Njj(a.errorMessage="")}),t.k0s()()}if(2&i){const n=t.XpG();t.R7$(2),t.SpI(" ",n.errorMessage," ")}}function W(i,g){if(1&i&&(t.j41(0,"tr")(1,"td"),t.EFF(2),t.k0s(),t.j41(3,"td",83),t.EFF(4),t.k0s(),t.j41(5,"td",83),t.EFF(6),t.k0s()()),2&i){const n=g.$implicit,e=t.XpG(2);t.R7$(2),t.JRh(n.name),t.R7$(2),t.JRh(e.formatNumber(n.quantity)),t.R7$(2),t.JRh(e.formatCurrency(n.revenue))}}function X(i,g){1&i&&(t.j41(0,"tr")(1,"td",100),t.EFF(2),t.nI1(3,"translate"),t.k0s()()),2&i&&(t.R7$(2),t.JRh(t.bMT(3,1,"pharmacy.stats.noSales")))}function K(i,g){if(1&i&&(t.j41(0,"li",101)(1,"span"),t.EFF(2),t.k0s(),t.j41(3,"span",79),t.EFF(4),t.k0s()()),2&i){const n=g.$implicit,e=t.XpG(2);t.R7$(2),t.JRh(n.name),t.R7$(2),t.JRh(e.formatCurrency(n.value))}}function Y(i,g){1&i&&(t.j41(0,"li",102),t.EFF(1),t.nI1(2,"translate"),t.k0s()),2&i&&(t.R7$(),t.SpI(" ",t.bMT(2,1,"pharmacy.stats.noCategory")," "))}function q(i,g){if(1&i){const n=t.RV6();t.j41(0,"li")(1,"button",31),t.bIt("click",function(){const a=t.eBV(n).$implicit;t.XpG();const s=t.sdS(273),o=t.XpG();return o.setDateIntervalFromPeriod(a.value),t.Njj(o.closeDropdown(s))}),t.j41(2,"span",32),t.EFF(3),t.k0s()()()}if(2&i){const n=g.$implicit,e=t.XpG(2);t.R7$(),t.AVh("active",e.selectedPeriod===n.value),t.R7$(),t.Y8G("ngClass","status-"+n.value),t.R7$(),t.SpI(" ",n.label," ")}}function H(i,g){if(1&i){const n=t.RV6();t.j41(0,"div",36)(1,"div",37)(2,"div",38)(3,"div",39)(4,"div",40)(5,"div",41),t.EFF(6),t.nI1(7,"translate"),t.k0s(),t.j41(8,"div",42),t.EFF(9),t.k0s(),t.j41(10,"small",43),t.EFF(11),t.nI1(12,"translate"),t.k0s()()()(),t.j41(13,"div",38)(14,"div",39)(15,"div",40)(16,"div",41),t.EFF(17),t.nI1(18,"translate"),t.k0s(),t.j41(19,"div",44),t.EFF(20),t.k0s(),t.j41(21,"small",43),t.EFF(22),t.nI1(23,"translate"),t.k0s()()()(),t.j41(24,"div",38)(25,"div",39)(26,"div",40)(27,"div",41),t.EFF(28),t.nI1(29,"translate"),t.k0s(),t.j41(30,"div",45),t.EFF(31),t.k0s(),t.j41(32,"small",43),t.EFF(33),t.nI1(34,"translate"),t.k0s()()()(),t.j41(35,"div",38)(36,"div",39)(37,"div",40)(38,"div",41),t.EFF(39),t.nI1(40,"translate"),t.k0s(),t.j41(41,"div",46),t.EFF(42),t.k0s(),t.j41(43,"small",43),t.EFF(44),t.nI1(45,"translate"),t.k0s()()()()(),t.j41(46,"div",37)(47,"div",47)(48,"div",48)(49,"div",49)(50,"h5"),t.nrm(51,"i",50),t.EFF(52),t.nI1(53,"translate"),t.k0s()(),t.j41(54,"div",40)(55,"div",51),t.nrm(56,"canvas",null,1),t.k0s()()()(),t.j41(58,"div",47)(59,"div",48)(60,"div",49)(61,"h5"),t.nrm(62,"i",52),t.EFF(63),t.nI1(64,"translate"),t.k0s()(),t.j41(65,"div",40)(66,"div",51),t.nrm(67,"canvas",null,2),t.k0s()()()()(),t.j41(69,"div",37)(70,"div",53)(71,"div",54)(72,"div",49)(73,"h5"),t.nrm(74,"i",55),t.EFF(75),t.nI1(76,"translate"),t.k0s(),t.j41(77,"ul",56)(78,"li",57),t.EFF(79),t.nI1(80,"translate"),t.k0s()()(),t.j41(81,"div",40)(82,"div",58),t.nrm(83,"canvas",null,3),t.k0s()()()(),t.j41(85,"div",59)(86,"div",60)(87,"div",49)(88,"h5"),t.nrm(89,"i",61),t.EFF(90),t.nI1(91,"translate"),t.k0s()(),t.j41(92,"div",40)(93,"div",62)(94,"div",63)(95,"span",43),t.EFF(96),t.nI1(97,"translate"),t.k0s(),t.j41(98,"span",64),t.EFF(99),t.k0s()(),t.j41(100,"div",65),t.nrm(101,"div",66),t.k0s()(),t.j41(102,"div",62)(103,"div",63)(104,"span",43),t.EFF(105),t.nI1(106,"translate"),t.k0s(),t.j41(107,"span",67),t.EFF(108),t.k0s()(),t.j41(109,"div",65),t.nrm(110,"div",68),t.k0s()(),t.j41(111,"div",62)(112,"div",63)(113,"span",43),t.EFF(114),t.nI1(115,"translate"),t.k0s(),t.j41(116,"span",69),t.EFF(117),t.k0s()()(),t.j41(118,"div",62)(119,"div",63)(120,"span",43),t.EFF(121),t.nI1(122,"translate"),t.k0s(),t.j41(123,"span",70),t.EFF(124),t.k0s()(),t.j41(125,"div",65),t.nrm(126,"div",71),t.k0s()()()()()(),t.j41(127,"div",37)(128,"div",47)(129,"div",54)(130,"div",49)(131,"h
15"),t.nrm(132,"i",55),t.EFF(133),t.nI1(134,"translate"),t.k0s(),t.j41(135,"ul",56)(136,"li",57),t.EFF(137),t.nI1(138,"translate"),t.k0s()()(),t.j41(139,"div",40)(140,"div",58),t.nrm(141,"canvas",null,4),t.k0s()()()(),t.j41(143,"div",47)(144,"div",54)(145,"div",49)(146,"h5"),t.nrm(147,"i",55),t.EFF(148),t.nI1(149,"translate"),t.k0s(),t.j41(150,"ul",56)(151,"li",57),t.EFF(152),t.nI1(153,"translate"),t.k0s()()(),t.j41(154,"div",40)(155,"div",58),t.nrm(156,"canvas",null,5),t.k0s()()()()(),t.j41(158,"div",37)(159,"div",59)(160,"div",48)(161,"div",49)(162,"h5"),t.nrm(163,"i",72),t.EFF(164),t.nI1(165,"translate"),t.k0s()(),t.j41(166,"div",40)(167,"div",51),t.nrm(168,"canvas",null,6),t.k0s()()()(),t.j41(170,"div",59)(171,"div",48)(172,"div",49)(173,"h5"),t.nrm(174,"i",73),t.EFF(175),t.nI1(176,"translate"),t.k0s()(),t.j41(177,"div",40)(178,"div",51),t.nrm(179,"canvas",null,7),t.k0s()()()(),t.j41(181,"div",59)(182,"div",74)(183,"div",48)(184,"div",49)(185,"h5"),t.nrm(186,"i",75),t.EFF(187),t.nI1(188,"translate"),t.k0s()(),t.j41(189,"div",40)(190,"div",51),t.nrm(191,"canvas",null,8),t.k0s()()()()()(),t.j41(193,"div",37)(194,"div",76)(195,"div",60)(196,"div",49)(197,"h5"),t.nrm(198,"i",77),t.EFF(199),t.nI1(200,"translate"),t.k0s()(),t.j41(201,"div",40)(202,"div",78)(203,"span",43),t.EFF(204),t.nI1(205,"translate"),t.k0s(),t.j41(206,"span",79),t.EFF(207),t.k0s()(),t.j41(208,"div",78)(209,"span",43),t.EFF(210),t.nI1(211,"translate"),t.k0s(),t.j41(212,"span",79),t.EFF(213),t.k0s()(),t.j41(214,"div",80)(215,"span",43),t.EFF(216),t.nI1(217,"translate"),t.k0s(),t.j41(218,"span",67),t.EFF(219),t.k0s()(),t.j41(220,"div",81)(221,"table",82)(222,"thead")(223,"tr")(224,"th"),t.EFF(225),t.nI1(226,"translate"),t.k0s(),t.j41(227,"th",83),t.EFF(228),t.nI1(229,"translate"),t.k0s(),t.j41(230,"th",83),t.EFF(231),t.nI1(232,"translate"),t.k0s()()(),t.j41(233,"tbody"),t.DNE(234,W,7,3,"tr",24)(235,X,4,3,"tr",84),t.k0s()()()()()(),t.j41(236,"div",76)(237,"div",60)(238,"div",49)(239,"h5"),t.nrm(240,"i",85),t.EFF(241),t.nI1(242,"translate"),t.k0s()(),t.j41(243,"div",40)(244,"ul",86),t.DNE(245,K,5,2,"li",87)(246,Y,3,3,"li",88),t.k0s()()()()(),t.j41(247,"div",37)(248,"div",89)(249,"div",54)(250,"div",49)(251,"h5"),t.nrm(252,"i",90),t.EFF(253),t.nI1(254,"translate"),t.k0s(),t.j41(255,"li",91)(256,"button",92),t.nrm(257,"i",90),t.EFF(258),t.nI1(259,"translate"),t.k0s()()(),t.j41(260,"div",40)(261,"div",58),t.nrm(262,"canvas",null,9),t.k0s()()()()(),t.j41(264,"div",93)(265,"div",89)(266,"div",54)(267,"div",40)(268,"div",94)(269,"label",95),t.EFF(270),t.nI1(271,"translate"),t.k0s(),t.j41(272,"div",18,0)(274,"button",96),t.bIt("click",function(){t.eBV(n);const a=t.XpG();return t.Njj(a.toggleStatusDropdown())}),t.j41(275,"span",20),t.nrm(276,"i",21),t.EFF(277),t.k0s(),t.nrm(278,"i",22),t.k0s(),t.j41(279,"ul",23),t.DNE(280,q,4,4,"li",24),t.k0s()(),t.j41(281,"div",97)(282,"div",98),t.nrm(283,"i",99),t.EFF(284),t.nI1(285,"translate"),t.k0s()()()()()()()()}if(2&i){let n;const e=t.XpG();t.R7$(6),t.JRh(t.bMT(7,71,"pharmacy.stats.revenue")),t.R7$(3),t.JRh(e.formatCurrency(e.ordersSummary.revenue)),t.R7$(2),t.Lme("",t.bMT(12,73,"pharmacy.stats.netPharmacy")," ",e.formatCurrency(null!==(n=e.ordersSummary.pharmacyNetRevenue)&&void 0!==n?n:e.ordersSummary.netRevenue),""),t.R7$(6),t.JRh(t.bMT(18,75,"pharmacy.stats.taxesCollected")),t.R7$(3),t.JRh(e.formatCurrency(e.ordersSummary.taxAmount)),t.R7$(2),t.Lme("",t.bMT(23,77,"pharmacy.stats.discounts")," ",e.formatCurrency(e.ordersSummary.discountAmount),""),t.R7$(6),t.JRh(t.bMT(29,79,"pharmacy.stats.averageValue")),t.R7$(3),t.JRh(e.formatCurrency(e.ordersSummary.averageOrderValue)),t.R7$(2),t.Lme("",t.bMT(34,81,"pharmacy.stats.totalOrders")," ",e.formatNumber(e.ordersSummary.total),""),t.R7$(6),t.JRh(t.bMT(40,83,"pharmacy.stats.logistics")),t.R7$(3),t.JRh(e.formatCurrency(e.ordersSummary.shippingAmount)),t.R7$(2),t.Lme("",t.bMT(45,85,"pharmacy.stats.growth")," ",e.formatPercentage(e.ordersSummary.growthRate),""),t.R7$(8),t.SpI(" ",t.bMT(53,87,"pharmacy.stats.statusBreakdown")," "),t.R7$(11),t.SpI(" ",t.bMT(64,89,"pharmacy.stats.paymentBreakdown")," "),t.R7$(12),t.JRh(t.bMT(76,91,"pharmacy.stats.trendsAnalysis")),t.R7$(4),t.SpI(" ",t.bMT(80,93,"pharmacy.stats.performance")," "),t.R7$(11),t.JRh(t.bMT(91,95,"pharmacy.stats.kpiKey")),t.R7$(6),t.JRh(t.bMT(97,97,"pharmacy.stats.conversionRate")),t.R7$(3),t.SpI("",e.analyticsDataPerformance.conversionRate,"%"),t.R7$(2),t.xc7("width",e.analyticsDataPerformance.conversionRate,"%"),t.R7$(4),t.JRh(t.bMT(106,99,"pharmacy.stats.customerSatisfaction")),t.R7$(3),t.SpI("",e.analyticsDataPerformance.customerSatisfaction,"%"),t.R7$(2),t.xc7("width",e.analyticsDataPerformance.customerSatisfaction,"%"),t.R7$(4),t.JRh(t.bMT(115,101,"pharmacy.stats.avgResponseTime")),t.R7$(3),t.SpI("",e.analyticsDataPerformance.avgResponseTime,"h"),t.R7$(4),t.JRh(t.bMT(122,103,"pharmacy.stats.retentionRate")),t.R7$(3),t.SpI("",e.analyticsDataPerformance.retentionRate,"%"),t.R7$(2),t.xc7("width",e.analyticsDataPerformance.retentionRate,"%"),t.R7$(7),t.JRh(t.bMT(134,105,"pharmacy.stats.trendsAnalysis")),t.R7$(4),t.SpI(" ",t.bMT(138,107,"pharmacy.stats.customers")," "),t.R7$(11),t.JRh(t.bMT(149,109,"ph
1armacy.stats.trendsAnalysis")),t.R7$(4),t.SpI(" ",t.bMT(153,111,"pharmacy.stats.products")," "),t.R7$(12),t.SpI(" ",t.bMT(165,113,"pharmacy.stats.ordersEvolution")," "),t.R7$(11),t.SpI(" ",t.bMT(176,115,"pharmacy.stats.revenueEvolution")," "),t.R7$(12),t.SpI(" ",t.bMT(188,117,"pharmacy.stats.ticketsEvolution")," "),t.R7$(12),t.JRh(t.bMT(200,119,"pharmacy.stats.topProducts")),t.R7$(5),t.JRh(t.bMT(205,121,"pharmacy.stats.itemsSold")),t.R7$(3),t.JRh(e.formatNumber(e.productInsights.totalProductsSold)),t.R7$(3),t.JRh(t.bMT(211,123,"pharmacy.stats.uniqueProducts")),t.R7$(3),t.JRh(e.formatNumber(e.productInsights.uniqueProducts)),t.R7$(3),t.JRh(t.bMT(217,125,"pharmacy.stats.productRevenue")),t.R7$(3),t.JRh(e.formatCurrency(e.productInsights.totalRevenue)),t.R7$(6),t.JRh(t.bMT(226,127,"pharmacy.stats.colProduct")),t.R7$(3),t.JRh(t.bMT(229,129,"pharmacy.stats.colQty")),t.R7$(3),t.JRh(t.bMT(232,131,"pharmacy.stats.colRevenue")),t.R7$(3),t.Y8G("ngForOf",e.productInsights.topProducts),t.R7$(),t.Y8G("ngIf",0===e.productInsights.topProducts.length),t.R7$(6),t.JRh(t.bMT(242,133,"pharmacy.stats.dominantCategories")),t.R7$(4),t.Y8G("ngForOf",e.topCategories),t.R7$(),t.Y8G("ngIf",0===e.topCategories.length),t.R7$(7),t.Lme(" ",t.bMT(254,135,"pharmacy.stats.performanceLabel")," - ",e.getPeriodLabel(),""),t.R7$(5),t.SpI(" ",t.bMT(259,137,"pharmacy.stats.chart")," "),t.R7$(12),t.JRh(t.bMT(271,139,"pharmacy.stats.periodLabel")),t.R7$(2),t.AVh("open",e.isPeriodDropdownOpen),t.R7$(5),t.SpI(" ",e.getPeriodLabel(e.selectedPeriod)," "),t.R7$(),t.AVh("rotated",e.isPeriodDropdownOpen),t.R7$(),t.AVh("show",e.isPeriodDropdownOpen),t.R7$(),t.Y8G("ngForOf",e.optionsPeriodDatas),t.R7$(4),t.Lme(" ",t.bMT(285,141,"pharmacy.stats.analysisBy")," ",e.getXAxisLabel().toLowerCase()," ")}}l.t1.register(...l.$L);let Q=(()=>{class i{constructor(n,e,a,s,o,r,h,d){this.auth=n,this.apiService=e,this.loadingService=a,this.chatService=s,this.fb=o,this.router=r,this.notify=h,this.translate=d,this.ordersChartData={labels:[],datasets:[]},this.revenueChartData={labels:[],datasets:[]},this.ticketsChartData={labels:[],datasets:[]},this.statusBreakdownData={labels:[],data:[]},this.paymentBreakdownData={labels:[],data:[]},this.destroy$=new v.B,this.refreshTimer$=(0,k.Y)(3e5),this.namespace="internal_messaging",this.isConnected=!1,this.errorMessage="",this.lastUpdated=new Date,this.analyticsDataPerformance={conversionRate:0,customerSatisfaction:0,avgResponseTime:0,retentionRate:0},this.analyticsDataCustomers={conversionRate:0,customerSatisfaction:0,avgResponseTime:0,retentionRate:0},this.analyticsDataProducts={conversionRate:0,customerSatisfaction:0,avgResponseTime:0,retentionRate:0},this.ordersSummary={total:0,revenue:0,netRevenue:0,pharmacyNetRevenue:0,platformNetRevenue:0,taxAmount:0,discountAmount:0,shippingAmount:0,averageOrderValue:0,growthRate:0},this.statsCurrency=null,this.productInsights={totalProductsSold:0,uniqueProducts:0,totalRevenue:0,averageItemsPerOrder:0,topProducts:[]},this.topCategories=[],this.dateStart=new Date(Date.now()-6048e5),this.dateEnd=new Date,this.selectedPeriod="30d",this.optionsPeriodDatas=p.L.getPeriodOptions(),this.periodType="day",this.isLoading=!1,this.periodStats=[],this.analysticsLabels=["performance","customers","products"],this.loadingService.isLoading$.subscribe(_=>{this.isLoading=_})}ngOnInit(){var n=this;this.auth.userDetailsLoaded$.pipe((0,b.Q)(this.destroy$)).subscribe(function(){var e=(0,m.A)(function*(a){a&&(n.userDetail=n.auth.getUserDetails(),n.setDateIntervalFromPeriod(n.selectedPeriod))});return function(a){return e.apply(this,arguments)}}()),this.refreshTimer$.pipe((0,b.Q)(this.destroy$)).subscribe(()=>{this.refreshDashboard()})}initializeDashboard(){var n=this;return(0,m.A)(function*(){n.isLoading=!0;try{yield Promise.all([n.loadAllDashboardData()])}catch(e){console.error("\u274c Erreur initialisation dashboard:",e),n.errorMessage=n.translate.instant("pharmacy.stats.errorLoading")}finally{n.isLoading=!1}})()}refreshDashboard(){var n=this;return(0,m.A)(function*(){n.isLoading=!0;try{yield n.loadAllDashboardData()}catch(e){console.error("\u274c Erreur refresh dashboard:",e)}finally{n.isLoading=!1}})()}setupCharts(){setTimeout(()=>{try{this.chartCanvas?.nativeElement&&this.renderMainStatsChart(),(this.analyticsChartPerformance?.nativeElement||this.analyticsChartCustomers?.nativeElement||this.analyticsChartProducts?.nativeElement)&&this.renderAnalyticsChart(),this.revenueChart?.nativeElement&&this.renderRevenueChart(),this.ticketsChart?.nativeElement&&this.renderTicketsChart(),this.statusBreakdownChart?.nativeElement&&this.renderStatusBreakdownChart(),this.paymentBreakdownChart?.nativeElement&&this.renderPaymentBreakdownChart(),this.ordersChart?.nativeElement&&this.renderOrdersChart()}
1catch(n){console.error("\u274c Erreur lors du setup des charts:",n)}},100)}setDateIntervalFromPeriod(n){var e=this;return(0,m.A)(function*(){e.loadingService.setLoading(!0),e.isPeriodDropdownOpen=!1,e.selectedPeriod=p.L.normalizePeriod(n);const a=p.L.getPeriodRange(e.selectedPeriod,!0);"all"!==e.selectedPeriod||a.start||a.end?(e.dateStart=a.start??new Date(Date.now()-2592e6),e.dateEnd=a.end??new Date):(e.dateStart=null,e.dateEnd=null),yield e.initializeDashboard(),e.loadingService.setLoading(!1)})()}closeDropdown(n){try{const e=n?.nativeElement||n;e&&new window.bootstrap.Dropdown(e).hide()}catch{}}toggleStatusDropdown(){this.isPeriodDropdownOpen=!this.isPeriodDropdownOpen}getPeriodLabel(n){return p.L.getPeriodLabel(n||this.selectedPeriod)}getPeriodValue(n){return p.L.normalizePeriod(n)}closeDropdownsOnOutsideClick(n){n.target.closest(".custom-dropdown")||(this.isPeriodDropdownOpen=!1)}ngAfterViewInit(){this.auth.getUserDetails()&&this.loadAllDashboardData()}loadAllDashboardData(){var n=this;return(0,m.A)(function*(){console.log("\u{1f504} Chargement des donn\xe9es dashboard");const e=yield n.auth.getRealToken(),a=n.auth.getUid();if(!e||!a)return void console.error("\u274c Token ou UID manquant");const s=new M.Lr({Authorization:`Bearer ${e}`,Accept:"application/json","Content-Type":"application/json"});try{const o=[n.loadOrdersStats(s,a,n.dateStart,n.dateEnd),n.loadChartData(s,a,n.dateStart,n.dateEnd),n.loadAnalyticsData("performance"),n.loadAnalyticsData("customers"),n.loadAnalyticsData("products")];yield Promise.all(o),console.log("\u2705 Donn\xe9es charg\xe9es, initialisation des graphiques"),console.log("\u{1f4ca} Period stats:",n.periodStats),console.log("\u{1f4c8} Orders chart data:",n.ordersChartData),setTimeout(()=>{n.setupCharts()},50),n.lastUpdated=new Date}catch(o){throw console.error("\u274c Erreur chargement donn\xe9es:",o),o}})()}loadOrdersStats(n,e,a,s){var o=this;return(0,m.A)(function*(){try{const r=yield o.apiService.post("pharmacy-management/dashboard/orders-stats",{uid:e,dateStart:a,dateEnd:s,period:o.selectedPeriod},n).toPromise();r&&!r.error&&(o.periodStats=r.periodStats||[],o.periodType=r.periodType||"month",o.ordersSummary={total:r.data?.total||0,revenue:r.data?.revenue||0,netRevenue:r.data?.netRevenue||0,pharmacyNetRevenue:r.data?.pharmacyNetRevenue||0,platformNetRevenue:r.data?.platformNetRevenue||0,taxAmount:r.data?.taxAmount||0,discountAmount:r.data?.discountAmount||0,shippingAmount:r.data?.shippingAmount||0,averageOrderValue:r.data?.averageOrderValue||0,growthRate:r.data?.growthRate||0},r.currency&&(o.statsCurrency=r.currency),o.statusBreakdownData=o.buildBreakdownDataset(r.statusBreakdown||{},h=>o.getOrderStatusLabel(h)),o.paymentBreakdownData=o.buildBreakdownDataset(r.paymentBreakdown||{},h=>o.getPaymentMethodLabel(h)))}catch(r){console.error("Erreur chargement stats commandes:",r)}})()}loadChartData(n,e,a,s){var o=this;return(0,m.A)(function*(){try{const r=yield o.apiService.post("pharmacy-management/dashboard/charts-data",{uid:e,dateStart:a,dateEnd:s,period:o.selectedPeriod},n).toPromise();r&&!r.error&&(o.ordersChartData=r.data.ordersChart||{labels:[],datasets:[]},o.revenueChartData=r.data.revenueChart||{labels:[],datasets:[]},o.ticketsChartData=r.data.ticketsChart||{labels:[],datasets:[]},r.data.currency&&(o.statsCurrency=r.data.currency))}catch(r){console.error("Erreur chargement donn\xe9es graphiques:",r)}})()}loadAnalyticsData(n){var e=this;return(0,m.A)(function*(){const a=yield e.auth.getRealToken(),s=e.auth.getUid();if(!a||!s)return;const o=new M.Lr({Authorization:`Bearer ${a}`,Accept:"application/json","Content-Type":"application/json"});try{const r=yield e.apiService.post(`pharmacy-management/analytics/${n}`,{uid:s,dateStart:e.dateStart,dateEnd:e.dateEnd,period:e.selectedPeriod},o).toPromise();if(r&&!r.error)switch(n){case"performance":e.analyticsDataPerformance=r.data,e.dataFetchsPerformance=r.chartData??[];break;case"customers":e.analyticsDataCustomers=r.data,e.dataFetchsCustomers=r.chartData??[];break;case"products":e.analyticsDataProducts=r.data,e.dataFetchsProducts=r.chartData??[],e.productInsights={totalProductsSold:r.data?.totalProductsSold||0,uniqueProducts:r.data?.uniqueProducts||0,totalRevenue:r.data?.totalRevenue||0,averageItemsPerOrder:r.data?.averageItemsPerOrder||0,topProducts:r.data?.topProducts||[],currency:r.data?.currency},e.topCategories=r.additionalStats?.topCategories||[],r.data?.currency&&(e.statsCurrency=r.data.currency)}}catch{}})()}buildBreakdownDataset(n,e){const a=Object.entries(n||{}).map(([s,o])=>({key:s,value:Number(o||0)})).filter(s=>Number.isFinite(s.value)&&s.value>0).sort((s,o)=>o.value-s.value);return{labels:a.map(s=>e(s.key)),data:a.map(s=>s.value)}}getOrderStatusLabel(n){return{pending:this.translate.instant("pharmacy.stats.statusPending"),confirmed:this.translate.instant("pharmacy.stats.statusConfirmed"),prescription_pending:this.translate.instant("pharmacy.stats.statusPrescriptionPending"),preparing:this.translate.instant("pharmacy.stats.statusPreparing"),ready_for_pickup:this.translate.instant("pharmacy.stats.statusReady"),out_for_delivery:this.translate.instant("pharmacy.stats.statusOutForDelivery"),delivered:this.translate.instant("pharmacy.stats.statusDelivered"),completed:this.translate.instant("pharmacy.stats.statusCompleted"),cancelled:this.translate.instant("pharmacy.stats.statusCancelled"),refunded:this.translate.instant("pharmacy.stats.statusRefunded"),returned:this.translate.instant("pharmacy.stats.statusReturned")}[n]||n||this.translate.instant("pharmacy.stats.statusUnknown")}getPaymentMethodLabel(n){return{card:this.translate.instant("pharmacy.stats.payCard"),paypal:this.translate.instant("pharmacy.stats.payPaypal"),bank_transfer:this.translate.instant("pharmacy.stats.payBankTransfer"),cash:this.translate.instant("pharmacy.stats.payCash"),insurance:this.translate.instant("pharmacy.stats.payInsurance")}[n]||n||this.translate.instant("pharmacy.stats.statusUnknown")}formatCurrency(n){return p.L.formatPharmacyMonetaryAmount(n,this.statsCurrency||{code:"EUR"})}formatNumber(n){return new Intl.NumberFormat("fr-FR").format(n)}formatPercentage(n){return new Intl.NumberFormat("fr-FR",{style:"percent",minimumFractionDigits:1,maximumFractionDigits:1}).format(n/100)}getGrowthClass(n){return n>0?"text-success":n<0?"text-danger":"text-muted"}getGrowthIcon(n){return n>0?"fas fa-arrow-up":n<0?"fas fa-arrow-down":"fas fa-minus"}renderStatusBreakdownChart(){if(!this.statusBreakdownChart?.nativeElement||!this.statusBreakdownData.labels.length)return;const n=this.statusBreakdownChart.nativeElement.getContext("2d");
1n&&(this.statusBreakdownChartInstance&&this.statusBreakdownChartInstance.destroy(),this.statusBreakdownChartInstance=new l.t1(n,{type:"doughnut",data:{labels:this.statusBreakdownData.labels,datasets:[{data:this.statusBreakdownData.data,backgroundColor:["#3b82f6","#6366f1","#22c55e","#f59e0b","#ef4444","#94a3b8","#14b8a6"],borderWidth:0}]},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom"}}}}))}renderPaymentBreakdownChart(){if(!this.paymentBreakdownChart?.nativeElement||!this.paymentBreakdownData.labels.length)return;const n=this.paymentBreakdownChart.nativeElement.getContext("2d");n&&(this.paymentBreakdownChartInstance&&this.paymentBreakdownChartInstance.destroy(),this.paymentBreakdownChartInstance=new l.t1(n,{type:"bar",data:{labels:this.paymentBreakdownData.labels,datasets:[{label:`${this.translate.instant("pharmacy.stats.amounts")} (${this.statsCurrency?.code||"EUR"})`,data:this.paymentBreakdownData.data,backgroundColor:"rgba(34, 197, 94, 0.75)",borderColor:"#22c55e",borderWidth:1}]},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1}},scales:{y:{beginAtZero:!0,ticks:{callback:e=>this.formatCurrency(Number(e||0))}}}}}))}renderTicketsChart(){if(!this.ticketsChart?.nativeElement||!this.ticketsChartData.labels?.length)return;const n=this.ticketsChart.nativeElement.getContext("2d");n&&(this.ticketsChartInstance&&this.ticketsChartInstance.destroy(),this.ticketsChartInstance=new l.t1(n,{type:"doughnut",data:this.ticketsChartData,options:{responsive:!0,maintainAspectRatio:!1,plugins:{title:{display:!0,text:this.translate.instant("pharmacy.stats.chartTicketsTitle")},legend:{display:!0,position:"bottom"}}}}))}renderOrdersChart(){if(!this.ordersChart?.nativeElement||!this.ordersChartData.labels?.length)return;const n=this.ordersChart.nativeElement.getContext("2d");n&&(this.ordersChartInstance&&this.ordersChartInstance.destroy(),this.ordersChartInstance=new l.t1(n,{type:"line",data:this.ordersChartData,options:{responsive:!0,maintainAspectRatio:!1,plugins:{title:{display:!0,text:this.translate.instant("pharmacy.stats.ordersEvolution")},legend:{display:!0,position:"top"}},scales:{y:{beginAtZero:!0,title:{display:!0,text:this.translate.instant("pharmacy.stats.nbOrders")}},x:{title:{display:!0,text:this.translate.instant("pharmacy.stats.periodAxis")}}}}}))}renderRevenueChart(){if(!this.revenueChart?.nativeElement||!this.revenueChartData.labels?.length)return;const n=this.revenueChart.nativeElement.getContext("2d");if(!n)return;const e=this.statsCurrency?.code||"EUR";this.revenueChartInstance&&this.revenueChartInstance.destroy(),this.revenueChartInstance=new l.t1(n,{type:"bar",data:this.revenueChartData,options:{responsive:!0,maintainAspectRatio:!1,plugins:{title:{display:!0,text:`${this.translate.instant("pharmacy.stats.revenueEvolution")} (${e})`},legend:{display:!0,position:"top"}},scales:{y:{beginAtZero:!0,title:{display:!0,text:`${this.translate.instant("pharmacy.stats.revenueWithCurrency")} (${e})`},ticks:{callback:function(a){return p.L.formatPharmacyMonetaryAmount(Number(a||0),{code:e},{code:e})}}},x:{title:{display:!0,text:this.translate.instant("pharmacy.stats.periodAxis")}}}}})}renderAnalyticsChart(){for(const n of this.analysticsLabels){let e=null,a=null;switch(n){case"performance":if(!this.analyticsChartPerformance?.nativeElement)return;e=this.analyticsChartPerformance.nativeElement.getContext("2d"),this.analyticsChartPerformancesInstance&&(this.analyticsChartPerformancesInstance.destroy(),this.analyticsChartPerformancesInstance=void 0),a=this.dataFetchsPerformance;break;case"customers":if(!this.analyticsChartCustomers?.nativeElement)return;e=this.analyticsChartCustomers.nativeElement.getContext("2d"),this.analyticsChartCustomersInstance&&(this.analyticsChartCustomersInstance.destroy(),this.analyticsChartCustomersInstance=void 0),a=this.dataFetchsCustomers;break;case"products":if(!this.analyticsChartProducts?.nativeElement)return;e=this.analyticsChartProducts.nativeElement.getContext("2d"),this.analyticsChartProductsInstance&&(this.analyticsChartProductsInstance.destroy(),this.analyticsChartProductsInstance=void 0),a=this.dataFetchsProducts;break;default:return}if(!e||!a)break;let s={responsive:!0,maintainAspectRatio:!1,plugins:{title:{display:!0,text:this.getAnalyticsChartTitle(n)}
1,legend:{display:!0,position:"top"}}},o=null;switch(n){case"performance":s.scales={y:{beginAtZero:!0}},o={type:"line",data:a,options:s};break;case"customers":s.scales={y:{beginAtZero:!0}},o={type:"bar",data:a,options:s};break;case"products":s.plugins.legend.position="right",o={type:"doughnut",data:a,options:s}}switch(n){case"performance":this.analyticsChartPerformancesInstance=new l.t1(e,o);break;case"customers":this.analyticsChartCustomersInstance=new l.t1(e,o);break;case"products":this.analyticsChartProductsInstance=new l.t1(e,o);break;default:return}}}renderMainStatsChart(){if(console.log("\u{1f3af} Init main stats chart"),!this.periodStats||0===this.periodStats.length)return void console.warn("\u26a0\ufe0f Pas de donn\xe9es periodStats disponibles");if(!this.chartCanvas?.nativeElement)return void console.error("\u274c Element chartCanvas non trouv\xe9");this.chart&&(this.chart.destroy(),this.chart=void 0);const n=this.chartCanvas.nativeElement.getContext("2d");if(n)try{const e=this.periodStats.map(r=>r.intervalShort),s=this.statsCurrency?.code||"EUR";console.log("\u{1f4ca} Labels:",e);const o={type:"bar",data:{labels:e,datasets:[{type:"line",label:this.translate.instant("pharmacy.stats.ordersTitle"),data:this.periodStats.map(r=>r.orders),borderColor:"#4f46e5",backgroundColor:"rgba(79, 70, 229, 0.1)",tension:.4,yAxisID:"y"},{type:"bar",label:`${this.translate.instant("pharmacy.stats.revenueWithCurrency")} (${s})`,data:this.periodStats.map(r=>Number(r.revenue||0)),backgroundColor:"rgba(34, 197, 94, 0.8)",borderColor:"#22c55e",borderWidth:1,yAxisID:"y1"},{type:"line",label:this.translate.instant("pharmacy.stats.newCustomers"),data:this.periodStats.map(r=>r.newCustomers),borderColor:"#f59e0b",backgroundColor:"rgba(245, 158, 11, 0.1)",tension:.4,yAxisID:"y"}]},options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{title:{display:!0,text:`${this.translate.instant("pharmacy.stats.evolution")} - ${this.getPeriodLabel()}`},legend:{display:!0,position:"top"}},scales:{x:{display:!0,title:{display:!0,text:this.getXAxisLabel()}},y:{type:"linear",display:!0,position:"left",title:{display:!0,text:this.translate.instant("pharmacy.stats.ordersOrNewCustomers")},grid:{drawOnChartArea:!1}},y1:{type:"linear",display:!0,position:"right",title:{display:!0,text:`${this.translate.instant("pharmacy.stats.revenueWithCurrency")} (${s})`},grid:{drawOnChartArea:!1}}}}};this.chart=new l.t1(n,o),console.log("\u2705 Chart principal cr\xe9\xe9 avec succ\xe8s")}catch(e){console.error("\u274c Erreur cr\xe9ation chart principal:",e)}else console.error("\u274c Impossible d'obtenir le context 2D")}getAnalyticsChartTitle(n){return{performance:this.translate.instant("pharmacy.stats.performanceGeneral"),customers:this.translate.instant("pharmacy.stats.customersAnalysis"),products:this.translate.instant("pharmacy.stats.productsBreakdown")}[n]||this.translate.instant("pharmacy.stats.analytics")}getXAxisLabel(){return{hour:this.translate.instant("pharmacy.stats.xHours"),day:this.translate.instant("pharmacy.stats.xDays"),month:this.translate.instant("pharmacy.stats.xMonths")}[this.periodType]||this.translate.instant("pharmacy.stats.xPeriod")}destroyCharts(){console.log("\u{1f5d1}\ufe0f Destruction des charts...");const n=l.t1.instances;n&&Object.keys(n).forEach(e=>{const a=n[e];a&&(console.log(`\u{1f5d1}\ufe0f Destruction du chart ID: ${e}`),a.destroy())}),this.chart=void 0,this.ordersChartInstance=void 0,this.revenueChartInstance=void 0,this.ticketsChartInstance=void 0,this.statusBreakdownChartInstance=void 0,this.paymentBreakdownChartInstance=void 0,this.analyticsChartPerformancesInstance=void 0,this.analyticsChartCustomersInstance=void 0,this.analyticsChartProductsInstance=void 0}ngOnDestroy(){this.destroyCharts(),this.destroy$.next(),this.destroy$.complete()}exportDashboard(){var n=this;return(0,m.A)(function*(){try{n.loadingService.setLoading(!0);const e=new x.Ay("p","mm","a4"),a=14,s=e.internal.pageSize.getWidth();e.setFontSize(18),e.setFontSize(11),e.text(`${n.translate.instant("pharmacy.stats.exportPeriod")} ${n.getPeriodLabel()}`,a,30),e.text(`${n.translate.instant("pharmacy.stats.exportDate")}
1 ${(new Date).toLocaleString("fr-FR")}`,a,37),e.setFontSize(14),e.text(n.translate.instant("pharmacy.stats.globalStats"),a,50);const o=n.periodStats.map(d=>[d.interval,d.orders,n.formatCurrency(d.revenue),n.formatCurrency(d.profit),d.newCustomers,n.formatCurrency(d.orders>0?d.revenue/d.orders:0)]);(0,w.Ay)(e,{startY:25,head:[[n.translate.instant("pharmacy.stats.colInterval"),n.translate.instant("pharmacy.stats.ordersTitle"),n.translate.instant("pharmacy.stats.colRevenue"),n.translate.instant("pharmacy.stats.colProfit"),n.translate.instant("pharmacy.stats.colNewCustomers"),n.translate.instant("pharmacy.stats.colRevPerOrder")]],body:o});const r=(d,_)=>{const O=d?.nativeElement;if(O){const Z=O.toDataURL("image/png",1);e.addPage(),e.setFontSize(14),e.text(_,a,20),e.addImage(Z,"PNG",a,30,s-2*a,120)}};r(n.analyticsChartPerformance,n.translate.instant("pharmacy.stats.performanceAnalysis")),r(n.analyticsChartCustomers,n.translate.instant("pharmacy.stats.customersAnalysisExport")),r(n.analyticsChartProducts,n.translate.instant("pharmacy.stats.productsAnalysisExport")),r(n.ordersChart,n.translate.instant("pharmacy.stats.ordersEvolution")),r(n.revenueChart,n.translate.instant("pharmacy.stats.revenueEvolution")),r(n.chartCanvas,n.translate.instant("pharmacy.stats.performanceGlobal"));const h=e.getNumberOfPages();for(let d=1;d<=h;d++)e.setPage(d),e.setFontSize(9),e.text(`${n.translate.instant("pharmacy.stats.pageOf")} ${d} / ${h}`,s-a,290,{align:"right"});e.save(`rapport-dashboard-${(new Date).toISOString().slice(0,10)}.pdf`),n.loadingService.setLoading(!1)}catch{}})()}static{this.\u0275fac=function(e){return new(e||i)(t.rXU(R.u),t.rXU(E.G),t.rXU(D.U),t.rXU(I.v),t.rXU(P.ok),t.rXU(F.Ix),t.rXU(j.F),t.rXU(C.c$))}}static{this.\u0275cmp=t.VBU({type:i,selectors:[["app-pharmacy-admin-stats"]],viewQuery:function(e,a){if(1&e&&(t.GBs($,5),t.GBs(S,5),t.GBs(A,5),t.GBs(T,5),t.GBs(B,5),t.GBs(L,5),t.GBs(z,5),t.GBs(G,5),t.GBs(U,5)),2&e){let s;t.mGM(s=t.lsd())&&(a.ordersChart=s.first),t.mGM(s=t.lsd())&&(a.analyticsChartPerformance=s.first),t.mGM(s=t.lsd())&&(a.analyticsChartCustomers=s.first),t.mGM(s=t.lsd())&&(a.analyticsChartProducts=s.first),t.mGM(s=t.lsd())&&(a.revenueChart=s.first),t.mGM(s=t.lsd())&&(a.statusBreakdownChart=s.first),t.mGM(s=t.lsd())&&(a.paymentBreakdownChart=s.first),t.mGM(s=t.lsd())&&(a.chartCanvas=s.first),t.mGM(s=t.lsd())&&(a.ticketsChart=s.first)}},hostBindings:function(e,a){1&e&&t.bIt("click",function(o){return a.closeDropdownsOnOutsideClick(o)},!1,t.EBC)},decls:35,vars:34,consts:[["statusDropdown",""],["statusBreakdownChart",""],["paymentBreakdownChart",""],["analyticsChartPerformance",""],["analyticsChartCustomers",""],["analyticsChartProducts",""],["ordersChart",""],["revenueChart",""],["t
1icketsChart",""],["chartCanvas",""],[1,"stats-header"],[1,"d-flex","justify-content-between","align-items-center","mb-4","flex-wrap","gap-3"],[1,"stats-title"],[1,"fas","fa-chart-pie","me-2"],[1,"text-muted","mb-0"],[1,"ms-2"],[1,"fas","fa-clock","me-1"],[1,"d-flex","align-items-center","flex-wrap","gap-2"],[1,"custom-dropdown"],["type","button",1,"btn","btn-dropdown",3,"click"],[1,"status-badge"],[1,"fas","fa-calendar-alt","me-1"],[1,"fas","fa-chevron-down"],[1,"dropdown-menu","custom-dropdown-menu"],[4,"ngFor","ngForOf"],[1,"btn","btn-outline-primary","btn-sm",3,"click","disabled"],[1,"fas","fa-sync-alt",3,"ngClass"],[1,"btn","btn-outline-secondary","btn-sm",3,"click"],[1,"fas","fa-download"],["class","alert alert-danger alert-dismissible fade show","role","alert",4,"ngIf"],["class","stats-content",4,"ngIf"],["type","button",1,"dropdown-item",3,"click"],[1,"status-badge",3,"ngClass"],["role","alert",1,"alert","alert-danger","alert-dismissible","fade","show"],[1,"fas","fa-exclamation-triangle","me-2"],["type","button",1,"btn-close",3,"click"],[1,"stats-content"],[1,"row","mb-4"],[1,"col-md-3","mb-3"],[1,"card","kpi-card"],[1,"card-body"],[1,"kpi-label"],[1,"kpi-value","text-success"],[1,"text-muted"],[1,"kpi-value","text-warning"],[1,"kpi-value","text-primary"],[1,"kpi-value","text-info"],[1,"col-lg-6"],[1,"card","chart-card"],[1,"card-header"],[1,"fas","fa-stream","me-2"],[1,"chart-container",2,"height","300px","position","relative"],[1,"fas","fa-credit-card","me-2"],[1,"col-lg-8"],[1,"card"],[1,"fas","fa-chart-area","me-2"],["role","tablist",1,"nav","nav-tabs","card-header-tabs"],[1,"nav-item"],[1,"chart-container",2,"height","400px","position","relative"],[1,"col-lg-4"],[1,"card","h-100"],[1,"fas","fa-tachometer-alt","me-2"],[1,"kpi-item","mb-3"],[1,"d-flex","justify-content-between","align-items-center"],[1,"fw-bold","text-primary"],[1,"progress","mt-1",2,"height","4px"],[1,"progress-bar","bg-primary"],[1,"fw-bold","text-success"],[1,"progress-bar","bg-success"],[1,"fw-bold","text-info"],[1,"fw-bold","text-warning"],[1,"progress-bar","bg-warning"],[1,"fas","fa-shopping-cart","me-2"],[1,"fas","fa-dollar-sign","me-2"],[1,"col-lg-12","col-md-12","mb-3"],[1,"fas","fa-ticket-alt","me-2"],[1,"col-lg-6","mb-3"],[1,"fas","fa-boxes-stacked","me-2"],[1,"d-flex","justify-content-between","mb-2"],[1,"fw-bold"],[1,"d-flex","justify-content-between","mb-3"],[1,"table-responsive"],[1,"table","table-sm","align-middle","mb-0"],[1,"text-end"],[4,"ngIf"],[1,"fas","fa-tags","me-2"],[1,"list-group","list-group-flush"],["class","list-group-item d-flex justify-content-between align-items-center px-0",4,"ngFor","ngForOf"],["class","list-group-item text-center text-muted px-0",4,"ngIf"],[1,"col-lg-12"],[1,"fas","fa-chart-line","me-2"],["role","presentation",1,"nav-item"],[1,"nav-link","active"],[1,"row"],[1,"d-flex","align-items-center"],[1,"form-label","mb-0","fw-bold"],["type","button",1,"btn","btn-outline-primary","dropdown-toggle",3,"click"],[1,"justify-content-between"],[1,"badge","bg-info","ms-2"],[1,"fas","fa-info-circle","me-1"],["colspan","3",1,"text-center","text-muted"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","px-0"],[1,"list-group-item","text-center","text-muted","px-0"]],template:function(e,a){if(1&e){const s=t.RV6();t.j41(0,"div",10)(1,"div",11)(2,"div")(3,"h2",12),t.nrm(4,"i",13),t.EFF(5),t.nI1(6,"translate"),t.k0s(),t.j41(7,"p",14),t.EFF(8),t.nI1(9,"translate"),t.j41(10,"small",15),t.nrm(11,"i",16),t.EFF(12),t.nI1(13,"translate"),t.nI1(14,"date"),t.k0s()()(),t.j41(15,"div",17)(16,"div",18,0)(18,"button",19),t.bIt("click",function(){return t.eBV(s),t.Njj(a.toggleStatusDropdown())}),t.j41(19,"span",20),t.nrm(20,"i",21),t.EFF(21),t.k0s(),t.nrm(22,"i",22),t.k0s(),t.j41(23,"ul",23),t.DNE(24,J,4,4,"li",24),t.k0s()(),t.j41(25,"button",25),t.bIt("click",function(){return t.eBV(s),t.Njj(a.refreshDashboard())}),t.nrm(26,"i",26),t.EFF(27),t.nI1(28,"translate"),t.k0s(),t.j41(29,"button",27),t.bIt("click",function(){return t.eBV(s),t.Njj(a.exportDashboard())}),t.nrm(30,"i",28),t.EFF(31),t.nI1(32,"translate"),t.k0s()()()(),t.DNE(33,V,4,1,"div",29)(34,H,28
16,143,"div",30)}2&e&&(t.R7$(5),t.SpI(" ",t.bMT(6,18,"pharmacy.stats.title")," "),t.R7$(3),t.SpI(" ",t.bMT(9,20,"pharmacy.stats.subtitle")," "),t.R7$(4),t.Lme(" ",t.bMT(13,22,"pharmacy.stats.lastUpdated")," ",t.brH(14,24,a.lastUpdated,"EEEE d MMMM yyyy, HH:mm","fr")," "),t.R7$(4),t.AVh("open",a.isPeriodDropdownOpen),t.R7$(5),t.SpI(" ",a.getPeriodLabel(a.selectedPeriod)," "),t.R7$(),t.AVh("rotated",a.isPeriodDropdownOpen),t.R7$(),t.AVh("show",a.isPeriodDropdownOpen),t.R7$(),t.Y8G("ngForOf",a.optionsPeriodDatas),t.R7$(),t.Y8G("disabled",a.isLoading),t.R7$(),t.Y8G("ngClass",t.eq3(32,N,a.isLoading)),t.R7$(),t.SpI(" ",t.bMT(28,28,"pharmacy.stats.refresh")," "),t.R7$(4),t.SpI(" ",t.bMT(32,30,"pharmacy.stats.export")," "),t.R7$(2),t.Y8G("ngIf",a.errorMessage),t.R7$(),t.Y8G("ngIf",!a.isLoading))},dependencies:[u.MD,u.YU,u.Sq,u.bT,u.vh,y.G,C.D9,P.X1,C.h],styles:['@charset "UTF-8";.stats-header[_ngcontent-%COMP%] .stats-title[_ngcontent-%COMP%]{color:#1f2937;font-weight:600;margin-bottom:0}.stats-header[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%]{font-size:.75rem;padding:.375rem .75rem}.stats-filters[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{border-radius:.375rem;margin-right:.5rem}.stats-filters[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]:last-child{margin-right:0}.stats-filters[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%] .btn.active[_ngcontent-%COMP%]{background-color:#4f46e5;border-color:#4f46e5;color:#fff}.card[_ngcontent-%COMP%]{border:none;box-shadow:0 1px 3px #0000001a;margin-bottom:1.5rem}.table[_ngcontent-%COMP%]{font-size:.875rem}.table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{background-color:#f8fafc;border-bottom:2px solid #e2e8f0;font-weight:600;color:#475569;padding:.75rem 1rem}.table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:.75rem 1rem;vertical-align:middle}.table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background-color:#f8fafc}.btn-sm[_ngcontent-%COMP%]{padding:.25rem .5rem;font-size:.75rem}.kpi-item[_ngcontent-%COMP%] .progress[_ngcontent-%COMP%]{height:4px;background-color:#e5e7eb;border-radius:2px;overflow:hidden}.kpi-item[_ngcontent-%COMP%] .progress[_ngcontent-%COMP%] .progress-bar[_ngcontent-%COMP%]{border-radius:2px}.badge.bg-success[_ngcontent-%COMP%]{background-color:#10b981!important}.badge.bg-warning[_ngcontent-%COMP%]{background-color:#f59e0b!important;color:#000!important}.badge.bg-danger[_ngcontent-%COMP%]{background-color:#ef4444!important}.badge.bg-info[_ngcontent-%COMP%]{background-color:#06b6d4!important}.badge.bg-primary[_ngcontent-%COMP%]{background-color:#4f46e5!important}.badge.bg-secondary[_ngcontent-%COMP%]{background-color:#6b7280!important}@media (max-width: 768px){.stats-card[_ngcontent-%COMP%]{margin-bottom:1rem}.stats-card[_ngcontent-%COMP%] .stats-number[_ngcontent-%COMP%]{font-size:1.5rem}.quick-action-card[_ngcontent-%COMP%]{margin-bottom:1rem}.stats-filters[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.5rem}.stats-filters[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{margin-right:0;flex:1;min-width:120px}.table-responsive[_ngcontent-%COMP%]{font-size:.75rem}}.spinner-border[_ngcontent-%COMP%]{width:2rem;height:2rem}.alert[_ngcontent-%COMP%]{border:none;border-radius:.5rem;box-shadow:0 1px 3px #0000001a}.card-header-tabs[_ngcontent-%COMP%]{margin-bottom:-1px;border-bottom:none}.card-header-tabs[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]{border:none;color:#6b7280;padding:.5rem 1rem}.card-header-tabs[_ngcontent-%COMP%] .nav-link.active[_ngcontent-%COMP%]{color:#4f46e5;border-bottom:2px solid #4f46e5;background:none}.card-header-tabs[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]:hover{border-color:transparent;color:#4f46e5}.stats-header[_ngcontent-%COMP%]{background-color:#fff;padding:2rem 2.5rem;border-bottom:1px solid rgba(0,0,0,.05);margin-bottom:2rem;border-radius:.75rem;box-shadow:0 4px 12px #00000014}.stats-header[_ngcontent-%COMP%] .stats-title[_ngcontent-%COMP%]{font-size:2rem;font-weight:700;color:#2c3e50;margin-bottom:.5rem}.stats-header[_ngcontent-%COMP%] .stats-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{color:#d91a72;margin-right:.75rem}.stats-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1rem;color:#5e6a7a;line-height:1.5}.stats-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{font-size:.85rem;color:#9ca7b7}.stats-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] small[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{color:#5e6a7a}.stats-header[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%]{padding:.6em 1em;font-size:.9rem;font-weight:600;border-radius:.75rem;transition:background-color .3s ease,transform .2s ease;display:inline-flex;align-items:center;gap:.5rem}.stats-header[_ngcontent-%COMP%] .badge.bg-success[_ngcontent-%COMP%]{background-color:#2ecc71!important;color:#fff}.stats-header[_ngcontent-%COMP%] .badge.bg-danger[_ngcontent-%COMP%]{background-color:#e84a5f!important;color:#fff}.stats-header[_ngcontent-%COMP%] .btn-outline-primary[_ngcontent-%COMP%]{border-color:#d91a72;color:#d91a72;padding:.6rem 1.2rem;border-radius:.75rem;font-weight:600;transition:all .2s ease-in-out}.stats-header[_ngcontent-%COMP%] .btn-outline-primary[_ngcontent-%COMP%]:hover{background-color:#d91a72;color:#fff;transform:translateY(-2px);box-shadow:0 2px 4px #00000014}.stats-header[_ngcontent-%COMP%] .btn-outline-primary[disabled][_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.stats-header[_ngcontent-%COMP%] .btn-outline-secondary[_ngcontent-%COMP%]{border-color:#8c99aa;color:#8c99aa;padding:.6rem 1.2rem;border-radius:.75rem;font-weight:600;transition:all .2s ease-in-out}.stats-header[_ngcontent-%COMP%] .btn-outline-secondary[_ngcontent-%COMP%]:hover{background-color:#8c99aa;color:#fff;transform:translateY(-2px);box-shadow:0 2px 4px #00000014}.card[_ngcontent-%COMP%]{border:none;border-radius:.625rem;box-shadow:0 2px 10px #00000014;margin-bottom:1.25rem}.card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%]{background-color:#fff;border-bottom:1px solid rgba(0,0,0,.05);padding:.9375rem 1.25rem;display:flex;justify-content:space-between;align-items:center}.card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{margin:0;font-size:.9375rem;font-weight:600;color:#333}.card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin-right:.5rem;color:#1565c0}.card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .actions[_ngcontent-%COMP%]{display:flex;gap:.5rem}.card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{white-space:nowrap}.card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%]{padding:1.25rem}.stats-filters[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{border-radius:.75rem;transition:all .2s ease-in-out;font-weight:600;padding:.6rem 1.2rem;color:#d91a72;border:1px solid rgba(217,26,114,.4);background-color:#fbdeeb}.stats-filters[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%] .btn.active[_ngcontent-%COMP%]{background-color:#d91a72;color:#fff;border-color:#d91a72;box-shadow:0 2px 4px #00000014}.stats-filters[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]:hover:not(.active){background-color:#d91a7226;color:#d91a72}.stats-filters[_ngcontent-%COMP%] .form-select-sm[_ngcontent-%COMP%]{border-radius:.75rem;border:1px solid rgba(0,0,0,.05);padding:.6rem 1.2rem;font-size:.9rem;color:#5e6a7a;background-color:#fff;transition:border-color .2s ease,box-shadow .2s ease;width:auto}.stats-filters[_ngcontent-%COMP%] .form-select-sm[_ngcontent-%COMP%]:focus{border-color:#d91a72;box-shadow:0 0 0 .25rem #d91a7240}.spinner-border[_ngcontent-%COMP%]{width:3.5rem;height:3.5rem;border-width:.4rem;color:#d91a72}.alert-danger[_ngcontent-%COMP%]{background-color:#fce8eb;color:#e21d37;border-color:#f4a5af;border-radius:.75rem;font-weight:500;padding:1rem 1.5rem;margin-bottom:2rem}.alert-danger[_ngcontent-%COMP%] .btn-close[_ngcontent-%COMP%]{color:inherit;opacity:.8}.alert-danger[_ngcontent-%COMP%] .btn-close[_ngcontent-%COMP%]:hover{opacity:1}.stats-content[_ngcontent-%COMP%]{padding:1rem;background-color:#f8f9fb}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%]{border:none;border-radius:.75rem;box-shadow:0 4px 12px #00000014;transition:transform .3s ease-in-out,box-shadow .3s ease-in-out;background-color:#fff;overflow:hidden}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%]:hover{transform:translateY(-8px);box-shadow:0 8px 20px #0000001f}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%]{padding:2rem;position:relative;display:flex;flex-direction:column;height:100%}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-icon[_ngcontent-%COMP%]{font-size:3rem;position:absolute;top:1.5rem;right:1.5rem;opacity:.1;color:#d91a72}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-number[_ngcontent-%COMP%]{font-size:2.5rem;font-weight:800;color:#2c3e50;margin-bottom:.5rem}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-label[_ngcontent-%COMP%]{font-size:1rem;color:#5e6a7a;margin-bottom:1rem}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-growth[_ngcontent-%COMP%]{font-size:.95rem;font-weight:700;margin-top:.75rem;display:flex;align-items:center;gap:.5rem}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-growth.text-success[_ngcontent-%COMP%]{color:#2ecc71}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-growth.text-danger[_ngcontent-%COMP%]{color:#e84a5f}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-growth.text-muted[_ngcontent-%COMP%]{color:#9ca7b7}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-growth[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin-right:.1rem}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%]{border-top:1px solid rgba(0,0,0,.05);padding-top:1.5rem;margin-top:auto;text-align:center}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{font-size:.8rem;color:#9ca7b7;display:block;margin-bottom:.2rem}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] .fw-bold[_ngcontent-%COMP%]{font-weight:700!important;color:#2c3e50;font-size:1rem}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%]{font-size:.85rem;font-weight:600;border-radius:.375rem;padding:.4em .7em;margin-bottom:.4rem;display:inline-flex;align-items:center;justify-content:center}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style:none;padding:0;margin:0}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{font-size:.9rem;color:#5e6a7a;padding:.4rem 0;border-bottom:1px dashed rgba(0,0,0,.7);display:flex;justify-content:space-between;align-items:center}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:last-child{border-bottom:none}.stats-content[_ngcontent-%COMP%] .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%]{font-size:.75rem;padding:.25em .5em}.stats-content[_ngcontent-%COMP%] .orders-card[_ngcontent-%COMP%] .stats-icon[_ngcontent-%COMP%]{color:#3498db}.stats-content[_ngcontent-%COMP%] .orders-card[_ngcontent-%COMP%] .bg-warning[_ngcontent-%COMP%]{background-color:#f39c12!important;color:#fff}.stats-content[_ngcontent-%COMP%] .orders-card[_ngcontent-%COMP%] .bg-success[_ngcontent-%COMP%]{background-color:#2ecc71!important}.stats-content[_ngcontent-%COMP%] .orders-card[_ngcontent-%COMP%] .bg-danger[_ngcontent-%COMP%]{background-color:#e84a5f!important}.stats-content[_ngcontent-%COMP%] .revenue-card[_ngcontent-%COMP%] .stats-icon[_ngcontent-%COMP%]{color:#2ecc71}.stats-content[_ngcontent-%COMP%] .tickets-card[_ngcontent-%COMP%] .stats-icon[_ngcontent-%COMP%]{color:#f39c12}.stats-content[_ngcontent-%COMP%] .tickets-card[_ngcontent-%COMP%] .bg-info[_ngcontent-%COMP%]{background-color:#3498db!important}.stats-content[_ngcontent-%COMP%] .tickets-card[_ngcontent-%COMP%] .bg-primary[_ngcontent-%COMP%]{background-color:#d91a72!important}.stats-content[_ngcontent-%COMP%] .tickets-card[_ngcontent-%COMP%] .bg-success[_ngcontent-%COMP%]{background-color:#2ecc71!important}.stats-content[_ngcontent-%COMP%] .activities-card[_ngcontent-%COMP%] .stats-icon[_ngcontent-%COMP%]{color:#6dd5ed}.stats-content[_ngcontent-%COMP%] .activities-card[_ngcontent-%COMP%] .bg-secondary[_ngcontent-%COMP%]{background-color:#8c99aa!important;color:#fff}.stats-content[_ngcontent-%COMP%] .pharmacies-card[_ngcontent-%COMP%] .stats-icon[_ngcontent-%COMP%]{color:#e84a5f}.stats-content[_ngcontent-%COMP%] .pharmacies-card[_ngcontent-%COMP%] .bg-success[_ngcontent-%COMP%]{background-color:#2ecc71!important}.stats-content[_ngcontent-%COMP%] .users-card[_ngcontent-%COMP%] .stats-icon[_ngcontent-%COMP%]{color:#d91a72}.quick-action-card[_ngcontent-%COMP%]{border:1px solid rgba(0,0,0,.05);border-radius:.75rem;box-shadow:0 4px 12px #00000014;transition:transform .25s ease-in-out,box-shadow .25s ease-in-out,border-color .25s ease-in-out;cursor:pointer;background-color:#fff;height:100%}.quick-action-card[_ngcontent-%COMP%]:hover{transform:translateY(-5px);box-shadow:0 8px 20px #0000001f;border-color:#ed6ca7}.quick-action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%]{padding:1.5rem;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.quick-action-card[_ngcontent-%COMP%] .quick-action-icon[_ngcontent-%COMP%]{font-size:3rem;margin-bottom:1rem;line-height:1;display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;background-color:#d91a721a;color:#d91a72}.quick-action-card[_ngcontent-%COMP%] .quick-action-icon.text-primary[_ngcontent-%COMP%]{color:#d91a72!important;background-color:#d91a721a}.quick-action-card[_ngcontent-%COMP%] .quick-action-icon.text-success[_ngcontent-%COMP%]{color:#2ecc71!important;background-color:#2ecc711a}.quick-action-card[_ngcontent-%COMP%] .quick-action-icon.text-info[_ngcontent-%COMP%]{color:#3498db!important;background-color:#3498db1a}.quick-action-card[_ngcontent-%COMP%] .quick-action-icon.text-warning[_ngcontent-%COMP%]{color:#f39c12!important;background-color:#f39c121a}.quick-action-card[_ngcontent-%COMP%] .quick-action-icon.text-danger[_ngcontent-%COMP%]{color:#e84a5f!important;background-color:#e84a5f1a}.quick-action-card[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700;color:#2c3e50;margin-top:1rem;margin-bottom:.5rem}.quick-action-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:.9rem;color:#9ca7b7;line-height:1.4}.chart-card[_ngcontent-%COMP%]{border:none;border-radius:.75rem;box-shadow:0 4px 12px #00000014;background-color:#fff}.chart-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%]{background-color:#fff;border-bottom:1px solid rgba(0,0,0,.05);padding:1.25rem 2rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem}.chart-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700;color:#2c3e50}.recent-activities-card[_ngcontent-%COMP%]{border:none;border-radius:.75rem;box-shadow:0 4px 12px #00000014;background-color:#fff;overflow:hidden}.recent-activities-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%]{background-color:#fff;border-bottom:1px solid rgba(0,0,0,.05);padding:1.25rem 2rem;border-top-left-radius:.75rem;border-top-right-radius:.75rem}.recent-activities-card[_ngcontent-%COMP%] .card-h
1eader[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700;color:#2c3e50}.recent-activities-card[_ngcontent-%COMP%] app-activity-timeline[_ngcontent-%COMP%]{display:block}.recent-activities-card[_ngcontent-%COMP%] .text-muted[_ngcontent-%COMP%]{font-size:.95rem;color:#9ca7b7}.py-5.text-center.text-muted[_ngcontent-%COMP%]{background-color:#fff;border-radius:.75rem;box-shadow:0 4px 12px #00000014;padding:4rem!important;margin-top:2rem}.py-5.text-center.text-muted[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{color:#2c3e50;margin-bottom:1.5rem;font-weight:700}.py-5.text-center.text-muted[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{color:#d91a72;margin-right:.75rem}.py-5.text-center.text-muted[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#5e6a7a;font-size:1.1rem}@media (max-width: 767.98px){.stats-header[_ngcontent-%COMP%]{padding:1.5rem 1.25rem;margin-bottom:1.5rem}.stats-header[_ngcontent-%COMP%] .d-flex.justify-content-between[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch!important}.stats-header[_ngcontent-%COMP%] .d-flex.justify-content-between[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{margin-bottom:1.5rem}.stats-header[_ngcontent-%COMP%] .d-flex.justify-content-between[_ngcontent-%COMP%] .d-flex.align-items-center.gap-2[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch!important}.stats-header[_ngcontent-%COMP%] .d-flex.justify-content-between[_ngcontent-%COMP%] .d-flex.align-items-center.gap-2[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%]{margin-bottom:.75rem}.stats-header[_ngcontent-%COMP%] .d-flex.justify-content-between[_ngcontent-%COMP%] .d-flex.align-items-center.gap-2[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:100%;margin-bottom:.5rem}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{flex-direction:column}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .col-md-6[_ngcontent-%COMP%]{width:100%;margin-bottom:1rem}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .col-md-6[_ngcontent-%COMP%]:last-child{margin-bottom:0}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%]{width:100%;display:flex}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{flex:1}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .form-select-sm[_ngcontent-%COMP%]{width:100%!important}.stats-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%]{padding:1.5rem}.stats-card[_ngcontent-%COMP%] .stats-icon[_ngcontent-%COMP%]{font-size:2rem;top:1rem;right:1rem}.stats-card[_ngcontent-%COMP%] .stats-number[_ngcontent-%COMP%]{font-size:2rem}.stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{flex-direction:column}.stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .col-4[_ngcontent-%COMP%], .stats-card[_ngcontent-%COMP%] .stats-details[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .col-6[_ngcontent-%COMP%]{width:100%;text-align:center;margin-bottom:.75rem}.quick-action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%]{padding:1.25rem}.quick-action-card[_ngcontent-%COMP%] .quick-action-icon[_ngcontent-%COMP%]{font-size:2.5rem;width:50px;height:50px}.quick-action-card[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{font-size:1.1rem}.quick-action-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:.8rem}.chart-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%], .recent-activities-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%]{padding:1rem 1.5rem}.chart-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%], .recent-activities-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%]{padding:1.5rem}.py-5.text-center.text-muted[_ngcontent-%COMP%]{padding:2.5rem!important}.py-5.text-center.text-muted[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:1.5rem}}@media (min-width: 768px) and (max-width: 991.98px){.stats-header[_ngcontent-%COMP%] .d-flex.justify-content-between[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start!important}.stats-header[_ngcontent-%COMP%] .d-flex.justify-content-between[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child{margin-bottom:1rem}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .col-md-6[_ngcontent-%COMP%]{width:100%}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .col-md-6[_ngcontent-%COMP%] .btn-group[_ngcontent-%COMP%]{justify-content:center;display:flex}.stats-header[_ngcontent-%COMP%] .stats-filters[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] .col-md-6[_ngcontent-%COMP%] .d-flex.justify-content-end[_ngcontent-%COMP%]{justify-content:center!important}.stats-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%]{padding:1.5rem}.quick-action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%]{padding:1.25rem}}@media (min-width: 992px) and (max-width: 1199.98px){.stats-card[_ngcontent-%COMP%] .stats-number[_ngcontent-%COMP%]{font-size:2.2rem}.quick-action-card[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{font-size:1.1rem}}.custom-dropdown[_ngcontent-%COMP%]{position:relative;display:inline-block}.custom-dropdown[_ngcontent-%COMP%] .btn-dropdown[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border:1px solid #dee2e6;border-radius:4px;background:#fff;cursor:pointer;transition:all .2s ease}.custom-dropdown[_ngcontent-%COMP%] .btn-dropdown[_ngcontent-%COMP%]:hover, .custom-dropdown.open[_ngcontent-%COMP%] .btn-dropdown[_ngcontent-%COMP%]{border-color:#007bff;box-shadow:0 0 0 .2rem #007bff40}.custom-dropdown[_ngcontent-%COMP%] .fa-chevron-down[_ngcontent-%COMP%]{transition:transform .2s ease}.custom-dropdown[_ngcontent-%COMP%] .fa-chevron-down.rotated[_ngcontent-%COMP%]{transform:rotate(180deg)}.custom-dropdown-menu[_ngcontent-%COMP%]{position:absolute;top:100%;left:0;right:0;z-index:1000;background:#fff;border:1px solid #dee2e6;border-radius:4px;box-shadow:0 2px 10px #0000001a;max-height:200px;overflow-y:auto;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s ease;margin:0;padding:0;list-style:none}.custom-dropdown-menu.show[_ngcontent-%COMP%]{opacity:1;visibility:visible;transform:translateY(0)}.custom-dropdown-menu[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin:0}.custom-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]{display:block;width:100%;padding:8px 12px;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0;cursor:pointer;transition:background-color .15s ease-in-out}.custom-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:hover{background-color:#f8f9fa}.custom-dropdown-menu[_ngcontent-%COMP%] .dropdown-item.active[_ngcontent-%COMP%]{background-color:#007bff;color:#fff}.custom-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:first-child{border-radius:4px 4px 0 0}.custom-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:last-child{border-radius:0 0 4px 4px}.status-badge[_ngcontent-%COMP%], .priority-badge[_ngcontent-%COMP%]{padding:2px 8px;border-radius:12px;font-size:.875rem;font-weight:500}.status-open[_ngcontent-%COMP%]{background-color:#e3f2fd;color:#1976d2}.status-progress[_ngcontent-%COMP%]{background-color:#fff3e0;color:#f57c00}.status-pending[_ngcontent-%COMP%]{background-color:#fce4ec;color:#c2185b}.status-resolved[_ngcontent-%COMP%]{background-color:#e8f5e8;color:#2e7d32}.badge-modern[_ngcontent-%COMP%]{font-size:.85em;padding:.5em .8em;border-radius:20px;margin-right:8px;margin-bottom:4px;font-weight:500}.badge-modern[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin-right:6px;font-size:.8em}.badge-modern.badge-success[_ngcontent-%COMP%]{background-color:#28a745;color:#fff}.badge-modern.badge-danger[_ngcontent-%COMP%]{background-color:#dc3545;color:#fff}.badge-modern.badge-info[_ngcontent-%COMP%]{background-color:#17a2b8;color:#fff}.badge-modern.badge-warning[_ngcontent-%COMP%]{background-color:#ffc107;color:#212529}.kpi-card[_ngcontent-%COMP%]{border:1px solid #eef1f6;box-shadow:0 4px 14px #0000000a}.kpi-label[_ngcontent-%COMP%]{font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;color:#6b7280;margin-bottom:.35rem}.kpi-value[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700}']})}}return i})()}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.