Luzefiru / wuwatracker

wuwatracker.com - A Collection of Wuthering Waves Tools; Pity Tracker, Ascension Planner, Game Calendar, Database and more!
https://wuwatracker.com
123 stars 37 forks source link

Export & Import from File Functionality #22

Open Luzefiru opened 3 months ago

Luzefiru commented 3 months ago

Problem

Users might want to backup or analyze their data elsewhere, so they'd need to export their history from the website into another usable form.

Possible Solution

Make an export button inside the main history dashboard and export their fetched history data into a .csv file.

Future Considerations

This feature will eventually open the question, "Can I import my history back into the website?", so an import feature might be useful as well.

Additional Context or Screenshots

Here's a quick mockup of a possible design.

image

[!Warning] The button should not be variant="primary" like the Import button so that the Import button is more obvious. Probably just use variant="outline".

Luzefiru commented 2 months ago

We have an export data (to JSON) feature now in the Settings Page, but still no importing from your own manual data.

My1 commented 3 weeks ago

The export could have a little more info tho, it's currently just an array of arrays of objects which look like this:

{
      "c": 1,
      "p4": 1,
      "p5": 1,
      "n": "Rectifier of Voyager",
      "t": "2024-06-14 04:03:01",
      "q": 3,
      "s": 1
}

while c, p4, p5, n and t are pretty much obvious, q and s isnt immediately obvious, q seems to be how many stars we are talking about, but s seems to be always 1 for me, so no idea what that's about.

I'd propose to have an array of objects which could look like this so it's a bit easier to keep banners apart:

{
"name":"Featured Resonator",
"pulls": <array of objects, same as the inner arrays from current>
}

