Coder Social home page Coder Social logo

basiiii / profit-taker-analytics Goto Github PK

View Code? Open in Web Editor NEW
7.0 7.0 3.0 35.57 MB

Warframe tool for tracking Profit Taker mission time & analyzing mission stats, featuring a user-friendly GUI.

Home Page: https://basi.is-a.dev/pta/

License: Other

Dart 69.01% CMake 3.86% C++ 7.45% C 0.27% Inno Setup 2.36% Python 16.93% AutoHotkey 0.11%
analysis analytics analyzer app basi companion data profit-taker pt speedrun speedrun-timer speedrun-tool speedrunning timer timings tool toolbox tracker warframe warframe-app

profit-taker-analytics's Introduction

๐Ÿ’ซ About Me:

My name is Enrique Rodrigues, aka Basi, I'm a developer and designer who's passionate about creating polished, visually appealing experiences. I focus on smooth animations and achieving a professional yet unique and clean aesthetic.

My work has earned me four international Behance curator awards for design, highlighting my skills and creativity. You can see these on my personal website or on my Behance page, links are available in the socials section underneath.

๐ŸŒ Socials:

Behance YouTube Personal Website

๐Ÿ’ป Tech Stack:

C Dart HTML5 CSS3 Python Markdown Firebase MySQL SQLite GitHub Adobe After Effects Adobe Illustrator Adobe Photoshop Figma

๐Ÿ“Š Coding Stats:

profit-taker-analytics's People

Contributors

basiiii avatar reava avatar scamcatt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

profit-taker-analytics's Issues

Theme Switch on Non-English Language

Describe the bug
When switching themes while the language is set to a non-English language, the language automatically changes to English. However, upon changing pages and returning or restarting the app, the language reverts to the correct non-English setting.

To Reproduce
Steps to reproduce the behavior:

  • Set the language to a non-English option (e.g. Portuguese).
  • Switch between different themes (e.g., Light mode to Dark mode).
  • Observe that the language automatically changes to English.
  • Navigate to another page and return, or restart the app.

Expected behavior
The language should remain in the selected non-English option even when switching between themes. The language setting should persist consistently throughout theme changes.

Screenshots
Not necessary.

Additional context
Not necessary.

Empty or Non Existing EE.log Bug

Describe the bug
When the parser encounters the absence of the EE.log file, it exhibits unexpected behavior, likely terminating the parser with an error.

If the parser finds that the EE.log lacks data relevant to the Profit Taker run information, it generates an empty JSON {}. Consequently, this empty JSON causes issues on the app side as it interprets it as an error.

To Reproduce
Steps to reproduce empty JSON:

  • Navigate to the directory containing the EE.log file.
  • Verify that the EE.log file is empty or lacks relevant data.
  • Run the parser.
  • Observe the empty JSON generated as output.

Steps to reproduce error:

  • Navigate to the directory containing the EE.log file.
  • Verify that the EE.log file does not exist
  • Run the parser.
  • Observe the output.

Expected behavior
The parser should handle scenarios where the EE.log file is empty or lacks relevant data by sending initialized data instead of an empty JSON. Please note, this should only be done once on launch and should not be stored as a file. It's simply to make sure the app has a stable connection with the parser.

If the EE.log file is not found, the parser should generate a new JSON containing an error code or message. This approach will enable us to identify and gracefully handle this error within the app by displaying a specific error message telling the user to run Warframe or do a mission to create the EE.log. The parser can be kept running, checking for the existence of the file every second or, whatever time you feel is most adequate. Don't worry about this running forever, because the app force closes the parser when the app is closed.

Screenshots
Screenshots are not available, but here is the error message when no EE.log exists:

Traceback (most recent call last):
  File "main.py", line 29, in <module>
  File "main.py", line 23, in main
  File "src\analyzer.py", line 443, in run
  File "src\analyzer.py", line 546, in follow_log
  File "src\analyzer.py", line 623, in store_start_time
  File "src\analyzer.py", line 469, in follow
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\\Users\\user\\AppData\\Local/Warframe/EE.log'
An unknown error occurred. Please screenshot this and report this along with your EE.log attached.

Additional context
N/A.

UI Scaling Based on Window Size

Is your feature request related to a problem? Please describe.
When you align the window vertically, the fourth phase section doesn't get to be displayed, you always have to scroll for it.

Describe the solution you'd like
Consider making the UI elements smaller or scaled based on the current window size.

Describe alternatives you've considered
egg

Additional context
image

Responsive Tiles

Is the feature request related to a problem? Please describe.
The current home page tile layout lacks responsiveness to larger screens beyond the maximum size. This results in a suboptimal user experience, as the tiles fail to adjust to the available screen real estate on larger displays, leading to an unappealing and potentially inefficient presentation.

Describe the solution desired
The home page tiles should automatically increase size based on the screen size. This entails optimizing the layout and scaling of the tiles to ensure they seamlessly adapt to various screen sizes, offering an improved and consistent user experience across a broader range of devices without requiring manual intervention.

