GithubHelp home page GithubHelp logo

icykoneko / ff14-fish-tracker-app Goto Github PK

View Code? Open in Web Editor NEW
61.0 61.0 21.0 32.62 MB

FF14 Fish Tracker App

Home Page: https://ff14fish.carbuncleplushy.com

License: MIT License

HTML 3.77% JavaScript 91.72% Python 3.04% CSS 1.47%

ff14-fish-tracker-app's People

Contributors

airex avatar akurosia avatar blandcr avatar icykoneko avatar kuraio avatar lodinn avatar mattantonelli avatar nukes327 avatar okuraku avatar ra-workspace avatar xnuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ff14-fish-tracker-app's Issues

UI becomes unresponsive over time

Known issue due to memory leaks and such, but needs to be fixed.
After adding the popup display next 10 windows, the problem became even worse.

Fix German Language

In German, there are "soft-hyphens" in a lot of the text. Certain parts of the site are not rendering these correctly and instead, are placing the raw string ­ in the output.

It appears to be caused by the jQuery .text() function being used when updating parts of the UI. Changing this to .html() should work, but this means data needs to be sanitized to be sure there's no bad "text".

In addition, certain parts of the UI such as popups that use the built-in browser UI need to avoid using ­ and replace it with \u00AD.

Sometimes, a fish will not correctly transition from catchable to inactive.

This bug has happened before too... but it doesn't appear to be solved still. Worse yet, using the "time travel" trick doesn't help reproduce the bug...

So far, it appears to only happen if the page is loaded within the last 3 minutes of a fish being active. When the bell rolls over, those fish remain marked as catchable. When the next bell hits (~3 minutes later), the fish get "updated" like it normally should.

Tests for critical components

Where's all the tests, unit test, etc. verifying the more critical components.

If this requires refactoring, so be it.

Alarm for upcoming fishes

We need possibility to be notified with sound or other way when availability window for selected fishes is coming in next N minutes.

Probably system should monitor windows for pinned fishes or we need to add another marker to add fish to notifiable list.

Ty,

Display map with fishing spot

Who hates having to click links to get a map showing the fishing hole? GT is pretty quick, but you have to switch tabs, and the map isn't displayed by default on the card anyways. TC can take a while to load too. We're not even gonna bother with CBH.

How about, a clickable map icon next to the location. When the user clicks this, it pops up a picture of the map, with the fishing spot highlighted (similar to the other sites). Map resources can come from xivdb, and coordinates will need to be added to the generated data file.

Display predator fish information in the same row (or nearby) as the particular fish.

Now that SE's making some fish require catching fish that are up at various times, it's harder to see the catch information for the predator fish with the UI. Take a look at how Garland Tools displays their fish information. A smaller line could be added for each predator fish, so that even if you've already caught it, it'll still show up, and appear next to the fish you're trying to catch.

Filter 5.3 does not show fish from 5.35

I was trying to filter for the new fish added in 5,35 but could not find it even when setting the filter to just show 5.3 fish.
The only way i was able to see the fish was, when i added its ID to the pinned field while importing data. The name i tried in detail was "Allagan Hunter" and the ID used was "31134"

Dark Mode

Cause you all play way too late, and in the dark.

I've attempted this a few times in the past, but it would also require generating and hosting local CSS files... Maybe if I migrate to GitHub Pages. For now, this might have to sit.

Use xivapi to pull data

Currently, the backend is built using my own python port of Saint Coinach. That part is fine, but it does require you to actually have a copy of the game installed.

There's benefits to the existing system though. When a new patch drops, assuming not much changed in the data layout, it's possible for me to immediately load up new fish into the YAML. I don't know the turnaround time for xivapi's site.

On the other hand, by using xivapi instead, it should be possible to completely build and deploy the site all online.

Small translation issue

The fish "The Assassin" is translated weirdly in the German language (and might affect other fish as well). The translated name is "Meu-chel-mör-de-rin" which should just "Meu­chel­mör­de­rin".

