1"use strict";(self.webpackChunklms_frontend=self.webpackChunklms_frontend||[]).push([[835],{10835:(T,_,a)=>{a.r(_),a.d(_,{FeedbackResponsesComponent:()=>j});var p=a(57565),e=a(70106),d=a(45109),v=a(1595),c=a(39289),m=a(16368),f=a(49989),u=a(3741),g=a(51115),h=a(1898),F=a(22529),C=a(56857),k=a(29959);function b(n,r){if(1&n&&(e.j41(0,"div",14)(1,"div",15)(2,"div",16)(3,"span",17),e.EFF(4),e.k0s(),e.j41(5,"span",18),e.EFF(6,"Completed"),e.k0s()()(),e.j41(7,"div",15)(8,"div",16)(9,"span",17),e.EFF(10),e.k0s(),e.j41(11,"span",18),e.EFF(12,"Completion rate"),e.k0s()()(),e.j41(13,"div",15)(14,"div",16)(15,"span",17),e.EFF(16),e.k0s(),e.j41(17,"span",18),e.EFF(18,"Average score /100"),e.k0s()()(),e.j41(19,"div",15)(20,"div",19)(21,"span",17),e.EFF(22),e.k0s(),e.j41(23,"span",18),e.EFF(24,"Review link shown"),e.k0s()()()()),2&n){let t;const s=e.XpG();e.R7$(4),e.JRh(s.stats.completed),e.R7$(6),e.SpI("",s.stats.completionRate,"%"),e.R7$(6),e.JRh(null!==(t=s.stats.avgScore)&&void 0!==t?t:"\u2014"),e.R7$(4),e.AVh("stat--warn",s.stats.reviewLinkShownPercent<100),e.Y8G("pTooltip",s.stats.reviewLinkNote),e.R7$(2),e.SpI("",s.stats.reviewLinkShownPercent,"%")}}function E(n,r){if(1&n&&(e.j41(0,"div",23)(1,"span",24),e.EFF(2),e.k0s(),e.j41(3,"span",25),e.EFF(4),e.k0s()()),2&n){const t=r.$implicit;e.R7$(2),e.JRh(t.questionId),e.R7$(2),e.SpI("",t.count," left here")}}function R(n,r){if(1&n&&(e.j41(0,"div",20)(1,"b"),e.EFF(2,"Where people stop"),e.k0s(),e.DNE(3,E,5,2,"div",21),e.j41(4,"small",22),e.EFF(5,"Shorten or reword the question people abandon. This moves completion more than anything else."),e.k0s()()),2&n){const t=e.XpG();e.R7$(3),e.Y8G("ngForOf",t.stats.dropOffByQuestion)}}function M(n,r){1&n&&(e.j41(0,"tr")(1,"th"),e.EFF(2,"Who"),e.k0s(),e.j41(3,"th"),e.EFF(4,"Score"),e.k0s(),e.j41(5,"th"),e.EFF(6,"Progress"),e.k0s(),e.j41(7,"th"),e.EFF(8,"Summary"),e.k0s(),e.j41(9,"th"),e.EFF(10,"In their words"),e.k0s(),e.j41(11,"th"),e.EFF(12,"When"),e.k0s(),e.nrm(13,"th"),e.k0s())}function O(n,r){if(1&n&&(e.j41(0,"small",22),e.EFF(1),e.k0s()),2&n){const t=e.XpG().$implicit;e.R7$(),e.E5c("",t.planName,"",t.planName&&t.standardName?" \xb7 ":"","",t.standardName,"")}}function P(n,r){if(1&n&&e.nrm(0,"p-tag",32),2&n){const t=e.XpG().$implicit,s=e.XpG();e.Y8G("value",t.score+"")("severity",s.scoreSeverity(t.score))}}function I(n,r){1&n&&(e.j41(0,"span"),e.EFF(1,"\u2014"),e.k0s())}function y(n,r){if(1&n){const t=e.RV6();e.j41(0,"tr",26),e.bIt("click",function(){const o=e.eBV(t).$implicit,i=e.XpG();return e.Njj(i.open(o))}),e.j41(1,"td")(2,"div"),e.EFF(3),e.k0s(),e.DNE(4,O,2,3,"small",27),e.k0s(),e.j41(5,"td"),e.DNE(6,P,1,2,"p-tag",28)(7,I,2,0,"span",29),e.k0s(),e.j41(8,"td"),e.EFF(9),e.k0s(),e.j41(10,"td")(11,"small",30),e.EFF(12),e.k0s()(),e.j41(13,"td")(14,"small"),e.EFF(15),e.k0s()(),e.j41(16,"td")(17,"small"),e.EFF(18),e.nI1(19,"date"),e.k0s()(),e.j41(20,"td")(21,"p-button",31),e.bIt("onClick",function(){const o=e.eBV(t).$implicit,i=e.XpG();return e.Njj(i.open(o))}),e.k0s()()()}if(2&n){const t=r.$implicit,s=e.XpG();e.R7$(3),e.JRh(t.studentName||"Anonymous"),e.R7$(),e.Y8G("ngIf",t.planName||t.standardName),e.R7$(2),e.Y8G("ngIf",null!=t.score),e.R7$(),e.Y8G("ngIf",null==t.score),e.R7$(2),e.SpI("",t.percentDone,"%"),e.R7$(3),e.JRh(s.summarise(t)),e.R7$(3),e.JRh(t.freeText),e.R7$(3),e.JRh(e.i5U(19,8,t.completedAt||t.startedAt,"d MMM, h:mm a"))}}function x(n,r){1&n&&(e.j41(0,"tr")(1,"td",33),e.EFF(2,"No responses yet."),e.k0s()())}let j=(()=>{class n{constructor(){this.service=(0,e.WQX)(C.i),this.router=(0,e.WQX)(v.Ix),this.toast=(0,e.WQX)(F.f),this.loading=!0,this.rows=[],this.stats=null,this.forms=[],this.formId=null,this.statuses=[{label:"All",value:null},{label:"Completed",value:"COMPLETED"},{label:"Started but not finished",value:"STARTED"}],this.status=null}ngOnInit(){this.service.listForms().subscribe({next:t=>this.forms=[{id:null,name:"All forms"},...t?.data||[]],error:()=>this.forms=[]}),this.load()}load(){this.loading=!0;const t={};this.formId&&(t.formId=this.formId),this.status&&(t.status=this.status),this.service.responses(t).subscribe({next:s=>{this.rows=s?.data||[],this.loading=!1},error:()=>{this.toast.error("Could not load responses."),this.loading=!1}}),this.service.stats().subscribe({next:s=>this.stats=s?.data||null,error:()=>this.stats=null})}
1summarise(t){return(Array.isArray(t.answers)?t.answers:[]).filter(o=>"text"!==o.type).map(o=>`${o.label??(Array.isArray(o.value)?o.value.join(", "):o.value)}`).join(" \xb7 ")}scoreSeverity(t){return null==t?"secondary":t>=80?"success":t>=50?"warning":"danger"}open(t){this.router.navigate(["/feedback/responses",t.id])}back(){this.router.navigate(["/feedback"])}static{this.\u0275fac=function(s){return new(s||n)}}static{this.\u0275cmp=e.VBU({type:n,selectors:[["ems-feedback-responses"]],standalone:!0,features:[e.aNF],decls:21,vars:10,consts:[[1,"card"],[1,"title-action"],[1,"title"],["label","Back to forms","styleClass","p-button-text",3,"onClick"],["class","grid mb-3",4,"ngIf"],["class","dropoff",4,"ngIf"],[1,"grid","mb-2"],[1,"md:col-4","col-12"],["optionLabel","name","optionValue","id","styleClass","w-full",3,"ngModelChange","onChange","options","ngModel"],["optionLabel","label","optionValue","value","styleClass","w-full",3,"ngModelChange","onChange","options","ngModel"],["responsiveLayout","scroll",3,"value","loading","paginator","rows"],["pTemplate","header"],["pTemplate","body"],["pTemplate","emptymessage"],[1,"grid","mb-3"],[1,"md:col-3","col-6"],[1,"stat"],[1,"stat__n"],[1,"stat__l"],["tooltipPosition","top",1,"stat",3,"pTooltip"],[1,"dropoff"],["class","dropoff__row",4,"ngFor","ngForOf"],[1,"text-color-secondary"],[1,"dropoff__row"],[1,"dropoff__q"],[1,"dropoff__n"],[1,"clickable",3,"click"],["class","text-color-secondary",4,"ngIf"],[3,"value","severity",4,"ngIf"],[4,"ngIf"],[1,"summary"],["label","View","styleClass","p-button-text p-button-sm",3,"onClick"],[3,"value","severity"],["colspan","7",1,"text-center","p-4"]],template:function(s,o){1&s&&(e.j41(0,"div",0)(1,"div",1)(2,"span",2),e.EFF(3,"Feedback Results"),e.k0s(),e.j41(4,"p-button",3),e.bIt("onClick",function(){return o.back()}),e.k0s()(),e.nrm(5,"p-divider"),e.DNE(6,b,25,7,"div",4)(7,R,6,1,"div",5),e.j41(8,"div",6)(9,"div",7)(10,"label"),e.EFF(11,"Form"),e.k0s(),e.j41(12,"p-dropdown",8),e.mxI("ngModelChange",function(l){return e.DH7(o.formId,l)||(o.formId=l),l}),e.bIt("onChange",function(){return o.load()}),e.k0s()(),e.j41(13,"div",7)(14,"label"),e.EFF(15,"Status"),e.k0s(),e.j41(16,"p-dropdown",9),e.mxI("ngModelChange",function(l){return e.DH7(o.status,l)||(o.status=l),l}),e.bIt("onChange",function(){return o.load()}),e.k0s()()(),e.j41(17,"p-table",10),e.DNE(18,M,14,0,"ng-template",11)(19,y,22,11,"ng-template",12)(20,x,3,0,"ng-template",13),e.k0s()()),2&s&&(e.R7$(6),e.Y8G("ngIf",o.stats),e.R7$(),e.Y8G("ngIf",null==o.stats||null==o.stats.dropOffByQuestion?null:o.stats.dropOffByQuestion.length),e.R7$(5),e.Y8G("options",o.forms),e.R50("ngModel",o.formId),e.R7$(4),e.Y8G("options",o.statuses),e.R50("ngModel",o.status),e.R7$(),e.Y8G("value",o.rows)("loading",o.loading)("paginator",!0)("rows",20))},dependencies:[p.MD,p.Sq,p.bT,p.vh,d.YN,d.BC,d.vS,u.bG,u.XI,k.Ei,g.$,g.v,f.kr,f.ms,c.tm,c.$n,m.m,m.c,h.S,h.m],styles:['@charset "UTF-8";.stat[_ngcontent-%COMP%]{background:var(--surface-100);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:2px}.stat__n[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:650}.stat__l[_ngcontent-%COMP%]{font-size:.8rem;color:var(--text-color-secondary)}.stat--warn[_ngcontent-%COMP%]{background:#b423181a}.stat--warn[_ngcontent-%COMP%] .stat__n[_ngcontent-%COMP%]{color:var(--red-500)}.dropoff[_ngcontent-%COMP%]{background:var(--surface-100);border-radius:10px;padding:14px 16px;margin-bottom:18px}.dropoff__row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--surface-300)}.dropoff__q[_ngcontent-%COMP%]{font-family:monospace;font-size:.85rem}.dropoff__n[_ngcontent-%COMP%]{font-size:.85rem;color:var(--text-color-secondary)}.summary[_ngcontent-%COMP%]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--text-color-secondary)}.who__name[_ngcontent-%COMP%]{font-size:1.05rem;font-weight:650}.who__meta[_ngcontent-%COMP%]{font-size:.83rem;color:var(--text-color-secondary);margin:4px 0 10px}.qa[_ngcontent-%COMP%]{padding:12px 0;border-bottom:1px solid var(--surface-200)}.qa__q[_ngcontent-%COMP%]{font-size:.82rem;color:var(--text-color-secondary);line-height:1.4}.qa__a[_ngcontent-%COMP%]{font-size:1rem;font-weight:550;margin-top:3px;line-height:1.4}.qa__skip[_ngcontent-%COMP%]{font-size:.9rem;color:var(--text-color-secondary);font-style:italic;margin-top:3px}.freetext[_ngcontent-%COMP%]{margin-top:16px}.freetext[_ngcontent-%COMP%] blockquote[_ngcontent-%COMP%]{margin:6px 0 0;padding:12px 14px;background:var(--surface-100);border-left:3px solid var(--primary-color);border-radius:6px;font-size:.95rem;line-height:1.5;white-space:pre-wrap}tr.clickable[_ngcontent-%COMP%]{cursor:pointer}tr.clickable[_ngcontent-%COMP%]:hover{background:var(--surface-100)}']})}}return n})()}}]);
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.