PageSourceSearch

https://buildersacademynz.web.app/chunk-NGKENMX3.js

js buildersacademynz.web.app collected 2026-10-03 12:20:00 UTC 14,525 bytes, 1 lines download raw bytes

1import{a as wt}from"./chunk-B75HGZZC.js";import{D as rt,E as st,Q as lt,ba as ct,da as dt,h as et,k as nt,l as it,q as at,y as ot}from"./chunk-KMXQE4KL.js";import{_ as xt,a as gt,h as ut,pa as ht,ra as Ct,ta as yt,x as _t}from"./chunk-R5WJRIHB.js";import{c as pt,d as mt}from"./chunk-LFRTPRFK.js";import{a as ft}from"./chunk-GUZO7ZNK.js";import{Aa as P,Ba as Q,Ca as Y,Db as X,Ga as T,Ha as D,Ia as m,J as N,N as E,O as L,Ra as G,Rb as Z,Ua as c,Va as w,Vc as tt,Wa as O,Xa as F,aa as r,f as q,fa as J,k as V,ka as k,lb as v,mb as M,qa as h,s as $,sa as C,ub as H,va as j,vb as K,wa as W,wb as R,xa as y,ya as a,za as o}from"./chunk-3RYB6SVN.js";import{a as z}from"./chunk-QYJGY2IR.js";import"./chunk-YGHZJLBQ.js";import"./chunk-PW6GA5NL.js";import"./chunk-S5XOBH6Y.js";import"./chunk-Y7EQJLOB.js";import"./chunk-4EXU7QX3.js";import"./chunk-YG5PFMJ7.js";import"./chunk-NER57BGA.js";import"./chunk-DSHYVPZD.js";import"./chunk-PD2PSGYJ.js";import"./chunk-YGDXWWXH.js";import"./chunk-JNMFIV4M.js";import"./chunk-DXRS3GW7.js";import"./chunk-ZDL7X67C.js";import"./chunk-CLVRMGG4.js";import{a as U,b as A,g as x}from"./chunk-NMDLJX5Q.js";var vt=(t,s)=>s.user_id;function Mt(t,s){t&1&&(a(0,"div",1),P(1,"ion-spinner",2),a(2,"p"),c(3,"Loading staff list..."),o()())}function St(t,s){if(t&1){let e=T();a(0,"div",10)(1,"ion-checkbox",19),D("ionChange",function(i){E(e);let l=m(2);return L(l.onLoadDetailToggle(i.detail.checked))}),o(),a(2,"span",20),c(3),v(4,"translate"),o()()}if(t&2){let e=m(2);r(),y("checked",e.loadFullDetails),r(2),w(M(4,2,"Unselect to list by name only for faster loading"))}}function bt(t,s){if(t&1){let e=T();a(0,"div",11)(1,"ion-checkbox",19),D("ionChange",function(i){E(e);let l=m(2);return L(l.onLoadDetailToggle(i.detail.checked))}),o(),P(2,"ion-icon",21),a(3,"span",20),c(4),v(5,"translate"),o()()}if(t&2){let e=m(2);r(),y("checked",e.loadFullDetails),r(3),w(M(5,2,"Enable to view entry counts and qualification progress. List loads faster when disabled"))}}function Pt(t,s){if(t&1&&(a(0,"span",16),c(1),o()),t&2){let e=m(2);r(),F(" ",e.userList.length," ",e.userList.length===1?"member":"members"," ")}}function Ot(t,s){t&1&&(a(0,"div",17),P(1,"ion-icon",22),a(2,"h3"),c(3,"No Staff Members"),o(),a(4,"p"),c(5,"You haven't added any staff members yet."),o(),a(6,"p"),c(7,"Add staff members to manage their logs and timesheets."),o()())}function It(t,s){if(t&1&&(a(0,"span")(1,"span",32),c(2,"Past mth: "),o(),a(3,"strong"),c(4),o()()),t&2){let e=m(3).$implicit;r(4),w(e.monthCount)}}function Et(t,s){if(t&1&&(a(0,"span")(1,"span",32),c(2,"Past 3 mths: "),o(),a(3,"strong"),c(4),o()()),t&2){let e=m(3).$implicit;r(4),w(e.threeMonthCount)}}function Lt(t,s){if(t&1&&(a(0,"div",26)(1,"div",31)(2,"span")(3,"span",32),c(4),v(5,"translate"),o(),a(6,"strong"),c(7),o()(),k(8,It,5,1,"span",33),o(),a(9,"div",31),k(10,Et,5,1,"span",33),o()()),t&2){let e=m(2).$implicit;r(4),O("",M(5,4,"Total Entries"),": "),r(3),w(e.count),r(),y("ngIf",e.monthCount!==void 0),r(2),y("ngIf",e.threeMonthCount!==void 0)}}function kt(t,s){if(t&1&&(Q(0),a(1,"ion-badge",34),c(2),o(),Y()),t&2){let e=s.$implicit,n=m(5);r(),G("completed-outline",e.unit.status==="Completed"),y("color",n.getStatusColor(e.unit.status))("ngStyle",n.getBadgeStyle(e.unit.status)),r(),O(" ",e.unit.status," ")}}function Tt(t,s){if(t&1&&(h(0,Lt,11,6,"div",26),a(1,"div",27)(2,"p",28),c(3),v(4,"translate"),o(),a(5,"div",29),k(6,kt,3,5,"ng-container",30),o()()),t&2){let e=m().$implicit;C(e.count!==void 0?0:-1),r(3),O("",M(4,3,"Qual. progress")," "),r(3),y("ngForOf",e.unitdataList)}}function Dt(t,s){if(t&1){let e=T();a(0,"ion-item",24),D("click",function(){let i=E(e).$implicit,l=m(3);return L(l.goStaffMenu(i))}),a(1,"div",25),c(2),o(),a(3,"ion-label")(4,"h2"),c(5),o(),h(6,Tt,7,5),o()()}if(t&2){let e=s.$implicit,n=m(3);r(2),F(" ",e.user_firstname[0],"",e.user_lastname[0]," "),r(3),F("",e.user_firstname," ",e.user_lastname),r(),C(n.loadFullDetails?6:-1)}}function Ft(t,s){if(t&1&&(a(0,"ion-list",18),j(1,Dt,7,5,"ion-item",23,vt),o()),t&2){let e=m(2);r(),W(e.userList)}}function zt(t,s){if(t&1&&(a(0,"ion-card",3)(1,"ion-card-content")(2,"div",4)(3,"div",5),P(4,"ion-icon",6),o(),a(5,"div",7)(6,"p"),c(7),v(8,"translate"),o(),a(9,"p",8),c(10," To link accounts have your Employee or their Assessor/Tutor update their account and select you as their employer"),o(),a(11,"p",9)(12,"strong"),c(13),o()()()()()(),h(14,St,5,4,"div",10)(15,bt,6,4,"div",11),a(16,"div",12)(17,"div",13),P(18,"ion-icon",14),a(19,"h2",15),c(20),v(21,"translate"),o(),h(22,Pt,2,2,"span",16),o(),h(23,Ot,8,0,"div",17),h(24,Ft,3,0,"ion-list",18),o()),t&2){let e=m();r(7),O(" ",M(8,7,"Access the Student Log and View Qualification Unit/Skill Progress for your Staff")," "),r(6),O("Employer ID: ",e.user.user_id),r(),C(e.loadFullDetails?14:15),r(6),w(M(21,9,"Managed Staff Members")),r(2),C(e.userList.length>0?22:-1),r(),C(e.userList.length===0?23:-1),r(),C(e.userList.length>0?24:-1)}}var Xt=(()=>{let s=class s{constructor(){this.api=N(wt),this.router=N(Z),this.user={user_id:"",tutor:"",faculty:"",provider:"",user_login:"",user_firstname:"",user_lastname:"",user_email:""},this.userList=[],this.isLoading=!1,this.loadFullDetails=!1,gt({peopleOutline:ht,informationCircleOutline:xt,personOutline:yt,arrowForwardOutline:ut,personAddOutline:Ct,chevronForwardOutline:_t})}ngOnInit(){return x(this,null,function*(){yield this.initializePage()})}ionViewWillEnter(){return x(this,null,function*(){yield this.initializePage()})}initializePage(){return x(this,null,function*(){this.isLoading=!0,this.userList=[];try{yield this.loadUserData(),this.user.user_id?yield this.getUserList(this.user.user_id):this.userList=[]}catch{this.userList=[]}finally{this.isLoading=!1}})}loadUserData(){return x(this,null,function*(){try{let n=yield z.get({key:"user"});if(n.value)this.user=JSON.parse(n.value);else{let i=localStorage.getItem("user");i&&(this.user=JSON.parse(i))}}catch{let i=localStorage.getItem("user");i&&(this.user=JSON.parse(i))}})}getUserList(n){return x(this,null,function*(){if(n)try{let i=yield new Promise((l,d)=>{this.api.getUsersByBoss(parseInt(n)).subscribe({next:u=>l(u),error:u=>d(u)})});if(i.error)this.userList=[];else{let l=yield this.loadStaffWithDataSequential(i.data||[]);this.userList=l}}catch{this.userList=[]}})}loadStaffWithDataSequential(n,i=3){return x(this,null,function*(){if(!this.loadFullDetails)return n.map(d=>A(U({},d),{unitdataList:[],count:void 0,monthCount:void 0,threeMonthCount:void 0}));let l=[];for(let d=0;d<n.length;d+=i){let u=n.slice(d,d+i),S=yield Promise.all(u.map(f=>x(this,null,function*(){let[p,g]=yield Promise.all([this.fetchStaffUnits(f),this.get
1StaffActivityCounts(f.user_id).toPromise()]),_=g||{total:0,month:0,threeMonth:0};return A(U({},f),{unitdataList:p,count:_.total,monthCount:_.month,threeMonthCount:_.threeMonth})})));l.push(...S)}return l})}fetchStaffUnits(n){return new Promise(i=>{Promise.all([this.api.getUnit(0).toPromise(),this.api.getSignedOff(0).toPromise()]).then(([l,d])=>{if(l.error==!0){i([]);return}let u=l.data.filter(p=>{let g=n.qual||"",_=n.faculty;return parseInt(p.faculty)==parseInt(_||"0")&&(!g||p.course_code==g)}),S=[];if(d&&d.data){let p=n.provider||"",g=n.faculty,_=n.user_id;S=d.data.filter(b=>parseInt(b.provider)==parseInt(p||"0")&&parseInt(b.faculty)==parseInt(g||"0")&&parseInt(b.student)==parseInt(_||"0"))}u.forEach(p=>{p.status="Not Assessed",S.forEach(g=>{p.list_id==g.unit&&(p.status=g.status)})});let f=u.map(p=>({unit:{status:p.status}}));i(f)}).catch(()=>i([]))})}getStaffActivityCounts(n){let i=this.loadFullDetails?"1":"0",l=this.loadFullDetails?"1":"0";return this.api.searchInventoryByStudent(parseInt(n),void 0,i,l).pipe(V(d=>{let u=d.data||[],S=u.length,f=new Date,p=new Date(f);p.setMonth(f.getMonth()-1);let g=new Date(f);g.setMonth(f.getMonth()-3);let _=0,b=0;return u.forEach(B=>{if(B.inventory_purchased){let I=new Date(B.inventory_purchased);I>=p&&I<=f&&_++,I>=g&&I<=f&&b++}}),{total:S,month:_,threeMonth:b}}),$(d=>q({total:0,month:0,threeMonth:0})))}goStaffMenu(n){return x(this,null,function*(){try{yield z.set({key:"currentStaff",value:JSON.stringify(n)}),(yield z.get({key:"currentStaff"})).value}catch{}try{localStorage.setItem("currentStaff",JSON.stringify(n));let i=localStorage.getItem("currentStaff")}catch{}try{sessionStorage.setItem("currentStaff",JSON.stringify(n))}catch{}yield new Promise(i=>setTimeout(i,100)),this.router.navigate(["/staff-menu"])})}openAddStaffUrl(){window.open(ft.contactStaffUrl,"_blank","location=yes")}onLoadDetailToggle(n){return x(this,null,function*(){this.loadFullDetails=n,this.user.user_id&&(this.isLoading=!0,yield this.getUserList(this.user.user_id),this.isLoading=!1)})}getStatusColor(n){if(!n)return"medium";switch(n.toLowerCase()){case"not assessed":case"not started":return"medium";case"incomplete":return"warning";case"in progress":return"tertiary";case"finished":return"warning";case"employer confirmed":return"secondary";case"completed":return"success";default:return"light"}}getBadgeStyle(n){let i=this.getStatusColor(n),d={medium:"#92949c",warning:"#ffc409",tertiary:"#7044ff",success:"#2dd36f",secondary:"#3dc2ff"}[i]||"#92949c";return{color:d,background:d}}};s.\u0275fac=function(i){return new(i||s)},s.\u0275cmp=J({type:s,selectors:[["app-managed"]],decls:3,vars:2,consts:[[1,"ion-padding"],[1,"loading-container"],["name","crescent","color","primary"],[1,"staff-info-card"],[1,"card-header"],[1,"card-icon"],["name","people-outline"],[1,"card-title-wrap"],[1,"card-subtitle"],[2,"margin-top","2px"],[2,"display","flex","align-items","center","gap","6px","padding","12px 16px","background-color","rgba(76, 175, 80, 0.05)","border-radius","4px","margin","12px 16px"],[2,"display","flex","align-items","center","gap","6px","padding","12px 16px","background-color","rgba(255, 193, 7, 0.1)","border-radius","4px","margin","12px 16px"],[1,"staff-list-section"],[1,"section-header"],["name","people-outline",1,"section-icon"],[1,"section-title"],[1,"staff-count"],[1,"empty-state"],["lines","none",1,"staff-list"],[2,"margin","0",3,"ionChange","checked"],[2,"font-size","0.85em","color","var(--ion-color-medium)"],["name","information-circle-outline",2,"vertical-align","middle","margin-right","4px","font-size","0.9em"],["name","people-outline",1,"empty-icon"],["button","","detail","true",1,"staff-item"],["button","","detail","true",1,"staff-item",3,"click"],["slot","start",1,"avatar"],[1,"entry-counts-grid"],[1,"qualification-progress-bar"],[1,"qual-title",2,"margin","0","color","#888","font-size","0.85em","white-space","nowrap"],[1,"status-box-row"],[4,"ngFor","ngForOf"],[1,"entry-counts-col"],[1,"entry-label"],[4,"ngIf"],[3,"color","ngStyle"]],template:function(i,l){i&1&&(a(0,"ion-content",0),h(1,Mt,4,0,"div",1),h(2,zt,25,11),o()),i&2&&(r(),C(l.isLoading&&l.userList.length===0?1:-1),r(),C(l.isLoading?-1:2))},dependencies:[X,H,K,R,tt,at,nt,it,st,ot,rt,dt,lt,et,ct,mt,pt],styles:[".loading-container[_ngcontent-%COMP%]{text-align:center;margin-top:40px;color:#6b7280}.staff-info-card[_ngcontent-%COMP%]{border-radius:18px;padding:6px;background:linear-gradient(135deg);box-shadow:0 10px 30px #00000014;margin-bottom:24px}.card-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px;margin-bottom:12px}.card-icon[_ngcontent-%COMP%]{width:48px;height:48px;background:linear-gradient(135deg,#6f3cff,#8b5cf6);border-radius:14px;display:flex;align-items:center;justify-content:center}.card-icon[_ngcontent-%COMP%]   ion-icon[_ngcontent-%COMP%]{font-size:22px}.card-title-wrap[_ngcontent-%COMP%]{flex:1}.card-subtitle[_ngcontent-%COMP%]{font-size:12px;color:#6b7280;margin:0}.card-title[_ngcontent-%COMP%]{font-size:20px;font-weight:700;margin:2px 0 0}.card-description[_ngcontent-%COMP%]{font-size:14px;color:#4b5563;line-height:1.6;margin:10px 0 16px}.add-staff-button[_ngcontent-%COMP%]{--background: linear-gradient(135deg, #6f3cff, #8b5cf6);--border-radius: 14px;font-weight:600;height:44px}.section-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin-bottom:12px}.section-icon[_ngcontent-%COMP%]{font-size:20px;color:var(--ion-color-primary)}.section-title[_ngcontent-%COMP%]{font-size:16px;font-weight:600;flex:1}.staff-count[_ngcontent-%COMP%]{font-size:13px;color:#6b7280}.empty-state[_ngcontent-%COMP%]{text-align:center;padding:40px 20px;color:#6b7280}.empty-icon[_ngcontent-%COMP%]{font-size:48px;margin-bottom:10px;color:#c7c7c7}.staff-list[_ngcontent-%COMP%]{padding:4px}.staff-item[_ngcontent-%COMP%]{margin-bottom:12px;border-radius:14px;box-shadow:0 4px 14px #0000000d}@media(prefers-color-scheme:dark){.staff-list[_ngcontent-%COMP%]{background:transparent!important}.staff-item[_ngcontent-%COMP%]{background:transparent!important;box-shadow:none}}
1.avatar[_ngcontent-%COMP%]{width:44px;height:44px;background:linear-gradient(135deg,#6f3cff,#8b5cf6);border-radius:50%;color:#fff;font-weight:600;display:flex;align-items:center;justify-content:center}.staff-name[_ngcontent-%COMP%]{font-size:15px;font-weight:600;margin:0}.staff-email[_ngcontent-%COMP%]{font-size:13px;color:#6b7280}.entry-counts-grid[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:2px;margin-top:4px}.entry-counts-col[_ngcontent-%COMP%]{flex:1;min-width:100px;font-size:.85em;display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-end;text-align:right}.entry-label[_ngcontent-%COMP%]{color:#888;font-weight:500}.qualification-progress-bar[_ngcontent-%COMP%]{display:flex;gap:4px;margin-top:6px;align-items:center}.qual-title[_ngcontent-%COMP%]{margin:0;font-size:.85em;color:#888;white-space:nowrap;flex-shrink:0}.status-box-row[_ngcontent-%COMP%]{display:flex;flex-wrap:nowrap;gap:1px;align-items:center;max-width:100%;overflow-x:hidden}.qualification-progress-bar[_ngcontent-%COMP%]   ion-badge[_ngcontent-%COMP%]{min-width:1px;max-width:16px;width:100%;font-size:.55em;font-family:Arial Narrow,Arial,sans-serif;font-stretch:condensed;letter-spacing:-.5px;padding:0;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;--color: inherit !important}.item-arrow[_ngcontent-%COMP%]{color:#9ca3af}",".entry-counts-grid[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:2px;margin-top:4px}.entry-counts-col[_ngcontent-%COMP%]{flex:1;min-width:100px;font-size:.85em;display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-end;text-align:right}.entry-label[_ngcontent-%COMP%]{color:#888}.qualification-progress-bar[_ngcontent-%COMP%]{display:flex;gap:4px;margin-top:6px}"]});let t=s;return t})();export{Xt as ManagedPage};

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.