Might be related to a beloved issue i have with community projects: ""
These appear afaik only in german end french but for most projects can just be removed at completly

Displaying upcoming windows is difficult for smaller screens

Tapping the calendar icon to display the next 10 upcoming windows for a fish requires that there be sufficient space to display the popup. For mobile users, this is next to impossible. The whole pop-up on click thing is kinda problematic anyways, and it really should be a modal popup, which should alleviate the space requirements.

z-index for .tug-indicator

Can you please add a higher z-index for .tug-indicator so that it's easily readable and not hidden when icons are overlapping? Some time the arrangement of icons is so compact the icon is completely covered
image
image

.tug-indicator {z-index:2;}

Filter fish which are always available

This is related to #34 since it will add even more "always available" fish to the list. Add a filter setting to hide any fish that's always available.

Note: Please submit individual issues for other filters. This will allow work to be separated out.

Limit fish database to only important fish

What's an important fish? Currently, this has been limited to the following:

  • Any big fish (indicated by Item table rarity field). These are fish with green outline.
  • Any fish whose availability is weather or time restricted.
  • Any fish that requires Fish Eyes buff to catch.
  • Any fish that is used for mooching in order to catch an important fish.

The new definitions would also include:

  • Any fish used for turn-ins such as: leves, GC, scrip, satisfaction, (and maybe quests...)
  • Any fish that can be reduced into aethersand or is used for crafting directly.
  • Any fish that can be displayed in aquariums.

All other fish will continue to be excluded.

Missing Status images in sprite.png, when try to create it myself

Steps to reproduce:

  1. Clone git recursivly
  2. Edit the game path in "manageFishData.py"
  3. Create folder in /private/images/ for fish_n_tackle and weather (Script will throw errors otherwise)
  4. Run from either CMD or Powershell: "py ./private/manageFishData.py rebuild -i ./private/fishData.yaml -o ./js/app/data.js --with-icons"
  5. Run from either CMD or Powershell: sprity create ./public/images/ ./private/images/**/*.png -c . -s sprite.css --prefix sprite-icon --margin 2 --orientation binary-tree --engine jimp
  6. Load index.html and verify e.g. "Nepto Dragon"

Actual result: There is no image displayed for intuition, but entries can be found inside the class attribute (ui middle aligned status-icon sprite-icon sprite-icon-status-intuition). Neither are there status images inside any folder nor on the created sprite sheet (compared mine and the public one for your hosted version)

Expected: Everything is created fine without errors

Fish with weather transition requirement do not have the correct upcoming window info

Under certain conditions, a fish with a weather transition requirement will not include the upcoming window if that window starts within the current 8-hour weather period. This seems to only happen if the page is opened at some time during the weather period. In cases where the page was already open, the upcoming window is displayed as expected.

Fill in hookset information for all fish

Now that hooksets are displayed as badges, and with upcoming changes, it's a good time to go back and fill in the hookset (and tug) information for all the fish.

Valid hookset values:

  • Precision: associated with light tug only typically.
  • Powerful: associated with medium or heavy tug only typically.

Valid tug values:

  • light: The rod twitches a little, quick to reel fish in.
  • medium: The rod bends somewhat, takes longer to reel fish in.
  • heavy: The rod bends significantly. This is sometimes referred to as legendary.

At the moment, the tug values are not actually used. Most of these are filled out for 5.0 and beyond.

I am considering using tug as a loaded field, perhaps something like:

- name: Fishy
  tug:
    medium: 12  # typically 12s after cast

For now, just having the correct hookset metadata would help a lot!

Display folklore tome if required

Because so many keep asking for it...

