Skip to content

Commit

Permalink
NatCode column in SeriesMgr output
Browse files Browse the repository at this point in the history
  • Loading branch information
kimble4 committed Sep 4, 2024
1 parent adba855 commit 32ddd2e
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 24 deletions.
24 changes: 18 additions & 6 deletions SeriesMgr/GetModelInfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def fix_uci_id( uci_id ):
'''

class RaceResult:
def __init__( self, firstName, lastName, license, machine, team, categoryName, raceName, raceDate, raceFileName, bib, rank, raceOrganizer,
def __init__( self, firstName, lastName, license, machine, team, natcode, categoryName, raceName, raceDate, raceFileName, bib, rank, raceOrganizer,
raceURL=None, raceInSeries=None, tFinish=None, tProjected=None, primePoints=0, timeBonus=0, laps=1, pointsInput=None, uci_id=None ):
self.firstName = str(firstName or '')
self.lastName = str(lastName or '')
Expand All @@ -104,6 +104,8 @@ def __init__( self, firstName, lastName, license, machine, team, categoryName, r

self.team = str(team or '')

self.natcode = str(natcode or '')

self.categoryName = str(categoryName or '')

self.raceName = str(raceName)
Expand Down Expand Up @@ -246,6 +248,7 @@ def ExtractRaceResultsExcel( raceInSeries, seriesModel ):
'machine': str(f('machine','')).strip(),
'uci_id': f('uci_id',''),
'team': str(f('team','')).strip(),
'natcode': str(f('natcode','')).strip(),
'categoryName': categoryNameSheet if isUCIDataride else f('category_code',None),
'laps': f('laps',1),
'pointsInput': f('points',defaultPointsInput),
Expand Down Expand Up @@ -418,7 +421,7 @@ def ExtractRaceResultsCrossMgr( raceInSeries, seriesModel ):
'raceInSeries': raceInSeries,
}

for fTo, fFrom in [('firstName', 'FirstName'), ('lastName', 'LastName'), ('license', 'License'), ('machine', 'Machine'), ('uci_id', 'UCIID'), ('team', 'Team')]:
for fTo, fFrom in [('firstName', 'FirstName'), ('lastName', 'LastName'), ('license', 'License'), ('machine', 'Machine'), ('uci_id', 'UCIID'), ('team', 'Team'), ('natcode', 'NatCode')]:
info[fTo] = getattr(rr, fFrom, '')

if not info['firstName'] and not info['lastName']:
Expand Down Expand Up @@ -562,6 +565,7 @@ def GetCategoryResults( categoryName, raceResults, pointsForRank, events, useMos
riderRacesCompleted = defaultdict( int )
riderPlaceCount = defaultdict( lambda : defaultdict(int) ) # Indexed by (grade, rank).
riderTeam = defaultdict( lambda : '' )
riderNatCode = defaultdict( lambda : '' )
riderUpgrades = defaultdict( lambda : [False] * len(races) )
riderNameLicense = {}
riderMachines = defaultdict( lambda : [''] * len(races) )
Expand Down Expand Up @@ -626,6 +630,8 @@ def TidyMachinesList (riderMachines):
riderMachines[rider][raceSequence[rr.raceInSeries]] = rr.machine
if rr.team and rr.team != '0':
riderTeam[rider] = rr.team
if rr.natcode and rr.natcode != '0':
riderNatCode[rider] = rr.natcode
riderResults[rider][raceSequence[rr.raceInSeries]] = (
formatTime(tFinish, True), rr.rank, 0, rr.timeBonus if considerPrimePointsOrTimeBonus else 0.0
)
Expand Down Expand Up @@ -732,7 +738,7 @@ def TidyMachinesList (riderMachines):

# List of:
# lastName, firstName, license, [list of machines], team, tTotalFinish, [list of (points, position) for each race in series]
categoryResult = [list(riderNameLicense[rider]) + [riderMachines[rider], riderTeam[rider], formatTime(riderTFinish[rider],True), riderGap[rider]] + [riderResults[rider]] for rider in riderOrder]
categoryResult = [list(riderNameLicense[rider]) + [riderMachines[rider], riderTeam[rider], riderNatCode[rider], formatTime(riderTFinish[rider],True), riderGap[rider]] + [riderResults[rider]] for rider in riderOrder]
return categoryResult, races, eventResultsTable, GetPotentialDuplicateFullNames(riderNameLicense)

elif scoreByPercent:
Expand Down Expand Up @@ -763,6 +769,8 @@ def TidyMachinesList (riderMachines):
riderMachines[rider][raceSequence[rr.raceInSeries]] = rr.machine
if rr.team and rr.team != '0':
riderTeam[rider] = rr.team
if rr.natcode and rr.natcode != '0':
riderNatCode[rider] = rr.natcode
percent = min( 100.0, (tFastest / tFinish) * 100.0 if tFinish > 0.0 else 0.0 ) * (rr.upgradeFactor if rr.upgradeResult else 1)
riderResults[rider][raceSequence[rr.raceInSeries]] = (
'{}, {}'.format(percentFormat.format(percent), formatTime(tFinish, False)), rr.rank, 0, 0
Expand Down Expand Up @@ -867,7 +875,7 @@ def TidyMachinesList (riderMachines):

# List of:
# lastName, firstName, license, [list of machines], team, totalPercent, [list of (percent, position) for each race in series]
categoryResult = [list(riderNameLicense[rider]) + [riderMachines[rider], riderTeam[rider], percentFormat.format(riderPercentTotal[rider]), riderGap[rider]] + [riderResults[rider]] for rider in riderOrder]
categoryResult = [list(riderNameLicense[rider]) + [riderMachines[rider], riderTeam[rider], riderNatCode[rider], percentFormat.format(riderPercentTotal[rider]), riderGap[rider]] + [riderResults[rider]] for rider in riderOrder]
return categoryResult, races, eventResultsTable, GetPotentialDuplicateFullNames(riderNameLicense)

elif scoreByTrueSkill:
Expand All @@ -893,6 +901,8 @@ def formatRating( rating ):
riderMachines[rider][raceSequence[rr.raceInSeries]] = rr.machine
if rr.team and rr.team != '0':
riderTeam[rider] = rr.team
if rr.natcode and rr.natcode != '0':
riderNatCode[rider] = rr.natcode
if rr.rank != SeriesModel.rankDNF:
riderResults[rider][raceSequence[rr.raceInSeries]] = (0, rr.rank, 0, 0)
riderFinishes[rider][raceSequence[rr.raceInSeries]] = rr.rank
Expand Down Expand Up @@ -946,7 +956,7 @@ def formatRating( rating ):

# List of:
# lastName, firstName, license, [list of machines], team, points, [list of (points, position) for each race in series]
categoryResult = [list(riderNameLicense[rider]) + [riderMachines[rider], riderTeam[rider], riderPoints[rider], riderGap[rider]] + [riderResults[rider]] for rider in riderOrder]
categoryResult = [list(riderNameLicense[rider]) + [riderMachines[rider], riderTeam[rider], riderNatCode[rider], riderPoints[rider], riderGap[rider]] + [riderResults[rider]] for rider in riderOrder]
return categoryResult, races, None, GetPotentialDuplicateFullNames(riderNameLicense)

else: # Score by points.
Expand All @@ -960,6 +970,8 @@ def formatRating( rating ):
riderMachines[rider][raceSequence[rr.raceInSeries]] = rr.machine
if rr.team and rr.team != '0':
riderTeam[rider] = rr.team
if rr.natcode and rr.natcode != '0':
riderNatCode[rider] = rr.natcode
primePoints = rr.primePoints if considerPrimePointsOrTimeBonus else 0
earnedPoints = pointsForRank[rr.raceFileName][rr.rank] + primePoints
points = asInt( earnedPoints * rr.upgradeFactor )
Expand Down Expand Up @@ -1092,7 +1104,7 @@ def formatRating( rating ):

# List of:
# lastName, firstName, license, [list of machines], team, points, gap, [list of (points, position) for each race in series]
categoryResult = [list(riderNameLicense[rider]) + [riderMachines[rider], riderTeam[rider], riderPoints[rider], riderGap[rider]] + [riderResults[rider]] for rider in riderOrder]
categoryResult = [list(riderNameLicense[rider]) + [riderMachines[rider], riderTeam[rider], riderNatCode[rider], riderPoints[rider], riderGap[rider]] + [riderResults[rider]] for rider in riderOrder]
return categoryResult, races, eventResultsTable, GetPotentialDuplicateFullNames(riderNameLicense)

#------------------------------------------------------------------------------------------------
Expand Down
48 changes: 30 additions & 18 deletions SeriesMgr/Results.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

reNoDigits = re.compile( '[^0-9]' )

HeaderNamesTemplate = ['Pos', 'Name', 'License', 'Machine', 'Team']
HeaderNamesTemplate = ['Pos', 'Name', 'License', 'Machine', 'Team', 'NatCode']
def getHeaderNames():
return HeaderNamesTemplate + ['Total Time' if SeriesModel.model.scoreByTime else 'Points', 'Gap']

Expand Down Expand Up @@ -437,13 +437,13 @@ def write( s ):
};
var cmpFunc;
if( col == 0 || col == 4 || col == 5 ) { // Pos, Points or Gap
if( col == 0 || col == 6 || col == 7 ) { // Pos, Points or Gap
cmpFunc = cmpPos;
}
else if( col >= 7 ) { // Race Points/Time and Rank
else if( col >= 8 ) { // Race Points/Time and Rank
cmpFunc = function( a, b ) {
var x = parseRank( a.cells[7+(col-7)*2+1].textContent.trim() );
var y = parseRank( b.cells[7+(col-7)*2+1].textContent.trim() );
var x = parseRank( a.cells[8+(col-8)*2+1].textContent.trim() );
var y = parseRank( b.cells[8+(col-8)*2+1].textContent.trim() );
return MakeCmpStable( a, b, x - y );
};
}
Expand Down Expand Up @@ -585,7 +585,7 @@ def write( s ):
useMostRacesCompleted=model.useMostRacesCompleted,
numPlacesTieBreaker=model.numPlacesTieBreaker )

results = [rr for rr in results if toFloat(rr[4]) > 0.0]
results = [rr for rr in results if toFloat(rr[5]) > 0.0]
hideRaces = []

headerNames = HeaderNames + ['{}'.format(r[3].raceName) for r in races]
Expand Down Expand Up @@ -672,7 +672,7 @@ def write( s ):
write('<br/>&nbsp;') #Points structure would go here
aggregateCols.append(iCol)
with tag(html, 'tbody'):
for pos, (name, license, machines, team, points, gap, racePoints) in enumerate(results):
for pos, (name, license, machines, team, natcode, points, gap, racePoints) in enumerate(results):
with tag(html, 'tr', {'class':'odd'} if pos % 2 == 1 else {} ):
with tag(html, 'td', {'class':'rightAlign' + (' hidden' if 'Pos' in hideCols else '')}):
write( '{}'.format(pos+1) )
Expand All @@ -688,6 +688,8 @@ def write( s ):
write( '{}'.format(',<br>'.join(list(filter(None, machines))) or '') )
with tag(html, 'td', {'class':('hidden' if 'Team' in hideCols else '')}):
write( '{}'.format(team or '') )
with tag(html, 'td', {'class':('hidden' if 'NatCode' in hideCols else '')}):
write( '{}'.format(natcode or '') )
with tag(html, 'td', {'class':'rightAlign' + (' hidden' if 'Points' in hideCols else '')}):
write( '{}'.format(points or '') )
with tag(html, 'td', {'class':'rightAlign noprint' + (' hidden' if 'Gap' in hideCols else '')}):
Expand Down Expand Up @@ -1140,7 +1142,7 @@ def refresh( self, backgroundUpdate=False ):
numPlacesTieBreaker=model.numPlacesTieBreaker,
)

results = [rr for rr in results if toFloat(rr[4]) > 0.0]
results = [rr for rr in results if toFloat(rr[5]) > 0.0]

headerNames = HeaderNames + ['{}\n{}\n{}'.format(r[3].eventName,r[3].raceName,r[0].strftime('%Y-%m-%d') if r[0] else '') for r in races]

Expand All @@ -1151,18 +1153,20 @@ def refresh( self, backgroundUpdate=False ):
hideLicense = True
hideMachine = True
hideTeam = True
hideNatCode = True

for row, (name, license, machines, team, points, gap, racePoints) in enumerate(results):
for row, (name, license, machines, team, natcode, points, gap, racePoints) in enumerate(results):
self.grid.SetCellValue( row, 0, '{}'.format(row+1) )
self.grid.SetCellValue( row, 1, '{}'.format(name or '') )
self.grid.SetCellBackgroundColour( row, 1, wx.Colour(255,255,0) if name in potentialDuplicates else wx.Colour(255,255,255) )
self.grid.SetCellValue( row, 2, '{}'.format(license or '') )
self.grid.SetCellValue( row, 3, '{}'.format(',\n'.join(list(filter(None, machines))) or '') )
self.grid.SetCellValue( row, 4, '{}'.format(team or '') )
self.grid.SetCellValue( row, 5, '{}'.format(points) )
self.grid.SetCellValue( row, 6, '{}'.format(gap) )
self.grid.SetCellValue( row, 5, '{}'.format(natcode or '') )
self.grid.SetCellValue( row, 6, '{}'.format(points) )
self.grid.SetCellValue( row, 7, '{}'.format(gap) )
for q, (rPoints, rRank, rPrimePoints, rTimeBonus) in enumerate(racePoints):
self.grid.SetCellValue( row, 7 + q,
self.grid.SetCellValue( row, 8 + q,
'{} ({}) +{}'.format(rPoints, Utils.ordinal(rRank), rPrimePoints) if rPoints and rPrimePoints
else '{} ({}) -{}'.format(rPoints, Utils.ordinal(rRank), Utils.formatTime(rTimeBonus, twoDigitMinutes=False)) if rPoints and rRank and rTimeBonus
else '{} ({})'.format(rPoints, Utils.ordinal(rRank)) if rPoints
Expand All @@ -1179,6 +1183,8 @@ def refresh( self, backgroundUpdate=False ):
hideMachine = False
if team is not (None or ''):
hideTeam = False
if natcode is not (None or ''):
hideNatCode = False

if self.sortCol is not None:
def getBracketedNumber( v ):
Expand All @@ -1195,8 +1201,9 @@ def getBracketedNumber( v ):
rowOrig = [self.grid.GetCellValue(r, c) for c in range(0, self.grid.GetNumberCols())]
rowCmp = rowOrig[:]
rowCmp[0] = int(rowCmp[0])
rowCmp[4] = Utils.StrToSeconds(rowCmp[4])
rowCmp[5:] = [getBracketedNumber(v) for v in rowCmp[5:]]
rowCmp[6] = Utils.StrToSeconds(rowCmp[6])
rowCmp[7] = Utils.StrToSeconds(rowCmp[7])
rowCmp[8:] = [getBracketedNumber(v) for v in rowCmp[8:]]
rowCmp.extend( rowOrig )
data.append( rowCmp )

Expand All @@ -1215,9 +1222,9 @@ def getBracketedNumber( v ):
if c == iCol:
self.grid.SetCellTextColour( r, c, fg )
self.grid.SetCellBackgroundColour( r, c, bg )
if c < 4:
if c < 5:
halign = wx.ALIGN_LEFT
elif c == 4 or c == 5:
elif c == 6 or c == 7:
halign = wx.ALIGN_RIGHT
else:
halign = wx.ALIGN_CENTRE
Expand All @@ -1234,6 +1241,8 @@ def getBracketedNumber( v ):
self.grid.HideCol( 3 )
if hideTeam:
self.grid.HideCol( 4 )
if hideNatCode:
self.grid.HideCol( 5 )

self.grid.AutoSizeColumns( False )
self.grid.AutoSizeRows( False )
Expand Down Expand Up @@ -1300,7 +1309,7 @@ def onPublishToExcel( self, event ):
useMostRacesCompleted=model.useMostRacesCompleted,
numPlacesTieBreaker=model.numPlacesTieBreaker,
)
results = [rr for rr in results if toFloat(rr[4]) > 0.0]
results = [rr for rr in results if toFloat(rr[5]) > 0.0]

headerNames = HeaderNames + [(r[3].eventName + '\n' if r[3].eventName else '') + r[3].raceName for r in races]

Expand Down Expand Up @@ -1340,7 +1349,7 @@ def onPublishToExcel( self, event ):
c += 1
rowCur += 1

for pos, (name, license, machines, team, points, gap, racePoints) in enumerate(results):
for pos, (name, license, machines, team, natcode, points, gap, racePoints) in enumerate(results):
c = 0
if 'Pos' not in hideCols:
wsFit.write( rowCur, c, pos+1, numberStyle )
Expand All @@ -1357,6 +1366,9 @@ def onPublishToExcel( self, event ):
if 'Team' not in hideCols:
wsFit.write( rowCur, c, team, textStyle )
c += 1
if 'NatCode' not in hideCols:
wsFit.write( rowCur, c, natcode, textStyle )
c += 1
if 'Points' not in hideCols:
wsFit.write( rowCur, c, points, numberStyle )
c += 1
Expand Down

0 comments on commit 32ddd2e

Please sign in to comment.