8 years agoTwo new utilities written in Go.
Ant Zucaro [Wed, 6 Feb 2013 02:30:12 +0000 (21:30 -0500)]
Two new utilities written in Go.

xs_parselog parses XonStat log and extracts/recreates requests
into text files, one request per file.

xs_submit takes a XonStat request via a text file and submits it
to a user-specified URL.

Both of these utlities can be run with "go run <filename> [opts]"
after having install the Go programming language on your machine.
Alternatively, one can build executables with "go build <filename>".

8 years agoStore the active mods in the games table
Ant Zucaro [Tue, 5 Feb 2013 08:52:08 +0000 (03:52 -0500)]
Store the active mods in the games table

8 years agoSave the server port number during submission
Ant Zucaro [Tue, 5 Feb 2013 08:38:51 +0000 (03:38 -0500)]
Save the server port number during submission

8 years agoGeneric game meta handling
Ant Zucaro [Tue, 5 Feb 2013 08:22:09 +0000 (03:22 -0500)]
Generic game meta handling

8 years agoSet server default create_dt to UTC time.
Ant Zucaro [Tue, 5 Feb 2013 02:00:17 +0000 (21:00 -0500)]
Set server default create_dt to UTC time.

8 years agoSearch servers by hashkey first, then name. Update properly.
Ant Zucaro [Tue, 5 Feb 2013 01:43:14 +0000 (20:43 -0500)]
Search servers by hashkey first, then name. Update properly.

8 years agoGah, one more place to center the damn button and icon!
Ant Zucaro [Tue, 5 Feb 2013 01:42:48 +0000 (20:42 -0500)]
Gah, one more place to center the damn button and icon!

8 years agoCenter the view button and game type icons in other pages.
Ant Zucaro [Tue, 5 Feb 2013 00:44:26 +0000 (19:44 -0500)]
Center the view button and game type icons in other pages.

8 years agoCenter view button and game type icons
Ant Zucaro [Tue, 5 Feb 2013 00:36:08 +0000 (19:36 -0500)]
Center view button and game type icons

8 years agoFlip short and long description.
Ant Zucaro [Tue, 5 Feb 2013 00:30:29 +0000 (19:30 -0500)]
Flip short and long description.

8 years agoUse gametype description for icon tooltips (e.g. ca -> Clan Arena)
Jan Behrens [Mon, 4 Feb 2013 21:37:31 +0000 (22:37 +0100)]
Use gametype description for icon tooltips (e.g. ca -> Clan Arena)

8 years agoMerge branch 'master' of http://git.xonotic.org/xonotic/xonstat into approved
Jan Behrens [Sun, 3 Feb 2013 20:08:01 +0000 (21:08 +0100)]
Merge branch 'master' of git.xonotic.org/xonotic/xonstat into approved

8 years agoGive the header stanza a bit more room.
Ant Zucaro [Sun, 3 Feb 2013 19:54:05 +0000 (14:54 -0500)]
Give the header stanza a bit more room.

8 years agoFix problems with too wide text in game_info page (span6 -> span10)
Jan Behrens [Sun, 3 Feb 2013 19:52:44 +0000 (20:52 +0100)]
Fix problems with too wide text in game_info page (span6 -> span10)

8 years agoAdding gametype icons to game_info page
Jan Behrens [Sun, 3 Feb 2013 14:21:11 +0000 (15:21 +0100)]
Adding gametype icons to game_info page

8 years agoMerge branch 'master' of http://git.xonotic.org/xonotic/xonstat into approved
Jan Behrens [Sat, 2 Feb 2013 16:26:16 +0000 (17:26 +0100)]
Merge branch 'master' of git.xonotic.org/xonotic/xonstat into approved

