1import{_ as A,o as _,a as c,w as t,e,d as n,t as m,c as g,F as j,r as H,m as U,b as i,j as w,k as I,I as S,J as T,C,l as W,T as G,H as J,G as Y}from"./entry.d93a3ed3.js";import{_ as K}from"./title.4aeb40cd.js";import{_ as Q}from"./body.36ba95ef.js";import{_ as X}from"./index.1cd70825.js";import{_ as N}from"./heading.9a0adf35.js";import{_ as Z}from"./card.12366def.js";import{_ as $,a as q}from"./card.e13913ea.js";import{_ as ee}from"./form.22e81666.js";import{_ as oe}from"./footer.806de146.js";import{_ as te}from"./form.55960615.js";import{_ as se}from"./rating.605e1592.js";import{_ as ae,a as re,b as ne}from"./index.3f0990fa.js";import{_ as le}from"./buttons.ab099582.js";import{O as _e}from"./Optional.04c78a54.js";import{S as de}from"./ShortDate.b276ead1.js";import"./VDivider.bd007436.js";import"./VCard.25e4f60b.js";import"./createSimpleFunctional.fc1433ea.js";import"./VAvatar.b632f07f.js";import"./factory.c6a422af.js";import"./field.fb618caf.js";import"./VInput.687065d2.js";import"./index.ad65ad69.js";import"./VList.58cb0795.js";import"./VListItem.42ed339b.js";import"./ssrBoot.58070f5c.js";import"./VListItemAction.cafe8ab8.js";import"./VCheckboxBtn.b4098672.js";import"./VSelectionControl.084d68e4.js";import"./VLabel.96d1ac2b.js";import"./text-field.114b9c6c.js";import"./VTextField.dd8ba950.js";import"./VField.80389ccf.js";import"./forwardRefs.e658ad70.js";import"./textarea.2da795ad.js";import"./combobox.385aef84.js";import"./VSelect.e3908e59.js";import"./dialog-transition.9f9b6364.js";import"./VMenu.7149688b.js";import"./VOverlay.8c4e1463.js";import"./VChip.805d40d9.js";import"./filter.6e50a7ac.js";import"./date-picker.713689ee.js";import"./sheet.afa4d008.js";import"./VDialog.098f514f.js";import"./autocomplete.d5fe3b94.js";import"./VAutocomplete.448b8834.js";import"./password-strength.977e48f7.js";import"./radio-group.fc68cd0f.js";import"./VRadioGroup.f4ff49da.js";import"./VAlert.02291e68.js";import"./file-input.deb99a04.js";import"./VFileInput.dbf69c44.js";import"./VWindowItem.86bedc55.js";const pe={props:{assessor:{type:Object,default:()=>({})}},emits:["close"],methods:{Optional:_e,ShortDate:de,removeResponse(){this.$emit("close",this.assessor)},includeResponse(){this.$emit("close",this.assessor)},cancel(){this.$emit("close")}}},y=o=>(S("data-v-9c0821b2"),o=o(),T(),o),ce=y(()=>n("dt",null,"Name",-1)),ie=y(()=>n("dt",null,"Email",-1)),me=y(()=>n("dt",null,"Position",-1)),ue=y(()=>n("dt",null,"Response date",-1)),fe={key:0},he={key:1};function ke(o,a,d,l,r,s){const f=N,x=se,k=ae,u=I,h=le,b=re,v=ne;return _(),c(v,{title:"Response details",class:"med-approve-feedback-response-modal",onCancel:s.cancel},{default:t(()=>[e(k,{"padding-x":"",class:"text-left"},{default:t(()=>[e(f,{text:"Assessor details"}),n("dl",null,[ce,n("dd",null,m(s.Optional(d.assessor.name)),1),ie,n("dd",null,m(s.Optional(d.assessor.email)),1),me,n("dd",null,m(s.Optional(d.assessor.position)),1),ue,n("dd",null,m(s.Optional(s.ShortDate(d.assessor.responded))),1)]),e(f,{text:"Responses"}),n("dl",null,[(_(!0),g(j,null,H(d.assessor.questions,p=>(_(),g("div",{key:p.key},[n("dt",null,m(p.text),1),p.rating?(_(),g("dd",fe,[e(x,U(p.rating,{"model-value":p.rating.value}),null,16,["model-value"])])):(_(),g("dd",he,m(s.Optional(p.answer)),1))]))),128))])]),_:1}),e(b,{"padding-x":""},{default:t(()=>[e(h,null,{default:t(()=>[d.assessor.removed!=!0?(_(),c(u,{key:0,color:"red-darken-1",size:"large",block:"",onClick:s.removeResponse},{default:t(()=>[i(" Remove this response ")]),_:1},8,["onClick"])):w("",!0),d.assessor.removed==!0?(_(),c(u,{key:1,size:"large",block:"",primary:"",onClick:s.includeResponse},{default:t(()=>[i(" Include this response ")]),_:1},8,["onClick"])):w("",!0)]),_:1}),e(u,{size:"large",variant:"text",block:"",onClick:s.cancel},{default:t(()=>[i("Close")]),_:1},8,["onClick"])]),_:1})]),_:1},8,["onCancel"])}const be=A(pe,[["render",ke],["__scopeId","data-v-9c0821b2"]]);const ve={data(){return{loading:!0,saving:!1,error:!1,panel:[!0,!0,!0],feedback:{},approverIsValid:!1,showResponseModal:!1,selectedAssessorEmail:"",success:!1}}
1,computed:{apiUrl(){return`feedback_approvals/${this.$route.params.id}?token=${this.$route.query.token}`},approver(){return this.feedback.payload.approver},responseCount(){const o=this.feedback.payload.assessors;return o?o.filter(a=>a.responses&&!a.removed).length:0},selectedAssessor(){const a=(this.feedback.payload.assessors||[]).find(l=>l.email===this.selectedAssessorEmail),d=this.feedback.payload.formData.questions.map(l=>{let r=a.responses[l.attribute],s;return l.type==="dropdown"&&!(l.items instanceof Array)&&(r=this.feedback.payload.formData.options[l.items].find(f=>f.value===r).text),l.type==="rating"&&(s={maximum:l.length||5,value:r,lowerLabel:l.lowerLabel,higherLabel:l.higherLabel}),{key:l.attribute,text:l.label,answer:r,rating:s}});return{...a,questions:d}},isTeachingFeedback(){return this.feedback.feedbackType==="TeachingFeedback"},approverEmail(){return this.approver.email},approverFirstName(){return this.approver.name.split(" ")[0]},approverLastName(){const o=this.approver.name.split(" ");return o.length>1?(o.shift(),o.join(" ")):null}},created(){const o=`feedback_approvals/${this.$route.params.id}?token=${this.$route.query.token}`;new C(o).request("get",{}).then(a=>{this.feedback=a.data,this.loading=!1}).catch(()=>{this.error=!0})},methods:{approve(){this.saving=!0,this.approver.removed=this.feedback.payload.assessors.filter(a=>a.removed===!0).map(a=>a.email);const o=`feedback_approvals/${this.$route.params.id}/approve?token=${this.$route.query.token}`;new C(o).request("put",{feedback_approval:{approver:this.approver}}).then(()=>{this.saving=!1,this.success=!0})},showResponse(o){this.selectedAssessorEmail=o,this.showResponseModal=!0},closeResponseModal(o){if(o){const a=this.feedback.payload.assessors.find(d=>d.email===o.email);a.removed=a.removed!==!0}this.showResponseModal=!1}}},R=o=>(S("data-v-2b277732"),o=o(),T(),o),ge=R(()=>n("p",{class:"mt-4"}," We can't find the feedback you are looking for. You might see this message if the URL is not quite right, if you accidentally reloaded the page after approving the feedback or if someone else has already approved the feedback. In the latter case you might want to check with the person who asked you to approve their feedback... ",-1)),ye=R(()=>n("p",{class:"subheading mt-4 mb-12"}," If you would like to use our free feedback tools yourself, you can sign up right here: ",-1)),xe={class:"user-details"},we=R(()=>n("div",null,"for",-1)),Re={class:"user-name"};function Ce(o,a,d,l,r,s){const f=G,x=J,k=K,u=Y,h=Q,b=X,v=I,p=N,F=Z,L=$,O=q,V=ee,E=oe,M=te,z=be,B=W;return _(),c(B,{class:"med-approve-feedback py-11"},{default:t(()=>[e(x,null,{default:t(()=>[e(f,null,{default:t(()=>[i("ePortfolio | Feedback | Approve")]),_:1})]),_:1}),r.loading?(_(),c(b,{key:0},{default:t(()=>[e(k,null,{default:t(()=>[i("Approve feedback")]),_:1}),r.error?(_(),c(h,{key:0},{default:t(()=>[e(u,{color:"red-darken-2",icon:"error_outline",title:"Whoops!"},{default:t(()=>[ge]),_:1})]),_:1})):(_(),c(h,{key:1},{default:t(()=>[e(u,{title:"Please wait a moment while we load the feedback details...",loading:""})]),_:1}))]),_:1})):r.success?(_(),c(b,{key:1},{default:t(()=>[e(k,null,{default:t(()=>[i("Feedback approved")]),_:1}),e(h,null,{default:t(()=>[e(u,{color:"green-darken-2",icon:"check",title:"Thanks for approving the feedback"},{default:t(()=>[ye,e(v,{size:"large",block:"",primary:"",to:{name:"sign-up",query:{source:"from_feedback",first_name:s.approverFirstName,last_name:s.approverLastName,email:s.approverEmail}}},{default:t(()=>[i(" Sign up for free ")]),_:1},8,["to"])]),_:1})]),_:1})]),_:1})):(_(),c(b,{key:2},{default:t(()=>[e(M,null,{default:t(({valid:D})=>[e(k,{pretext:"Approve feedback"},{default:t(()=>[i(m(r.feedback.feedbackTypeText||r.feedback.feedbackType),1)]),_:1}),n("div",xe,[we,n("div",Re,m(r.feedback.userName),1)]),e(h,null,{default:t(()=>[e(p,{text:"Basic details"}),e(F,{feedback:r.feedback},null,8,["feedback"]),e(p,{text:"Assessors",badge:r.feedback.payload.assessors.length},null,8,["badge"]),e(L,{assessors:r.feedback.payload.assessors,editable:!s.isTeachingFeedback,onShowResponse:s.showResponse},null,8,["assessors","editable","onShowResponse"]),e(p,{text:"Responses",badge:s.responseCount},null,8,["badge"]),e(O,{feedback:r.feedback},null,8,["feedback"]),e(p,{text:"Supervisor details"}),e(V,{modelValue:s.approver,"onUpdate:modelValue":a[0]||(a[0]=P=>s.approver=P),approval:!0},null,8,["modelValue"])]),_:1}),e(E,null,{default:t(()=>[e(v,{disabled:!D,loading:r.saving,size:"x-large",primary:"",onClick:s.approve},{default:t(()=>[i(" Approve feedback ")]),_:2},1032,["disabled","loading","onClick"])]),_:2},1024)]),_:1})]),_:1})),r.showResponseModal?(_(),c(z,{key:3,assessor:s.selectedAssessor,onClose:s.closeResponseModal},null,8,["assessor","onClose"])):w("",!0)]),_:1})}const Io=A(ve,[["render",Ce],["__scopeId","data-v-2b277732"]]);export{Io as default};
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.