additionally if the game assigns an ID to the banners, maybe add that to have it easy for import tools, also the time should maybe follow something like ISO with timezone data as apparently the json exported for me in JST which is weird. (assuming the wuwatracker site shows my time, that's CEST+7 -> UTC+9 -> JST)

Luzefiru commented 3 weeks ago

while c, p4, p5, n and t are pretty much obvious, q and s isnt immediately obvious, q seems to be how many stars we are talking about, but s seems to be always 1 for me, so no idea what that's about.

We'll definitely look into making the exports more human-readable down the line once we finish patching some higher priority items. At the moment, there's no immediate usage, so please wait. 🙏

I'd propose to have an array of objects which could look like this so it's a bit easier to keep banners apart:

{
"name":"Featured Resonator",
"pulls": <array of objects, same as the inner arrays from current>
}

additionally if the game assigns an ID to the banners, maybe add that to have it easy for import tools

Love this! I'll definitely design the exported data to look something similar to that. Regarding banner IDs, we maintain our own banner IDs here for reference.

also the time should maybe follow something like ISO with timezone data as apparently the json exported for me in JST which is weird. (assuming the wuwatracker site shows my time, that's CEST+7 -> UTC+9 -> JST)

When exported, the pulls are normalized to UTC+8, the game server time for Asia, SEA, TW/MK/MO servers. Do you think it's better if we export it to what the game showed you originally in the Convene History page?

Thanks for pointing these out!

My1 commented 3 weeks ago

doesnt have to be crazy human readable, a quick info what is what close to the download might help for the variable names, having some ways to have the banners also easy to import for other tools too would tho definitely be useful, one have to put down every feature banner separately but the categories should be split in a well made way.

regarding time, okay then there might be a problem somewhere either in import, display or export image

on the left you can see my Verina pull dated as 2024-05-26 03:14:24, as well as below a quick check with the browser dev console over my time zone info which shows that I am currently utc+2 (techncially UTC+1+DST) apparently the function shows minutes in the other direction, also on the right you can see the json file dating the same event as 2024-05-26 10:14:24, so +7 hours from the time of the website, maybe somewhere an hour of DST might be dropped off.

should that maybe be an extra issue?

Luzefiru commented 3 weeks ago

doesnt have to be crazy human readable, a quick info what is what close to the download might help for the variable names, having some ways to have the banners also easy to import for other tools too would tho definitely be useful, one have to put down every feature banner separately but the categories should be split in a well made way.

Gotcha, I'll take that into consideration.

on the left you can see my Verina pull dated as 2024-05-26 03:14:24, ... also on the right you can see the json file dating the same event as 2024-05-26 10:14:24, so +7 hours from the time of the website, maybe somewhere an hour of DST might be dropped off.

This is expected. I'm guessing you're from EU server, so your game time zone is UTC+1, 7 hours behind Asia servers (UTC+8). We normalize the data to Asia time for easier banner grouping, but we can easily switch it back to the original (and we'll do in the future for exports).

should that maybe be an extra issue?

No need, I believe it's fine to be bundled with this feature issue.

My1 commented 3 weeks ago

EU server yes. so the site displays it as server time rather than browser time? in that case it might also be useful to add the info what timezone is used for display on the site especially as some regions (America for example) has multiple timezones.

frankly I dont think it matters which time the export is, as long as the export has a proper timestamp with timezone. e.g. 2009-01-01T12:00:00+01:00 or if we wanna make the file a little smaller you could go UTC and use 2007-12-24T18:21:00Z

My1 commented 3 weeks ago

Screenshot_20240818_181106 little mockup of the idea.

Code (literally just duplicated the <p> element) image

Luzefiru commented 3 weeks ago

EU server yes. so the site displays it as server time rather than browser time?

Yup! You can view the game server time zones in our Timeline Page. The in-game convene history page also details about how pull times are based on the game server times as well.

in that case it might also be useful to add the info what timezone is used for display on the site especially as some regions (America for example) has multiple timezones.

Definitely. We're still thinking of an elegant way of doing this. Should we create a separate FAQ page? Or would a small disclaimer near the table help?

frankly I dont think it matters which time the export is, as long as the export has a proper timestamp with timezone. e.g. 2009-01-01T12:00:00+01:00 or if we wanna make the file a little smaller you could go UTC and use 2007-12-24T18:21:00Z

I think we'll be leaning towards the ISO string format. Thanks!

My1 commented 3 weeks ago

Definitely. We're still thinking of an elegant way of doing this. Should we create a separate FAQ page? Or would a small disclaimer near the table help?

I think on the table is pretty okay, I even mocked it up a comment above

I think we'll be leaning towards the ISO string format. Thanks!

both are ISO format. Z is a special shortcut for UTC within that format ;-) https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)

ryanbenson commented 2 weeks ago

+1 for this. I was hoping to be able to look through the data when I exported the JSON. Maybe Paimon.moe's can be an inspiration for making the exports more readable?

I understand it's not the highest priority 😄 and that's fine

{"type":"weapon","code":"302","id":"aqua_simulacra","time":"2024-08-06 20:07:12","pity":40,"rate":2},{"type":"weapon","code":"302","id":"debate_club","time":"2024-08-06 20:07:12","pity":1},{"type":"weapon","code":"302","id":"slingshot","time":"2024-08-06 20:07:12","pity":1}
...
"778":{"Banner":"Character Event","Index":524,"Item":"Bloodtainted Greatsword","Item Type":"Weapon","Item Rarity":3,"Date":"2021-05-19 18:08:02"},
"779":{"Banner":"Character Event","Index":525,"Item":"Raven Bow","Item Type":"Weapon","Item Rarity":3,"Date":"2021-05-19 18:08:02"},
...

It doesn't really give you the exact banner info, but it does give you the timestamp as you were talking about above. But it's still easier to understand and process.

My1 commented 2 weeks ago

As far as i am seeing Paimon's wish timestamp sadly also doesn't have a timezone marking, just like the one here, which makes it more annoying when using it with other tools. (interestingly the time when the json was pulled is a Z-marked utc timestamp)

But it does give you all you need to get the specific banner you pulled on. The code is an id for the specific category (100 for beginner, 301/400 for the character banner and character banner 2 respectively, 200 for standard, 302 for weapon event, 500 for chronicled), with that and the timestamp you can know exactly what banner is going.

One interesting question when using local times is how dst affects these exports, especially if pulls are done during the hour when dst turns back time gets ambiguous then because 2024-10-27 02:30 @ Europe/Berlin would be such a time you do not know if that happens at 0:30 utc or 1:30 utc

Luzefiru commented 1 week ago

I've added the UTC time zone beside the Date Received table header now.