[{"data":1,"prerenderedAt":270},["ShallowReactive",2],{"/docs/base/jobs-base/client-exports/training":3,"/docs/base/jobs-base/client-exports/training-surround":256,"/docs/base/jobs-base/client-exports/training-implemented-suggestions":269},{"id":4,"title":5,"body":6,"description":245,"extension":246,"head":247,"implementedSuggestions":247,"meta":248,"navigation":249,"path":251,"schemaOrg":247,"seo":252,"sitemap":253,"stem":254,"__hash__":255},"docs/1.docs/base/2.jobs-base/3.client-exports/2.training.md","Training",{"type":7,"value":8,"toc":239},"minimark",[9,14,18,26,33,65,194,214,218,227,235],[10,11,13],"h2",{"id":12},"read-the-current-tablet-state","Read the current tablet state",[15,16,17],"p",{},"Training intentionally exposes no client export that creates courses, changes enrollments, records\nresults, or issues qualifications. Those actions require the authenticated server callback path.",[15,19,20,21,25],{},"Client resources can use the shared ",[22,23,24],"code",{},"GetTabletState"," export to determine whether the Training App is\ncurrently open.",[27,28,30],"h3",{"id":29},"gettabletstate",[22,31,32],{},"GetTabletState()",[15,34,35,39,40,43,44,47,48,47,51,47,54,47,57,60,61,64],{},[36,37,38],"strong",{},"Returns:"," ",[22,41,42],{},"table"," with ",[22,45,46],{},"open",", ",[22,49,50],{},"appKey",[22,52,53],{},"route",[22,55,56],{},"surface",[22,58,59],{},"resource",", and ",[22,62,63],{},"session",".",[66,67,73],"pre",{"className":68,"code":69,"filename":70,"language":71,"meta":72,"style":72},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","local tablet = exports[\"sky_jobs_base\"]:GetTabletState()\n\nif tablet.open and tablet.appKey == \"training\" then\n    print(\"The Training App is open on\", tablet.surface or \"native\")\nend\n","client.lua","lua","",[22,74,75,112,119,154,188],{"__ignoreMap":72},[76,77,80,84,88,91,94,97,101,103,106,109],"span",{"class":78,"line":79},"line",1,[76,81,83],{"class":82},"sMK4o","local",[76,85,87],{"class":86},"sTEyZ"," tablet ",[76,89,90],{"class":82},"=",[76,92,93],{"class":86}," exports[",[76,95,96],{"class":82},"\"",[76,98,100],{"class":99},"sfazB","sky_jobs_base",[76,102,96],{"class":82},[76,104,105],{"class":86},"]:",[76,107,24],{"class":108},"s2Zo4",[76,110,111],{"class":86},"()\n",[76,113,115],{"class":78,"line":114},2,[76,116,118],{"emptyLinePlaceholder":117},true,"\n",[76,120,122,126,129,132,135,137,139,142,145,148,151],{"class":78,"line":121},3,[76,123,125],{"class":124},"s7zQu","if",[76,127,128],{"class":86}," tablet.",[76,130,46],{"class":131},"sBMFI",[76,133,134],{"class":82}," and",[76,136,128],{"class":86},[76,138,50],{"class":131},[76,140,141],{"class":82}," ==",[76,143,144],{"class":82}," \"",[76,146,147],{"class":99},"training",[76,149,150],{"class":82},"\" ",[76,152,153],{"class":124},"then\n",[76,155,157,160,163,165,168,170,173,175,178,180,183,185],{"class":78,"line":156},4,[76,158,159],{"class":108},"    print",[76,161,162],{"class":86},"(",[76,164,96],{"class":82},[76,166,167],{"class":99},"The Training App is open on",[76,169,96],{"class":82},[76,171,172],{"class":86},", tablet.",[76,174,56],{"class":131},[76,176,177],{"class":82}," or",[76,179,144],{"class":82},[76,181,182],{"class":99},"native",[76,184,96],{"class":82},[76,186,187],{"class":86},")\n",[76,189,191],{"class":78,"line":190},5,[76,192,193],{"class":124},"end\n",[15,195,196,198,199,47,202,205,206,209,210,213],{},[22,197,56],{}," is ",[22,200,201],{},"lb",[22,203,204],{},"roadpad",", or ",[22,207,208],{},"embedded"," for an external tablet document and ",[22,211,212],{},"nil"," for the native\nJobs Base tablet.",[10,215,217],{"id":216},"react-to-training-changes","React to Training changes",[15,219,220,221,226],{},"Use the ",[222,223,225],"a",{"href":224},"/docs/base/jobs-base/client-events/training","Training client events"," when an integration must\nrefresh after catalogue, session, enrollment, or qualification state changes.",[228,229,232],"callout",{"color":230,"icon":231},"warning","i-lucide-shield-alert",[15,233,234],{},"Do not recreate Training mutations through client exports. Client input is not an authority for job,\ngrade, permissions, employee identity, attendance, results, or qualifications.",[236,237,238],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":72,"searchDepth":79,"depth":114,"links":240},[241,244],{"id":12,"depth":114,"text":13,"children":242},[243],{"id":29,"depth":121,"text":32},{"id":216,"depth":114,"text":217},"Supported client-side integration boundary for the Jobs Base Training App.","md",null,{},{"icon":250},"i-lucide-graduation-cap","/docs/base/jobs-base/client-exports/training",{"title":5,"description":245},{"loc":251},"1.docs/base/2.jobs-base/3.client-exports/2.training","VIVMCnmXHZth6P39AQVsSaPgGVlDCnciRT6cd3J1seI",[257,263],{"title":258,"path":259,"stem":260,"description":261,"icon":262,"children":-1},"Emergency Dispatch","/docs/base/jobs-base/client-exports/emergency-dispatch","1.docs/base/2.jobs-base/3.client-exports/1.emergency-dispatch","Public client-side export for creating Emergency Dispatch incidents through sky_jobs_base.","i-lucide-siren",{"title":264,"path":265,"stem":266,"children":-1,"description":267,"icon":268},"Server Exports","/docs/base/jobs-base/server-exports","1.docs/base/2.jobs-base/4.server-exports","Server-side exports provided by sky_jobs_base for dispatch, tablet app registration, and more.","i-lucide-server",[],1786395269239]