8 years agoAdding colors for yellow/pink teams; make all team colors consistent (HSV value ...
Jan Behrens [Sat, 2 Feb 2013 16:25:01 +0000 (17:25 +0100)]
Adding colors for yellow/pink teams; make all team colors consistent (HSV value = X/100/30)

8 years agoMerge branch 'approved' of git://gitorious.org/xonotic/xonstat into zykure-approved
Ant Zucaro [Sat, 2 Feb 2013 16:13:37 +0000 (11:13 -0500)]
Merge branch 'approved' of git://gitorious.org/xonotic/xonstat into zykure-approved

8 years agoMerge branch 'master' of http://git.xonotic.org/xonotic/xonstat into approved
Jan Behrens [Sat, 2 Feb 2013 16:04:38 +0000 (17:04 +0100)]
Merge branch 'master' of git.xonotic.org/xonotic/xonstat into approved

8 years agoFix KH scoreboard display
Ant Zucaro [Sat, 2 Feb 2013 16:01:06 +0000 (11:01 -0500)]
Fix KH scoreboard display

8 years agoWorkaround for missing fastest for RC/CTS
Ant Zucaro [Sat, 2 Feb 2013 15:41:11 +0000 (10:41 -0500)]
Workaround for missing fastest for RC/CTS

8 years agoFixing up after recent updates: correct win percentage; correct gametype display
Jan Behrens [Sat, 2 Feb 2013 10:40:58 +0000 (11:40 +0100)]
Fixing up after recent updates: correct win percentage; correct gametype display

8 years agoAdded option to filter by player id (for debugging); fixed nick width in Archer's...
Jan Behrens [Sat, 2 Feb 2013 10:39:57 +0000 (11:39 +0100)]
Added option to filter by player id (for debugging); fixed nick width in Archer's badge skin

8 years agoAdd race support to the scoreboard.
Ant Zucaro [Fri, 1 Feb 2013 20:53:29 +0000 (15:53 -0500)]
Add race support to the scoreboard.

8 years agoAdd nb support to the scoreboard.
Ant Zucaro [Fri, 1 Feb 2013 20:49:42 +0000 (15:49 -0500)]
Add nb support to the scoreboard.

8 years agoNo Elo for keyhunt, remove old ka name.
Ant Zucaro [Fri, 1 Feb 2013 20:45:40 +0000 (15:45 -0500)]
No Elo for keyhunt, remove old ka name.

8 years agoAdd kh support to the scoreboard.
Ant Zucaro [Sun, 27 Jan 2013 04:01:11 +0000 (23:01 -0500)]
Add kh support to the scoreboard.

8 years agoAdd rune support to the scoreboard.
Ant Zucaro [Sun, 27 Jan 2013 03:28:44 +0000 (22:28 -0500)]
Add rune support to the scoreboard.

8 years agoAdd keepaway support to the scoreboard.
Ant Zucaro [Sun, 27 Jan 2013 03:26:57 +0000 (22:26 -0500)]
Add keepaway support to the scoreboard.

8 years agoAdd ft support to the scoreboard.
Ant Zucaro [Sun, 27 Jan 2013 03:07:11 +0000 (22:07 -0500)]
Add ft support to the scoreboard.

8 years agoAdd dom support.
Ant Zucaro [Sun, 27 Jan 2013 03:01:28 +0000 (22:01 -0500)]
Add dom support.

8 years agofastest_cap -> fastest
Ant Zucaro [Sat, 26 Jan 2013 22:38:02 +0000 (17:38 -0500)]
fastest_cap -> fastest

8 years agoMissed a gametype in the supported_games list.
Ant Zucaro [Sat, 26 Jan 2013 22:20:22 +0000 (17:20 -0500)]
Missed a gametype in the supported_games list.

8 years agoAdd CTS support to the scoreboard.
Ant Zucaro [Sat, 26 Jan 2013 17:49:33 +0000 (12:49 -0500)]
Add CTS support to the scoreboard.

8 years agoClean up scoreboard and accuracy info for CTS.
Ant Zucaro [Sat, 26 Jan 2013 17:12:10 +0000 (12:12 -0500)]
Clean up scoreboard and accuracy info for CTS.

8 years agoAdd a new blank game check for CTS.
Ant Zucaro [Sat, 26 Jan 2013 17:06:23 +0000 (12:06 -0500)]
Add a new blank game check for CTS.

8 years agoAdd cq support to the scoreboard.
Ant Zucaro [Sat, 26 Jan 2013 15:44:31 +0000 (10:44 -0500)]
Add cq support to the scoreboard.

8 years agoAdd CA support to the scoreboard.
Ant Zucaro [Sat, 26 Jan 2013 14:52:09 +0000 (09:52 -0500)]
Add CA support to the scoreboard.

8 years agoAdd assault support to the scoreboard
Ant Zucaro [Sat, 26 Jan 2013 14:38:21 +0000 (09:38 -0500)]
Add assault support to the scoreboard

8 years agoSupport a ton of new fields.
Ant Zucaro [Sat, 26 Jan 2013 14:31:31 +0000 (09:31 -0500)]
Support a ton of new fields.

8 years agoAllow version-specific gametype support.
Ant Zucaro [Fri, 25 Jan 2013 22:41:38 +0000 (17:41 -0500)]
Allow version-specific gametype support.

It often happens when a gametype can't be supported because of
some random bug in the server code. This presents a problem
for when the bug is fixed, but servers still use the old code. We
can now specify that a game type is supported only after a certain
time by using version number restrictions. For example, CA is
supported, but only if the stats submission version is >= 5. Older
servers still having versions <= 5 won't record CA b/c they would
not pass this restriction.

8 years agoRemove a debug statement.
Ant Zucaro [Fri, 25 Jan 2013 22:16:29 +0000 (17:16 -0500)]
Remove a debug statement.

8 years agoMake latency displays parameter-driven.
Ant Zucaro [Wed, 23 Jan 2013 12:13:27 +0000 (07:13 -0500)]
Make latency displays parameter-driven.

You can now use the show_latency query parameter to show ping
information in the scoreboards on the game_info page.

8 years agoFixed display of bots in the scoreboard
Jan Behrens [Tue, 22 Jan 2013 21:43:20 +0000 (22:43 +0100)]
Fixed display of bots in the scoreboard

8 years agoMaking CA games work in XonStat
Jan Behrens [Tue, 22 Jan 2013 21:35:11 +0000 (22:35 +0100)]
Making CA games work in XonStat

8 years agoMerge branch 'master' of http://git.xonotic.org/xonotic/xonstat into approved
Jan Behrens [Tue, 22 Jan 2013 16:31:08 +0000 (17:31 +0100)]
Merge branch 'master' of git.xonotic.org/xonotic/xonstat into approved

8 years agoAdd two helper methods to simplify.
Ant Zucaro [Mon, 21 Jan 2013 21:39:41 +0000 (16:39 -0500)]
Add two helper methods to simplify.

8 years agoMajor refactor of submissions code.
Ant Zucaro [Mon, 21 Jan 2013 17:49:24 +0000 (12:49 -0500)]
Major refactor of submissions code.

8 years agoremove old submission handler
Ant Zucaro [Mon, 21 Jan 2013 17:49:11 +0000 (12:49 -0500)]
remove old submission handler

8 years agoRedo submission handling.
Ant Zucaro [Mon, 21 Jan 2013 15:24:12 +0000 (10:24 -0500)]
Redo submission handling.

8 years agoSome layout fixes for the player badges (nick_maxwidth)
Jan Behrens [Thu, 17 Jan 2013 23:49:34 +0000 (00:49 +0100)]
Some layout fixes for the player badges (nick_maxwidth)

8 years agoMerge branch 'approved' of gitorious.org:xonotic/xonstat into approved
Jan Behrens [Wed, 16 Jan 2013 18:47:01 +0000 (19:47 +0100)]
Merge branch 'approved' of gitorious.org:xonotic/xonstat into approved

8 years agoMerge branch 'master' into approved.new
Jan Behrens [Wed, 16 Jan 2013 18:46:08 +0000 (19:46 +0100)]
Merge branch 'master' into approved.new

8 years agoAdd views for player captimes (all the fastest caps per player) and map captimes...
Jan Behrens [Wed, 16 Jan 2013 17:40:09 +0000 (18:40 +0100)]
Add views for player captimes (all the fastest caps per player) and map captimes (all the fastest caps per map)

8 years agoUse scoreboardpos instead of rank to sort.
Ant Zucaro [Wed, 16 Jan 2013 02:45:02 +0000 (21:45 -0500)]
Use scoreboardpos instead of rank to sort.

8 years agoSupport the new scoreboardpos and teamrank fields.
Ant Zucaro [Wed, 16 Jan 2013 02:37:44 +0000 (21:37 -0500)]
Support the new scoreboardpos and teamrank fields.

Two new player events being sent to sort games every which way :D.

8 years agoMerge branch 'master' into approved
Jan Behrens [Fri, 11 Jan 2013 16:39:54 +0000 (17:39 +0100)]
Merge branch 'master' into approved


8 years agoAdd request verification parameter in the dev INI.
antzucaro [Fri, 4 Jan 2013 19:14:55 +0000 (14:14 -0500)]
Add request verification parameter in the dev INI.

This was added to the production.ini file without going in here
first. It controls whether or not to verify requests using the
d0_blind_id library provided by Xonotic (not packaged in this

8 years ago404 when hashkey is not found.
Ant Zucaro [Sun, 30 Dec 2012 21:27:28 +0000 (16:27 -0500)]
404 when hashkey is not found.

8 years agoDo not send top-level elo/rank/pct.
Ant Zucaro [Sun, 30 Dec 2012 21:26:58 +0000 (16:26 -0500)]
Do not send top-level elo/rank/pct.

8 years agoAdd a plain text hashkey view for menu integration.
antzucaro [Sun, 30 Dec 2012 16:40:55 +0000 (11:40 -0500)]
Add a plain text hashkey view for menu integration.

This adds a plain text response view at the URL /player/<hashkey>,
where hashkey is the idfp of a given player. The response is quite
lengthy and won't be specified in this message, but suffice to say
that the response roughly corresponds to the player_info JSON view
currently at /player/<player_id>.json.

8 years agoMake the player game index Elo arrows clickable.
Ant Zucaro [Mon, 24 Dec 2012 18:07:09 +0000 (13:07 -0500)]
Make the player game index Elo arrows clickable.

8 years agoWhoops, add the game finder template!
Ant Zucaro [Mon, 24 Dec 2012 17:55:16 +0000 (12:55 -0500)]
Whoops, add the game finder template!

8 years agoAdd game finder links to the "info" views.
Ant Zucaro [Mon, 24 Dec 2012 15:09:35 +0000 (10:09 -0500)]
Add game finder links to the "info" views.

8 years agoAdd a basic game finder view at the /gamefinder URL.
Ant Zucaro [Mon, 24 Dec 2012 14:38:34 +0000 (09:38 -0500)]
Add a basic game finder view at the /gamefinder URL.

The game finder view is intended to be a better advanced search.
We'll see how it works out, but for now at least I can use this
view to show more of the "recent games" tables for each entity.

8 years agoAdd a __repr__ to RecentGames for easy debugging.
Ant Zucaro [Sun, 23 Dec 2012 17:43:26 +0000 (12:43 -0500)]
Add a __repr__ to RecentGames for easy debugging.

8 years agoAdd a new named argument for the ini-file to be used
Jan Behrens [Sun, 23 Dec 2012 14:14:33 +0000 (15:14 +0100)]
Add a new named argument for the ini-file to be used
(Usage: gen_badges.py [options] <ini-file>)

8 years agoAdd comment to the get_ranks function.
Ant Zucaro [Sun, 23 Dec 2012 13:49:34 +0000 (08:49 -0500)]
Add comment to the get_ranks function.

8 years agoRefactor the "top <blah>" tables on the front page, cache them.
Ant Zucaro [Sat, 22 Dec 2012 21:57:46 +0000 (16:57 -0500)]
Refactor the "top <blah>" tables on the front page, cache them.

The main_index view was getting a little long, so I factored out
the "top <blah>" data queries into separate functions. I cached
those functions under an hourly term while I was at it.

8 years agoSimplify the rank table calculations. Woohoo, negative LOC!
Ant Zucaro [Sat, 22 Dec 2012 20:59:17 +0000 (15:59 -0500)]
Simplify the rank table calculations. Woohoo, negative LOC!

Before the main view was running three separate, similar queries
to grab the rank data for the three game types shown on the page.
This was factored out into a separate function that can be called
and cached (currently hourly_term). Also if no ranks are available,
don't show tables filled with '-' characters, but rather an
informative message instead.

8 years agoFix the player JSON view with a _asdict() method to RecentGame-s.
Ant Zucaro [Fri, 21 Dec 2012 22:38:53 +0000 (17:38 -0500)]
Fix the player JSON view with a _asdict() method to RecentGame-s.

8 years agoAdd a new summary statistics byline below the main logo.
Ant Zucaro [Sun, 16 Dec 2012 00:14:59 +0000 (19:14 -0500)]
Add a new summary statistics byline below the main logo.

Summary statistics shown and refreshed hourly via cache
invalidation (Beaker):

- total games
- total dm, duel, and ctf games
- total players
- total servers

If for some reason the summary statistics can't be retrieved, the
old one is shown instead.

8 years agoAdd object relational mappings for the summary stats table.
Ant Zucaro [Sat, 15 Dec 2012 15:21:18 +0000 (10:21 -0500)]
Add object relational mappings for the summary stats table.

8 years agoIntegrate the new helpers everywhere.
Ant Zucaro [Fri, 14 Dec 2012 02:56:40 +0000 (21:56 -0500)]
Integrate the new helpers everywhere.

8 years agoUse start_dt instead of create_dt.
Ant Zucaro [Fri, 14 Dec 2012 02:55:23 +0000 (21:55 -0500)]
Use start_dt instead of create_dt.

8 years agoAdd a JSON Elo view to support autobalance.
Ant Zucaro [Tue, 11 Dec 2012 22:28:02 +0000 (17:28 -0500)]
Add a JSON Elo view to support autobalance.

The view at /elo/<hashkey> will send just Elo info about a player.
This is to facilitate a possible autobalance feature where the
Xonotic server will request Elo values for all of the
players entering the game, then use it (among other things) to
figure out who needs to be switched to make the teams right.

8 years agoAdd a hashkey view similar to the player_info JSON one.
Ant Zucaro [Tue, 4 Dec 2012 02:55:22 +0000 (21:55 -0500)]
Add a hashkey view similar to the player_info JSON one.

This view is driven by hashkey (not player_id) so the Xonotic
server can query for info using something it knows. The response
value is a JSON object containing the things in the player info
page minus the recent weapons and recent games stuff.

The URL pattern is /hashkey/<hashkey value>.

All this is pretty alpha and is subject to change once we truly
determine our needs  Think of this as a proof of concept for
communicating between the game server and the webapp.

8 years agoExplicitly set an update_dt when elos are processed.
Ant Zucaro [Sun, 2 Dec 2012 13:09:18 +0000 (08:09 -0500)]
Explicitly set an update_dt when elos are processed.

8 years agoIf there are no recent games, do not show the section.
Ant Zucaro [Fri, 30 Nov 2012 00:45:04 +0000 (19:45 -0500)]
If there are no recent games, do not show the section.

8 years agoMake recent games more bullet-resistant :)
Ant Zucaro [Sun, 25 Nov 2012 15:37:01 +0000 (10:37 -0500)]
Make recent games more bullet-resistant :)