Describe alternatives considered
None.

Additional context
None.

Total Phase Time in Home Screen

Is your feature request related to a problem? Please describe.
It would be useful to be able to view the phase times on the home page of the app.

Describe the solution you'd like
so as of right now, the run screen shows timestamps of when a phase is over, from what i understand. i would also like an implementation of just the total phase time, i.e. how long that phase on its own took (basically just "this phase" minus "phase before it"). ive seen the method reava suggested for average times and how theyre displayed and maybe this could be implemented in the same way. maybe even move the "phase over" timestamp thats there currently somewhere else, maybe in the bottom right corner or something like "first phase - [timestamp]" in the phase title

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Add Turkish Language

Is your feature request related to a problem? Please describe.
Thanks to a contribution from "Dr. Rev. Neppkun", we now have translations available for the Turkish language. However, there are some adjustments needed to ensure compatibility due to language-specific nuances. Additionally, it's important to acknowledge this member's contribution by adding them to the README.md file as a project contributor.

Describe the solution you'd like
The necessary steps include updating the new .JSON file to accommodate the Turkish language, adjusting how the application presents certain text to align with language-specific ordering rules, and incorporating the contributor's name into the README to recognize their contribution.

Describe alternatives you've considered
N/A.

Additional context
The new JSON file is available in the branch Turkish-Lang. All changes and updates relative to adding this language should be done on that branch and then merged into the main branch after.

Run Numbering

Is your feature request related to a problem? Please describe.
A user has reported an issue where the current numbering system for runs doesn't make sense to them. They suggested that having the run number as the name would be more intuitive and practical.

image

Describe the solution you'd like
I propose that the parser automatically initializes the "pretty_name" field as "Run #x", where x is a sequentially increasing number starting from 1. This would provide a clear and consistent naming convention for runs, enhancing organization and identification.

Describe alternatives you've considered
N/A.

Additional context
It's important to note that this numbering system should continue seamlessly even if the parser is restarted. One way to achieve this could be by counting the number of existing files and continuing from that count. Please be careful when implementing this, you cannot fetch the last modified file because users can edit any run's name through the app.

View Button in Storage Screen

Is your feature request related to a problem? Please describe.
Users are currently unable to view specific runs directly from the storage screen, which makes it difficult for them to access and manage individual runs efficiently.

Describe the solution you'd like
Users want the ability to view specific runs directly from the storage screen. This would involve implementing a feature where users can easily navigate to and access individual runs without having to navigate through multiple screens or menus.

Describe alternatives you've considered
N/A.

Additional context
Currently, users have to navigate through various screens or menus to access specific runs, which can be time-consuming and inefficient. Implementing this feature would streamline the user experience and improve the overall usability of the storage screen.

Share feature on analytics screen

Is your feature request related to a problem? Please describe.
We can share the last run screen, but not the analytics screen.

Describe the solution you'd like
Port the feature from the home tab to the analytics tab too

Describe alternatives you've considered
Porting the feature :))

Additional context
Graph is cool

Runs don't like to be deleted

Describe the bug
When you delete runs, they get deleted, and removed from the file storage. But when you restart the app, they magically appear again.
I tried to clear the temp folder, thinking that might be the issue, even still, they don't like to be deleted.

To Reproduce
Steps to reproduce the behavior:

  • open the app
  • delete a run (or multiple)
  • restart the app
    Deleted runs will return

Expected behavior
Deleted runs should stay deleted, and not return to the file storage on restart.

Screenshots
Here's a video of me re-producing the bug: https://owo.whats-th.is/4ubuwJZ.mp4

Favouriting runs

Is your feature request related to a problem? Please describe.
Specific runs are hard to find, a useful feature would be a favourite system allowing users to easily mark specific runs to view later.

Describe the solution you'd like
A valid solution would be creating a list for favourite runs, allowing users to easily view specific runs rather than having to search through all runs to find them.

Describe alternatives you've considered
No realistic alternatives.

Additional context
No context necessary.

Enhancing Home Page Navigation

Is your feature request related to a problem? Please describe.
Multiple users have expressed a desire to enhance user experience by allowing control of the back/forth buttons on the home page through additional input methods such as the scroll wheel on a mouse and keyboard buttons. This request aims to address potential frustration or inconvenience users might encounter when navigating the home page without these alternative controls.

Describe the solution you'd like
The users suggest implementing functionality that enables the back/forth buttons on the home page to be controlled not only by clicking but also by using the scroll wheel on a mouse and specific buttons on the keyboard. This enhancement would offer users more flexibility in navigating the home page, contributing to a smoother and more intuitive browsing experience.

Describe alternatives you've considered
The user hasn't specified alternative solutions, but it's conceivable that other methods could be explored to improve navigation on the home page. These might include gesture controls on touch-enabled devices. However, the users focus appears to be on integrating scroll wheel and keyboard button controls to complement the existing functionality of the back/forth buttons. Touch-enabled devices such as track pads can be implemented at a slower pace after the initial testing, because they will require more work.

