1import{d as L,r as F,c as M,o as l,a as g,b,e as a,u as s,p as r,g as n,F as V,f as B,h as v,i as x,t as d,n as S,I as E,s as I}from"./app-BpQL9P0u.js";import{_ as q}from"./RaceOfficeLayout.vue_vue_type_script_setup_true_lang-CVhXdjBR.js";import{_ as H}from"./PageHeader.vue_vue_type_script_setup_true_lang-Cn5lNAyR.js";import{_ as K}from"./ResultsSubNav.vue_vue_type_script_setup_true_lang-Dg5E0Wkf.js";import{_ as A}from"./index-BjSvn6Si.js";import{_ as Y}from"./index-8J6ocG7c.js";import{_ as J,a as D,b as p,c as Q,T as W,d as _}from"./TableHeader.vue_vue_type_script_setup_true_lang-MJ93lndB.js";import{a as X,b as Z,c as ee,d as G,_ as te}from"./SelectValue.vue_vue_type_script_setup_true_lang-xt38LgnC.js";import{_ as se}from"./EmptyState.vue_vue_type_script_setup_true_lang-B3nsZfI8.js";import{_ as ae}from"./ExportButton.vue_vue_type_script_setup_true_lang-Bo5m9fan.js";import{F as re}from"./funnel-CGsqmpI1.js";import{L as oe}from"./loader-circle-CkZgujOK.js";import{c as ne}from"./createLucideIcon-D4C4p8kK.js";import{G as le}from"./globe-Dyh-Hvaf.js";import{R as ie}from"./refresh-cw-D_EOl-d4.js";import{T as ue}from"./trophy-AWjWZd9y.js";import{u as de}from"./IconRailExpandPanel-C7F9mvFm.js";/* empty css */import"./index-BYqX1eKQ.js";import"./ThemeToggle-Ct1j7JLl.js";import"./_plugin-vue_export-helper-v9-m-GUn.js";import"./radio-Bth2yqPh.js";import"./external-link-Cl1NlFE9.js";import"./sailboat-Bd0_ahab.js";
1import"./x-DGvLMB9I.js";import"./user-Dfch-s-Z.js";import"./utils-CmYircCv.js";import"./useRoute-SZkheh9Q.js";import"./Primitive-C4f9gbIF.js";import"./Teleport-BIQ13KsV.js";import"./ConfigProvider-1mopxLG_.js";import"./chevron-down-h61tc2rl.js";import"./chevron-up-vwYxkxJK.js";import"./Collection-DbDGLZkp.js";import"./usePrimitiveElement-BLyiJbQq.js";import"./check-DEKXqoxK.js";import"./utils-cMTbEAeA.js";import"./PopperContent-CuvvtvCx.js";import"./useFormControl-rdgUNUKS.js";import"./VisuallyHidden-CSQsvVdL.js";import"./DialogTitle.vue_vue_type_script_setup_true_lang-Dj-wQvZ9.js";import"./DialogTitle-wKhNVCWB.js";import"./Switch.vue_vue_type_script_setup_true_lang-3y2EmyGH.js";import"./download-D8x_BNsT.js";import"./TooltipTrigger.vue_vue_type_script_setup_true_lang-BxS_Kghv.js";import"./shield-check-CIkJAiOU.js";import"./shield-ntbtDsgR.js";import"./radar-C5dqhoH0.js";import"./calendar-days-CgF0Iw26.js";import"./send-CmupkUpv.js";import"./mail-Cue5SG7w.js";import"./sparkles-cG41KC8X.js";import"./route-GZbroolA.js";import"./credit-card-CRNKMjsC.js";import"./file-text-ByTO4vLG.js";import"./phone-BnukgnnW.js";import"./zap-q3AO1Aeh.js";import"./users-5m781OVC.js";import"./flag-5qWwCN_Q.js";import"./calendar-KDQIDJSW.js";(function(){try{var u=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};u.SENTRY_RELEASE={id:"3.0+g75d2862fcbf2"},u._sentryModuleMetadata=u._sentryModuleMetadata||{},u._sentryModuleMetadata[new u.Error().stack]=(function(c){for(var y=1;y<arguments.length;y++){var m=arguments[y];if(m!=null)for(var w in m)m.hasOwnProperty(w)&&(c[w]=m[w])}return c})({},u._sentryModuleMetadata[new u.Error().stack],{"_sentryBundlerPluginAppKey:kwindoo-raceoffice":!0});var k=new u.Error().stack;k&&(u._sentryDebugIds=u._sentryDebugIds||{},u._sentryDebugIds[k]="5d472462-b3d8-4d24-9d99-db312cb253cc",u._sentryDebugIdIdentifier="sentry-dbid-5d472462-b3d8-4d24-9d99-db312cb253cc")}catch{}})();/** 2 * @license lucide-vue-next v0.577.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const ce=ne("globe-lock",[["path",{d:"M15.686 15A14.5 14.5 0 0 1 12 22a14.5 14.5 0 0 1 0-20 10 10 0 1 0 9.542 13",key:"qkt0x6"}],["path",{d:"M2 12h8.5",key:"ovaggd"}],["path",{d:"M20 6V4a2 2 0 1 0-4 0v2",key:"1of5e8"}],["rect",{width:"8",height:"5",x:"14",y:"6",rx:"1",key:"1fmf51"}]]),me={class:"space-y-5"},fe={class:"flex flex-wrap items-center justify-between gap-3"},pe={class:"flex items-center gap-3"},_e={key:0,class:"flex items-center gap-2"},ge={class:"flex items-center gap-2"},be={key:0,class:"glass rounded-xl"},xe={key:1,class:"glass overflow-hidden rounded-xl"},ye={key:1,class:"text-kw-text-muted font-mono text-sm"},we={class:"min-w-0"},ve={class:"text-sm font-semibold text-kw-text-primary leading-snug truncate"},ke={key:0,class:"ml-1.5 font-mono text-xs text-kw-text-muted"},he={key:0,class:"text-xs text-kw-text-muted leading-snug truncate"},$e={class:"font-mono tabular-nums text-sm font-bold text-kw-text-primary"},Ce={class:"font-mono tabular-nums text-sm text-kw-text-secondary"},Se=L({__name:"SeriesStandingsAdmin",props:{regattaId:{},scoringConfig:{},standings:{}},emits:["recalculated","publish-toggled"],setup(u,{emit:k}){const c=u,y=k,m=F("all"),w=M(()=>{const o=new Map;for(const e of c.standings)e.running_group&&o.set(e.running_group.id,e.running_group.name);return Array.from(o,([e,i])=>({id:e,name:i}))}),N=M(()=>w.value.length>0),P=M(()=>{if(m.value==="all")return c.standings;const o=Number(m.value);return c.standings.filter(e=>e.running_group_id===o)}),$=F(!1);async function U(){var o,e,i,t;$.value=!0;try{const{data:f}=await E.post("/ajax/race-office/scoring/recalculate-series",{regatta_id:c.regattaId});f.success?((o=window.$toast)==null||o.success("Series standings recalculated."),y("recalculated"),I.reload()):(i=window.$toast)==null||i.error(((e=f.error)==null?void 0:e.message)??"Failed to recalculate series.")}catch{(t=window.$toast)==null||t.error("Failed to recalculate series.")}finally{$.value=!1}}const C=F(!1);async function j(){var e,i,t,f;if(!c.scoringConfig)return;const o=!c.scoringConfig.series_standings_published;C.value=!0;try{const{data:h}=await E.post("/ajax/race-office/scoring/store-config",{regatta_id:c.regattaId,series_standings_published:o});h.success?((e=window.$toast)==null||e.success(o?"Standings published.":"Standings unpublished."),y("publish-toggled",o),I.reload()):(t=window.$toast)==null||t.error(((i=h.error)==null?void 0:i.message)??"Failed to update publish status.")}catch{(f=window.$toast)==null||f.error("Failed to update publish status.")}finally{C.value=!1}}function z(o){var e,i,t;return((i=(e=o.user)==null?void 0:e.boat_data)==null?void 0:i.boat_name)??((t=o.user)==null?void 0:t.full_name)??`User #${o.user_id}`}function O(o){var e;return((e=o.user)==null?void 0:e.full_name)??`User #${o.user_id}`}function T(o){var e,i;return((i=(e=o.user)==null?void 0:e.boat_data)==null?void 0:i.sail_number)??null}function R(o){const e=typeof o=="number"?o:parseFloat(String(o??""));return Number.isFinite(e)?Number.isInteger(e)?String(e):e.toFixed(1):"â"}return(o,e)=>{var i;return l(),g("div",me,[b("div",fe,[b("div",pe,[N.value?(l(),g("div",_e,[a(s(re),{class:"h-4 w-4 text-kw-text-muted"}),a(s(te),{modelValue:m.value,"onUpdate:modelValue":e[0]||(e[0]=t=>m.value=t)},{default:r(()=>[a(s(X),{class:"w-48 h-8"},{default:r(()=>[a(s(Z),{placeholder:"All classes"})]),_:1}),a(s(ee),null,{default:r(()=>[a(s(G),{value:"all"},{default:r(()=>[...e[1]||(e[1]=[n("All classes",-1)])]),_:1}),(l(!0),g(V,null,B(w.value,t=>(l(),x(s(G),{key:t.id,value:String(t.id)},{default:r(()=>[n(d(t.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])])):v("",!0),(i=o.scoringConfig)!=null&&i.series_standings_published?(l(),x(s(Y),{key:1,class:"bg-[#22c55e]/10 text-[var(--v6-green-text,#22c55e)] border-[#22c55e]/20 font-mono text-xs"},{default:r(()=>[...e[2]||(e[2]=[n(" Published ",-1)])]),_:1})):v("",!0)]),b("div",ge,[a(ae,{"regatta-id":o.regattaId,dataset:"standings","running-groups":w.value,disabled:!o.scoringConfig},null,8,["regatta-id","running-groups","disabled"]),o.scoringConfig?(l(),x(s(A),{key:0,variant:"outline",size:"sm",disabled:C.value,onClick:j},{default:r(()=>[C.value?(l(),x(s(oe),{key:0,class:"mr-1.5 h-3.5 w-3.5 animate-spin"})):o.scoringConfig.series_standings_published?(l(),x(s(ce),{key:1,class:"mr-1.5 h-3.5 w-3.5"})):(l(),x(s(le),{key:2,class:"mr-1.5 h-3.5 w-3.5"})),n(" "+d(o.scoringConfig.series_standings_published?"Unpublish":"Publish Standings"),1)]),_:1},8,["disabled"])):v("",!0),a(s(A),{size:"sm",disabled:$.value,onClick:U},{default:r(()=>[a(s(ie),{class:S(["mr-1.5 h-3.5 w-3.5",$.value&&"animate-spin"])},null,8,["class"]),e[3]||(e[3]=n(" Recalculate Series ",-1))]),_:1},8,["disabled"])])]),P.value.length===0?(l(),g("div",be,[a(se,{icon:s(ue),title:"No Series Standings",description:"No series standings yet. Score at least one race to generate standings."},null,8,["icon"])])):(l(),g("div",xe,[a(s(W),null,{default:r(()=>[a(s(J),null,{default:r(()=>[a(s(D),null,{default:r(()=>[a(s(p),{class:"label-caps text-center w-14"},{default:r(()=>[...e[4]||(e[4]=[n("Pos",-1)])]),_:1}),a(s(p),{class:"label-caps"},{default:r(()=>[...e[5]||(e[5]=[n("Boat / Skipper",-1)])]),_:1}),a(s(p),{class:"label-caps text-right"},{default:r(()=>[...e[6]||(e[6]=[n("Net Pts",-1)])]),_:1}),a(s(p),{class:"label-caps text-right"},{default:r(()=>[...e[7]||(e[7]=[n("Total Pts",-1)])]),_:1}),a(s(p),{class:"label-caps text-center"},{default:r(()=>[...e[8]||(e[8]=[n("Sailed",-1)])]),_:1}),a(s(p),{class:"label-caps text-center"},{default:r(()=>[...e[9]||(e[9]=[n("Discards",-1)])]),_:1}),a(s(p),{class:"label-caps text-center"},{default:r(()=>[...e[10]||(e[10]=[n("Best",-1)])]),_:1}),a(s(p),{class:"label-caps text-center"},{default:r(()=>[...e[11]||(e[11]=[b("span",{class:"text-[var(--v6-orange-text,#ff5e27)]"},"1st",-1)])]),_:1}),a(s(p),{class:"label-caps text-center"},{default:r(()=>[...e[12]||(e[12]=[n("2nd",-1)])]),_:1}),a(s(p),{class:"label-caps text-center"},{default:r(()=>[...e[13]||(e[13]=[n("3rd",-1)])]),_:1}),N.value?(l(),x(s(p),{key:0,class:"label-caps"},{default:r(()=>[...e[14]||(e[14]=[n(" Group ",-1)])]),_:1})):v("",!0)]),_:1})]),_:1}),a(s(Q),null,{default:r(()=>[(l(!0),g(V,null,B(P.value,t=>(l(),x(s(D),{key:t.id,class:S(["hover:bg-[#0099e7]/5 transition-colors",t.position===1&&"standings-row-p1",t.position===2&&"standings-row-p2",t.position===3&&"standings-row-p3"])},{default:r(()=>[a(s(_),{class:"text-center"},{default:r(()=>[t.position?(l(),g("span",{key:0,class:S(["pos-badge",t.position===1&&"pos-badge-p1",t.position===2&&"pos-badge-p2",t.position===3&&"pos-badge-p3"])},d(t.position),3)):(l(),g("span",ye,"---"))]),_:2},1024),a(s(_),null,{default:r(()=>{var f,h;return[b("div",we,[b("p",ve,[n(d(z(t))+" ",1),T(t)?(l(),g("span",ke,d(T(t)),1)):v("",!0)]),(h=(f=t.user)==null?void 0:f.boat_data)!=null&&h.boat_name?(l(),g("p",he,d(O(t)),1)):v("",!0)])]}),_:2},1024),a(s(_),{class:"text-right"},{default:r(()=>[b("span",$e,d(R(t.net_points)),1)]),_:2},1024),a(s(_),{class:"text-right"},{default:r(()=>[b("span",Ce,d(R(t.total_points)),1)]),_:2},1024),a(s(_),{class:"text-center font-mono tabular-nums text-sm text-kw-text-secondary"},{default:r(()=>[n(d(t.races_sailed),1)]),_:2},1024),a(s(_),{class:"text-center font-mono tabular-nums text-sm text-kw-text-muted"},{default:r(()=>[n(d(t.races_discarded>0?t.races_discarded:"---"),1)]),_:2},1024),a(s(_),{class:"text-center font-mono tabular-nums text-sm text-kw-text-secondary"},{default:r(()=>[n(d(t.best_finish??"---"),1)]),_:2},1024),a(s(_),{class:"text-center font-mono tabular-nums text-sm"},{default:r(()=>[b("span",{class:S(t.first_places>0?"text-[var(--v6-orange-text,#ff5e27)] font-semibold":"text-kw-text-muted")},d(t.first_places>0?t.first_places:"---"),3)]),_:2},1024),a(s(_),{class:"text-center font-mono tabular-nums text-sm text-kw-text-secondary"},{default:r(()=>[n(d(t.second_places>0?t.second_places:"---"),1)]),_:2},1024),a(s(_),{class:"text-center font-mono tabular-nums text-sm text-kw-text-secondary"},{default:r(()=>[n(d(t.third_places>0?t.third_places:"---"),1)]),_:2},1024),N.value?(l(),x(s(_),{key:0,class:"text-xs text-kw-text-muted"},{default:r(()=>{var f;return[n(d(((f=t.running_group)==null?void 0:f.name)??"---"),1)]}),_:2},1024)):v("",!0)]),_:2},1032,["class"]))),128))]),_:1})]),_:1})]))])}}}),Ie={class:"space-y-5"},Vt=L({__name:"SeriesOverview",props:{scoringConfig:{},standings:{},races:{}},setup(u){const{regatta:k}=de();function c(){I.reload()}function y(){I.reload()}return(m,w)=>(l(),x(q,null,{default:r(()=>[a(H,{title:"Series Overview"}),b("div",Ie,[a(K,{scoringConfig:m.scoringConfig},null,8,["scoringConfig"]),a(Se,{regattaId:s(k).id,scoringConfig:m.scoringConfig,standings:m.standings,onRecalculated:c,onPublishToggled:y},null,8,["regattaId","scoringConfig","standings"])])]),_:1}))}});
6export{Vt 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.