8 years agoDon't pre-fill the "recent games" section with hyphens.
Ant Zucaro [Sun, 25 Nov 2012 15:30:05 +0000 (10:30 -0500)]
Don't pre-fill the "recent games" section with hyphens.

Just show what is there to show rather than fill up the empty space
with...more empty space!

8 years agoRecent -> Most Recent for maps too.
Ant Zucaro [Sun, 25 Nov 2012 15:17:22 +0000 (10:17 -0500)]
Recent -> Most Recent for maps too.

8 years agoSmall copy change for the server info page.
Ant Zucaro [Sun, 25 Nov 2012 15:15:48 +0000 (10:15 -0500)]
Small copy change for the server info page.

"Recent" isn't exactly recent for some servers. I'll label it
"Most Recent" instead. That makes more sense when servers have
not had any games in a long time.

8 years agoSprite-ify the map and server info pages too.
Ant Zucaro [Sun, 25 Nov 2012 15:13:13 +0000 (10:13 -0500)]
Sprite-ify the map and server info pages too.

8 years agoSprite-ify a few templates.
Ant Zucaro [Sun, 25 Nov 2012 01:26:37 +0000 (20:26 -0500)]
Sprite-ify a few templates.

8 years agoAdd css sprites for weapons and game types.
Ant Zucaro [Sun, 25 Nov 2012 01:25:41 +0000 (20:25 -0500)]
Add css sprites for weapons and game types.

