Official GranTracker Thread

For this week I had to add M1 and M2 because the race letter had to be unique. I don't think it will be a problem unless I go to sort the races. I expect that will also come up when the N races have multiple races in the week. No bugs to report, still love this tracker!
 
Thanks, I've installed the update, but I can't import my latest screen shot. It reports "You don't have a Race Week setup for this date yet.". Could it be to do with the fact the new week is shown as "2023-53"? Although the start date time is correct showing "2024/01/01 07:00"
Looks like I've got a bug. I'll take a look at it.
 

GranTracker v3.0.3 has just been released, and week 2024-01.

Get it here: https://www.grantracker.com/downloads.html

Bug Fixes​

Fixes the problem where week 2024-01 was appearing as 2023-53, and you couldn’t add races for it.

Improvements​

When using a Custom Field of type “Time”, you can enter a value of “0” and it’ll show up in the table. (Actually, it shows up as “0.000”). Prior to this, a value of “0” was ignored.
 
I have an ask and it may be a difficult one to implement.

Now we have custom fields, could there be a way to create a custom field that is a calculated result based on two prior fields (custom or otherwise?). Rule would be:
  1. Fields must be of the same type with the exception of time and number.
  2. A calculated field can be used in another calculation, so you would need to be able to determine order of operations.
  3. Text fields could only be concatenated but I don't really see a need to perform a calculated text operation.
  4. Time fields can be added and subtracted.
  5. Time field can also be divided or multipled by a numeric field.
  6. Numeric fields can be added, subtracted, divided and multiplied.

I've started to collect the finish time in the race, my delta to that time and the number of laps in the race.

Screenshot 2024-01-05 at 9.37.17 AM.png


What would be cool and useful for statistics would be to calculate my total race time and my average lap time. So:

"Total Time" = "Finish Time" + "Finish Delta"

"Average Lap" = "Total Time" / "Lap#"

Then we could also perform a Lap to QT calculation as"

"Lap to QT Delta" = "Average Lap" - "QT"

How awesome would that be? I know you like a challenge! :D
 
How awesome would that be? I know you like a challenge! :D
I love stuff like this. The challenge, as with most of these kinds of things, is to figure out the UI. Especially, as you mentioned, specifying the order of operation.

If you could find some examples of UI implementation, it would be awesome. I've found, in the past, that what seems complicated can actually be fairly easy, if you can find a genius who came up with the idea. I steal ideas much better than I come up with themselves myself. :lol:
 
I love stuff like this. The challenge, as with most of these kinds of things, is to figure out the UI. Especially, as you mentioned, specifying the order of operation.

If you could find some examples of UI implementation, it would be awesome. I've found, in the past, that what seems complicated can actually be fairly easy, if you can find a genius who came up with the idea. I steal ideas much better than I come up with themselves myself. :lol:
Actually order of operation might be really simple.

I assume internally that you use a sequence id for the custom fields. If the calcuator is limited to only two fields then you need to define the field first before you can use it elsewhere, so if you calculate based on the sequence id then problem solved.

Then for UI, you have"Create Calculated Field" in your menu. That gives a pop up where you:

Define:
  • Field Name
  • Type (I would limit it to just time and number for simplicity for now)
  • Display positioning (similar to custom fields)
  • Field 1
    • use a drop down selector from current system and custom fields
    • filtered on the defined type above
  • Operation
    • drop down of add/subtract/multiply/divide
  • Field 2
    • use a drop down selector from current system and custom fields
    • if the type is number then you can return any number field.
    • if the type is time, then if the operator is add or subtract, then return time and numer fields. If the operator is multiple/divide then only return numer fields as I don't think you should be multiplying or dividing times.
Unlike the custom fields where you can add a bunch at the same time, the calculated fields should be saved one at a time. This enforces the order of operations.

The only other thing might be having an additional entry box beside the field 2 selection should you not want to use a field but instead perform arithmatic using a constant. But I can't think of an obvious use case for that now, so not really a priority.
 
Last edited:
Actually order of operation might be really simple.

I assume internally that you use a sequence id for the custom fields. If the calcuator is limited to only two fields then you need to define the field first before you can use it elsewhere, so if you calculate based on the sequence id then problem solved.

Then for UI, you have"Create Calculated Field" in your menu. That gives a pop up where you:

Define:
  • Field Name
  • Type (I would limit it to just time and number for simplicity for now)
  • Display positioning (similar to custom fields)
  • Field 1
    • use a drop down selector from current system and custom fields
    • filtered on the defined type above
  • Operation
    • drop down of add/subtract/multiply/divide
  • Field 2
    • use a drop down selector from current system and custom fields
    • if the type is number then you can return any number field.
    • if the type is time, then if the operator is add or subtract, then return time and numer fields. If the operator is multiple/divide then only return numer fields as I don't think you should be multiplying or dividing times.
