PageSourceSearch

https://app.ctrlgrow.com/assets/assignments-b9f8462f.js

js ctrlgrow.com collected 2026-10-05 21:42:48 UTC 7,418 bytes, 1 lines download raw bytes

1import{aG as e,l as a,U as t,o as l,c as s,q as i,B as r,a9 as o,n as u,C as n,V as d,M as m,aH as p,b as c,aI as v,v as _,s as g,w as h,aL as f,a7 as V,aJ as b,ab as y,ac as j}from"./index-94ffe496.js";import{u as w}from"./useTrainingStore-a30b058d.js";import{u as k}from"./useLeaveReportsStore-ae4b39fb.js";import{b as A}from"./route-block-83d24a4e.js";import{V as C,a as P}from"./VRow-997c6631.js";import{V as S}from"./VAutocomplete-da406bde.js";import{V as x}from"./VSelect-eb1cd970.js";import{V as T}from"./VDataTableServer-85f4d5be.js";import{V as U}from"./VChip-fedb20d6.js";import{V as D}from"./VTooltip-5633ee18.js";import{V as N}from"./VDialog-0af05bef.js";import"./filter-12589dd8.js";import"./VList-5d2af1ed.js";import"./ssrBoot-e21bc5e1.js";import"./VDivider-7ec6a900.js";import"./VCheckboxBtn-9467ff86.js";import"./VSelectionControl-a43e53d8.js";import"./VDataTable-33c2ac34.js";import"./VTable-02f01b3a.js";const R={class:"d-flex justify-space-between align-center flex-wrap gap-4"},L=u("h3",{class:"my-0"},"Training Assignments",-1),$={class:"d-flex align-center gap-2"},z={class:"text-caption"},B={__name:"assignments",setup(A){const B=e(),E=w(),F=k(),I=a([]),q=a([]),H=a([]),O=a(0),G=a(!1),J=a({user_id:null,path_id:null,status:"all"}),K=a(1),M=a(25),Q=a(!1),W=a(!1),X=a({user_ids:[],path_id:null}),Y=[{title:"Employee",key:"user.name",sortable:!1},{title:"Path",key:"source_path_name",sortable:!1},{title:"Status",key:"status",sortable:!1},{title:"Progress",key:"progress_percent",sortable:!1},{title:"Assigned by",key:"assigner.name",sortable:!1},{title:"Assigned",key:"created_at",sortable:!1},{title:"Actions",key:"actions",sortable:!1,align:"center"}],Z=[{title:"All",value:"all"},{title:"Not started",value:"not_started"},{title:"In progress",value:"in_progress"},{title:"Completed",value:"completed"}],ee=e=>({not_started:"Not started",in_progress:"In progress",completed:"Completed"}[e]||e),ae=e=>{if(!e)return"—";const a=new Date(e);return isNaN(a.getTime())?"—":a.toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})},te=()=>{G.value=!0;const e={page:K.value,itemsPerPage:M.value};J.value.user_id&&(e.user_id=J.value.user_id),J.value.path_id&&(e.path_id=J.value.path_id),J.value.status&&"all"!==J.value.status&&(e.status=J.value.status),E.fetchAssignments(e).then(e=>{var a;H.value=e.data.data,O.value=(null==(a=e.data.meta)?void 0:a.total)||e.data.data.length}).catch(()=>B.error("Failed to load assignments")).finally(()=>{G.value=!1})},le=()=>{K.value=1,te()},se=e=>{K.value=e.page,M.value=e.itemsPerPage,te()},ie=()=>{X.value={user_ids:[],path_id:null},Q.value=!0},re=()=>{X.value.path_id&&X.value.user_ids.length&&(W.value=!0,E.createAssignments({path_id:X.value.path_id,user_ids:X.value.user_ids}).then(e=>{B.success(e.data.message||"Assigned"),Q.value=!1,te()}).catch(e=>{var a,t,l,s,i;const r=(null==(t=null==(a=e.response)?void 0:a.data)?void 0:t.message)||(null==(i=Object.values((null==(s=null==(l=e.response)?void 0:l.data)?void 0:s.errors)||{})[0])?void 0:i[0])||"Failed to assign";B.error(r)}).finally(()=>{W.value=!1}))};return t(()=>{F.fetchCompanyUsers().then(e=>{I.value=e.data.users.filter(e=>1===e.status).map(e=>({title:`${e.first_name} ${e.last_name}`,value:e.id})).sort((e,a)=>e.title.localeCompare(a.title))}).catch(()=>{}),E.fetchPaths({itemsPerPage:200}).then(e=>{q.value=e.data.data.map(e=>({title:e.name,value:e.id}))}).catch(()=>{}),te()}),(e,a)=>(l(),s("div",null,[i(V,null,{default:r(()=>[i(o,null,{default:r(()=>[u("div",R,[L,i(n,{color:"primary",onClick:ie},{default:r(()=>[i(d,{start:"",icon:"tabler-user-plus"}),m(" Assign Path ")]),_:1})])]),_:1}),i(p,null,{default:r(()=>[i(C,{class:"mb-4"},{default:r(()=>[i(P,{cols:"12",sm:"4"},{default:r(()=>[i(S,{modelValue:J.value.user_id,"onUpdate:modelValue":[a[0]||(a[0]=e=>J.value.user_id=e),le],items:I.value,label:"Employee",density:"compact",clearable:""},null,8,["modelValue","items"])]),_:1}),i(P,{cols:"12",sm:"4"},{default:r(()=>[i(S,{modelValue:J.value.path_id,"onUpdate:modelValue":[a[1]||(a[1]=e=>J.value.path_id=e),le],items:q.value,label:"Path",density:"compact",clearable:""},null,8,["modelValue","items"])]),_:1}),i(P,{cols:"12",sm:"4"},{default:r(()=>[i(x,{modelValue:J.value.status,"onUpdate:modelValue":[a[2]||(a[2]=e=>J.value.status=e),le],items:Z,label:"Status",density:"compact"},null,8,["modelValue"])]),_:1})]),_:1}
1),H.value.length||G.value?_("",!0):(l(),c(v,{key:0,type:"info",variant:"tonal",density:"compact",class:"mb-4"},{default:r(()=>[m(' No assignments match your filters. Click "Assign Path" to start. ')]),_:1})),i(g(T),{headers:Y,items:H.value,"items-length":O.value,loading:G.value,"items-per-page":M.value,page:K.value,"onUpdate:options":se},{"item.user.name":r(({item:e})=>{var a;return[m(h((null==(a=e.raw.user)?void 0:a.name)||"—"),1)]}),"item.status":r(({item:e})=>{return[i(U,{color:(a=e.raw.status,{not_started:"secondary",in_progress:"warning",completed:"success"}[a]||"default"),size:"small"},{default:r(()=>[m(h(ee(e.raw.status)),1)]),_:2},1032,["color"])];var a}),"item.progress_percent":r(({item:e})=>[u("div",$,[i(f,{"model-value":e.raw.progress_percent,color:"completed"===e.raw.status?"success":"primary",height:"6",rounded:"",style:{"min-width":"80px"}},null,8,["model-value","color"]),u("span",z,h(e.raw.progress_percent)+"%",1)])]),"item.assigner.name":r(({item:e})=>{var a;return[m(h((null==(a=e.raw.assigner)?void 0:a.name)||"—"),1)]}),"item.created_at":r(({item:e})=>[m(h(ae(e.raw.created_at)),1)]),"item.actions":r(({item:e})=>[i(n,{icon:"",variant:"text",size:"small",color:"error",onClick:a=>{return t=e.raw,void(confirm(`Remove ${t.user.name}'s assignment to "${t.source_path_name}"? Their progress will be lost.`)&&E.deleteAssignment(t.id).then(()=>{B.success("Assignment removed"),te()}).catch(e=>{var a,t;return B.error((null==(t=null==(a=e.response)?void 0:a.data)?void 0:t.message)||"Failed to remove")}));var t}},{default:r(()=>[i(d,{icon:"tabler-trash",size:"20"}),i(D,{activator:"parent"},{default:r(()=>[m("Remove assignment")]),_:1})]),_:2},1032,["onClick"])]),_:1},8,["items","items-length","loading","items-per-page","page"])]),_:1})]),_:1}),i(N,{modelValue:Q.value,"onUpdate:modelValue":a[6]||(a[6]=e=>Q.value=e),"max-width":"600"},{default:r(()=>[i(V,null,{default:r(()=>[i(o,null,{default:r(()=>[m("Assign training path")]),_:1}),i(p,null,{default:r(()=>[i(b,{onSubmit:y(re,["prevent"])},{default:r(()=>[i(C,null,{default:r(()=>[i(P,{cols:"12"},{default:r(()=>[i(S,{modelValue:X.value.path_id,"onUpdate:modelValue":a[3]||(a[3]=e=>X.value.path_id=e),items:q.value,label:"Training path"},null,8,["modelValue","items"])]),_:1}),i(P,{cols:"12"},{default:r(()=>[i(S,{modelValue:X.value.user_ids,"onUpdate:modelValue":a[4]||(a[4]=e=>X.value.user_ids=e),items:I.value,label:"Employees",multiple:"",chips:"","closable-chips":"",hint:"Select one or many — each gets their own snapshot","persistent-hint":""},null,8,["modelValue","items"])]),_:1})]),_:1})]),_:1},8,["onSubmit"])]),_:1}),i(j,{class:"justify-end"},{default:r(()=>[i(n,{variant:"outlined",disabled:W.value,onClick:a[5]||(a[5]=e=>Q.value=!1)},{default:r(()=>[m("Cancel")]),_:1},8,["disabled"]),i(n,{color:"primary",disabled:!X.value.path_id||!X.value.user_ids.length,loading:W.value,onClick:re},{default:r(()=>[m(" Assign ")]),_:1},8,["disabled","loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]))}};"function"==typeof A&&A(B);export{B 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.