8 years agoUse the new helpers for the server_info page as well.
Ant Zucaro [Mon, 19 Nov 2012 02:48:31 +0000 (21:48 -0500)]
Use the new helpers for the server_info page as well.

Another performance boost on my machine! The page loads in
half the time that it did before. Aw yeah.

8 years agoUse the new helpers on the map info page.
Ant Zucaro [Mon, 19 Nov 2012 02:29:54 +0000 (21:29 -0500)]
Use the new helpers on the map info page.

Big performance boost! Was 1.5s (on my machine) and now <1s.

8 years agoLooks better this way, and performs the same.
Ant Zucaro [Mon, 19 Nov 2012 02:08:00 +0000 (21:08 -0500)]
Looks better this way, and performs the same.

8 years agoMake the "recent games" section more modular.
Ant Zucaro [Mon, 19 Nov 2012 00:27:14 +0000 (19:27 -0500)]
Make the "recent games" section more modular.

The main page was constructing all of the recent games queries
manually before. Now I've moved the query and the associated
class (which would have been a namedtuple if not for the various
transformations needed) into a new "helpers" view. This view is
intended to house query functions and the corresponding classes
for them, so no more grabbing from a query, then looping around
and creating namedtuples to get stuff like nick_html_colors. Now
one can just pass the row returned by the query to a class, which
will "know" how to construct stuff like that. Win!

