import React, {
useCallback,
useEffect,
useLayoutEffect,
useRef,
useState,
} from "react";
import { getLayout } from "../src/layouts/AppLayout";
import { Spinner, Flex, Heading, Stack, Text, Spacer } from "@chakra-ui/react";
import Scrollable from "../src/components/Scrollable";
import useNFTs from "../src/core/hooks/useNFTs";
import RangeSelector from "../src/components/RangeSelector";
// import StatsCard from "../src/components/StatsCard";
import useWindowSize from "../src/core/hooks/useWindowSize";
// import NFTChart from "../src/components/NFTChart";
const HOUR_KEY = "Hourly";
const DAY_KEY = "Daily";
// const WEEK_KEY = "Weekly";
let timeMap = {};
timeMap[HOUR_KEY] = "hour";
timeMap[DAY_KEY] = "day";
// timeMap[WEEK_KEY] = "week";
const Analytics = () => {
const windowSize = useWindowSize();
useEffect(() => {
if (typeof window !== "undefined") {
document.title = `NFT Analytics`;
}
}, []);
const [nodesReady, setNodeReady] = useState({
ntx: false,
values: false,
mints: false,
NFTOwners: false,
minters: false,
});
const nTxRef_ = useRef();
const valueRef_ = useRef();
const mintsRef_ = useRef();
const uniqueNFTOwnersRef_ = useRef();
const mintersRef_ = useRef();
const nTxRef = useCallback(
(node) => {
if (node !== null && !nodesReady.ntx) {
setNodeReady({ ...nodesReady, ntx: true });
nTxRef_.current = node;
}
},
[nodesReady]
);
const valueRef = useCallback(
(node) => {
if (node !== null && !nodesReady.values) {
setNodeReady({ ...nodesReady, values: true });
valueRef_.current = node;
}
},
[nodesReady]
);
const mintsRef = useCallback(
(node) => {
if (node !== null && !nodesReady.mints) {
setNodeReady({ ...nodesReady, mints: true });
mintsRef_.current = node;
}
},
[nodesReady]
);
const uniqueNFTOwnersRef = useCallback(
(node) => {
if (node !== null && !nodesReady.NFTOwners) {
setNodeReady({ ...nodesReady, NFTOwners: true });
uniqueNFTOwnersRef_.current = node;
}
},
[nodesReady]
);
const mintersRef = useCallback(
(node) => {
if (node !== null && !nodesReady.minters) {
setNodeReady({ ...nodesReady, minters: true });
mintersRef_.current = node;
}
},
[nodesReady]
);
const [timeRange, setTimeRange] = useState(HOUR_KEY);
const { nftCache } = useNFTs();
useLayoutEffect(() => {
const items = [
nTxRef_,
valueRef_,
mintsRef_,
uniqueNFTOwnersRef_,
mintersRef_,
];
console.log("useeffect fired");
if (items.some((item) => !!item.current)) {
console.log("brder fun");
var firstItemInCurrentRow = items[0];
items.forEach((item) => {
if (item.current) {
if (item !== firstItemInCurrentRow) {
// Check if the current item is at the same
// height as the first item in the current row.
if (
item.current.offsetTop === firstItemInCurrentRow.current.offsetTop
) {
item.current.style.borderLeft =
"3px dashed var(--chakra-colors-gray-600)";
} else {
// This item was lower, it must be
// the first in a new row.
firstItemInCurrentRow = item;
item.current.style.borderLeft = "0px dashed black";
}
}
} else {
firstItemInCurrentRow = item;
}
});
}
}, [nodesReady, windowSize]);
if (nftCache.isLoading) return ;
const plotMinW = "500px";
return (
NFT market analysis
setTimeRange(e)}
/>
{/* nTxRef(node)}
labelKey="nft_transfers"
totalKey="num_transactions"
timeRange={timeMap[timeRange]}
netLabel="Ethereum mainnet"
label="Number of NFT purchases"
/>
valueRef(node)}
labelKey="nft_transfer_value"
totalKey="total_value"
timeRange={timeMap[timeRange]}
netLabel="Ethereum mainnet"
label="Money spent"
/>
mintsRef(node)}
labelKey="nft_mints"
timeRange={timeMap[timeRange]}
netLabel="Ethereum mainnet"
label="NFTs created"
/>
uniqueNFTOwnersRef(node)}
labelKey="nft_owners"
timeRange={timeMap[timeRange]}
netLabel="Ethereum mainnet"
label="Number of buyers"
/>
mintersRef(node)}
labelKey="nft_minters"
timeRange={timeMap[timeRange]}
netLabel="Ethereum mainnet"
label="Number of creators"
/> */}
New NFTs
{/* */}
NFT creators
{/* */}
NFT Buyers
{/* */}
Transaction volume
{/* */}
Transaction value
{/* */}
);
};
Analytics.getLayout = getLayout;
export default Analytics;