It is time to get real about learning the Kivy framework for the app.
One behavior I had to test was launching each update script from within a new script, making sure there are no glitches in execution. This test went very well, it updated all 14 games with one single run command! I spot checked a few files and everything went as planned, even with the jackpot games that have a bonus ball!
One replacement I will need to make is to replace the console outputs that show which files are done with a number that breaks things down to 100% for all updates, this will be read by a Kivy progress meter! It will start at 0% and jump to 100% when done. When a csv file is updated, the output will be
progress = the percent of each game update success, roughly 7.14%
The classifier script is called with arguments specific to each game type, so a list of buttons representing all games will be presented. The call with arguments will be coded in the onButtonClick() function. I tested the powerball to execute the 5 white ball file file with a ball range of 1 to 69, and the power ball file to execute with a ball range of 0 to 26. The test had to run them sequentially and it did! Within this button click logic will also be the grid layout for the data, which will vary by game type as well.
In the final output will be the data I currently produce, which includes the number, the frequency, the classification (C, N or H), the percentage of the frequency to the sample size and the number of draws since it's last appearance.
Here is where it gets fun...
There will be 2 views set to a toggle switch. The data above will be in the "Data View", the other side of the switch will present the "Ball View", where the columns will contain graphics of the balls (just like on the PA website) with different color backgrounds representing Hot (Red), Neutral (Gray) and Cold (Blue). This ball view will be the quick visual summary, while the data view shows the breakdown of results.
At the bottom will be a button that lets me choose another game, and a button that will exit the program. The navigation buttons will change via screen context, but exit will be present on all screens.
So that is the basic vision for the app in this phase. If I can make all of that work, then it will be a success (even if it never produces a winning pick). I have a huge head start because all of the scripts that do the work are already written and tested.
The end user story for the Android implementation will be
- I have the ability to update draws for all games anywhere at any time, no laptop needed
- I have the ability to run the classification script from anywhere at any time for any game, no laptop required
- reasonable run times will allow going from app launch to data in minutes. <3 minutes is the current observation.
Obviously other ideas will pop up, and I will then be holding an entire framework on my phone! If I want to put in follower distributions, it will be a simple addition to the functionality, but the fully updated data will already be there... and unlike most other android apps... no ads!