8 years agoAdd the game's duration to the game info page, if it exists.
Ant Zucaro [Thu, 15 Nov 2012 01:49:30 +0000 (20:49 -0500)]
Add the game's duration to the game info page, if it exists.

8 years agoProvide an option to show elo deltas on the game info page.
Ant Zucaro [Wed, 14 Nov 2012 04:02:56 +0000 (23:02 -0500)]
Provide an option to show elo deltas on the game info page.

I was tired of looking at the actual elo deltas by bouncing
between the player_info and game_info pages for several
players just to see their collective elo delta values. This
provides a query parameter "show_elo" to the game info page
to show the extra elo delta column.

As a bonus, the up/down/neutral arrows on the player_info
page will take you to a scoreboard page where those values
are shown.

8 years agoProper fix for big alivetimes.
Ant Zucaro [Tue, 13 Nov 2012 00:59:37 +0000 (19:59 -0500)]
Proper fix for big alivetimes.

Moral of the story: I should not code late at night.

8 years agoHandle Elos properly when players have big alivetimes.
Ant Zucaro [Fri, 9 Nov 2012 04:42:29 +0000 (23:42 -0500)]
Handle Elos properly when players have big alivetimes.

Due to a bug, the alivetimes for players also include time
spent in warmup. Since elo uses score per second, the
skewed alivetime made players who actually lost look like
they won under certain circumstances (like when their
opponent spent a very long time in warmup).

