rF2 Log Analyzer ver. 2.2.001

Made by Nibo. You can contact me at unhappyhardcore@gmail.com

Get updates and news in this thread rFactor2 Log Analyzer ver. 2 at https://forum.studio-397.com

Special thanks for support to wrxxy, Outlaws Racing, Scott, Tero Kokko, Knackko, Marcos Gil, Renátó Kádár, Michael B, AMSUnofficial.net, Jaileh, James S., Emanuele P., Jorge, Lajos P., Peter Russell, Tambe Zuri, M. Rhodes, Trevor Richens, Torsten S., Darren M., Richard S. and Chris M. from Downunder Series.

This application is free to use. But you can not sell it.

THIS APPLICATION IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



Changelog

2.2.001:

  • Fixed archived Competitions not showing results.
  • On "Championship manage teams/classes" page teams and classes are now sorted in pop-up modal window.
  • Added versioning to app.css file.

2.2.000:

  • From now on DEDI Competitions are saved to r2la_settings.json file automatically. No need to export/import them from separate r2la_competitions.json. You can still import your old r2la_competitions.json file on Options page.
  • Simplified r2la startup form. Added widget that shows in real time if r2la found right contents for a root path that user is entering.
  • Completely new Options page.
    • Options are now categorized to separate subpages.
    • 'Options - Import' page now has a widget that shows state of r2la_settings.json file.
    • 'Options - Tracks' has 'Track connections' form and 'Set track countries' widget.
    • Subpages for 'General', 'Car Identifiers', 'Log Directories', 'Language' and 'JavaScript' options.
    • Subpages for 'Session Reports' and 'Track Records' customization options.
    • Most options changes are saved to r2la_settings.json file automatically and are imported on r2la update.
  • Major improvements to session reports with driver swaps:
    • Race sessions with driver swaps are marked with "swaps" icon in Results Viewer selector.
    • Session reports with driver swaps automatically show Team Name as main name and all team drives listed underneath.
    • Race Results table now correctly shows team`s Qualifying times for logs with swaps.
    • 'Qual Time' and 'Best Lap' columns now show specific driver name that set that time for logs with swaps.
    • 'Session Best sectors' tables now show specific driver name that set that sector time for logs with swaps.
    • 'Race fastest laps' tables now shows correct team and driver names and specific driver name that set that time for races with driver swaps.
    • 'Pit Stops Summary' table now shows driver names, that were swapped at pit stop.
    • Added new table for races with driver swaps - 'Driver Stints' ('Swaps' tab). Shows all driver stints per team, stint duration, drivers best and average times in stint, driver overall driving time.
    • Drivers that were driving in Qualy are no longer included as DNS in Race Reports if they are driving in the race as part of the team.
  • Improved Track Records page design:
    • Changes to columns order and cell data formatting. Moved menu button for every record row to last column.
    • Added menu button in top right corner with customization options.
    • Added options to toggle table columns for 'Car Id', 'Car Type', 'Car Class', 'Team Name', 'Category', 'Server Name', 'Session', 'Fuel', 'Laps'.
    • 'Time' and 'Gap' columns are now optionally highlighted.
    • Redesigned Track Stats widget.
  • Improved and simplified DEDI Competitions Create/Edit form. Better default values. Most parameters now require to be turned On with checkbox to match their value. Most of the time you only need to provide Track Name and combination of Category, CarType, CarClass, TeamName to create a Competition.
  • Added "Create Competition for this xml" option to Results Viewer Utils drop-down menu. It opens Create Competition page with values already filled in with corresponding values of selected log file.
  • Removed old part of DEDI Competitions where users could upload their results to r2la DEDI.
  • Added multiple options to customize Session Reports tables:
    • Toggle columns in report tables: 'Car Number', 'Team', 'Car'.
    • Toggle columns in Race Results table only: 'Position Change', 'Qual Time'.
    • An option to show Team Name under Driver Name in report tables.
    • An option to add user images in Team and Car columns alongside text or instead of text. Put png images into rF2 Log Analyzer ver. x\web2py\applications\r2la\static\images\tables folder. Image filenames should match corresponding report column cell value. Replace all non-alphanumeric characters and spaces in filenames with _ (underscore) symbol.
    • An option to add one or two separate user image columns. Possible sources for this image file names are 'Category', 'CarType', 'CarClass', 'TeamName', 'CarId', 'Driver Name'.
    • Use browser DevTools to see image file names and css classes that can be used to customize styling in app.css file.
  • Added to Live Timing an option to add one or two separate user image columns. Turn it On/Off in rF2 Log Analyzer ver. x\web2py\applications\r2la\live_timing_settings.json file. Json settings names are "show_img_column1" (set to 0 or 1), "show_img_column2" (set to 0 or 1), "img_column1_source" (set to "driver", "class", "vehicle" or "vehicle_with_num"), "img_column2_source" (set to "driver", "class", "vehicle" or "vehicle_with_num"). Put png images into rF2 Log Analyzer ver. x\web2py\applications\r2la\static\images\tables folder. Image filenames should match corresponding source cell value. Replace all non-alphanumeric characters and spaces in filenames with _ (underscore) symbol.
  • Improved Championships page UI.
  • Added to Championships an option "Show column with custom images in Driver and Team Standings". Put png images into rF2 Log Analyzer ver. x\web2py\applications\r2la\static\images\tables folder. Image filenames should match corresponding Driver Name or Team Name cell value. Replace all non-alphanumeric characters and spaces in filenames with _ (underscore) symbol.
  • Better text formatting for Car Class and Tire Compound badges. Now shows full first word of multi-word class or compound name. Full name visible with mouse-over tooltip.
  • Better formatting for Driver Aids in tables. Now represented as badges (with one-two capital letters for most used Aids such as 'Blip', 'Clutch', 'Lift', 'AI', etc).
  • Redesigned 'Incidents/Chat' tab conents in Session Reports. Better 'Vehicle Contacts', 'Penalties' and 'Chat' tables. Removed Qualy Incidents/Chat from Race reports.
  • Changed session result header design in Session Reports.
  • Fixed numerous errors in UI. Multiple changes to improve UI consistency and readability.
  • Added screenshots to r2la Help page. Saved it as static mhtml file and put it in r2la root folder.
  • Added new Time Trials manager for non-DEDI version (optional).
    • Time Trials are available for non-DEDI mode only. Its a way to compare your multiple race runs of the same distance on the same track. Cars might be different on every run. Time Trial is structured similar to championship. You can create several events with different tracks in one Time Trial. Then add Race logs to event.
    • Conditions when adding log files to event are: xml file must contain driver with a name matching the one you provided when creating Time Trial, and all Race runs for event must have the same length in laps and done on the same track.
    • For example, you can create Time Trial with "Endurance TT" name and add your player name. Then create several events with names of tracks, like "Spa", "Imola", etc. Then run several races at Spa offline, with or without AI, with the same or different cars, but all races 10 laps long. Then add all this race logs to Spa Time Trial event you created. You will see Results and Laps tables on event page, where you can easily compare overall run time, best lap times, sectors, top speed (for LMU), fuel and tire wear, consistency between race runs.

2.1.032:

  • Added session duration in laps or hours/minutes to session report title.
  • Improved track country flag image vertical alignment.

2.1.031:

  • Fixed formatting for points sum in championship tables if floating point numbers used in points system.

2.1.030:

  • LMU log files after patch #3 include lap top speed and virtual energy values. Added top speed data to multiple tables in reports. Added virtual energy to Stints tables. Only Hypercars have virtual energy data.
  • Improved Championship Create/Edit page layout. Added image hints for some options.
  • Stints fuel sum value now always includes fuel used during out lap (by adding average fuel used per lap).
  • Multiple other minor fixes.

2.1.028:

  • Repackaged with Python 3.11.

2.1.027:

  • Fix for an error when some driver has BestLapTime value but no Lap tag values.
  • Fixed an error when changing a flag for tracks with non-alphanumeric symbols.

2.1.026:

  • Added position column color coding for endurance car classes from Le Mans Ultimate and rF2 (Hyper, LMP1, DPi, LMP2, LMP3, GTE, GT3, ES_LMP2, ES_GTE, ES_LMP3) in Results Viewer reports and Track Records tables. Custom championship classes will override this color coding in championship race reports.
  • Added automatic unique CSS class name to position badge element based on car class. For example: "uk-badge-class-Hyper". Optionally set css class colors in app.css file to customize car class color badges.

2.1.025:

  • Fixed tire wear not showing for Le Mans Ultimate logs.

2.1.024:

  • Added support for Le Mans Ultimate root folder path. Added LMU track names for default track flags assignment.

2.1.023:

  • Added filter by track name or by server name to log selector pop-up when assigning log files to championship races.

2.1.022:

  • Fixed an error with abnormal log files when there is best lap time present, but no per lap data for driver.
  • Added optional iframe to Live Timing page above timing table. Can be used to embed animated track maps from other live timing plugins, for example. Look for new options in live_timing_settings.json: "show_iframe" - set to 1 to turn iframe on, "iframe_src" - link to your page to appear in iframe, "iframe_style" - iframe style css options can be added to scale iframe content on page (for example, "height:300px; width:300px; transform: scale(0.75);"). If you have multiple servers on Live Timing page, iframe will be the same for all of them.
  • Fixed a problem in Dedi Competitions when track name has double spaces in its name.

2.1.021:

  • Improved incident count in race reports for vehicle contacts. Vehicle contacts with self are ignored. Contacts between two cars count as one for each car instead of two for each car before.

2.1.020:

  • Added championship option "Hide event columns in standings tables".

2.1.019:

  • Added optional columns to Records tables: Car Type, Car Class, Team Name, Category, Fuel (in percent, at the end of the record lap, if available).
  • Added "Clone Competition" button for Dedi competitions.

2.1.018:

  • Added position (numeration) column to records table on Track Records page.
  • Added options to hide Championship and Competition buttons in top menu for non-admin users.
  • Added "Show both driver vehicle and team name in driver standings" championship option.

2.1.017:

  • r2la will now log only first 100 "contacts with immovable" for each driver per session, to avoid memory problems with logs with "junk" contact entries.

2.1.016:

  • Added time gap for lapped cars that finished to Time/Retired column in Race Results table.

2.1.015:

  • Fixed an error on "refresh" if driver has BestLapTime tag value, but no Lap tags.

2.1.014:

  • Fixed a bug in car identifier selection for GT3 cars.
  • Added latest S397 track names to automatic country/flag id database.

2.1.013:

  • Added an option to add Google site verification content string on Options page. It will be added to "meta" tag on every page.
  • Added a link to result report for competition results.

2.1.012:

  • Added two data calls at http://your-r2la-address:port/report/get_latest_json" and http://your-r2la-address:port/report/get_latest_xml". Xml returns latest raw xml log file. Json returns latest r2la report data in JSON format.

2.1.011:

  • Added .cellbg_top5, .cellbg_top10 css classes for cell backgrounds for top5, top10 finish positions and .cell_fin_pos class for finish position text span in cell top left corner in Championship Standings table.
  • Added team_standings and driver_standings css classes to standings tables.

2.1.010:

  • Added option "Show AI driver percentage in session header and AI icons near driver names in session results".
  • Added warning message when log file contains multiple Driver tags with the same name.

2.1.009:

  • Championship option "Team with this name will receive no points" is extended to: "or teams with names containing this substring". This is to enable no points option for multiple teams.

2.1.008:

  • Added filter to Track Records pages. Filter records on page by car Category, CarType, CarClass, TeamName, session name, server name, date range.

2.1.007:

  • Added "Show records only after date" option to Options page. Default off. If turned on, r2la will only find track records after set date.

2.1.006:

  • Added "Team" column to tables on "Fuel/Tires" tab in session reports.

2.1.005:

  • Tracks that are connected to other tracks are now hidden in selector on Records page.

2.1.004:

  • Added "Team points through season" graph to Championship Stats page.

2.1.003:

  • Fix for error in Competitions when some log file has empty TeamName tag.

2.1.002:

  • More utf-8 fixes.

2.1.001:

  • Fixed an error when championship option "Reverse race order display in standings tables" is on.

2.1.000:

  • Ported application from Python 2.7 to Python 3.10. Latest web2py.
  • Added optional pagination to Results Viewer. Greatly increases Results Viewer page performace when number of log files is high. Default is off, 100 logs per page. You can turn it on and set number of logs per page on Options page or using drop-down menu on Results Viewer page.
  • Drivers with empty Name tag in xml now assigned "Noname Driver1", "Noname Driver2", etc, names inside r2la (not changing xml file itself).
  • r2la should now correctly display all utf-8 symbols found in xml (umlauts, etc).
  • Improved Help page.

2.058.45:

  • Added automatic color badges to car class names and colors to position circles in LiveTiming table when number of car classes in session is more then 1 (and less then 9). Colors are hardcoded.

2.058.44:

  • Fixed an error that could appear with some "abnormal" xml log files lately ("Driver" section without "BestLapTime" tag, but with lap times present in "Lap" tags).

2.058.43:

  • Added jsonp call for dedi competition results. At http://your-r2la-address:port/dedi_comps/get_comp_jsonp. You should pass 'cid' (competition id) as request var for xml file name. Example:
    $.ajax({
        url: 'http://your-r2la-address:port/dedi_comps/get_comp_jsonp',
        type: 'GET',
        dataType: 'jsonp',
        crossDomain: true,
        data: {'cid': '1'},
        success: function (data, textStatus, xhr) {
            console.log(data);
        },
        error: function (xhr, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });

2.058.42:

  • Fixed "Auto refresh" to work correctly in all situations.
  • Added "Used in Competition" and "Not used in Competition" options to Results Viewer filter.

2.058.41:

  • Added "Contains Track Record" and "Does Not Contain Track Record" options to Results Viewer filter.

2.058.40:

  • Added session info to Track Records.
  • Tire data in Track Records is now visible or hidden per session type, depending on settings on Options page (default - visible for all sessions).
  • Fixed error on r2la_settings.json import, when importing track connections with track not currently present in log files. This connections will not be imported.
  • Fixed error when deleting track connections on Option page.


Used software

This application is made with Python, web2py, psutil, UIkit, Flot.js, jQuery, marked, CodeMirror, Mithril, Moment.js, Moment Duration Format Plugin, Ocanvas, pace.js, tablesort, Background pattern from subtlepatterns.com. Flags from gosquared.

psutil license

psutil is distributed under BSD license reproduced below.

Copyright (c) 2009, Jay Loden, Dave Daeschler, Giampaolo Rodola'
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.
 * Neither the name of the psutil authors nor the names of its contributors
   may be used to endorse or promote products derived from this software without
   specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.