diff --git a/lib/models/competition-events/ijru.speed@3.0.0.test.ts b/lib/models/competition-events/ijru.speed@1.0.0.test.ts similarity index 99% rename from lib/models/competition-events/ijru.speed@3.0.0.test.ts rename to lib/models/competition-events/ijru.speed@1.0.0.test.ts index 701732d..3db8780 100644 --- a/lib/models/competition-events/ijru.speed@3.0.0.test.ts +++ b/lib/models/competition-events/ijru.speed@1.0.0.test.ts @@ -1,6 +1,6 @@ import assert from 'node:assert' import test from 'node:test' -import * as mod from './ijru.speed@3.0.0.js' +import * as mod from './ijru.speed@1.0.0.js' import type { EntryMeta, EntryResult, JudgeMeta } from '../types.js' import { RSRWrongJudgeTypeError } from '../../errors.js' diff --git a/lib/models/competition-events/ijru.speed@3.0.0.ts b/lib/models/competition-events/ijru.speed@1.0.0.ts similarity index 98% rename from lib/models/competition-events/ijru.speed@3.0.0.ts rename to lib/models/competition-events/ijru.speed@1.0.0.ts index 0769274..3067f2c 100644 --- a/lib/models/competition-events/ijru.speed@3.0.0.ts +++ b/lib/models/competition-events/ijru.speed@1.0.0.ts @@ -104,8 +104,8 @@ export const speedResultTableHeaders: TableDefinition = { } export default { - id: 'ijru.speed@3.0.0', - name: 'IJRU Speed v3.0.0', + id: 'ijru.speed@1.0.0', + name: 'IJRU Speed v1.0.0', options: [ { id: 'falseSwitches', name: 'False Switches', type: 'number' } ], diff --git a/lib/models/competition-events/ijru.speed@2.0.0.ts b/lib/models/competition-events/ijru.speed@2.0.0.ts deleted file mode 100644 index 4718242..0000000 --- a/lib/models/competition-events/ijru.speed@2.0.0.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { type CompetitionEventModel } from '../types' -import ijruSpeed300 from './ijru.speed@3.0.0.js' - -export default { - ...ijruSpeed300, - id: 'ijru.speed@2.0.0', - name: 'IJRU Speed v2.0.0' -} satisfies CompetitionEventModel diff --git a/lib/models/overalls/ijru.overall@3.0.0.ts b/lib/models/overalls/ijru.overall@1.0.0.ts similarity index 98% rename from lib/models/overalls/ijru.overall@3.0.0.ts rename to lib/models/overalls/ijru.overall@1.0.0.ts index 977d92c..f1d4d37 100644 --- a/lib/models/overalls/ijru.overall@3.0.0.ts +++ b/lib/models/overalls/ijru.overall@1.0.0.ts @@ -44,7 +44,7 @@ export const overallTableFactory: TableDefinitionGetter = (options, cEvtOptions) => { + if (cEvtOptions == null) throw new TypeError('Missing competitionEventOptions argument') + const groups: TableHeaderGroup[][] = [] + const cEvtDefs = Object.keys(cEvtOptions) as CompetitionEventDefinition[] + + const srEvts = cEvtDefs.filter(cEvt => cEvt.split('.')[3] === 'sr') + const whEvts = cEvtDefs.filter(cEvt => cEvt.split('.')[3] === 'wh') + + const disciplineGroup: TableHeaderGroup[] = [] + + if (srEvts.length) { + disciplineGroup.push({ + text: 'Single Rope', + key: 'sr', + colspan: srEvts.length * 2 + }) + } + + if (whEvts.length) { + disciplineGroup.push({ + text: 'Wheel', + key: 'wh', + colspan: whEvts.length * 2 + }) + } + + disciplineGroup.push({ + text: 'Overall', + key: 'oa', + colspan: 3, + rowspan: 2 + }) + + groups.push(disciplineGroup) + + const evtGroup: TableHeaderGroup[] = [] + + for (const cEvt of [...srEvts, ...whEvts]) { + evtGroup.push({ + text: typeof cEvtOptions[cEvt].name === 'string' ? (cEvtOptions[cEvt].name as string).replace(/^(Wheel|Single Rope) /, '') : cEvt.split('.')[4] ?? '', + key: cEvt, + colspan: 2 + }) + } + + groups.push(evtGroup) + + const headers: TableHeader[] = [] + + for (const cEvt of [...srEvts, ...whEvts]) { + headers.push({ + text: 'Score', + key: 'R', + component: cEvt + }, { + text: 'Rank', + key: 'S', + component: cEvt, + color: 'red' + }) + } + + headers.push({ + text: 'Normalised', + key: 'B', + color: 'gray', + formatter: roundToCurry(2) + }, { + text: 'Rank Sum', + key: 'T', + color: 'green' + }, { + text: 'Rank', + key: 'S', + color: 'red' + }) + + return { + groups, + headers + } +} + +export default { + id: 'svgf-par.overall@2.0.0', + name: 'SvGF Pair Overall (IJRU-based) v2.0.0', + options: [], + competitionEventOptions: [ + { id: 'name', name: 'Name', type: 'string' }, + { id: 'rankMultiplier', name: 'Rank Multiplier', type: 'number' }, + { id: 'resultMultiplier', name: 'Result Multiplier', type: 'number' }, + { id: 'normalisationMultiplier', name: 'Normalisation Multiplier', type: 'number' } + ], + resultTable: overallTableFactory, + rankOverall (results, options, competitionEventOptions) { + const components: Partial>> = {} + const competitionEventIds: CompetitionEventDefinition[] = Object.keys(competitionEventOptions) as CompetitionEventDefinition[] + + for (const cEvtDef of competitionEventIds) { + const ranked = results.filter(result => result.meta.competitionEvent === cEvtDef) + components[cEvtDef] = ranked + } + + const participantIds = [...new Set(results.map(r => r.meta.participantId))] + + const ranked = participantIds.map(participantId => { + const cRes = competitionEventIds + .map((cEvt) => components[cEvt]?.find(r => r.meta.participantId === participantId)) + .filter(r => !!r) as EntryResult[] + + const R = roundTo(cRes.reduce((acc, curr) => + acc + ( + (curr.result.R ?? 0) * + (Number.isInteger(competitionEventOptions[curr.meta.competitionEvent]?.resultMultiplier) ? competitionEventOptions[curr.meta.competitionEvent]?.resultMultiplier as number : 1) + ) + , 0), 4) + const T = cRes.reduce((acc, curr) => + acc + ( + (curr.result.S ?? 0) * + (Number.isInteger(competitionEventOptions[curr.meta.competitionEvent]?.rankMultiplier) ? competitionEventOptions[curr.meta.competitionEvent]?.rankMultiplier as number : 1) + ) + , 0) + const B = roundTo(cRes.reduce((acc, curr) => + acc + ( + (curr.result.N ?? 0) * + (Number.isInteger(competitionEventOptions[curr.meta.competitionEvent]?.normalisationMultiplier) ? competitionEventOptions[curr.meta.competitionEvent]?.normalisationMultiplier as number : 1) + ) + , 0), 2) + + return { + meta: { participantId }, + result: { R, T, B, S: 0 }, + componentResults: Object.fromEntries(cRes.map(r => [r.meta.competitionEvent, r])), + statuses: {} + } + }) + + ranked.sort((a, b) => { + if (a.result.T !== b.result.T) return a.result.T - b.result.T + return b.result.B - a.result.B + }) + + for (let idx = 0; idx < ranked.length; idx++) { + ranked[idx].result.S = ranked.findIndex(obj => obj.result.B === ranked[idx].result.B) + 1 + } + + return ranked + } +} satisfies OverallModel diff --git a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.dd.ddsr.4.4x30@2.0.0.ts b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.dd.ddsr.4.4x30@2.0.0.ts index feca6ba..4f536be 100644 --- a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.dd.ddsr.4.4x30@2.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.dd.ddsr.4.4x30@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruSpeed200 from '../../../../models/competition-events/ijru.speed@2.0.0.js' +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' -export default partiallyConfigureCompetitionEventModel(ijruSpeed200, { +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { options: { falseSwitches: 3 }, diff --git a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.dd.ddss.3.60@2.0.0.ts b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.dd.ddss.3.60@2.0.0.ts index 2dc3ad7..719d1c8 100644 --- a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.dd.ddss.3.60@2.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.dd.ddss.3.60@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruSpeed200 from '../../../../models/competition-events/ijru.speed@2.0.0.js' +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' -export default partiallyConfigureCompetitionEventModel(ijruSpeed200, { +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { options: { falseSwitches: 0 }, diff --git a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srdr.2.2x30@2.0.0.ts b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srdr.2.2x30@2.0.0.ts index 1de0581..a1d5d4d 100644 --- a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srdr.2.2x30@2.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srdr.2.2x30@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruSpeed200 from '../../../../models/competition-events/ijru.speed@2.0.0.js' +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' -export default partiallyConfigureCompetitionEventModel(ijruSpeed200, { +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { options: { falseSwitches: 1 }, diff --git a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srse.1.180@2.0.0.ts b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srse.1.180@2.0.0.ts index 00d21f9..bae526e 100644 --- a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srse.1.180@2.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srse.1.180@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruSpeed200 from '../../../../models/competition-events/ijru.speed@2.0.0.js' +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' -export default partiallyConfigureCompetitionEventModel(ijruSpeed200, { +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { options: { falseSwitches: 0 }, diff --git a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srsr.4.4x30@2.0.0.ts b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srsr.4.4x30@2.0.0.ts index ee753ed..87a8f67 100644 --- a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srsr.4.4x30@2.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srsr.4.4x30@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruSpeed200 from '../../../../models/competition-events/ijru.speed@2.0.0.js' +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' -export default partiallyConfigureCompetitionEventModel(ijruSpeed200, { +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { options: { falseSwitches: 3 }, diff --git a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srss.1.30@2.0.0.ts b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srss.1.30@2.0.0.ts index 7a7fe60..92530c8 100644 --- a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srss.1.30@2.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srss.1.30@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruSpeed200 from '../../../../models/competition-events/ijru.speed@2.0.0.js' +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' -export default partiallyConfigureCompetitionEventModel(ijruSpeed200, { +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { options: { falseSwitches: 0 }, diff --git a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srtu.1.0@2.0.0.ts b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srtu.1.0@2.0.0.ts index 8730dd4..b6ab04a 100644 --- a/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srtu.1.0@2.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srtu.1.0@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruSpeed200 from '../../../../models/competition-events/ijru.speed@2.0.0.js' +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' -export default partiallyConfigureCompetitionEventModel(ijruSpeed200, { +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { options: { falseSwitches: 0 }, diff --git a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.dd.ddsr.4.4x30@3.0.0.ts b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.dd.ddsr.4.4x30@3.0.0.ts index 1a14066..96ef482 100644 --- a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.dd.ddsr.4.4x30@3.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.dd.ddsr.4.4x30@3.0.0.ts @@ -1,4 +1,4 @@ -import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@3.0.0.js' +import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' export default partiallyConfigureCompetitionEventModel(ijruSpeed300, { diff --git a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.dd.ddss.3.60@3.0.0.ts b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.dd.ddss.3.60@3.0.0.ts index 40bb51b..c98265f 100644 --- a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.dd.ddss.3.60@3.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.dd.ddss.3.60@3.0.0.ts @@ -1,4 +1,4 @@ -import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@3.0.0.js' +import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' export default partiallyConfigureCompetitionEventModel(ijruSpeed300, { diff --git a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srdr.2.2x30@3.0.0.ts b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srdr.2.2x30@3.0.0.ts index 5f7ce2d..c526147 100644 --- a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srdr.2.2x30@3.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srdr.2.2x30@3.0.0.ts @@ -1,4 +1,4 @@ -import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@3.0.0.js' +import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' export default partiallyConfigureCompetitionEventModel(ijruSpeed300, { diff --git a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srse.1.180@3.0.0.ts b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srse.1.180@3.0.0.ts index bf27674..ab2ba15 100644 --- a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srse.1.180@3.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srse.1.180@3.0.0.ts @@ -1,4 +1,4 @@ -import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@3.0.0.js' +import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' export default partiallyConfigureCompetitionEventModel(ijruSpeed300, { diff --git a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srsr.4.4x30@3.0.0.ts b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srsr.4.4x30@3.0.0.ts index 5ab2a99..5e47cdd 100644 --- a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srsr.4.4x30@3.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srsr.4.4x30@3.0.0.ts @@ -1,4 +1,4 @@ -import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@3.0.0.js' +import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' export default partiallyConfigureCompetitionEventModel(ijruSpeed300, { diff --git a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srss.1.30@3.0.0.ts b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srss.1.30@3.0.0.ts index c9c807a..395d55c 100644 --- a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srss.1.30@3.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srss.1.30@3.0.0.ts @@ -1,4 +1,4 @@ -import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@3.0.0.js' +import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' export default partiallyConfigureCompetitionEventModel(ijruSpeed300, { diff --git a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srtu.1.0@3.0.0.ts b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srtu.1.0@3.0.0.ts index e55bf6e..1cf97d5 100644 --- a/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srtu.1.0@3.0.0.ts +++ b/lib/preconfigured/competition-events/ijru/3.0.0/e.ijru.sp.sr.srtu.1.0@3.0.0.ts @@ -1,4 +1,4 @@ -import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@3.0.0.js' +import ijruSpeed300 from '../../../../models/competition-events/ijru.speed@1.0.0.js' import { partiallyConfigureCompetitionEventModel } from '../../../types.js' export default partiallyConfigureCompetitionEventModel(ijruSpeed300, { diff --git a/lib/preconfigured/competition-events/svgf/2.0.0/e.svgf.sp.sr.srpe.2.2x90@2.0.0.ts b/lib/preconfigured/competition-events/svgf/2.0.0/e.svgf.sp.sr.srpe.2.2x90@2.0.0.ts new file mode 100644 index 0000000..bc35943 --- /dev/null +++ b/lib/preconfigured/competition-events/svgf/2.0.0/e.svgf.sp.sr.srpe.2.2x90@2.0.0.ts @@ -0,0 +1,10 @@ +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' +import { partiallyConfigureCompetitionEventModel } from '../../../types.js' + +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { + options: { + falseSwitches: 1 + }, + id: 'e.svgf.sp.sr.srpe.2.2x90@2.0.0', + name: 'Single Rope Pair Speed Endurance' +}) diff --git a/lib/preconfigured/competition-events/svgf/2.0.0/e.svgf.sp.sr.srps.2.2x30@2.0.0.ts b/lib/preconfigured/competition-events/svgf/2.0.0/e.svgf.sp.sr.srps.2.2x30@2.0.0.ts new file mode 100644 index 0000000..13365c5 --- /dev/null +++ b/lib/preconfigured/competition-events/svgf/2.0.0/e.svgf.sp.sr.srps.2.2x30@2.0.0.ts @@ -0,0 +1,10 @@ +import ijruSpeed100 from '../../../../models/competition-events/ijru.speed@1.0.0.js' +import { partiallyConfigureCompetitionEventModel } from '../../../types.js' + +export default partiallyConfigureCompetitionEventModel(ijruSpeed100, { + options: { + falseSwitches: 1 + }, + id: 'e.svgf.sp.sr.srps.2.2x30@2.0.0', + name: 'Single Rope Pair Speed' +}) diff --git a/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.dd.tddo.4.0@2.0.0.ts b/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.dd.tddo.4.0@2.0.0.ts index 67304c6..3db4693 100644 --- a/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.dd.tddo.4.0@2.0.0.ts +++ b/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.dd.tddo.4.0@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruOverall200 from '../../../../models/overalls/ijru.overall@2.0.0.js' +import ijruOverall100 from '../../../../models/overalls/ijru.overall@1.0.0.js' import { partiallyConfigureOverallModel } from '../../../types.js' -export default partiallyConfigureOverallModel(ijruOverall200, { +export default partiallyConfigureOverallModel(ijruOverall100, { options: {}, competitionEventOptions: { 'e.ijru.sp.dd.ddss.3.60': { name: 'Double Dutch Speed Sprint' }, diff --git a/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.sr.isro.1.0@2.0.0.ts b/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.sr.isro.1.0@2.0.0.ts index 0f80ee2..49c10c5 100644 --- a/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.sr.isro.1.0@2.0.0.ts +++ b/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.sr.isro.1.0@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruOverall200 from '../../../../models/overalls/ijru.overall@2.0.0.js' +import ijruOverall100 from '../../../../models/overalls/ijru.overall@1.0.0.js' import { partiallyConfigureOverallModel } from '../../../types.js' -export default partiallyConfigureOverallModel(ijruOverall200, { +export default partiallyConfigureOverallModel(ijruOverall100, { options: {}, competitionEventOptions: { 'e.ijru.sp.sr.srss.1.30': { name: 'Single Rope Speed Sprint' }, diff --git a/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.sr.tsro.4.0@2.0.0.ts b/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.sr.tsro.4.0@2.0.0.ts index 701bf6b..5fa24dd 100644 --- a/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.sr.tsro.4.0@2.0.0.ts +++ b/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.sr.tsro.4.0@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruOverall200 from '../../../../models/overalls/ijru.overall@2.0.0.js' +import ijruOverall100 from '../../../../models/overalls/ijru.overall@1.0.0.js' import { partiallyConfigureOverallModel } from '../../../types.js' -export default partiallyConfigureOverallModel(ijruOverall200, { +export default partiallyConfigureOverallModel(ijruOverall100, { options: {}, competitionEventOptions: { 'e.ijru.sp.sr.srdr.2.2x30': { name: 'Single Rope Double Unders Relay' }, diff --git a/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.xd.tcaa.4.0@2.0.0.ts b/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.xd.tcaa.4.0@2.0.0.ts index 1ca0400..0ba3c1d 100644 --- a/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.xd.tcaa.4.0@2.0.0.ts +++ b/lib/preconfigured/overalls/ijru/2.0.0/e.ijru.oa.xd.tcaa.4.0@2.0.0.ts @@ -1,7 +1,7 @@ -import ijruOverall200 from '../../../../models/overalls/ijru.overall@2.0.0.js' +import ijruOverall100 from '../../../../models/overalls/ijru.overall@1.0.0.js' import { partiallyConfigureOverallModel } from '../../../types.js' -export default partiallyConfigureOverallModel(ijruOverall200, { +export default partiallyConfigureOverallModel(ijruOverall100, { options: {}, competitionEventOptions: { 'e.ijru.sp.sr.srdr.2.2x30': { name: 'Single Rope Double Unders Relay' }, diff --git a/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.dd.tddo.4.0@3.0.0.ts b/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.dd.tddo.4.0@3.0.0.ts index 4685263..ba362b8 100644 --- a/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.dd.tddo.4.0@3.0.0.ts +++ b/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.dd.tddo.4.0@3.0.0.ts @@ -1,7 +1,7 @@ -import ijruOverall300 from '../../../../models/overalls/ijru.overall@3.0.0.js' +import ijruOverall100 from '../../../../models/overalls/ijru.overall@1.0.0.js' import { partiallyConfigureOverallModel } from '../../../types.js' -export default partiallyConfigureOverallModel(ijruOverall300, { +export default partiallyConfigureOverallModel(ijruOverall100, { options: {}, competitionEventOptions: { 'e.ijru.sp.dd.ddss.3.60': { name: 'Double Dutch Speed Sprint' }, diff --git a/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.sr.isro.1.0@3.0.0.ts b/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.sr.isro.1.0@3.0.0.ts index d5dc82f..06953c4 100644 --- a/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.sr.isro.1.0@3.0.0.ts +++ b/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.sr.isro.1.0@3.0.0.ts @@ -1,7 +1,7 @@ -import ijruOverall300 from '../../../../models/overalls/ijru.overall@3.0.0.js' +import ijruOverall100 from '../../../../models/overalls/ijru.overall@1.0.0.js' import { partiallyConfigureOverallModel } from '../../../types.js' -export default partiallyConfigureOverallModel(ijruOverall300, { +export default partiallyConfigureOverallModel(ijruOverall100, { options: {}, competitionEventOptions: { 'e.ijru.sp.sr.srss.1.30': { name: 'Single Rope Speed Sprint' }, diff --git a/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.sr.tsro.4.0@3.0.0.ts b/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.sr.tsro.4.0@3.0.0.ts index aec3519..a6cf720 100644 --- a/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.sr.tsro.4.0@3.0.0.ts +++ b/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.sr.tsro.4.0@3.0.0.ts @@ -1,7 +1,7 @@ -import ijruOverall300 from '../../../../models/overalls/ijru.overall@3.0.0.js' +import ijruOverall100 from '../../../../models/overalls/ijru.overall@1.0.0.js' import { partiallyConfigureOverallModel } from '../../../types.js' -export default partiallyConfigureOverallModel(ijruOverall300, { +export default partiallyConfigureOverallModel(ijruOverall100, { options: {}, competitionEventOptions: { 'e.ijru.sp.sr.srdr.2.2x30': { name: 'Single Rope Double Unders Relay' }, diff --git a/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.xd.tcaa.4.0@3.0.0.ts b/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.xd.tcaa.4.0@3.0.0.ts index 89a193f..9fb7603 100644 --- a/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.xd.tcaa.4.0@3.0.0.ts +++ b/lib/preconfigured/overalls/ijru/3.0.0/e.ijru.oa.xd.tcaa.4.0@3.0.0.ts @@ -1,7 +1,7 @@ -import ijruOverall300 from '../../../../models/overalls/ijru.overall@3.0.0.js' +import ijruOverall100 from '../../../../models/overalls/ijru.overall@1.0.0.js' import { partiallyConfigureOverallModel } from '../../../types.js' -export default partiallyConfigureOverallModel(ijruOverall300, { +export default partiallyConfigureOverallModel(ijruOverall100, { options: {}, competitionEventOptions: { 'e.ijru.sp.sr.srdr.2.2x30': { name: 'Single Rope Double Unders Relay' }, diff --git a/lib/preconfigured/overalls/svgf/2.0.0/e.svgf.oa.xd.tpaa.2.0@2.0.0.ts b/lib/preconfigured/overalls/svgf/2.0.0/e.svgf.oa.xd.tpaa.2.0@2.0.0.ts new file mode 100644 index 0000000..369354c --- /dev/null +++ b/lib/preconfigured/overalls/svgf/2.0.0/e.svgf.oa.xd.tpaa.2.0@2.0.0.ts @@ -0,0 +1,15 @@ +import svgfParOverall200 from '../../../../models/overalls/svgf-par.overall@2.0.0.js' +import { partiallyConfigureOverallModel } from '../../../types.js' + +export default partiallyConfigureOverallModel(svgfParOverall200, { + options: {}, + competitionEventOptions: { + 'e.svgf.sp.sr.srps.2.2x30': { name: 'Single Rope Pair Speed' }, + 'e.svgf.sp.sr.srpe.2.2x90': { name: 'Single Rope Pair Speed Endurance' }, + 'e.ijru.sp.sr.srdr.2.2x30': { name: 'Single Rope Double Unders Relay' }, + 'e.ijru.fs.sr.srpf.2.75': { name: 'Single Rope Pair Freestyle', rankMultiplier: 2, normalisationMultiplier: 2 }, + 'e.ijru.fs.wh.whpf.2.75': { name: 'Wheel Pair Freestyle' } + }, + id: 'e.svgf.oa.xd.tpaa.2.0@2.0.0', + name: 'Team Pair Overall' +}) diff --git a/lib/rulesets/svgf-par@2.0.0.ts b/lib/rulesets/svgf-par@2.0.0.ts new file mode 100644 index 0000000..3aa15de --- /dev/null +++ b/lib/rulesets/svgf-par@2.0.0.ts @@ -0,0 +1,22 @@ +import { type Ruleset } from '../index.js' +import eIjruFsSrSrpf275200 from '../preconfigured/competition-events/ijru/2.0.0/e.ijru.fs.sr.srpf.2.75@2.0.0' +import eIjruFsWhWhpf275200 from '../preconfigured/competition-events/ijru/2.0.0/e.ijru.fs.wh.whpf.2.75@2.0.0' +import eIjruSpSrSrdr22x30200 from '../preconfigured/competition-events/ijru/2.0.0/e.ijru.sp.sr.srdr.2.2x30@2.0.0' +import eSvgfSpSrSrpe22x90200 from '../preconfigured/competition-events/svgf/2.0.0/e.svgf.sp.sr.srpe.2.2x90@2.0.0' +import eSvgfSpSrSrps22x30200 from '../preconfigured/competition-events/svgf/2.0.0/e.svgf.sp.sr.srps.2.2x30@2.0.0' +import eSvgfOaXdTpaa20200 from '../preconfigured/overalls/svgf/2.0.0/e.svgf.oa.xd.tpaa.2.0@2.0.0.js' + +export default { + id: 'svgf-par@2.0.0', + name: 'SvGF Pair (IJRU-based) v2.0.0', + competitionEvents: [ + eSvgfSpSrSrps22x30200, + eSvgfSpSrSrpe22x90200, + eIjruSpSrSrdr22x30200, + eIjruFsSrSrpf275200, + eIjruFsWhWhpf275200 + ], + overalls: [ + eSvgfOaXdTpaa20200 + ] +} satisfies Ruleset