This change puts a ceiling on the alivetime used by Elo
by limiting the alivetime to be at most the game's

8 years agoParse and store the game's duration.
Ant Zucaro [Fri, 9 Nov 2012 04:18:55 +0000 (23:18 -0500)]
Parse and store the game's duration.

The duration has been sent for a while as the 'D' line, but
it hasn't really been needed until now; it was just a nice thing
to have. Now Elo calculations are messing up because the warmup
time is being summed into player alivetimes. This duration field
can assist in creating a workaround. Having it, Elo calculations
can know the true maximum game time, so anything higher can be
brought down to the "floor" of the real duration of the match.

8 years agoFixed double negative, maybe the most helpful ever.
Malcolm Gill [Mon, 15 Oct 2012 12:27:34 +0000 (23:27 +1100)]
Fixed double negative, maybe the most helpful ever.

8 years agoLink to the game for each cap record.
Ant Zucaro [Sun, 4 Nov 2012 13:26:16 +0000 (08:26 -0500)]
Link to the game for each cap record.

8 years agoAdd overall best flag capture times to the map info page.
Ant Zucaro [Sun, 4 Nov 2012 13:17:22 +0000 (08:17 -0500)]
Add overall best flag capture times to the map info page.

Only the top ten fastest capture times are shown. Players in this
list must be tracked. No bots are tracked, obviously :D.

8 years agoShow the best flag capture times on the game info page.
Ant Zucaro [Fri, 2 Nov 2012 01:59:21 +0000 (21:59 -0400)]
Show the best flag capture times on the game info page.

The best flag capture time for each player is shown in the game
info page now. This only happens for CTF. The format shown is
seconds.milliseconds, with up to two decimal places shown.

8 years agoAdd ping to the scoreboard.
Ant Zucaro [Fri, 2 Nov 2012 01:24:36 +0000 (21:24 -0400)]
Add ping to the scoreboard.

Ping is being sent now in the POST requests. Show it if it
exists in the player_game_stat row.