Unlike the custom fields where you can add a bunch at the same time, the calculated fields should be saved one at a time. This enforces the order of operations.

The only other thing might be having an additional entry box beside the field 2 selection should you not want to use a field but instead perform arithmatic using a constant. But I can't think of an obvious use case for that now, so not really a priority.
Actually, I think I found a good user interface design that I can shape into what I'd need:

1704541849856.png


There's a lot of stuff I'd have to figure out, but I think it's doable. Time will tell whether I'll do anything with this...
 
So I have been plugging in my data and saw something really interesting . . . I seem to consistently finish better than I start. I am sort of proud of that for some reason. As most know I consider this a game which I want to get better at but it is just a game and I really care nothing about my DR.

Bampa_IRE_Racer (EMEA) Alternate

1704563876374.png


TPC_Toro (NA) Primary

1704563895209.png


I can’t wait to get more information plugged in. So far there was about 20 races that apparently the program won’t recognize but I am planning on running more races to have more data to track.
 
Thanks, perfect timing, just as I had a USB full of juicy race results to enter.
Awesome! Although don't expect it this early every time - it was around 12:30am here. But since I had to get up for a nature call, I figured I might as well do it then. :lol:
 
Awesome! Although don't expect it this early every time - it was around 12:30am here. But since I had to get up for a nature call, I figured I might as well do it then. :lol:
On that note my feature request would if you could add skeleton entries in advance for the next weeks races, that way we can start adding our results and seeing the update ranking while we wait for the automatic update to fill in the details.

Or I could just add the races myself as we used to do. If I do that are there any complications when I download the updated data with your official version of the new weeks races?
 
On that note my feature request would if you could add skeleton entries in advance for the next weeks races, that way we can start adding our results and seeing the update ranking while we wait for the automatic update to fill in the details.

Or I could just add the races myself as we used to do. If I do that are there any complications when I download the updated data with your official version of the new weeks races?
If you already have the week entered, it won't notify you of an update. I've got some ideas of how to work around this, though. We'll see if they pan out.
 
Now that I use several custom fields, one issue I noticed is that the grid for the DR tab (the race results) loses the column order placement of the custom fields if you switch between accounts. Obviously not a deal breaker but kind of annoying if you switch a lot like me.

Thanks.
 
Now that I use several custom fields, one issue I noticed is that the grid for the DR tab (the race results) loses the column order placement of the custom fields if you switch between accounts. Obviously not a deal breaker but kind of annoying if you switch a lot like me.

Thanks.
Oooh, that is definitely annoying. I'll fix it soon.
 
Have been aware of this for a while, but not really been playing Sport Mode as I've been consumed by league racing and organization. Now that those duties of mine are easing off gradually, I might take a stab at Sport Mode here and there.

As a nuts for statistics, this is right up my alley :D Can't wait to get some races in and start logging/tracking!
 
Have been aware of this for a while, but not really been playing Sport Mode as I've been consumed by league racing and organization. Now that those duties of mine are easing off gradually, I might take a stab at Sport Mode here and there.

As a nuts for statistics, this is right up my alley :D Can't wait to get some races in and start logging/tracking!
Awesome! It really is fun to see all the stats, and to be able to look back and see what happened last time on a track, etc. Have fun!
 
If you copy a filtered table for GTPlanet table you get:

Code:
App Version: 3.0.3

cell.getValue is not a function

Stack Trace:
at file:///Applications/GranTracker.app/Contents/Resources/app/src/renderer/ui/tabulatorTableHelper.js:1355:44
at Array.forEach ()
at file:///Applications/GranTracker.app/Contents/Resources/app/src/renderer/ui/tabulatorTableHelper.js:1345:19
at Array.forEach ()
at TabulatorTableHelper.copyForGTPlanetTable (file:///Applications/GranTracker.app/Contents/Resources/app/src/renderer/ui/tabulatorTableHelper.js:1342:8)
at file:///Applications/GranTracker.app/Contents/Resources/app/src/renderer/ui/tabulatorTableHelper.js:528:89

Also, selecting copy table did not result in what I expected for a filtered table. It copied the entire table and not the filtered rows. I guess the work around is to copy the selected rows option?
 
Last edited:
If you copy a filtered table for GTPlanet table you get:
I'm not able to reproduce this. Can you fiddle around a little and see if you can find out what conditions cause this?
Also, selecting copy table did not result in what I expected for a filtered table. It copied the entire table and not the filtered rows. I guess the work around is to copy the selected rows option?
This one I could reproduce. I'll fix it.
Is GranTracker developed in VBA or is this syntax common in other languages?
No it's not, and yes, that's a common syntax for a lot of languages. And when I say "a lot", I mean the vast majority of all popular languages.
 
Back