1import {G}from'./chunk-BaKCWZIQ.js';import {c}from'./chunk-DGpypiby.js';import {E as En,D as De}from'./chunk-DFWdtebV.js';import {f as f$1}from'./chunk-CmdXsb3H.js';import {h as he}from'./chunk-DvLFd6NQ.js';import {Q,X}from'./chunk-D6ErD1U4.js';import {R}from'./chunk-BGOHF1M9.js';import {c as ce}from'./chunk-BRsHFk4j.js';import {c3 as Xr,V,bK as P,bI as Gt,O,f,X as Xb,j as Xv,N as Ng,bv as Og,bN as Gc,T as Tt$1,z as zg,w as w0,d1 as x0,b1 as ei,d2 as Vh,H as H0,Z as Zx,k as dn,b2 as da,cp as xr,bL as Sh,l as zw,bA as Nw,s as sk,n as nd,b3 as id,r as rC,m as wC,o as mv,p as GC,t as tD,q as vD,aO as cD,aP as hD,b0 as _D,aX as mD,u as al,x as tM,y as dM,L as Lb,A as r1,P as P1,B as xS,C as Vs,I as Fi,J as GS,K as iI,M as RI,Q as us,S as ms,Y as UI,_ as tE,$ as Dn,a0 as ME,a1 as ny,a2 as go,a3 as Kd,a4 as XE,a5 as LT,a6 as mA,aM as QM,cx as WM,a7 as mt$1,aR as i_,a8 as fy,aa as Js,ac as H_,ae as pS,ad as gd,bV as zy,aS as Vp,bW as W_,aU as Hp,ab as Ey,af as XT,bD as db,aV as KT,a9 as ZT,bi as D_,ai as dy,bn as nS,ag as SC,aj as jy,al as gS,bX as $y,bE as pb,am as JT,bS as Y_,ah as YT,aT as d_,bg as mS,ak as Ed,aB as ey}from'./main-4WA6AAHG.js';import'./chunk-C0DmzTpz.js';import'./chunk-CkU8oUfw.js';var lt=()=>["Pick the month and year, and optionally one agent.","Response Rate tells you how much to trust the average \u2014 a high rating from three people is not a signal.","Agent Rankings shows who customers rate best."],st=()=>[10,25,50],pt=(t,i)=>i.value,ct=(t,i)=>i.id;function mt(t,i){if(t&1&&(Js(0,"mat-option",6),H_(1),pS(2,"translate"),gd()),t&2){let e=i.$implicit;dy("value",e.value),SC(),jy(gS(2,2,e.label));}}function dt(t,i){if(t&1&&(Js(0,"mat-option",6),H_(1),gd()),t&2){let e=i.$implicit;dy("value",e),SC(),jy(e);}}function ut(t,i){if(t&1){let e=i_();Js(0,"button",12),Ey("click",function(s){return Vp(e),d_().clearUserFilter(),Hp(s.stopPropagation())}),Js(1,"mat-icon"),H_(2,"close"),gd()();}}function gt(t,i){if(t&1&&(Js(0,"mat-option",6),H_(1),gd()),t&2){let e=i.$implicit;dy("value",e),SC(),jy(e.name||e.nickname);}}function _t(t,i){if(t&1&&(Js(0,"mat-card",22)(1,"mat-card-header")(2,"mat-card-title"),H_(3),pS(4,"translate"),gd()(),Js(5,"mat-card-content"),fy(6,"apx-chart",25),gd()()),t&2){let e=d_(2);SC(3),jy(gS(4,9,"Rating Distribution")),SC(3),dy("series",e.ratingChartOptions.series)("chart",e.ratingChartOptions.chart)("plotOptions",e.ratingChartOptions.plotOptions)("colors",e.ratingChartOptions.colors)("xaxis",e.ratingChartOptions.xaxis)("yaxis",e.ratingChartOptions.yaxis)("dataLabels",e.ratingChartOptions.dataLabels)("tooltip",e.ratingChartOptions.tooltip);}}function ft(t,i){if(t&1&&(Js(0,"mat-card",22)(1,"mat-card-header")(2,"mat-card-title"),H_(3),pS(4,"translate"),gd()(),Js(5,"mat-card-content"),fy(6,"apx-chart",26),gd()()),t&2){let e=d_(2);SC(3),jy(gS(4,9,"Feedback Trend")),SC(3),dy("series",e.trendChartOptions.series)("chart",e.trendChartOptions.chart)("colors",e.trendChartOptions.colors)("stroke",e.trendChartOptions.stroke)("xaxis",e.trendChartOptions.xaxis)("yaxis",e.trendChartOptions.yaxis)("dataLabels",e.trendChartOptions.dataLabels)("tooltip",e.trendChartOptions.tooltip);}}function ht(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit;jy(e.username||"\u2014");}}function Ct(t,i){if(t&1&&(H_(0),pS(1,"number")),t&2){let e=i.$implicit;Ed("",mS(1,1,e.averageRating,"1.1-1")," \u2605");}}function yt(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit;jy(e.responseCount);}}function xt(t,i){if(t&1&&(Js(0,"mat-card",24)(1,"mat-card-header")(2,"mat-card-title"),H_(3),pS(4,"translate"),gd()(),Js(5,"mat-card-content")(6,"app-responsive-table",27),ey(7,ht,1,1,"ng-template",28)(8,Ct,2,4,"ng-template",29)(9,yt,1,1,"ng-template",30),gd()()()),t&2){let e=d_(2);SC(3),jy(gS(4,3,"Agent Rankings")),SC(3),dy("dataSource",e.analytics.agentRankings)("columns",e.agentColumns);}}function bt(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit,a=d_(3);jy(a.getPlatformName(e.platform));}}function Mt(t,i){if(t&1&&(H_(0),pS(1,"number")),t&2){let e=i.$implicit;jy(mS(1,1,e.averageRating,"1.1-1"));}}function vt(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit;jy(e.responseCount);}}function St(t,i){if(t&1&&(Js(0,"mat-card",24)(1,"mat-card-header")(2,"mat-card-title"),H_(3),pS(4,"translate"),gd()(),Js(5,"mat-card-content")(6,"app-responsive-table",27),ey(7,bt,1,1,"ng-template",31)(8,Mt,2,4,"ng-template",29)(9,vt,1,1,"ng-template",3
10),gd()()()),t&2){let e=d_(2);SC(3),jy(gS(4,3,"Platform Breakdown")),SC(3),dy("dataSource",e.analytics.platformBreakdown)("columns",e.platformColumns);}}function kt(t,i){if(t&1&&(Js(0,"div",13)(1,"mat-card",14)(2,"mat-icon",15),H_(3,"star"),gd(),Js(4,"div",16),H_(5),pS(6,"number"),gd(),Js(7,"div",17),H_(8),pS(9,"translate"),gd()(),Js(10,"mat-card",14)(11,"mat-icon",18),H_(12,"chat_bubble"),gd(),Js(13,"div",16),H_(14),gd(),Js(15,"div",17),H_(16),pS(17,"translate"),gd()(),Js(18,"mat-card",14)(19,"mat-icon",19),H_(20,"send"),gd(),Js(21,"div",16),H_(22),gd(),Js(23,"div",17),H_(24),pS(25,"translate"),gd()(),Js(26,"mat-card",14)(27,"mat-icon",20),H_(28,"percent"),gd(),Js(29,"div",16),H_(30),pS(31,"number"),gd(),Js(32,"div",17),H_(33),pS(34,"translate"),gd()()(),Js(35,"div",21),ZT(36,_t,7,11,"mat-card",22),ZT(37,ft,7,11,"mat-card",22),gd(),Js(38,"div",23),ZT(39,xt,10,5,"mat-card",24),ZT(40,St,10,5,"mat-card",24),gd()),t&2){let e=d_();SC(5),jy(mS(6,12,e.analytics.averageRating,"1.1-1")),SC(3),jy(gS(9,15,"Average Rating")),SC(6),jy(e.analytics.totalResponses),SC(2),jy(gS(17,17,"Total Responses")),SC(6),jy(e.analytics.totalFeedbackSent),SC(2),jy(gS(25,19,"Feedback Sent")),SC(6),Ed("",mS(31,21,e.analytics.responseRate,"1.1-1"),"%"),SC(3),jy(gS(34,24,"Response Rate")),SC(3),YT(e.analytics.ratingDistribution.length>0?36:-1),SC(),YT(e.analytics.dailyTrend.length>0?37:-1),SC(2),YT(e.analytics.agentRankings.length>0?39:-1),SC(),YT(e.analytics.platformBreakdown.length>0?40:-1);}}function Ft(t,i){t&1&&fy(0,"app-empty-state",10);}function Tt(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit;jy(e.customerName||"\u2014");}}function At(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit;jy(e.closedByUsername||"\u2014");}}function wt(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit,a=d_(2);jy(a.getPlatformName(e.platform));}}function Ot(t,i){if(t&1&&(Js(0,"span",40),H_(1),gd()),t&2){let e=i.$implicit,a=d_(2);SC(),jy(a.getRatingStars(e.rating));}}function It(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit,a=d_(2);jy(a.getFeedbackTypeName(e.feedbackType));}}function Rt(t,i){if(t&1&&H_(0),t&2){let e=i.$implicit;jy(e.comment||"\u2014");}}function Pt(t,i){if(t&1&&(H_(0),pS(1,"date")),t&2){let e=i.$implicit;jy(mS(1,1,e.responseReceivedOn,"short"));}}function Et(t,i){if(t&1){let e=i_();Js(0,"mat-card",11)(1,"mat-card-header")(2,"mat-card-title"),H_(3),pS(4,"translate"),gd()(),Js(5,"mat-card-content")(6,"app-responsive-table",32),ey(7,Tt,1,1,"ng-template",33)(8,At,1,1,"ng-template",34)(9,wt,1,1,"ng-template",31)(10,Ot,2,1,"ng-template",35)(11,It,1,1,"ng-template",36)(12,Rt,1,1,"ng-template",37)(13,Pt,2,4,"ng-template",38),gd(),Js(14,"paginator-configurable",39),Ey("page",function(s){Vp(e);let m=d_();return Hp(m.onPageChange(s))}),gd()()();}if(t&2){let e=d_();SC(3),jy(gS(4,6,"Feedback Responses")),SC(3),dy("dataSource",e.responses)("columns",e.responseColumns)("loading",e.isLoading),SC(8),dy("length",e.totalCount)("pageSizeOptions",nS(8,st));}}var Li=(()=>{class t{constructor(e,a,s,m,g){this.feedbackService=e,this.loadingService=a,this.errorService=s,this.translate=m,this.usersService=g,this.analytics=null,this.responses=[],this.totalCount=0,this.isLoading=false,this.isAnalyticsLoading=false,this.page=0,this.pageSize=10,this.months=[],this.years=[],this.users=[],this.filteredUsers=[],this.userFilterText="",this.ratingChartOptions={},this.trendChartOptions={},this.platformNames={[c.Whatsapp]:"WhatsApp",[c.Instagram]:"Instagram",[c.Messenger]:"Messenger",[c.TikTok]:"TikTok",[c.SocialLabApplication]:"Widget",[c.Telegram]:"Telegram"},this.feedbackTypeNames={1:"Text",2:"Interactive",3:"Flow"},this.subs=[],this.agentColumns=[{key:"username",label:"Agent",priority:1},{key:"averageRating",label:"Average Rating",priority:1},{key:"responseCount",label:"Responses",priority:1}],this.platformColumns=[{key:"platform",label:"Platform",priority:1},{key:"averageRating",label:"Average Rating",priority:1},{key:"responseCount",label:"Responses",priority:1}],this.responseColumns=[{key:"customerName",label:"Customer",priority:1},{key:"closedByUsername",label:"Agent",priority:1},{key:"platform",label:"Platform",priority:2},{key:"rating",label:"Rating",priority:1},{key:"feedbackType",label:"Type",priority:2},{key:"comment",label:"Comment",priority:3},{key:"responseReceivedOn",label:"Date",priority:2}],this.displayUserName=h=>h?typeof h=="string"?h:h.name||h.nickname||"":"";let d=new Date;this.selectedMonth=d.getMonth()+1,this.selectedYear=d.getFullYear(),this.months=[{value:1,label:"January"},{value:2,label:"February"},{value:3,label:"March"},{value:4,label:"April"},{value:5,label:"May"},{value:6,label:"June"},{value:7,label:"July"},{value:8,label:"August"},{value:9,label:"September"},{value:10,label:"October"},{value:11,label:"November"},{value:12,label:"December"}];let N=d.getFullYear();for(let h=N;h>=N-5;h--)this.years.push(h);}ngOnInit(){this.loadUsers(),this.loadAnalytics(),this.loadResponses();}
1ngOnDestroy(){this.subs.forEach(e=>e.unsubscribe());}loadUsers(){let e=this.usersService.getAllUsersNamesCached().subscribe({next:a=>{this.users=a,this.filteredUsers=[...a];}});this.subs.push(e);}onUserFilterInput(e){let a=e.target.value;this.userFilterText=a;let s=a.toLowerCase();this.filteredUsers=s?this.users.filter(m=>(m.name||m.nickname||"").toLowerCase().includes(s)):[...this.users];}onUserFilterSelected(e){let a=e.option.value;this.selectedUserId=a.id,this.userFilterText=a.name||a.nickname,this.page=0,this.loadAnalytics(),this.loadResponses();}clearUserFilter(){this.selectedUserId=void 0,this.userFilterText="",this.filteredUsers=[...this.users],this.page=0,this.loadAnalytics(),this.loadResponses();}loadAnalytics(){this.isAnalyticsLoading=true,this.loadingService.beginSuppress();let e=this.feedbackService.getAnalytics(this.selectedMonth,this.selectedYear,this.selectedUserId).pipe(Xr(()=>{this.isAnalyticsLoading=false,this.loadingService.endSuppress();})).subscribe({next:a=>{a.succeeded&&a.data&&(this.analytics=a.data,this.buildRatingChart(),this.buildTrendChart());},error:a=>{this.errorService.setError(a,"Failed to load analytics");}});this.subs.push(e);}loadResponses(){this.isLoading=true,this.loadingService.beginSuppress();let e=this.feedbackService.getResponses({month:this.selectedMonth,year:this.selectedYear,closedByUserId:this.selectedUserId,page:this.page,pageSize:this.pageSize}).pipe(Xr(()=>{this.isLoading=false,this.loadingService.endSuppress();})).subscribe({next:a=>{if(a.succeeded&&a.data){let s=a.data;this.responses=s.items,this.totalCount=s.totalCount;}},error:a=>{this.errorService.setError(a,"Failed to load responses");}});this.subs.push(e);}onDateChange(){this.page=0,this.loadAnalytics(),this.loadResponses();}onPageChange(e){this.page=e.pageIndex,this.pageSize=e.pageSize,this.loadResponses();}buildRatingChart(){if(!this.analytics)return;let e=this.analytics.ratingDistribution,a=e.map(m=>"\u2605"+m.rating),s=e.map(m=>m.count);this.ratingChartOptions={series:[{name:this.translate.instant("Responses"),data:s}],chart:{type:"bar",height:250,fontFamily:"'Cairo', sans-serif"},plotOptions:{bar:{borderRadius:4,horizontal:false,columnWidth:"50%"}},colors:["#5D87FF"],xaxis:{categories:a},yaxis:{title:{text:this.translate.instant("Count")}},dataLabels:{enabled:true},tooltip:{theme:"dark"}};}buildTrendChart(){if(!this.analytics)return;let e=this.analytics.dailyTrend,a=e.map(g=>g.date.split("T")[0]),s=e.map(g=>g.averageRating),m=e.map(g=>g.responseCount);this.trendChartOptions={series:[{name:this.translate.instant("Average Rating"),type:"line",data:s},{name:this.translate.instant("Responses"),type:"column",data:m}],chart:{height:300,type:"line",fontFamily:"'Cairo', sans-serif"},colors:["#5D87FF","#49BEFF"],stroke:{width:[3,0]},xaxis:{categories:a,labels:{rotate:-45}},yaxis:[{title:{text:this.translate.instant("Average Rating")},min:0,max:5},{opposite:true,title:{text:this.translate.instant("Responses")}}],dataLabels:{enabled:false},tooltip:{shared:true,theme:"dark"}};}getRatingStars(e){return e?"\u2605".repeat(e)+"\u2606".repeat(5-e):"\u2014"}getPlatformName(e){return this.platformNames[e]||"Unknown"}getFeedbackTypeName(e){return this.feedbackTypeNames[e]||"Unknown"}static{this.\u0275fac=function(a){return new(a||t)(V(G),V(P),V(Gt),V(O),V(f))};}static{this.\u0275cmp=Xb({type:t,selectors:[["app-feedback-analytics"]],decls:31,vars:24,consts:[["autoAgent","matAutocomplete"],["helpKey","session-feedback-analytics","intro","What customers rated your conversations, broken down by agent, platform and time.",3,"steps"],[1,"analytics-container"],[1,"date-filter"],["appearance","outline"],[3,"ngModelChange","selectionChange","ngModel"],[3,"value"],["matInput","",3,"input","value","matAutocomplete","placeholder"],["matSuffix","","mat-icon-button","","aria-label","close"],[3,"optionSelected","displayWith"],["icon","analytics","title","No feedback data available for the selected period"],[1,"responses-card"],["matSuffix","","mat-icon-button","","aria-label","close",3,"click"],[1,"summary-cards"],[1,"summary-card"],["color","primary",1,"summary-icon"],[1,"summary-value"],[1,"summary-label"],["color","accent",1,"summary-icon"],[1,"summary-icon","icon-accent"],[1,"summary-icon","icon-success"],[1,"charts-row"],[1,"chart-card"],[1,"details-row"],[1,"detail-card"],[3,"series","chart","plotOptions","colors","xaxis","yaxis","dataLabels","tooltip"],[3,"series","chart","colors","stroke","xaxis","yaxis","dataLabels","tooltip"],[3,"dataSource","columns"],["rtColumnDef","username"],["rtColumnDef","averageRating"],["rtColumnDef","responseCount"],["rtColumnDef","platform"],[3,"dataSource","columns","loading"],["rtColumnDef","customerName"],["rtColumnDef","closedByUsername"],["rtColumnDef","rating"],["rtColumnDef","feedbackType"],["rtColumnDef","comment",1,"comment-cell"],["rtColumnDef","responseReceivedOn"],[3,"page","length","pageSizeOptions"],[1,"rating-stars"]],template:function(a,s){if(a&1){let m=i_();fy(0,"app-page-help",1),Js(1,"div",2)(2,"div",3)(3,"mat-form-field",4)(4,"mat-label"),H_(5),pS(6,"translate"),gd(),Js(7,"mat-select",5),zy("ngModelChange",function(d){return Vp(m),W_(s.selectedMonth,d)||(s.selectedMonth=d),Hp(d)}),Ey("selectionChange",function(){return s.onDateChange()}),XT(8,mt,3,4,"mat-option",6,pt),gd(),db(),gd(),Js(10,"mat-form-field",4)(11,"mat-label"),H_(12),pS(13,"translate"),gd(),Js(14,"mat-select",5),zy("ngModelChange",function(d){return Vp(m),W_(s.selectedYear,d)||(s.selectedYear=d),Hp(d)}),Ey("selectionChange",function(){return s.onDateChange()}),XT(15,dt,2,2,"mat-option",6,KT),gd(),db(),gd(),Js(17,"mat-form-field",4)(18,"mat-label"),H_(19),pS(20,"translate"),gd(),Js(21,"input",7),pS(22,"translate"),Ey("input",function(d){return s.onUserFilterInput(d)}),gd(),ZT(23,ut,3,0,"button",8),Js(24,"mat-autocomplete",9,0),Ey("optionSelected",function(d){return s.onUserFilterSelected(d)}),XT(26,gt,2,2,"mat-option",6,ct),gd()()(),ZT(28,kt,41,26),ZT(29,Ft,1,0,"app-empty-state",10),ZT(30,Et,15,9,"mat-card",11),gd();}if(a&2){let m=D_(25);dy("steps",nS(23,lt)),SC(5),jy(gS(6,15,"Month")),SC(2),$y("ngModel",s.selectedMonth),pb(),SC(),JT(s.months),SC(4),jy(gS(13,17,"Year")),SC(2),$y("ngModel",s.selectedYear),pb(),SC(),JT(s.years),SC(4),jy(gS(20,19,"Agent")),SC(2),dy("placeholder",Y_(gS(22,21,"Filter by agent")))("value",s.userFilterText)("matAutocomplete",m),SC(2),YT(s.selectedUserId?23:-1),SC(),dy("displayWith",s.displayUserName),SC(2),JT(s.filteredUsers),SC(2),YT(s.analytics?28:-1),SC(),YT(!s.isAnalyticsLoading&&!s.analytics?29:-1),SC(),YT(s.isLoading||s.responses.length>0?30:-1);}},dependencies:[ce,R,Xv,Ng,Og,Gc,Tt$1,Q,X,En,De,f$1,he,zg,w0,x0,ei,Vh,H0,Zx,dn,da,xr,Sh,zw,Nw,sk,nd,id,rC,wC,mv,GC,tD,vD,cD,hD,_D,mD,al,tM,dM,Lb,r1,P1,xS,Vs,Fi,GS,iI,RI,us,ms,UI,tE,Dn,ME,ny,go,Kd,XE,LT,mA,QM,WM,mt$1],styles:[".anal
1ytics-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.date-filter[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.date-filter[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:180px}.summary-cards[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.summary-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;padding:20px 16px;text-align:center}.summary-card[_ngcontent-%COMP%] .summary-icon[_ngcontent-%COMP%]{font-size:32px;width:32px;height:32px;margin-bottom:8px}.summary-card[_ngcontent-%COMP%] .summary-icon.icon-accent[_ngcontent-%COMP%]{color:#19e3c2}.summary-card[_ngcontent-%COMP%] .summary-icon.icon-success[_ngcontent-%COMP%]{color:#13deb9}.summary-card[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%]{font-size:var(--font-size-3xl);font-weight:600;line-height:1.2}.summary-card[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%]{font-size:var(--font-size-sm);color:var(--text-secondary, var(--color-text-muted));margin-top:4px}.charts-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:16px}.chart-card[_ngcontent-%COMP%]{min-height:300px}.details-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:16px}.detail-card[_ngcontent-%COMP%]{overflow:auto}.responses-card[_ngcontent-%COMP%] .table-responsive[_ngcontent-%COMP%]{overflow-x:auto}.rating-stars[_ngcontent-%COMP%]{color:#ffb400;font-size:var(--font-size-sm);letter-spacing:1px}.comment-cell[_ngcontent-%COMP%]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;padding:48px 16px;text-align:center;color:var(--text-secondary, var(--color-text-muted))}.empty-state[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%]{font-size:var(--font-size-5xl);width:48px;height:48px;margin-bottom:12px;opacity:.5}.w-100[_ngcontent-%COMP%]{width:100%}"],changeDetection:1});}}return t})();export{Li as FeedbackAnalyticsComponent};
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.