Additional context
No additional context provided.

Share Button

Is your feature request related to a problem? Please describe.
Having a share button on the main screen would enhance convenience in disseminating runs across Discord and various platforms. Introducing a straightforward button for effortlessly copying a snapshot of your run in image format would prove highly beneficial.

Describe the solution you'd like
Introducing a straightforward button for effortlessly copying a snapshot of your run in image format.

Describe alternatives you've considered
Not applicable.

Additional context
Not applicable.

"Best" time displays per category with diff

Hey there,

Feature adds a "best" category in your global stats, per category.
The same as the average times per category, but display the lowest time we've ever gotten on each category.

It could be a full display of all time best, or even a +- diff between last/avg run displays to best, the same way speedrun segmentation tools show diff to pb.
(or maybe even last... although idk why someone would want that lol)
Ideally, these could be switched between each in settings.

Additionally could be segmented per spawn location as per last feature request, there are many ways to go about this. (aka best flight time on shroom spawn seperated from lake spawn)

Thank you, hopefully i was as clear as possible, examples below

Last run screen showing Average time per category + diff:
LastRunShowingAVGWithDiff

Average stats screen showing Best times and diff per category
AverageShowingBestAndDiff

Last run screen showing Best time per category + diff:
LastRunShowingBestWithDiff

This would allow quick view and review of areas where people arent really reliable on/have the most they could improve on on a perfect run.

Loadout Data Fetching

Is your feature request related to a problem? Please describe.
A player has requested if it's possible to store data on what loadout was used for each run. This includes what Warframe and weapons were used during the run.

image

Describe the solution you'd like
The user would like to see the ability to view the loadout (warframe, weapons, including Archgun) used during a specific mission.

Describe alternatives you've considered
N/A.

Additional context
Before implementing this feature, it's crucial to investigate the feasibility of retrieving loadout information from each mission. If it's possible to fetch data such as the warframe and weapons used during a mission and incorporate it into the JSON data, then the feature can be implemented seamlessly into the app. This investigation phase is necessary to ensure the successful integration of the desired functionality.

Initial Implementation of Repo Structure

Is your feature request related to a problem? Please describe.
The current codebase lacks a standardized structure for the app and parser components. A structure must be created to allow seamless import of code.

Describe the solution you'd like
Implement a standardized directory structure where the app is housed in a folder named "app," and the parser resides in a folder named "parser" at the root level of the project. This structured approach aims to enhance code clarity, streamline the import process, and contribute to overall project maintainability.

Describe alternatives you've considered
No alternative solutions have been considered as the absence of any structured approach is the primary issue. The proposed directory structure serves as the foundational step to address the current lack of organization.

Additional context
Not applicable.

Boss Spawn Location

Is your feature request related to a problem? Please describe.
A player has requested the ability to store data on the spawn point of PT boss of each run.

image
image

Describe the solution you'd like
The user desires the capability to view information regarding the spawn of the boss. This information is valuable for strategic planning and optimizing gameplay tactics.

Describe alternatives you've considered
N/A.

Additional context
Before implementing this feature, it's essential to explore the feasibility of retrieving spawn point information from each mission. One potential approach is to analyze enemy spawns; if enemies consistently appear within specific coordinates, it could indicate the spawn point. By incorporating this data into the game's backend or JSON data, the feature can be seamlessly integrated into the app or game interface. It's necessary to conduct thorough investigation and testing to ensure the successful implementation of this functionality.

Best and last run diff should compare the last PB if last run is PB

Is your feature request related to a problem? Please describe.
It is not.

Describe the solution you'd like
When you get a PB, the "best run" difference in the main menu shows the PB run, making the difference "-0.00" (see image). i
While this is a valid indicator you got PB, it also doesn't let you see how much you improved.
So, if you got PB in your last run, the difference should be between the PB you just got, and your last PB run.
There could also be a text after the run name to indicate it's a PB.

Describe alternatives you've considered
If this sounds like it'll be confusing, then hovering over the Total Duration could show your last PB run instead of changing the difference.

Analytics Screen Implementation

Is their feature request related to a problem? Please describe.
A user has identified a significant gap within the app's functionality, noting the absence of a dedicated analytics screen. Without such a feature, users are unable to efficiently monitor the performance metrics of their runs, hindering their ability to assess progress and identify areas for improvement.

Describe the solution you'd like
They envision the addition of an analytics screen that includes a line graph displaying the duration of the last X runs, allowing users to track trends and fluctuations over time. Additionally, they suggest incorporating a feature that presents average shield destruction times per element within a specified time frame, providing users with valuable insights into their performance efficiency.

Describe alternatives you've considered
While considering alternatives, they explored various options but found none as suitable as the proposed analytics screen. They recognize the importance of having a visual representation of performance metrics to aid in decision-making and performance evaluation.

Additional context
The user believes that the implementation of this feature would greatly enhance the app's utility and user experience, providing users with valuable insights and facilitating continuous improvement in their performance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.