Currently ROI implementation uses a promise to delay rendering until all ROIs have been calculated.
For smaller portfolios this can work fine, but for larger portfolios this can take a very long time to complete. In addition, if one of the collection ROI calculations throws an error, all other ROIs fail as well.
Moving the implementation to be stream-based will mean that:
ROIs will be updated incrementally without blocking each other
If a collection ROI calculation fails, only that collection will fail and others will still be calculated and displayed correctly
Add a checkbox above the table that says "Exclude Gas & Fees in ROIs"
When the checkbox is checked, all the ROI-related stats and table cells should be updated to reflect the new investments and sales values.
"Fees" should be deducted from the "Sales" sum.
"Gas" should be added to the "Investment" sum.
Default should be "off" (meaning - gas & fees should be included)
Add a screen from the table menu (like sales data screen) that will show the "floor barriers" - a bar graph that shows how many NFTs are under certain floors.
It should have "from" and "to" parameters where the defaults are "from: floor price; to: floor price + 1 eth"
It should show 10 bars, each bar representing how many NFTs are at that price point.
Add a new stat block showing Total Wallet Value which is your "total min. value" + "account eth balance".
Should be displayed in the stats sections above the table.
Should add a "Hide" option in the action menu (three dots on the leftmost column in the table).
This will remove the collection from the table and all the ROI calculations.
In addition, should add a "Show hidden collections" checkbox above the table. When the checkbox is checked, the hidden collections should appear in the table - but they should be with opacity 0.5 (or something) and they should still be excluded from ROI calculations. There will be an option to "Unhide" in the menu.
Add "Hide" option to menu
When collection is hidden, remove it from table and stats
Checkbox for showing / hiding "hidden" collections
When hidden collections are visible, in their menu they should have a "unhide" option
Add "Average Purchase Price" column to the table.
The title should be "Avg. Purchase"
It should display the average price paid per token of a collection. It should be calculated by (investment + gas) / total_owned.
For example, if a collection has 3 tokens, the total investment is 2.05 and the "gas spent" is 0.05, then "avg. purchase" will be 0.7
In the collection table, add a column that shows the invested amount per collection - how much did the user pay on secondary for all nfts (minting is more difficult I believe).
Multiple components on the page rely on the same basic data.
We need a place to manage all the state. Currently it is being passed from component to component.
State management could be a redux store, mobx, or something else.
We will probably want to use streams/observables in the future as they work great with the WebSocket RPC API, so if the state management can be based on streams that would be great.
originally titled: "relay investment on transfers between wallets"
when buying with one wallet, then transferring to another for storage, the investment should still be counted.
probably just need the ability to track multiple wallets for this. otherwise it's hard to know what was a gift/external transfer vs. purchase/internal transfer.
(Just found this via your post in curious addys! Love it! Might be able to contribute a little.)
This should be easy and self-explanatory. I would like to be able to sort the table on any column by clicking its header. Click again to toggle between ascending/descending.