This should appear as an icon, either next to the fish, or in the catch path similar to fish eyes, and intuition. Hovering should display the tome name (though it should be obvious given the fish's location.)

Predator fish weather is not properly considered

The weather forecaster function findWeatherPattern is supposed to accept a limit such that when being checked for predator's windows, it will only return a single window. But if the predator fish has a previous weather set requirement, and the function is called with a limit of 1, it will always return nothing!

Unable to import completion list after catching too many fish

From the Discuss forum http://disq.us/p/210arvj:

Hi, I'm having problems saving my fish list. I've selected "Export Fish Checklist" and saved the copied info to pastebin, it worked a couple of times, but now I'm getting the message "Error: Malformed fishing checklist."
It seemed to work fine when I needed lots of fish, but now that I'm down to 8 fish it doesn't seem to accept the data at all.

Most likely, the string has become too long for the standard JavaScript alert and input controls.

Fish Guide

Many users have complained there's no easy way to mark off the fish you've already caught, because the list is not sortable in a way that makes it simple. In addition, once the back-end data is updated, it will be possible to list every fish in the game. Use this to create a fish guide that looks similar to the in-game UI.

The guide must also have a way to update the user's completion.

(Not sure how this will play nicely if the user has both the list and guide open at the same time... For now, that can be a separate issue.)

Display the duration of Fish Eyes buff

There's several fish, especially in Heavensward, which overlap Fish Eyes buffs, sometimes up to 3 fish! The only way to tell them apart is the initial duration it seems.

Handle intuition requirements better

The current system makes it very difficult to account for the intuition requirement fish having weather requirements, while the target fish does not, but is only up for a shorter period of time.

There needs to be some way to indicate it's possible to catch the fish, but at the same time, indicate the window depends upon having the intuition buff from before?

CompletionManager

Is not it better to keep completed and pinned as {} and work with keys as set this O(1) for contains operations instead of O(n), this can improve performance when many of fishes are already caught

Support the new Ocean Fishing

Ocean Fishing has fish with restricted weather and times, so... we gotta support it.
There's a twist though, the boat has to travel to the area the fish is located in. We're not sure if time restrictions are eorzea time, or special boat time, so more research is needed.

Popups with timespans are not staying in sync

All of the popup text that displays wording such as "Today at 5:02pm", or "Tomorrow at 2:45am" is going out of sync when the next earth day begins.

I think it's because the text itself is cached and only updated when the data itself changes. Should be an easy thing to fix.

Sort fish by next 24 hours rarity first

I was discussing this with others in Fishcord, but I think it'd be useful to have a sorter that uses a fish's uptime over the next 24 hours to sort by. Any fish not up within 24 hours, would be sorted by overall rarity instead,, using the binning approach.

The idea being, if I could fish all day long, but there's two very rare fish up, and the slightly less rare fish will only be up once today, while the more rare fish is up twice today, I would like to see the first one listed on top. When I refer to rarity, I'm using the overall rarity method (the 10 window uptime calc).

UI is too clutered

There's sooo much stuff displayed... and when the next expansion comes out, there's not enough more on a wide screen display to fit it.

I'm sure most users really don't care much about the text and really just want to see that table of fish. The problem is, the moment you scroll down, the header vanishes, all of the settings are off screen, and you've got hundreds of fish entries to stare at.

So, what if we reduce all that pre-clutter into a row a buttons: fish guide, tips, basic filters (all, caught, uncaught), expansions, and finally, advanced. The row could remain stuck so it doesn't scroll off screen, allowing a user to access these controls at any time.

Support upcoming changes to Fish Eyes

Latest Live Letter revealed Fish Eyes is going away! Well... not entirely. Fish will no longer require Fish Eyes to catch, but the buff is expected to be reworked such that it may remove time restrictions for fish. There's no indication this would work on all fish, or for how long.

How's this affect the tracker? For one, the fish eyes buff should be removed. The harder part is providing a way for users to toggle between omitting time restrictions or not (maybe add a fish eyes button).

calculate the mathematical average uptime instead of using a lot of windows

Calculating over 3000 windows at times to get an uptime is kinda excessive if you could just go by weather rate

// up equals number of hours it's up. Eg 8-16 ET = 8
const uptime = up/24
if (dependentOnWeather) {
     //weather being an array of weather the fish is up for
     var rate = 0
     weather.forEach( function(weathers) {
         rate += weatherRate(weathers) * uptime
     }
     uptime = rate
}
if (dependsOnTransition) {
    //initWeather = array of initial weather, transitionWeather = array of weather we need to transition to
    var rate = 0
    transitionWeather.forEach( function(transitionWeathers) {
        initWeather.forEach( function(initWeathers) {
            rate += weatherRate(initWeathers) * weatherRate(transitionWeathers) * uptime
        }
    }
    uptime = rate
}
return uptime

(just an outline. I hope you can use forEach like this ;u; )

Localize the front-end UI

This issue can be handled separately from #1 and should focus on building the set of localized strings used throughout the front-end UI.

To make things easy, the suffixes "_en", "_ja", "_de", and "_fr" should be used.

Alternatively, there's always Google Translate :/

Allow for minor availability tweaks without full rebuild

This has to do with the live site. During the first weeks of Shadowbringers, I was getting constant pings to update and then re-update the availability times for some fish. Currently, due to how caching works and all, this is actually very painful, and it requires locally rebuilding the data.js file.

So, how can we fix this? The actual master list of fish is built when the page loads. It's implemented as a chain of operations, starting with the data in data.js. So, technically, we could add a step to this chain that tries to invoke data overrides. The real issue is maintaining this. Obviously, you want to integrate the changes into master... but perhaps that's the problem?

With the upcoming data refactoring, I plan to automate determining which fish are important. If the master branch were to just contain the extracted information from the dats for those fish, then it'd never have to change between patches. Instead, the bait and availability info could be maintained in a separate file, or set of files, and only used in the gh-pages branch.

Anyways, I'm open to ideas on how to best accomplish this with the goal being, I can literally log into GitHub, edit the data file by hand, commit it, and the site will be updated instantly! In other words, no local processing of game data.

json.decoder.JSONDecodeError when executing manageFishData.py

PS C:\Users\denterling\Documents\GitHub\ff14-fish-tracker-app> py ./private/manageFishData.py rebuild -i ./private/fishData.yaml -o ./js/app/data.js --with-icons -gpath "E:\FINAL FANTASY XIV - A Realm Reborn"
INFO:root:Getting data for: exd/root.exl
C:\Users\user\Documents\GitHub\ff14-fish-tracker-app\private\saintcoinach-py\pysaintcoinach\ex.json
Traceback (most recent call last):
File "./private/manageFishData.py", line 379, in
initialize_data(args)
File "./private/manageFishData.py", line 86, in initialize_data
XIV = load_dats(args)
File "./private/manageFishData.py", line 57, in load_dats
xiv = ARealmReversed(args.game_path, Language.english)
File "C:\Users\user\Documents\GitHub\ff14-fish-tracker-app\private\saintcoinach-py\pysaintcoinach_init_.py", line 59, in init
self.game_data.definition = RelationDefinition.from_json_fp(f)
File "C:\Users\user\Documents\GitHub\ff14-fish-tracker-app\private\saintcoinach-py\pysaintcoinach\ex\relational\definition_init
.py", line 741, in from_json_fp
obj = json.load(fp)
File "C:\Program Files (x86)\Python37-32\lib\json_init_.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Program Files (x86)\Python37-32\lib\json_init_.py", line 348, in loads
return _default_decoder.decode(s)
File "C:\Program Files (x86)\Python37-32\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Program Files (x86)\Python37-32\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Remove `data.js` from committed files

The private/data.js file is generated from private/fishData.yaml. It really doesn't need to be version-tracked, at least not for master. In the deployment branch, it must be present. It's kinda the same as the files in public.

Optimize CSS rules

As much as I really love the Semantic U(I toolkit, I think it's actually causing a lot of the performance issues due to CSS rules processing.

This won't be a simple thing to fix, but basically, the goal is to a) simplify the HTML for the fish rows, and B) reduce the CSS rules to the point that there's just one class for each element.

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.